Весь массив из N элементов делится сначала на 2 одинаковые части (если число элементов нечетное, то в одной из частей на 1 элемент больше), потом каждая часть делится еще пополам и так далее, до получения нужного количества элементов в группе (рис. 6.2).
Алгоритм работает следующим образом. Сначала определяется четность массива. Если N - нечетное число, то элемент, имеющий минимальную температуру, изымается из массива. Если же N - четное число, то изъятие не производится. Разбиение на 2 части (массивы А и В) массива N производится следующим образом: сначала в массив А заносится элемент с самой высокой температурой, а в массив В элемент с максимальной температурой из оставшихся, затем в массив А заносится элемент с минимальной температурой, а в массив В также с минимальной температурой из оставшихся и так далее до тех пор, пока все элементы начального массива не разделятся между массивами А и В. В случае нечетного количества элементов в массиве N изъятый элемент с минимальной температурой присоединяется к тому массиву А или В, который имеет меньшую суммарную температуру.
Разделение каждого массива А и В проводится аналогичным образом. Разделение соответствующих массивов проводится до тех пор, пока число элементов в любом массиве окажется более заданного не более, чем на 1.
В результате получаем группы элементов, суммарная температура каждой из которых отличается от средней суммарной температуры групп не более чем на 2-3 процента. При этом следует отметить, что чем больше элементов в группе, тем меньше это отличие. Этот алгоритм был реализован программно на языке Паскаль. Программа позволяет оптимизировать размещение до 5000 элементов.
В качестве примера приведем следующий. Пусть требуется разбить 80 элементов (N = 80) на группы по 10 элементов, так, чтобы суммарная температура каждой группы была одинакова. Температуры элементов приведены в табл. 6.1. Результаты разбиения представлены в табл. 6.2. Анализ результатов показывает, что суммарная температура для каждой группы отличается от средней не более, чем на 0,6 %.
Таблица 6.1
Температура элементов
Номер эл-та |
t, oC |
Номер эл-та |
t, oC |
Номер эл-та |
t, oC |
Номер эл-та |
t, oC |
1 |
53 |
21 |
60 |
41 |
43 |
61 |
54 |
2 |
35 |
22 |
61 |
42 |
65 |
62 |
49 |
3 |
49 |
23 |
49 |
43 |
66 |
63 |
30 |
4 |
69 |
24 |
69 |
44 |
66 |
64 |
32 |
5 |
35 |
25 |
63 |
45 |
60 |
65 |
41 |
6 |
66 |
26 |
44 |
46 |
58 |
66 |
57 |
7 |
40 |
27 |
43 |
47 |
40 |
67 |
66 |
8 |
49 |
28 |
46 |
48 |
58 |
68 |
57 |
9 |
68 |
29 |
35 |
49 |
61 |
69 |
46 |
10 |
48 |
30 |
54 |
50 |
55 |
70 |
41 |
11 |
61 |
31 |
55 |
51 |
30 |
71 |
69 |
12 |
66 |
32 |
56 |
52 |
58 |
72 |
51 |
13 |
32 |
33 |
58 |
53 |
48 |
73 |
67 |
14 |
60 |
34 |
39 |
54 |
40 |
74 |
56 |
15 |
32 |
35 |
51 |
55 |
69 |
75 |
64 |
16 |
51 |
36 |
58 |
56 |
49 |
76 |
30 |
17 |
48 |
37 |
66 |
57 |
43 |
77 |
30 |
18 |
40 |
38 |
51 |
58 |
38 |
78 |
50 |
19 |
61 |
39 |
30 |
59 |
38 |
79 |
38 |
20 |
58 |
40 |
65 |
60 |
37 |
80 |
56 |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.