Россия |
Компоновка модулей. Методы разбиения электрических схем на функционально законченные модули
19.3. Алгоритмы разбиения
Известные алгоритмы компоновки можно условно разбить на 5 групп:
- алгоритмы, использующие методы целочисленного программирования;
- последовательные алгоритмы ;
- итерационные алгоритмы ;
- смешанные алгоритмы;
- алгоритмы, основанные на методе ветвей и границ.
Алгоритмы первой группы, хотя и позволяют получить точное решение задачи, однако для устройства реальной сложности фактически не реализуемы на ЭВМ.
Наибольшее распространение получили приближённые алгоритмы компоновки (последовательные, итерационные, смежные).
Суть последовательных алгоритмов разбиения графа заключается в выборе по определённому правилу вершины или группы вершин, к которым присоединяются затем другие вершины графа с целью образования первой части. Далее процесс повторяется для второй части и т.д. до получения желаемого разрезания графа.
При использовании итерационных алгоритмов сначала граф разбивается на определённое число частей произвольным образом либо с помощью последовательного алгоритма. Затем по определённым правилам производится перестановка вершин из одной части в другую с целью минимизации числа внешних рёбер.
Оптимизация компоновки достигается парными или групповыми перестановками вершин графа из различных кусков.
Процесс перераспределения вершин заканчивают при получении локального экстремума целевой функции, удовлетворяющего требованиям разработчика.
В смешанных алгоритмах компоновки для получения начального варианта "разрезания" используется алгоритм последовательного формирования кусков; дальнейшая оптимизация решения осуществляется перераспределением вершин между отдельными кусками графа.
В алгоритмах разбиения, опирающихся на идеи математического программирования, в основном используются методы ветвей и границ и решение задачи о назначении.
Алгоритмы разбиения, использующие методы ветвей и границ, состоят из следующих этапов.
Сначала определяется нижняя оценка разбиения графа на заданное число частей. Затем производится построение дерева решений и осуществляется поиск оптимального результата.
Задачу разбиения графа схемы на части можно свести к задаче о назначении следующим образом.
Сначала отыскивают назначение кандидатов (вершин графа) на все части, дающие минимальные суммарные затраты, причём, каждая вершина графа может быть назначена только в одну часть и в каждой части должны содержаться различные вершины графа.
Важной задачей в общей проблеме конструирования является покрытие, т.е. преобразование функциональных схем в принципиальные.
Под покрытием схемы понимается представление функциональной схемы конструктивными элементами, на которых она будет реализована, и связями между ними.
Конечной целью покрытия является выбор оптимальной элементно-технической базы проектируемого устройства.
19.4. Последовательные алгоритмы разбиения электрической схемы
В последовательных алгоритмах "разрезание" исходного графа на " l " частей
c числом вершин в каждой, соответственно,
сводится к следующему.
В графе находят вершину
с минимальной локальной степенью
.
Если таких вершин несколько, то предпочтение отдаётся той вершине, которая имеет большее число кратных рёбер. С этой вершины начинается построение первого куска.
С этой целью в первоначально включаются
и все вершины, смежные ей.
Обозначим это множество
.
Если полученное число вершин равно " ", то считаем, что кусок
образован.
Если это число больше " " , то удаляем "лишние" вершины,
связанные с остающимися вершинами
меньшим числом рёбер.
В случае, когда мощность множества меньше "
" ,
то из
выбирается вершина, удовлетворяющая условию
![]() |
( 19.7) |
где - число рёбер, соединяющих вершину
со всеми невыбранными вершинами.
Строим множество вершин смежных
,
и процесс выборки вершин
повторяется. Образованный подграф
исключаем из исходного графа.
Далее в графе выбирается вершина с минимальной локальной степенью. Производится её помещение в G_{ 2 }, и процесс повторяется до тех пор, пока граф
не будет разрезан на "l" частей.
Описанный алгоритм прост, позволяет быстро получать результаты разбиения, однако в общем случае может привести к неоптимальным результатам. Наибольшая эффективность данного метода последовательного разбиения графа значительно больше числа вершин в любой части разбиения, т.е.

Рассмотрим принципиальную электрическую схему RC - генератора, рис. 19.1.
Обозначим условно элементы схемы через .
Представим эту схему в виде произвольного неориентированного графа
,
у которого
, а
- множество электрических связей элементов конструкции рис. 19.2.
На этом рисунке клеммы схемы обозначены через
, соответственно.
По исходному графу составляем матрицу смежности, ,
где
- элемент матрицы, состоящий из пересечения
-ой строки и
-го столбца. Строки и столбцы матрицы смежности соответствуют вершинам графа,
а ее
-ый элемент равен числу кратных ребер, связывающих вершины
.
Матрица смежности
неориентированного графа всегда симметрична.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
||
---|---|---|---|---|---|---|---|---|
![]() |
0 | 0 | 1 | 0 | 0 | 0 | 0 | |
![]() |
0 | 0 | 1 | 2 | 0 | 0 | 0 | |
![]() |
1 | 1 | 0 | 2 | 1 | 0 | 0 | |
R= | ![]() |
0 | 2 | 2 | 0 | 0 | 1 | 0 |
![]() |
0 | 0 | 1 | 0 | 0 | 1 | 0 | |
![]() |
0 | 0 | 0 | 1 | 1 | 0 | 1 | |
![]() |
0 | 0 | 0 | 0 | 0 | 1 | 0 | |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Суммируя элементы столбцов матрицы " ", вычислим локальную степень каждой вершины
. Полученные результаты запишем в нижнюю строку матрицы.
Пусть, граф, изображённый на рис. 19.2, надо разбить на три куска с количеством вершин 3, 2, и 2 в каждом куске, соответственно. Эти условия в данной задаче будут ограничениями. Целью разбиения является получение минимального количества внешних связей, т.е. ребер, связывающих куски графа между собой.
Находим вершину с максимальной локальной степенью,
которая определяется из матрицы смежности.
Эта и все связанные с ней вершины помещаются в первый кусок
.
В нашем случае это вершины:
,
.
Пусть, с
начнётся образование куска
.
В него помещается
и все вершины, смежные с ней.
Так как с
связаны
,
,
и
,
то вершины, имеющие меньшее число связей с куском
(это
и
), исключаются (рис. 19.3). Получился граф
,
где
. Оставшуюся часть обозначают следующим образом:
, где
.
Построим граф
(рис. 19.4) и матрицу смежности для него (табл. 19.2).
Определим локальную степень вершины по матрице смежности

Максимальную локальную степень имеет вершина ,
поместим ее и все связанные с ней вершины в кусок
.
Так как в нём должно быть две вершины, то
исключаем. В результате будет следующее разбиение:

Окончательное разбиение графа приведено на рис. 19.5.
Рассчитаем коэффициент разбиения по формуле. Имеется четыре внешних и шесть внутренних связей вершин. Следовательно, коэффициент разбиения графа

Недостатком этих алгоритмов является получение результатов, которые в общем случае могут быть далеки от оптимальных, что сужает область их использования. Для улучшения разбиения используются итерационные алгоритмы.