1. Выбрать любую вершину. Выбрать инцидентное вершине ребро е с самым маленьким весом, и пусть С является последовательностью ребер: е, е. С - стартовый "цикл", (хотя строго говоря это не цикл, так как данная последовательность содержит повторяющееся ребро).
2. Выбрать ребро с самым маленьким весом, которое присоединяет инцидентную ему вершину, находящуюся вне цикла С к вершине входящей в цикл С (может иметься несколько возможностей выбора таких ребер).
3. Увеличении цикла в результате включения выбранной вершины V0. Чтобы решить, как вставить V0, следует рассмотреть все пары V1 , V2 смежных вершин цикла С и выбрать такую пару, для которой выражение:
I = d10 + d02- d12
является минимальным, где dij - обозначает вес ребра, соединяющего Vi и Vj. Это выражение I представляет увеличение полного веса цикла С, после включения в него вершины V0. Мы увеличиваем цикл С, включая вершину V0 путем присоединения ребра соединяющего вершины V1 и V0, и ребра, соединяющего вершины V0 и V2, и удаляя затем ребро соединяющее вершины V1 и V2.
4. Повторяем шаги 2 и 3, пока цикл не будет включать в себя все вершины графа.
Пример 5.1. Проиллюстрируем алгоритм ближайшего включения для сети, представленной на рис. 13 (которая удовлетворяет неравенству треугольника). Веса ребер представлены в матрице расстояний, см. табл.9.
Табл. 9. Матрица расстояний dij, пример 4
узел
А
B
C
D
E
F
A
B
C
D
E
F
Чтобы выполнить шаг I, мы сначала выберем вершину маркированную на рисунке буквой А (мы могли бы, конечно, выбрать любую другую из вершин). Ребро eAFявляется ребром, инцидентным вершине А, и имеет самый маленький вес из числа ребер, инцидентных вершине А. Поэтому первый цикл будет: eAF, eFA (от вершины А до вершины F и назад к вершине А).
Рис. 13
Ребро с самым маленьким весом, инцидентное вершине А или вершине — F это ребро еАВ, поэтому вершина В — это первая вершина, которую следует вставить. Самый короткий путь, которым вершина В может быть вставлена в цепь будет: от вершины А до вершины В и назад через вершину F. Это порождает цепь еАВ, eBF, eFA, показанную на рис. 14.
Рис. 14
Вершина, которая является самой близкой к вершине этой цепи — это вершина С, поэтому мы должны найти лучший способ вставить ее. Цены I для трех ребер текущей цепи будут:
I (еAB) = dAC + dCB - dAB = 9 + 6 - 4 = 11,
I (eBF) = dBC + dCF - dBF = 6 + 12 - 6 = 12 ,
I (eFA) = dFC + dCA - dFA = 12 + 9 - 3 = 18.
Мы таким образом увеличиваем цепь путем удаления ребра еAB и вставляя на его место ребра еАС, еCB. Это дает цепь, показанную на рис. 15.
Рис. 15
Повторяя этот процесс дважды, мы увеличиваем цепь, включая сначала вершину D и затем вершину Е. Заключительная цепь, eAC, eCD, eDE, eEB, eBF, eFA, является требуемой цепью Гамильтона с полным весом 9 + 5 + 4+ 10+ 6 + 3 = 37.
Этот пример иллюстрирует тот факт, что алгоритм самой близкой вставки может не производить минимальную цепь Гамильтона. Граф действительно имеет единственную минимальную цепь Гамильтона - еАВ, еBC, eCD, eDE, eEF, eFA с полным весом 29.
ЛЕКЦИЯ 6. Сетевое планирование. Задача о кратчайшем сроке.