Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Штейн М.Е. Методы машинного проектирования цифровой аппаратуры

.pdf
Скачиваний:
17
Добавлен:
24.10.2023
Размер:
11.13 Mб
Скачать

боров, соответствующих вершинам, достижимым из дан­ ной вправо и вправо — вниз. Так, например, все верши­ ны, из которых достижима вершина с набором (12341011) (см. рис. 7.2.1), имеют в наборах общую часть 1234, а все вершины, из которых достижима вер­ шина с набором (12361011), — общую часть 1236.

Свойство 7.2.2 вытекает из правила построения дере­ ва наборов. Так, при движении ог некоторой вершины вправо изменяется только последний индекс набора, и

123456

123457

 

123458

 

123459

1234510 1234511

 

123467

 

123468

 

123469

1234610

1234611

 

 

 

123478

- 1234 79

1234710 1234711

 

 

 

 

 

123489

 

1234810

1234811

 

 

 

 

 

 

 

1234910

1234311

 

 

 

 

 

 

 

 

12341011

 

123567

 

123568

 

123569

1235610 1235611

 

~ '

»-•

а.»

 

» 9

 

 

 

 

123578

 

123579

1235710 1235711

 

 

 

 

 

»т

»•

 

 

 

 

9

123589

1235810 1235811

 

 

 

 

*-«

*-9

 

 

 

 

 

 

 

у255910

1235911

 

 

 

 

 

 

 

 

12351011

 

9124567

9123678

 

123679

1236710 1236711

 

 

 

 

 

123689

1236810 1236811

 

 

 

 

 

 

 

1236910 1236911

 

134567

 

 

 

 

 

 

91236Ю11

 

Рис. 7.2.1. Фрагмент дерева

наборов.

 

182

поскольку на каждом шаге значение этого индекса уве* личивается на единицу, то разность между значением последнего и предпоследнего индекса уже на втором шаге, т. е. в вершине, достижимой из исходной вправо на следующем шаге, будет больше единицы. Во всех остальных вершинах эта разность будет увеличиваться, а разность между соседними индексами, являющимися общими для наборов вершин, достижимых вправо, все­ гда равна единице. При движении от исходной вершины вправо — вниз правило определения общих индексов в 'наборах, соответствующих вершинам, достижимым из данной, остается неизменным.

Поиск оптимального набора осуществляется следую­ щим образом. На этапе построения набора по правилам, описанным выше, каждый раз проверяются условия (7.2.4), (7.2.5) и (7.2.8). Если в процессе построения на­ бора происходит нарушение (7.2.4), (7.2.5) и (7.2.8), то и во всех вершинах, достижимых из рассматриваемой вправо, это же нарушение будет присутствовать (свой­ ство 7.2.2). В этом случае необходим переход вниз.

 

Так

как

набор индексов дуг строится последователь­

но,

то

при

выполнении ограничений

(7.2.4), (7.2.5) и

(7.2.8)

это

построение продолжается до тех пор, пока

его

длина

не станет равной цтах,

либо пока не

припи­

шется 'последний

индекс.

 

 

 

 

Пусть набор

Q0 , построенный

таким

образом

(будем

его называть в дальнейшем опорным решением), имеет вес, равный Wo. Так как искать решение в вершинах, достижимых из опорной, не имеет смысла (следствие 7.2.1), то необходимо перейти на так называемую бли­ жайшую левую ветвь дерева наборов, т. е. перейти к бли­ жайшей вершине, не достижимой из опорной. Этот пере­ ход осуществляется по следующим правилам.

В опорном решении (т. е. наборе индексов, соответ­ ствующих вершине, в которой получено опорное реше­ ние) ищется пара соседних индексов, начиная с индек­ сов с" максимальным значением, разность между кото­ рыми больше единицы. Если разность более двух, то меньший из сравниваемых индексов увеличивается на единицу. Пусть два соседних индекса в опорном наборе /о и i'o таковы, что разность между их значениями более

двух и значение индекса /о больше

/и ;

тогда значение

индекса г'о увеличивается па единицу.

Если разность

рав­

на двум, то в следующей соседней

паре

индексов,

для

183

которых, разность

более

единицы, Меньшее 3itaf teitne

индекса

увеличивается па единицу. Все индексы,

находя­

щиеся в опорном

наборе

слева

от измененного,

входят

в

новый набор,

который

дополняется индексами

до на­

бора

длины р-max по правилам

построения

дерева

набо­

ров,

описанным

выше.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Покажем

описанное

правило

на примере рис. 7.2.1. Допустим,

что

опорное

решение

с весом

Wo соответствует

вершине

с

набором

индексов

(123589).

Для того чтобы

перейти в другую

вершину дере­

ва

наборов,

сравним

значения

индексов,

начиная

с

 

максимальных:

9 8=1;

8—5>2. По первому

правилу получаем

значение

наборов

индексов

(12367S).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если

же, например,

опорное

 

решение

соответствует

вершине

(123578),

то 8 7 = 1 ,

75 = 2, и

 

по

второму

правилу

получаем

5—3>1, в значит, переход осуществляется в вершину

(124567).

Если

при

этом

суммарный

вес нового

набора

больше

Wo, то,

повторив

процедуры, изложенные

выше,

ищется

опять

опорное решение, затем

они

сравниваются по весу и большее принимается за новое опорное

решение. Если же в<ес нового

набора

меньше

веса

предыдущего

опорного

набора, то повторяется операция

перехода в новую верши­

ну,

недостижимую из вновь полученной.

 

 

 

 

 

 

 

 

 

 

Процесс перебора вершин дерева наборов продолжа­

ется до тех пор, пока возможен

переход на ближайшую

левую ветвь, и если он невозможен, то полученное

опор­

ное- решение оптимально в смысле

(7.2.10).

 

 

 

 

 

 

Полученное

решение,

т. е. набор

дуг, удовлетворяю­

щих

ограничениям

 

(7.2.4),

(7.2.5)

и

(7.2.8)

 

и

максими­

зирующих

выражение (7.2.10),

образует

 

разбиение

сети

G

на несвязные

подсети

Gj. Ясно, что в

наборе

дуги

с нулевым весом не рассматриваются,

кроме

того, по­

скольку

набор

О. содержит

 

дуги,

находящиеся

внутри

подсетей, и не содержит

ни одной

дуги

между

подсетя­

ми, то разделение

сети, содержащей Q дуг, на компонен­

ты

связности дает

разделение

сети

G на подсети Gj.

Однако

число этих

подсетей

может

быть

больше

т —

числа модулей высшего уровня, на которые нужно

раз­

бить всю схему.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Итак, получить допустимое по (7.2.4), (7.2.5) и (7.2.8) решение можно, учитывая каждое из ограничений при формировании наборов С],-. Рассмотрим правила провер­ ки этих ограничений более подробно.

Наиболее просто проверяется условие (7.2.8). Пусть, например, построена часть набора, т. е. получено мно­ жество дуг, образующих некоторые подсети. При этом сумма весов узлов, входящих в эти подсети, порождает

184

некоторое множество целых положительных чисел

 

 

SHte.. gt,...,

gi,...},

(7.2.15)

где

gj

—вес подсети Gj в соответствии с

(7.2.8). Для

g j G ^

должно выполняться ограничение gj^K, которое

на

каждом шаге формирования

набора

проверяется

простым подсчетом узлов в подсети. Для каждого эле­ мента из (7.2.15) должно выполняться условие

Мы уже указывали выше, что число подсетей, обра­ зованных некоторым набором, может превышать число модулей высшего уровня, на которые необходимо раз­ бить схему. Поэтому введем понятие группы как некото­ рого объединения Gj, но такое, чтобы выполнялось огра­ ничение (7.2.8). Таким образом, подсети можно объеди­ нять в группы, если суммарный вес г'-й группы не превы­ шает числа Ki. Решение этой задачи возможно с по­ мощью метода, применяемого при решении так называе­ мой задачи о рюкзаках [4]. Пусть задано множество (7.2.15) и некоторые целые положительные числа / С и т такие, что

 

gi<K,

j = 1,

2, 3,...,

s,

Yigi<mK,

(7.2.16)

где

gj — вес подсети

GJ;

К—вес

группы;

т — число

групп.

разместить все элементы gj^$

 

 

Необходимо

в груп­

пы

так, чтобы

вес группы

не

превышал К,

при этом

каждый элемент может быть назначен только в одну группу. Если ввести булеву переменную

(1, если элемент gj назначен в г-ю группу с вепсом Кг,

Ов противном случае,

то

условия образования

групп нетрудно представить

з

виде:

 

 

 

т

 

 

 

V Xjr=

\ для

всех / = 1 , 2, 3,...

г=\

И

£xirgj<Kt

185

где / = {1, 2, . . . , /, ...,} — множество индексов подсетей, образующих разбиение G.

Заметим, что решение задачи компоновки, как прави­ ло, связано еще с рядом ограничений, не учтенных в рас­ смотренной модели. К наиболее существенным из них можно отнести ограничение на суммарное число связей данной группы со всеми остальными. Это ограничение не может быть учтено непосредственно в рассмотренной модели, так как в качестве целевой функции выступает выражение (7.2.10), максимизирующее суммарное число связей внутри всех подсетей, что эквивалентно миними­ зации суммарного числа связей между группами. Одна­ ко если в процессе построения набора U ограничения (7.2.4), (7.2.5) и (7.2.8) дополнить проверкой числа свя­ зей, выходящих из подсетей разбиения G, то предложен­ ный алгоритм применим и для решения указанной задачи.

 

Пример

7.2.1. Рассмотрим

применение

изложенного

выше

метода

на

примере

разрезания

сети,

изображенной

на

рис. 7.2.2.

Матрица

связей этой

сети представлена

в

табл. 7.2.1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т а б л и ц а

7.2.1

 

 

 

 

 

1

2

 

3

 

4

 

 

5

 

6

 

 

 

 

1

 

0

3

 

3

 

0

 

0

 

4

 

 

 

 

2

 

3

0

 

3

 

0

 

4

 

0

 

 

 

 

3

 

3

3

 

0

 

4

 

0

 

0

 

 

 

 

4

 

0

 

0

 

4

 

0

 

2

 

2

 

 

 

 

5

 

0

 

4

 

0

 

2

 

0

 

2

 

 

 

 

6

 

4

 

0

 

0

 

2

 

2

 

0

 

 

 

 

Надо

разрезать

данную сеть на две части

по

три

узла

так,

что­

бы

минимизировать

число

связей между

частями.

Этот

пример

ха­

рактерен тем, что все известные эвристические

алгоритмы

разрезания,

основанные

на последовательной

компоновке

подсетей,

не дают

опти­

мального

решения.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Итак,

 

/C=Ki = K 2 = 3 ,

a

Vi=\,

для

t = l , 2

 

6. Упорядочим

дуги

по

невозрастанию:

{(1,6);

(2,5);

(3,4);

(2,3);

(1,3);

(1,2);

(4,6); (4,5);

(5,6); (1,4); (1,5);

(2,4);

(2,6);

(3,5); (3,6)} и

поставим

им

в

соответ-

186

стаие

порядковые

номера

о г

1 до 15.

 

 

 

 

 

В

соответствии

с

(7.2.12)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3-2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

^тах = 2 " 2 " = 6 -

 

 

 

 

 

 

 

 

 

 

 

Таким

образом,

набор

(123456)

(см.

 

 

 

 

 

рис.

7.2.1)

с

оценкой

W=21

 

является

 

 

 

 

 

нижней

границей

цены

всего

решения,

 

 

 

 

 

так

как

не

выполняются

ограничения

 

 

 

 

 

(7.2.4), (7.2.5) и (7,2.8). И

так

 

как

эти

 

 

 

 

 

ограничения нарушаются уже на вторам

 

 

 

 

 

шаге

формирования

набора

сочета­

 

 

 

 

 

нии

дуг

123

не выполняются

ограниче­

Рис. 7.2.2.

Пример

раз­

ния),

то

переходим

в

вершину

дерева

 

резания сети.

 

наборов

 

(124567).

 

Здесь

также

нару­

 

 

шаются

ограничения

на части

 

набора

 

 

 

 

 

124,

поэтому

переходим

в

вершину

(134567).

Аналогично

предыду­

щему,

переходим

в

(234567)

 

и

 

т. д. до тех

пор, пока

не

придем

в

вершину

 

(456789).

Набор дуг, соответствующий этой вершине,

с

оценкой

 

15

дает

оптимальное

разбиение

с Л ^ = { 1 ,

2,

3} и

ЛГ2

=

{4,

5, 6}.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7.3.Построение оптимальных связывающих деревьев для электрических цепей

Для обеспечения электрической связи между контак­ тами модулей достаточно представить конфигурацию этих связей в виде дерева, если не сформулированы до­ полнительные требования к надежности соединений. Дерево — это связанная сеть G=[N; А] без циклов. Узла­ ми этой сети могут быть контакты модулей, объединен­ ные некоторой электрической цепью, а дугами — связи между парами узлов. Отличительной особенностью дере­ ва является единственность цепи между любой парой

узлов,

так

как существование, по крайней мере, двух

путей

для

любой па-ры узлов указывает для неориентиро­

ванной

сети на наличие цикла. Очевидно, таким образом,

что для сети

с п узлами число дуг равно (п.1). Итак,

сеть — дерево

могут характеризовать любые два из трех

условий:

 

 

 

1)

сеть

G=[N; А] связна;

 

2)

G = [N;

А] не имеет циклов;

(7.3.1)

3)

\A\

=

\N\-l.

 

Процедура получения дерева из любой связной сети тривиальна и может быть основана на последова­ тельном удалении из сети дуг с проверкой условия 1) до

187

тех пор, пока иё остаётся нй одного никла. Такое дёре-' во называют деревом-остовом сети G. Например, одно дерево-остов сети, изображенной на рис. 7.3.1, выделе­ но.

Изложим один простой алгоритм построения крат­ чайшего дерева-остова [5].

Введем некоторые определения. Узел назовем изоли­ рованным, если он не соединен дугой ни с каким уз­ лом. Подмножество узлов, связанных дугами, назовем

фрагментом, если существует

 

цепь

по

этим

дугам

 

в каждый

узел

подмноже­

 

ства. Под расстоянием

 

узла

 

от

фрагмента

будем

пони­

 

мать

минимальное

из

 

рас­

 

стояний

от

 

этого

 

узла до

 

всех

узлов

фрагмента.

 

Бли­

 

жайшим

соседом

к данному

 

узлу

назовем

 

узел,

который

 

находится

от

данного

на

 

расстоянии, не большем, чем

 

все

остальные.

Ближайшим

 

соседом

фрагмента

назовем

Рис. 7.3.1. Сеть с выделенным

любой из ближайших к не-

М у

у З Л О В

 

 

 

 

 

 

 

 

деревом.

"

л

основу

алгоритма

по­

 

 

а

 

ложены

два

принципа,

вы­

полнение которых необходимо при построении кратчай­ шего дерева-остова:

1) каждый изолированный узел соединяется дугой

сближайшим соседом;

2)каждый фрагмент соединяется дугой с ближай­ шим соседом.

 

 

 

 

Т а б л и ц а

7.3.1

 

1

2

3

4

5

1

0

6

5

4

6

2

6

0

8

10

8

3

5

8

0

6

11

4

4

10

В

0

7

5

6

8

11

7

0

183

Продемонстрируем

алгоритм

пострбен'йя

кратчай­

шего дерева-остова на примере.

 

 

Пример 7.3.1. Пусть задана табл. 7.3.1 длин дуг сети,

изображен­

ной на рис. 7.3.1.

 

 

 

0 шаг. Построение дерева начнем

с узла /. По первому прин­

ципу его следует соединить

дугой с ближайшим соседом. Для на­

хождения ближайшего соседа выпишем первую строку таблицы без

первой клетки:

 

 

 

2

3

4

5

6

5

4

6

(1)

С )

(1)

(1)

Цифра в скобках означает индекс узла, расстояние от которого до остальных узлов записано в клетках.

Из чисел этой строки находим наименьшее — 4 (в столбце 4), следовательно, ближайшим соседом узла / является узел 4. Соеди­

няем их дугой (1,4) и вносим

вместе с ее

длиной

в

итоговую

табл. 7.3.2.

 

 

 

 

1 шаг. Из табл. 7.3.1 длин

дуг исключаем

столбец

4.

Находим

в этой таблице строку 4. Каждое число этой строки сравниваем с со­

ответствующими числами

строки

1 для

одинаковых

столбцов,

т. е.

для 2-, 3- и 5-го. Итак, для строк

 

 

 

 

 

 

 

2

3

4

5

 

 

2

3

 

5

 

6

5

4

6

4

 

10

6

|

7

 

(I)

(I)

(1)

(1)

 

 

(4)

(4)

|

(4)

 

сравниваем

между собой числа следующих пар:

 

 

 

 

 

/ 6

Ю л / 5

6 \ / 6

7 \

 

 

 

 

 

1(1)'

(*)Г

1(1):

( 4 ) ] ' 1(1); ( 4 ) /

 

 

 

 

В каждой паре выбираем меньшее число

и составляем

новую

стро­

ку £,:

 

 

 

 

 

 

 

 

 

 

 

 

 

2

3

5

 

 

 

 

 

 

 

 

6

5

6

 

 

 

 

 

(1)(1) (1)

показывающую

соответственно

расстояния

от каждого

из узлов 2,

3, 5 до фрагмента

(1, 4). Столбец узла 3,

под которым

находится

наименьшее число 5, показывает, что узел

3 является

ближайшим

соседом фрагмента

(1, 4), и его следует соединить

дугой с узлом /

(так как индекс

(1)

у

числа 5

обозначает,

что узел

3 ближе

к узлу

/, чем к узлу 4).

Дугу

(1,3) и ее длину 5 вносим в итоговую

табли­

цу и переходим

к следующему

шагу.

 

 

 

 

189

2 шаг. Исключаем

из

строки kx столбец 3. Выписываем из

табл. 7.3.1 длин дуг строку

3

со столбцами 2 и 5:

и сравниваем с соответствующими числами строки kt:

( ( i ) ; ( 3 ) ) и ( ( 1 ) ; ( 3 ) ) -

Меньшее из каждой пары чисел заносим в строку кг:

2 5

G6

(1)(1)

Индекс узла в столбце, под которым находится меньшее из чи­ сел (в данном случае любое, так как числа одинаковые, допустим 2), определяет ближайшего соседа для фрагмента из узлов {/, 4, 3}. Узел 2 ближе всего расположен к узлу 1, поэтому в итоговую табли­

цу вписываем дугу (1,2) и ее длину 6.

 

 

 

 

3 шаг. Исключаем из строки к2 столбец 2. Рассматриваем в таб­

лице длин дуг

строку 4. Сравниваем число (элемент) этой строки из

 

 

 

столбца

5 с числом из строки

k2 в

столбце

Т а б л и ц а

7.3.2

5. Меньшим из

них является

число

6.

По­

строение

сети

заканчивается

дугой

(1.5),

 

 

 

 

 

 

которую заносим в итоговую табл. 7.3.2.

Дуга

Длина дуги

Получившееся кратчайшее дерево-остов

или кратчайшая связывающая сеть изобра­

 

 

 

 

 

 

жена на

рис. 7.3.1.

 

 

 

(U4)

4

 

Весьма важной в машинном про­

(1.3)

5

ектировании электрических соедине­

 

ний является задача построения оп­

(1.2)

6

тимальных связывающих

сетей для

электрических

цепей

устройств.

 

 

(1.5)

6

 

Электрическая цепь объединяет мно­

жество контактов

компонент устрой­

 

 

 

 

ства; допустимое число паек к кон­

тактам,

как правило,

ограничено. Такие цепи

представ­

ляются оптимальными связывающими деревьями с огра­

ниченными степенями узлов и

без

дополнительных

(для проводного монтажа) узлов.

Без

указанных огра­

ничений задача решается описанным выше алгоритмом. Рассмотрим алгоритм построения кратчайшей связываю­ щей сети с ограниченными степенями узлов.

190

Пусть

задана

сеть

G—[N;

А] со множеством

узлов

N = {1, 2,

3, ... ,

га} и

множеством

дуг А, образующих

полную неориентированную сеть [б]. Множеству N может

соответствовать

множество эквипотенциальных

контак­

тов некоторой электрической

цепи,

а множеству А —

возможные пути их соединения. И пусть некоторое число

 

 

 

p(i)=Si,

 

i<=N,

 

(7.3.2)

где

Si

— целое' положительное,

есть

максимально

допу­

стимая

степень узла

i.

 

 

 

 

 

 

 

Каждой дуге (i,

j)

подставим

в соответствие

це­

лое положительное число сц — цену этой дуги.

 

 

 

Требуется

найти

такую частичную сеть

H—[N;

V],

где

VczA, для

которой

 

 

 

 

 

 

 

 

Ц

сцхг^тт,

V =

2 , . . . , ( « -

1)},

(7.3.3)

где X=|Ujj|| — матрица инциденций в форме узлы—дуги

симметричной (неориентированной) сети G

[5] и

п

 

1 < Е ^ < 5 г -

(7.3.4)

/=i

 

Построение кратчайшей связывающей сети с задан­ ными ограничениями степеней узлов можно осуществить на современной ЦВМ для сети с большим числом узлов,

если применять идеи

динамического программирования

в сочетании

с методом

«ветвей

и границ» целочисленно­

го линейного

программирования

{7, 8].

Плодотворность применения метода «ветвей и гра­ ниц» в данной задаче заключается в том, что кратчай­ шая связывающая сеть есть дерево, т. е. сеть, состоящая из (га—1) дуг, где га— число узлов. Значит, перебор различных упорядоченных по возрастанию суммарной цены сочетаний по (га—1) дуг, в каждом из которых осу­ ществляется проверка на связность и выполнение огра­ ничения (7.3.4), дает представление о направлении дви­ жения к оптимальному решению и гарантирует его полу­ чение в первом дереве, для которого (7.3.4) выполняется. Кроме того, первые (га—1) дуг в упорядоченном по воз­ растанию цены ряду являются достаточно хорошей ниж­ ней границей оценки решения задачи (7.3.3), (7.3.4).

191

Соседние файлы в папке книги из ГПНТБ