Вопрос 5: Последовательные методы компановки узлов

Идея метода

В графе по определённому правилу определяется 1 или несколько вершин и назначаются в первый формируемый кусок. Затем, по определённым правилам в этот кусок добавляется ещё 1 или несколько вершин и этот процесс добавления повторяется до тех пор, пока кусок не будет сформирован. Факт формирования (конца) куска определяется заданными ограничениями. После этого вершины, вошедшие в него и инцидентные им рёбра исключают из исходного графа. К оставшимся частям графа применяется тот же алгоритм формирования куска.

Преимущества алгоритма:

  • простота
  • малые временные затраты на решение задач

Недостаток:

  • относительно низкое качество решения задач

Пример последовательного алгоритма

Пусть имеется схема, заданная взвешенным графом схемы (ВГС).

Вес = кратность ребра.

Пример графа:

graph

Матрица смежности для графа размерности n:

graph

Задача: разбить граф на m кусков с числом вершин L1,L2...Lm L_1, L_2...L_m.

Критерий: минимум числа межузловых соединений.

Куски формируют последовательно. Будем формировать первый кусок, содержащий L1 L_1 вершин.

Алгоритм

ШАГ1: в исходном графе выбирается вершина с минимальной локальной степенью. (Минимальная локальная степень - число рёбер, примыкающих к вершине.) Выбранная вершина ei e_i может быть названа ядром.

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

ШАГ2: выбранную вершину отправляем в подмножество Γej \Gamma e^*_j - группу вершин.

ej=>Γej e^*_j => \Gamma e^*_j

ШАГ3: в подмножество Γej \Gamma e^*j добавляем все вершины смежные с добавленной на предыдущем шаге.

Γej=ej,ej \Gamma e_j = {e^*_j,e_j}, где ej e_j - смежна с ej e^*_j

ШАГ4: сравниваем мощность полученного подмножества с ограничением (L1 L_1).

Возможны варианты: Γej=L1=> |\Gamma e^*_j| = L1 => переходим к 7 шагу. Γej>L1=> |\Gamma e^*_j| > L1 => переходим к 5 шагу. Γej<L1=> |\Gamma e^*_j| < L1 => переходим к 6 шагу.

ШАГ5: Из сформированного подмножества Γej \Gamma e^*_j удаляем вершину с min числом рёбер.Снова проверяем критерий (шаг4).

ШАГ6: добавить порцию вершин, среди вершин ej e_j из Γej \Gamma e^*_j выбирается вершина, связанная с остальными вершинами данного подмножества наибольшим числом рёбер (ej e^*_j), т.е. смежную вершину, не принадлежащую Γej \Gamma e^*j, но максимально связанную с ej e_j, принадлежащую Γej \Gamma e^*_j. Добавляем её в Γej \Gamma e^*_j и проверяем критерий (Шаг4).

ШАГ7: (кусок сформирован)

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

Алгоритм максимальной коньюнкции и минимальной дизъюнкции

Отличие: после выбора ядра назначаем по 1 вершине и повторяем цикл, связанный с выбором вершин.

Смысл: На каждом цикле куску назначается вершина с максимальным числом рёбер, но с минимальным числом рёбер, связанных с невыбранными элементами.

Последовательный алгоритм c последовательным формированием узлов

Пусть элементы равногабаритные (иначе вводят вес рёбер, чем больше размеры и площадь элементов, тем больше вес)

Выбирают пару вершин ei e_i и ej e_j, связанную между собой максимальным числом рёбер. Объединяем их в 1 кусок, затем рассматриваются как единое целое, но объединяется при условии:

rij>max r_ij -> max

pi+pj<=P p_i + p_j <= P, где PP - суммарный вес

Пример:

primer


results matching ""

    No results matching ""