А.С. Шандриков
Витебский государственный политехнический колледж учреждения образования «Витебский государственный технологический университет»
РАЗРЕЗАНИЕ МУЛЬТИГРАФА ПОСЛЕДОВАТЕЛЬНЫМ МЕТОДОМ
В работе [1] описан порядок компоновки радиоэлектронных средств (РЭС) с многоуровневой иерархической структурой, осуществляемый путём разрезания графа, являющегося математической моделью принципиальной электрической схемы. Описанный метод в общем случае позволяет быстро получить лучший по сравнению с [2, 3] результат компоновки с точки зрения минимума внешних связей между сформированными кусками, то есть между отдельными блоками РЭС. Однако анализ принципиальных электрических схем сложных РЭС показывает, что в их составе значительное количество радиоэлектронных компонентов соединены между собой более чем одной цепью. Особенно это касается РЭС, построенных на интегральных микросхемах. При грамотном, аналитическом подходе к моделированию таких схем их математические модели должны представлять собой мультиграфы [4]. Мультиграф с большим количеством кратных рёбер позволяет реализовать иной метод решения задачи разрезания на заданное количество кусков, суть которого заключается в следующем.
1) В формируемый кусок назначается начальная пара вершин, имеющая наибольшее количество кратных рёбер r(xi,xj).
2) Для пополнения формируемого куска недостающими вершинами или удаления лишних вершин используется число связности [1].
3) При разрезании графа на неравные по количеству вершин куски первым формируется кусок, содержащий наименьшее количество вершин. При этом полученный результат не рассматривается в качестве окончательного: продолжается формирование до получения поочерёдно всех промежуточных кусков в порядке возрастания количества вершин и конечного куска, содержащего наибольшее количество вершин.
Предлагаемый метод разрезания мультиграфа реализуется следующим алгоритмом.
Шаг 1. Построить матрицу смежности разрезаемого мультиграфаи определить локальную степень каждой вершины графа. Перейти на шаг 2.
Шаг 2. Отыскать в матрице смежности элемент rij, расположенный на пересечении xi строки и xj столбца и удовлетворяющий условию rij = maxrij.
Если таких элементов несколько, то из них следует выбрать тот, у которого соответствующие ему вершины xi и xj имеют меньшую сумму локальных степеней. Перейти на шаг 3.
Шаг 3. Назначить выбранные вершины xi и xj в формируемый кусок. В результате будет получено двухэлементное множество Xi = {xi,xj}. Перейти на шаг 4.
Шаг 4. Проверить выполнение условия |Xi| = nk,где nk – количество вершин, заданное для одного из кусков требуемого разрезания.
Если условие выполняется, то перейти на шаг 6, в противном случае – на шаг 5.
Шаг 5. Пополнить множество Xiещё одной вершиной. Для этого в строках xi и xj матрицы смежности отыскать элемент rimили rin, имеющий максимальное значение. Если таких элементов несколько, то из них следует выбрать тот, у которого соответствующая ему вершина xm (или xn) имеет большее количество связей с вершинами множества Xi или меньшую локальную степень. Перейти на шаг 4.
Примечание: предпоследний кусок заданного разрезания пополняется оставшейся вершиной только в том случае, если вершина xm или xn имеет положительное число связности.
Шаг 6.Кусок сформирован, однако полученный результат следует считать предварительным. Определить и зафиксировать коэффициент разрезания сформированного куска. Перейти на шаг 7.
Шаг 7. Проверить выполнение условия |Xi| = nmax.
Если условие выполняется, то перейти на шаг 8, в противном случае – на шаг 5.
Шаг 8. Поверить выполнение условия nk = nl-1, где l – количество кусков заданного разрезания.
Если условие выполняется, то перейти на шаг 9, в противном случае – на шаг 11.
Шаг 9. Из полученных на шаге 6 предварительных вариантов формируемого куска выбрать тот, который имеет максимальный коэффициент разрезания. Перейти на шаг 10.
Шаг 10. Удалить из матрицы смежности строки и столбцы, соответствующие вершинам, назначенным в формируемый кусок. Перейти на шаг 2.
Шаг 11. Сформировать последний по счёту кусок заданного разрезания из множества вершин, не вошедших в состав ранее сформированных кусков. Перейти на шаг 12.
Шаг 12. Вывод результатов разрезания с указанием:
- состава сформированных кусков (блоков);
- количества внутренних связей;
- количества внешних связей;
- коэффициента разрезания.
Перейти на шаг 13.
Шаг 13. Конец работы алгоритма.
Пример. На рис. 1 представлен граф G = (X,U), у которого |X| = 12, |U| = 28. Требуется разрезать граф G на три куска G1,G2 и G3 по 4, 3 и 5 вершин соответственно.
Решение
1) Построить матрицу смежности графа G.
x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | x10 | x11 | x12 | ρ(xi) | ||||
x1 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 2 | 0 | 1 | 0 | 5 | |||
x2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 2 | |||
x3 | 0 | 0 | 0 | 1 | 2 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 5 | |||
x4 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 2 | 1 | 0 | 0 | 0 | 5 | |||
x5 | 0 | 0 | 2 | 0 | 0 | 0 | 2 | 1 | 0 | 0 | 1 | 0 | 6 | |||
R = | x6 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 2 | (1) | |
x7 | 2 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 6 | |||
x8 | 0 | 0 | 1 | 2 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 6 | |||
x9 | 2 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 5 | |||
x10 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 3 | |||
x11 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 5 | |||
x12 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 3 | 0 | 6 |
2) Определить локальную степень каждой вершины мультиграфа и занести их значения в дополнительный столбец матрицы смежности.
3) Отыскать в матрице смежности элемент rij, имеющий максимальное значение. В матрице 4.11 данному условию удовлетворяет элемент
r(x11,x12) = 3.
4) Назначить в формируемый кусок мультиграфа двухэлементное множество X(2) = {x11,x12}.
5) Мощность данного множества |X1(2)| = 2 <nmin = 3, заданного для наименьшего по количеству вершин куска, следовательно, данное множество необходимо пополнить ещё одной вершиной. Для этого в строках x11 и x12 найти элемент r11-mr12-nс максимальным значением (кроме элемента r(x11,x12)). Таких элементов пять: r(x11, x1) = 1; r(x11, x5) = 1; r(x12, x2) = 1; r(x12, x8) = 1; r(x12, x10) = 1.
Дополнить множествоX(2) вершиной x2, так как она имеет минимальное число связности α(x2) = –1. Получим трёх элементное множество
X(3) = {x11,x12, x2}.
6) Мощность полученного множества |X1(3)| = nmin = 3, что соответствует количеству вершин второго куска. Будем считать, что второй кусок заданного разрезания предварительно сформирован, но так как граф разрезается на неравные по количеству вершин куски, то данный результат не следует принимать как окончательный.
7) Коэффициент разрезания полученного куска Δ(G(3)) = 4/5 = 0,8.
8) Продолжить пополнение формирование множестваX1(3) до четырёх вершин. Для этого в строкеx2 отыскать максимальный элемент. Таких элементов два: r(x2,x10) = 1 и r(x2,x12) = 1.
9) Вершина x12 уже вошла в состав формируемого куска, следовательно, назначаем в множествоX1(3) вершину x10. Получим: X1(4) = {x11,x12,x2,x10}.
10) Мощность полученного множества |X1(4)| = 4, что соответствует количеству вершин, заданному для первого куска. Как и в предыдущем случае (п. 6)), будем считать, что первый кусок заданного разрезания сформирован, но полученный результат – предварительный.
11) Коэффициент разрезания полученного куска Δ(G(4)) = 6/4 = 1,5.
12) Продолжить пополнение формирование множестваX1(4) до пяти вершин. Для этого в строке x10отыскать максимальный элемент. Таких элементов три: r(x10,x2) = 1; r(x10,x7) = 1; r(x10,x12) = 1.
13) Вершины x2 и x12 уже вошли в состав формируемого куска, следовательно, назначаем в множествоX1(4) вершину x7. Получим:
X1(5) = {x11,x12,x2,x10,x7}.
14) Коэффициент разрезания полученного куска Δ(G(5)) = 7/7 = 1.
15) Из трёх полученных коэффициентов разрезания максимальное значение имеет Δ(G(4)) = 1,5, следовательно, окончательно сформированным считаем кусок G1 = (X1,U1), где X1 = {x2,x10,x11,x12}.
16) Удалить из матрицы смежности (1) строки и столбцы, соответствующие вершинам, назначенным во второй кусок. Получим:
x1 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | ρ(xi) | ||||
x1 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 2 | 4 | |||
x3 | 0 | 0 | 1 | 2 | 0 | 0 | 1 | 1 | 5 | |||
x4 | 0 | 1 | 0 | 0 | 1 | 0 | 2 | 1 | 5 | |||
x5 | 0 | 2 | 0 | 0 | 0 | 2 | 1 | 0 | 5 | |||
R = | x6 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 2 | (2) | |
x7 | 2 | 0 | 0 | 2 | 0 | 0 | 0 | 1 | 5 | |||
x8 | 0 | 1 | 2 | 1 | 1 | 0 | 0 | 0 | 5 | |||
x9 | 2 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 5 |
17) Отыскать в матрице смежности элемент rij, имеющий максимальное значение. В матрице (2) таких элементов пять:
r(x1,x7) = 2; ρ(x1) + ρ(x7) = 4 + 5 = 9;
r(x1,x9) = 2; ρ(x1) + ρ(x9) = 4 + 5 = 9;
r(x3,x5) = 2; ρ(x3) + ρ(x5) = 5 + 5 = 10;
r(x4,x8) = 2; ρ(x4) + ρ(x8) = 5 + 5 = 10;
r(x5,x7) = 2; ρ(x5) + ρ(x8) = 5 + 5 = 10.
18) Множества {x1,x7} и {x1,x9} имеют наименьшую сумму локальных степеней. Назначить в формируемый кусок мультиграфа множество X2(2) = {x1,x7}, имеющее младший индекс.
19) Мощность данного множества |X1(2)| = 2 <nmin = 3, заданного для наименьшего по количеству вершин куска, следовательно, данное множество необходимо дополнить ещё одной вершиной. Для этого в строках x1 и x7 найти элемент r1m и r7nс максимальным значением. Таких элементов три:
r(x1,x9) = 2; ρ(x1) + ρ(x9) = 4 + 5 = 9;
r(x3,x5) = 2; ρ(x3) + ρ(x5) = 5 + 5 = 10;
r(x5,x7) = 2. ρ(x5) + ρ(x8) = 5 + 5 = 10.
Дополнить множествоX2(2) вершиной x9. Получим: X2(3) = {x1,x7,x9}.
20) Предварительно сформирован второй кусок заданного разрезания. Коэффициент разрезания полученного куска Δ(G(3)) = 5/4 = 1,25.
21) Продолжить пополнение множества X2(3) до пяти вершин. В строке x9 отыскать максимальный элемент r9n. Так как вершины x1 и x7 уже вошли в формируемый кусок, то рассмотрим элементы:
r(x9,x3); ρ(x9) + ρ(x3) = 5 + 5 = 10;
r(x9,x4); ρ(x9) + ρ(x4) = 5 + 5 = 10;
22) Сумма локальных степеней у множеств {x9,x3} и {x9,x4} одинакова, поэтому назначаем вершинуx3 как имеющую младший индекс. Получим:
X2(4) = {x1,x7,x9,x3}.
23) Полученное множество необходимо дополнить ещё одной вершиной. Для этого в строке x3 отыскать максимальный элемент r3n. Таким элементом является элемент r(x3,x5).
24) Назначить вершинуx5 в формируемое множество. Получим:
X2(5) = {x1,x7,x9,x3,x5}
25) Коэффициент разрезания полученного куска Δ(G(5)) = 10/7 = 1,43.
26) Окончательно сформированным считаем кусок G3 = (X3,U3), где
X3 = {x1,x7,x9,x3,x5}
27) Вершины x4,x6 и x8, не вошедшие в ранее сформированные куски, автоматически образуют второй кусок заданного разрезания: G2 = (X2,U2), где X2 = {x4,x6,x8}.
28) Результат разрезания мультиграфа представлен на рис. 2. Коэффициент разрезания Δ(G) = 20/8 = 2,5. Ранее такой результат можно было получить только матричным методом разрезания мультиграфа.
Рис. 2
Литература
1. Шандриков, А.С. Математическое моделирование компоновки радиоэлектронных средств разрезанием графа последовательным методом // Академия развития творчества [Электрон. ресурс] – Режим доступа :https://www.art-talant.org/publikacii/42340-matematicheskoe-modelirovanie-komponovki-radioelektronnyh-sredstv-razrezaniem-grafa-posledovatelynym-metodom.
2. Мелихов, А.Н. Применение графов для проектирования дискретных устройств /А.Н. Мелихов, Л.С. Бернштейн, В.М. Курейчик – Москва : Наука, 1974 – 304 с.
3. Методы разбиения схем РЭА на конструктивно законченные части / К.К. Морозов [и др.]; под ред. К.К. Морозова. – Москва : Сов. радио, 1978 – 136 с.
4. Шандриков, А.С.Формирование математических моделей принципиальных электрических схем радиоэлектронных средств методом // Академия развития творчества [Электрон. ресурс] – Режим доступа :https://www.art-talant.org/publikacii/42346-formirovanie-matematicheskih-modeley-principialynyh-elektricheskih-shem-radioelektronnyh-sredstv.
Системы автоматизированного проектирования (специальность 2-40 01 01)