Реферат: Построение эйлерова цикла. Алгоритм Форда и Уоршелла

а б

Рис. 2.1

На рис. 2.1а изображен исходный помеченный граф и начальные значения li . На рис. 2.1б для того же графа указаны конечные значения li и выделен кратчайший путь. Пометка вершин графа происходила в следующем порядке (в скобках указана дуга, вдоль которой выполняется (1)):

l1 = 6 (x 0 , x 1 ),

l2 = 7 (x 0 , x 2 ),

l3 = 6 (x 0 , x 3 ),

l4 = 12 (x 1 , x 3 ),

l4 = 11 (x 2 , x 4 ),

l5 = 16 (x 3 , x 4 ),

l5 = 15 (x 4 , x 5 ),

l6 = 18 (x 4 , x 6 ),

l6 = 17 (x 5 , x 6 ).

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

Алгоритм Флойда

Обозначим lij длину дуги (xi , xj ), если таковой не существует примем lij = ¥, кроме того, положим lii = 0. Обозначим длину кратчайшего из путей из xi в xj с промежуточными вершинами из множества {x 1 , …, xm }. Тогда можно получить следующие уравнения

, (2)

. (3)

Уравнение (2) очевидно. Обоснуем уравнение (3). Рассмотрим кратчай­ший путь из xi в xj с промежуточными вершинами из множества {x 1 , …, xm , xm +1 }. Если этот путь не содержит xm +1 , то . Если же он содержит xm +1 , то деля путь на отрезки от xi до xm +1 и от xm +1 до xj , получаем равенство .

Уравнения (2) и (3) позволяют легко вычислить матрицу расстояний [dij ] между всеми парами вершин графа G (X , E ). На первом этапе согласно (2) составляем n ´n матрицу равную матрице [lij ] весов ребер (n – число вершин G (X , E )). n раз производим вычисление по итерационной формуле (3), после чего имеем – матрицу расстояний.

Отметим, что алгоритм Флойда непосредственно не указывает сам кратчайший путь между вершинами, а только его длину. Алгоритм Флойда можно модифицировать таким образом, чтобы можно было находить и сами пути. Для этого получим вспомогательную матрицу [Rij ], которая будет содержать наибольший номер вершины некоторого кратчайшего пути из xi в xj (Rij =0, если этот путь не содержит промежуточных вершин).

Эта матрица вычисляется параллельно с по следующим правилам

Последнее выражение следует из обоснования (3).

Теперь кратчайший путь выписывается из следующего рекурсивного алгоритма:

Кратчайший путь из xi в xj :

1°. Если Rij = 0 то выполнить 2°,

иначе выполнить 3°.

2°. Если i =j то выписать xi и закончить,

иначе выписать xi и xj закончить.

К-во Просмотров: 197
Бесплатно скачать Реферат: Построение эйлерова цикла. Алгоритм Форда и Уоршелла