Опубликован: 20.01.2011 | Уровень: для всех | Доступ: платный | ВУЗ: Московский государственный открытый университет им. В.С. Черномырдина
Лекция 19:

Компоновка модулей. Методы разбиения электрических схем на функционально законченные модули

< Лекция 18 || Лекция 19: 123 || Лекция 20 >

19.3. Алгоритмы разбиения

Известные алгоритмы компоновки можно условно разбить на 5 групп:

  • алгоритмы, использующие методы целочисленного программирования;
  • последовательные алгоритмы ;
  • итерационные алгоритмы ;
  • смешанные алгоритмы;
  • алгоритмы, основанные на методе ветвей и границ.

Алгоритмы первой группы, хотя и позволяют получить точное решение задачи, однако для устройства реальной сложности фактически не реализуемы на ЭВМ.

Наибольшее распространение получили приближённые алгоритмы компоновки (последовательные, итерационные, смежные).

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

При использовании итерационных алгоритмов сначала граф разбивается на определённое число частей произвольным образом либо с помощью последовательного алгоритма. Затем по определённым правилам производится перестановка вершин из одной части в другую с целью минимизации числа внешних рёбер.

Оптимизация компоновки достигается парными или групповыми перестановками вершин графа из различных кусков.

Процесс перераспределения вершин заканчивают при получении локального экстремума целевой функции, удовлетворяющего требованиям разработчика.

В смешанных алгоритмах компоновки для получения начального варианта "разрезания" используется алгоритм последовательного формирования кусков; дальнейшая оптимизация решения осуществляется перераспределением вершин между отдельными кусками графа.

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

Алгоритмы разбиения, использующие методы ветвей и границ, состоят из следующих этапов.

Сначала определяется нижняя оценка разбиения графа на заданное число частей. Затем производится построение дерева решений и осуществляется поиск оптимального результата.

Задачу разбиения графа схемы на части можно свести к задаче о назначении следующим образом.

Сначала отыскивают назначение кандидатов (вершин графа) на все части, дающие минимальные суммарные затраты, причём, каждая вершина графа может быть назначена только в одну часть и в каждой части должны содержаться различные вершины графа.

Важной задачей в общей проблеме конструирования является покрытие, т.е. преобразование функциональных схем в принципиальные.

Под покрытием схемы понимается представление функциональной схемы конструктивными элементами, на которых она будет реализована, и связями между ними.

Конечной целью покрытия является выбор оптимальной элементно-технической базы проектируемого устройства.

19.4. Последовательные алгоритмы разбиения электрической схемы

В последовательных алгоритмах "разрезание" исходного графа G (Х, U) на " l " частей G_{1}, G_{2}, …………..G_{l} c числом вершин в каждой, соответственно, n_{1}, n_{2} , ……… n_{l} (n_{1 }+ n_{2}+ +…………… n_{l} = n) сводится к следующему.

В графе G (Х, U) находят вершину x_{i }\in  с минимальной локальной степенью \rho(х _{i}).

Если таких вершин несколько, то предпочтение отдаётся той вершине, которая имеет большее число кратных рёбер. С этой вершины начинается построение первого куска.

С этой целью в G_{ 1} первоначально включаются x_{i } и все вершины, смежные ей. Обозначим это множество Гx_{i}.

Если полученное число вершин равно " n_{1} ", то считаем, что кусок G_{ 1 } образован.

Если это число больше " n_{1} " , то удаляем "лишние" вершины, связанные с остающимися вершинами G_{ 1} меньшим числом рёбер.

В случае, когда мощность множества Гx_{i } меньше " n_{1} " , то из Гx_{i} выбирается вершина, удовлетворяющая условию

\sigma ( x _{i }) = \rho( х _{j }) -\alpha( х _{j} )  =  \max \sigma  ( x _{j }) ,\\
\min    х _{j} \in Гx_{i }, ( 19.7)

где \alpha( x _{j} ) - число рёбер, соединяющих вершину x _{j  } со всеми невыбранными вершинами.

Строим множество вершин Гx_{j}, смежных x_{j }, и процесс выборки вершин G_{ 1 } повторяется. Образованный подграф G_{ 1 } исключаем из исходного графа.

Получаем граф G* = (Х*, U*), где X* = X \ X_{1}, U* = U \ U_{1 }.

Далее в графе G* выбирается вершина с минимальной локальной степенью. Производится её помещение в G_{ 2 }, и процесс повторяется до тех пор, пока граф G не будет разрезан на "l" частей.

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

n >> n_{1} , n_{2}...............n_{l}.

Рассмотрим принципиальную электрическую схему RC - генератора, рис. 19.1.

Принципиальная электрическая схема RC-генератора

Рис. 19.1. Принципиальная электрическая схема RC-генератора

Обозначим условно элементы схемы через x_{i}. Представим эту схему в виде произвольного неориентированного графа G(X,U), у которого X=\{ x_1,x_2,x_3,x_4,x_5,x_6,x_7\}, а U - множество электрических связей элементов конструкции рис. 19.2. На этом рисунке клеммы схемы обозначены через К1, К2, К3, К4, соответственно.

Произвольный неориентированный граф

Рис. 19.2. Произвольный неориентированный граф

По исходному графу составляем матрицу смежности, R=||r_{ij}||, где r_{ij} - элемент матрицы, состоящий из пересечения i -ой строки и j -го столбца. Строки и столбцы матрицы смежности соответствуют вершинам графа, а ее ij -ый элемент равен числу кратных ребер, связывающих вершины x_{i}, x_{j}. Матрица смежности R неориентированного графа всегда симметрична.

Таблица 19. . 1. Матрица смежности
x_{1} x_{2} x_{3} x_{4} x_{5} x_{6} x_{7}
x_{1} 0 0 1 0 0 0 0
x_{2} 0 0 1 2 0 0 0
x_{3} 1 1 0 2 1 0 0
R= x_{4} 0 2 2 0 0 1 0
x_{5} 0 0 1 0 0 1 0
x_{6} 0 0 0 1 1 0 1
x_{7} 0 0 0 0 0 1 0
\rho(х_{i}) \rho (х_{1})=1 \rho (х_{2})=3 \rho (х_{3})=5 \rho (х_{4})=5 \rho (х_{5})=2 \rho (х_{6})=3 \rho (х_{7})=1

Суммируя элементы столбцов матрицы " R ", вычислим локальную степень каждой вершины \rho (х_{i}). Полученные результаты запишем в нижнюю строку матрицы.

Пусть, граф, изображённый на рис. 19.2, надо разбить на три куска с количеством вершин 3, 2, и 2 в каждом куске, соответственно. Эти условия в данной задаче будут ограничениями. Целью разбиения является получение минимального количества внешних связей, т.е. ребер, связывающих куски графа между собой.

Находим вершину x_i\in X с максимальной локальной степенью, которая определяется из матрицы смежности. Эта и все связанные с ней вершины помещаются в первый кусок G_{1}. В нашем случае это вершины: \rho (x_{3})=5, \rho (x_{4})=5. Пусть, с х_{3 } начнётся образование куска G_{1}. В него помещается x_{3} и все вершины, смежные с ней. Так как с х_{3} связаны х_{1}, х_{2}, х_{4} и х_{5}, то вершины, имеющие меньшее число связей с куском G_{1} (это x_{1} и x_{5} ), исключаются (рис. 19.3). Получился граф G_{1}(X_{1}, U_{1}), где X_{1}=\{x_{2 };x_{3 };x_{4}\}. Оставшуюся часть обозначают следующим образом: G*(X*, U*), где X *=\{x_{1}; x_{5}; x_{6}; x_{7}\}. Построим граф G* (рис. 19.4) и матрицу смежности для него (табл. 19.2).


Рис. 19.3.
Таблица 19.2.
х_{1} х_{5} х_{6} х_{7}
х_{1} 0 0 0 0
х_{5} 0 0 1 0
х_{6} 0 1 0 1
х_{7} 0 0 1 0
\rho(х_{i}) 0 1 2 1

Рис. 19.4.

Определим локальную степень вершины по матрице смежности

(х_{4}) = 0;  \rho (х_{5}) = 1; \rho(х_{6}) = 2; \rho(х_{7}) =1.

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

G1= (Х1, U1), \text{ где } Х_{1}=\{x_{2}; x_{3}; x_{4}\};\\
G2= (Х2, U2), \text{ где } Х_{2}=\{x_{6}; x_{7}\};\\
G3= (Х3, U3), \text{ где } X_{3}=\{x_{1}; x_{5}\}.

Окончательное разбиение графа приведено на рис. 19.5.

Окончательное  разбиение графа

Рис. 19.5. Окончательное разбиение графа

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

\Delta G = \cfrac{6}{4}=1,5

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

< Лекция 18 || Лекция 19: 123 || Лекция 20 >
Максим Троицкий
Максим Троицкий
Россия
Ярославй Грива
Ярославй Грива
Россия, г. Санкт-Петербург