Смекни!
smekni.com

Построение маршрута при групповой рассылке сетевых пакетов данных (стр. 7 из 8)

(f) поддеревья соединяются кратчайшим образом.

Выигрыш в данном случае составляет 2 условные единицы длины.

Для перестроения возникающих в результате удаления ребра двух деревьев предлагается использовать все выше предложенные подходы. А именно: локальное перестроение дерева для глобальных и дополнительных вершин (стратегия I), то же самое плюс объединение свободных ребер (стратегия J). Рассматривать следует лишь только те вершины и ребра, которые были изменены или появились в результате разделения дерева на два поддерева. Действительно, использование тех или иных процедур перестроения в качестве самостоятельных этапов перед работой рассматриваемого алгоритма гарантирует то, что их повторное использование не может дать какой-либо выигрыш. Поэтому, например, в процедуре объединения свободных ребер поддерева вместо рассмотрения всех пар свободных ребер поддерева достаточно ограничиться рассмотрением всех новых свободных ребер с остальными. Одно новое ребро обычно возникает при начальном отсоединении ребра (ребра AB и CD на рисунке 3.7d), одно или несколько могут возникнуть после процедуры локального перестроения (ребро CE на рисунке 3.7e).

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

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

Все выше приведенные рассуждения, ограничения и экспериментальные данные объясняют постулированное в самом начале главное ограничение. Удаление ребра, обе вершины которого глобальные вершины, абсолютно неэффективная процедура.

Для максимального улучшения дерева можно добавить также процедуру объединения вершины и свободного ребра: сначала в качестве самостоятельного этапа, а затем в составе процедуры перестроения поддеревьев (стратегия K приложения). Этот метод аналогичен процедуре объединения двух свободных ребер (рисунок 3.8).

Рисунок 3.8 – Процесс объединения свободного ребра и вершины

(a) исходная конфигурация;

(b) в дерево добавляется ребро CD, соединяющее свободное ребро AB и вершину C;

(c) в возникшем цикле удаляется самое длинное ребро.

Выигрыш в данном случае составляет 1 условную единицу длины.

Жесткие ребра не берутся в рассмотрение по уже указанной причине, а именно, изначально хорошая конфигурация дерева Штейнера дает максимальную эффективность только лишь при работе со свободными ребрами. А при работе в составе процедуры перестроения поддеревьев следует ограничиться следующими множествами:

- новые свободные ребра – все вершины поддерева;

- все новые и измененные вершины поддерева – все старые и новые свободные ребра.

3.5 Стратегии алгоритма

Стратегия 0 – процедура перестроения дерева без каких-либо методов улучшения как таковых. Посчитана отдельно и приведена здесь для того, чтобы показать общее для всех стратегий время, затрачиваемое на предварительные мероприятия (выделение памяти, инициализация переменных), и время на последующее освобождение памяти, дабы отделить это время от непосредственно методов улучшения.

Стратегия A – локальное перестроение дерева для всех глобальных точек.

Стратегия B – локальное перестроение дерева для всех дополнительных точек.

Стратегия C – объединение двух вышеописанных стратегий A и B.

Стратегии D, E, F аналогичны стратегиям A, B, C соответственно, но в каждом случае локального перестроения дерева включены в рассмотрение инцидентные точки второго уровня.

Все нижеследующие стратегии содержат стратегию C в качестве первого этапа (кроме специально оговоренного случая).

Стратегия G – процедура объединения свободных ребер.

Стратегия H – процедура объединения всех ребер (горизонтальных, вертикальных и свободных).

Все нижеследующие стратегии содержат стратегию G в качестве второго этапа.

Стратегия I – процедура удаления ребер с дополнительными точками. В качестве процедуры перестроения поддеревьев используется локальное перестроение дерева для глобальных и дополнительных точек.

Стратегия J – то же самое, что и стратегия I, но в процедуру перестроения поддеревьев добавлена процедура объединения свободных ребер.

Стратегия K – то же самое, что и стратегия J, но добавлена процедура объединения точек и свободных ребер в качестве отдельного этапа и в составе процедуры перестроения поддеревьев.

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

3.6 Заключительный вид алгоритма

Исходный алгоритм последовательного введения дополнительных точек в дерево ПримаКраскала выглядит теперь следующим образом:

- 1 этап: предварительная отбраковка дополнительных вершин;

- 2 этап: последовательное введение дополнительных вершин в дерево Прима;

- 3 этап: динамическое перестроение дерева Штейнера.

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

Для этапа перестроения предлагается использовать стратегию J. Эта стратегия в сравнении с другими имеет лучшее соотношение числа положительных исходов ко времени счета. Среднее число положительных исходов при применении данного метода составляет несколько процентов для задач с 6-ю – 7-ю точками, уже около двух десятков процентов для задач с 10-ю точками и больше 90% для задач с 60-ю точками.

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

3.7 Генетические алгоритмы

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

Популяция – набор решений.

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

Основной сложностью применения ГА для построения ортогональных деревьев Штейнера является оптимальное кодирование и выбор эффективных генетических операторов. Повышение эффективности алгоритма достигается за счет введения в процедуру поиска оператора мутации, транслокации и рекомбинации. Оператор транслокации до последнего времени не применялся при решении задач оптимизации.

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

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

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

Оператор мутации случайно выбирает ген в хромосоме и обменивает его на рядом расположенный ген.

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