|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Решение задачи компоновки конструктивных узлов (продолжение)Лекция 5 Решение задачи компоновки конструктивных узлов (продолжение) Алгоритм 3 (последовательный алгоритм компоновки) Рассмотрим простой формальный последовательный алгоритм разбиения графа G=(E,U)на заданное число кусковG1,G2,…,Gl,максимизирующий число ребер, входящих в выделенные куски и оперирующий с матрицей смежности Rграфа G. Пусть граф G=(E,U) задан своей матрицей смежности R=||rij||, i,jÎJ=(1,2,…,n). Рассмотрим алгоритм разбиения графа на l кусков G1,G2,…,Gl с заданным количеством вершин в кусках tp (p=1,l). 1. Рассмотрим строку eiматрицы R, соответствующую вершине с максимальной локальной степеньюr(ei)и выбираем в ней наибольший элемент rij, причем i¹j. Вершины ei и ej относим к подмножеству E1’ÌE1. Переход к шагу 2. 2. Складываем поэлементно строки и столбцы ei и ej матрицы R. Переход к шагу 3.
3. В суммарной строке eij определяем максимальный элемент rij,k, k¹i, k¹j, вершину ek относим к множеству E1’. Если |E1’|=|E1|, то кусок сформирован. Переход к 4 . Если |E1’|<|E1|, то ij принимаем за i,а k за j, и переход к шагу 2. 4. Удаляем из графа G вершины подмножества E1 со всеми инцидентными им ребрами, т.е. вычеркиваем из матрицы строки и столбцы, соответствующие вершинам из подмножества E1. Полученную матрицу R’ принимаем заR и переходим к 1 шагу. 5. Если в матрице R осталось ровно |El| строк и столбцов, то работа алгоритма закончена. Пример алгоритма 3 Необходимо разбить этот граф на 3 куска G1=(E1,U1), G2=(E2,U2), G3=(E3,U3), содержащих по 3, 2 и 2 вершины соответственно.
Матрица смежности графа имеет вид
Реализация алгоритма: 1. Рассмотрим строку e6матрицы R, соответствующую вершине с максимальной локальной степеньюr(e6)=11и выбираем в ней наибольший элемент r67=6. Вершины e6 и e7 относим к подмножеству E1’={e6,e7}. 2. Т.к. |E1’|<|E1|=3, то поэлементно суммируем строки e6иe7. Матрица смежности примет вид:
3. В строке e67 выбираем наибольший элементe67,5=7. Вершину e5 относим к подмножеству E1’={e6,e7,e5}. Т.к. |E1’|=|E1|=3, то кусок G1 сформирован.
4. Удаляем из графа G вершины подмножества E1 со всеми инцидентными им ребрами, т.е. вычеркиваем из исходной матрицы строки и столбцыe6,e7,e5. Получаем матрицу
5. Рассмотрим строку e3матрицы R’, соответствующую вершине с максимальной локальной степеньюr(e3)=9и выбираем в ней наибольший элемент r34=5. Вершины e3 и e4 относим к подмножеству E2’={e3,e4}. Т.к. |E2’|=|E2|=2, то кусок G2 сформирован. 6. Оставшиеся вершины e1 и e1 относим к подмножеству E3’={e1,e2} и кусок G3 сформирован. Суммарное число внутренних ребер равно для полученного разбиения 22, а число соединительных ребер К=11, коэффициент разбиения ∆(G)=22/11. Алгоритм имеет преимущества по сравнению с алгоритмом 2, если матрица смежности представляющего схему графа имеет мало нулевых элементов. Оглавление Лекция 5. 1 Решение задачи компоновки конструктивных узлов (продолжение) 1 Алгоритм 3 (последовательный алгоритм компоновки) 1 Пример алгоритма 3. 3
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|