Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

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

Читайте также:
  1. CRC-алгоритмы обнаружения ошибок
  2. VII. Алгоритмы продаж
  3. Алгоритм 4. Транспонування бази даних
  4. Алгоритм 5. Пошук автофильтром
  5. Алгоритм Apriori
  6. Алгоритм De Boor
  7. Алгоритм De Boor для Кривых NURBS

Приведем алгоритм Форда нахождения маршрутов с минимальной суммарной стоимостью ребер. Будет анализироваться помеченный граф с весами на ребрах. Граф с весами на ребрах называется взвешенным.

1°. Строим матрицу R взвешенного графа G.

Если вершины не смежны между собой, то в матрице ставим M. Фиксируем одну вершину xk и приписываем ей вес V(k) = 0, всем остальным вершинам приписываем вес V(j) = M.

2°. Берем произвольную вершину xj ¹ xk и находим смежную с xj вершину xi, имеющую вес ri,j. В начальный момент в качестве вершины xi берем фиксированную xk. Для xj и xi проверяется выполнение неравенства

V(j) > V(i) + ri,j. (15.8)

Если оно выполняется, то прежний вес V(j) вершины xj заменяется суммой V(i) + ri,j. В противном случае, вес V(j) остается неизменным.

3°. Повторяем пп. 1, 2 пока не рассмотрены все вершины.

4°. Конец работы алгоритма.

Для уменьшения объема вычислений операцию пересчета индексов сначала выполняют для всех xj, смежных с фиксированной xk, а затем продолжают это для вершин, смежных с выбранными ранее.

Операция пересчета производится для всех вершин графа до тех пор, пока ни одна из вершин не сможет принимать нового значения V(j). Тогда длинами кратчайших цепей от xj до xk будут величины V(j), полученные в результате замен переменных весов V(j) на новые.

Например, для графа G рис. 15.31 выполним алгоритм Форда.

Рис. 15.31. Пример графа G

В матрице R по главной диагонали проставлены нули, так как в графе G нет петель. При отсутствии связи между вершинами проставлен знак М.

Матрица смежности этого графа запишется так:

                 
          M   M .
      M M M    
    M       M  
R = 4   M       M M
  M M       M  
      M M M    
  M     M      

Принимаем вес вершины х 1 равным V(1) = 0, V(2) = V(3) = … = V(7) = M = ¥.

1) Фиксированная вершина xk = x 1.

2) Просматриваем все пары xi, xj и проверяем выполнение неравенства (15.8).

Пусть i = 1, j = 2, тогда имеем V(1) = 0, V(2) = M, r1,2 = 4.

Условие неравенства V(2) = M > V(1) + r 1,2 = 0 + 4 = 4. Поэтому вершине x 2 присваиваем новый вес V(2)1 = 4.

Для вершин, у которых ri,j = M, неравенство (15.8) выполняться не будет и вес V(j) останется прежним.

Далее, для x 3: V(3) = M > V(1) + r 1,3 = 0 + 5 = 5 и V(3)1 = 5.

Для x 4: V(4) = M > V(1) + r 1,4 = 0 + 9 = 9 и V(4)1 = 9.

Для x 6: V(6) = M > V(1) + r 1,6 = 0 + 2 = 2 и V(6)1 = 2.

Теперь произведем пересчет индексов для вершин, смежных с x 1, с учетом пути через другие смежные вершины.

Для x 2: V(2) = 4 < V(6) + r 2,6 = 2 + 5 = 7, значит, индекс вершины остается без изменения.

Для x 4: V(4) = 9 > V(3) + r 4,3 = 5 + 3 = 8, следовательно, меняем значение V(4) с 9 на 8 (см рис. 1.31).

Для x 6: V(6) = 2 < V(2) + r 2,6 = 4 + 5 = 9, здесь индекс остается без изменения.

Произведем пересчет индексов для вершин, несмежных с фиксированной вершиной x 1.

Вычислим индекс вершины x 5, его можно найти через x 3, x 4 или x 7. Индекс x 7 равен М, поэтому для нее неравенство (15.8) не выполняется.

Вычислим индекс вершины x 5 через x 4. Получим V(5)41 = M > V(4)1 + r 4,5 = 8 + 8 = 16.

Приняв V(5)1 = 16 за старое значение индекса, пересчитаем его через x 3:

V(5)31= 16 > V(3)1 + r3,5 = 5 + 3 = 8.

Так как условие (15.8) выполняется, то значение индекса V(5)1 = 16 заменяем на V(5)2 = 8.

Индекс x 7 можно определить через x 2, x 3, x 5, x 6.

V(7)21 = M > V(2)1 + r2,7 = 4 + 6 = 10,

V(7)51 = M > V(5)1 + r5,7 = 8 + 1 = 9,

V(7)31 = M > V(3)1 + r3,7 = 5 + 7 = 12,

V(7)61 = M > V(6)1 + r6,7 = 2 + 3 = 5.

Итак, V(1) = 0, V(2) = 4, V(3) = 5, V(4) = 8, V(5) = 8, V(6) = 2, V(7) = 5.

Алгоритм Форда дает кратчайшее расстояние от выбранных вершин до фиксированной вершины, а сами цепи не определяет.

Для определения цепи от выбранной вершины до фиксированной воспользуемся равенством V(j) ─ V(i) = ri,j.

Например, найдем путь от x 7 до x 1. Ищется предпоследний шаг при пересчете индекса V(7)1. Это x 7x 6. Затем для x 6 определяется вершина пересчета. Это x 6 - x1. Следовательно, кратчайший путь x 7x 6x 1, а кратчайшее расстояние между вершинами x 1 и x 7 определено ранее V(7)1 = 5.

Предположение, что при выборе на каждом шаге ближайшей вершины ожидаемая длина всего маршрута будет меньше, чем при любом другом выборе, не очевидно.

На рис. 15.32 приведен пример, когда необходимо определить путь из вершины

Рис. 15.32. Пример нахождения минимального маршрута

А в В с минимальной стоимостью. При выборе ближайшей вершины 1 из вершины А получим длину маршрута АВ = 13. Например, длины маршрутов А – 1 – 6 – 7 – В или А – 1 – 2 – 7 – 8 – В равны 13. В то же время все другие маршруты (через вершину 3) дают длину маршрута АВ = 8 (например, А – 3 – 4 – 5 – В).

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


Дата добавления: 2015-10-26; просмотров: 135 | Нарушение авторских прав


Читайте в этой же книге: Для выбора «лучшего» алгоритма необходимо получение оценок или границ для объема памяти и времени работы ЭВМ, которое потребуется алгоритму для обработки конкретных данных. 1 страница | Для выбора «лучшего» алгоритма необходимо получение оценок или границ для объема памяти и времени работы ЭВМ, которое потребуется алгоритму для обработки конкретных данных. 2 страница | Для выбора «лучшего» алгоритма необходимо получение оценок или границ для объема памяти и времени работы ЭВМ, которое потребуется алгоритму для обработки конкретных данных. 3 страница | Для выбора «лучшего» алгоритма необходимо получение оценок или границ для объема памяти и времени работы ЭВМ, которое потребуется алгоритму для обработки конкретных данных. 4 страница | Графический способ. | Теорема о функциональной полноте | КРИТЕРИИ ОЦЕНКИ | Способы задания графов | Примеры РЕШЕНИЯ ЗАДАЧ | Маршруты, цепи, циклы |
<== предыдущая страница | следующая страница ==>
ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ| ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ

mybiblioteka.su - 2015-2024 год. (0.014 сек.)