КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Алгоритм Форда
Задача о кратчайшем пути Взвешенный граф
Пусть задан граф G (V, E). Если каждому ребру этого графа поставлено в соответствие некоторое число, то граф называется взвешенным. При задании взвешенных графов в матрицу смежности (или список) заносятся веса.
Пусть задан связный взвешенный граф. Будем истолковывать его вершины как населенные пункты, а веса как расстояния между ними. Поставим задачу о нахождении такого маршрута, соединяющего х и х , чтобй сумма расстояний была минимальной (маршрут не обязан включать все вершины).
Рис. 46. Пример дорожного графа
Обозначим l ─ расстояние от i - той до смежной с ней j - той вершины. Задача о нахождении кратчайшего расстояния может быть решена прямым перебором всевозможных расстояний. Кроме кратчайшего расстояния нам необходимо еще и знание промежуточных вершин, через которые пролегает маршрут. Если n – велико, то эта задача становится трудно разрешимой. Возникает необходимость в разработке более компактного алгоритма.
Сущность этого алгоритма заключается в том, что каждой i - той вершине ставится в соответствие некоторое число , значение которого зависит от значения предыдущей вершины и расстояния между ними. Сначала объявляется = 0, а все остальные = ∞:
Обозначим через l расстояние между i - той и j - той вершинами. Пусть назначена i - той вершине (I = 0,1,…, n). Рассмотрим все j - ые вершины, смежные с i - той. Если - > l (1) то полагаем =+ l (2) И так до тех пор, пока не дойдем до . Значение и будет значением кратчайшего пути. Обратный ход: Мы получили =+ l (1*) Среди расстояний, соединяющих х со смежными вершинами, ищем l = -. Затем ищем вершину х , у которой =+ l . Затем переходим в х и так далее, пока не доберемся до х . Замечание 1: Изменение значения происходит только тогда, когда выполняется неравенство (1), то есть >+ l . Заменяя значение по формуле (2 ), мы тем самым уменьшаем его. Так как граф связный, то висячих вершин нет, и, следовательно, каждая вершина получит значение . Замечание 2: При каждом поиске предыдущей вершины обратного хода необходимо проверять все смежные вершины, так как предыдущая вершина может быть не единственной. Обоснование алгоритма: Так как значение при каждом шаге может только уменьшаться, то последовательность значений для каждой вершины в конечном итоге принимает минимальное значение, т.е каждое - это кратчайшее расстояние данной вершины от х . Пример:
Рис. 47. Пример взвешенного графа
1) i = 0, j = 1, 2, 3; J = 1: -= ∞ - 0 = ∞ > l ; =+ l = 5; заносим в таблицу. j =2: -= ∞ - 0 = ∞ > l ; =+ l = 6; заносим в таблицу. j =3: -= ∞ - 0 = ∞ > l ; =+ l = 4; заносим в таблицу. 2) i = 1, j = 0, 2, 4 (0 –уже не рассматриваем). j = 2: -< 11 , <+ l ; значит не меняем j = 4: >+ l , = 5 + 8 = 13; заносим в таблицу. 3) i = 2, j = 0, 1, 3, 4. j = 0; не рассматриваем j = 1: <+ l ; значит не меняем . j = 3: <+ l ; значит не меняем j = 4: >+ l , =6 +2 = 8; заносим в таблицу. 4) i = 3, j = 0, 2, 5, 6; j = 0; не рассматриваем j = 2: <+ l ; значит не меняем j = 5: = 4+6 =10; заносим в таблицу. j = 6: =+ l , = 4+ 10 =14; заносим в таблицу. 5) i = 4, j = 1,2,5,7; j = 1: <+ l ; значит не меняем j =2: <+ l ; значит не меняем j= 5: <+ l ; значит не меняем j = 7: =+ l , = 10; заносим в таблицу. 6) i = 5, j = 3, 4, 6, 7; j = 3: <+ l ; значит не меняем j = 4: <+ l ; значит не меняем j = 6: =+ , =14; заносим в таблицу. j = 7: <+ l ; значит не меняем 7) i =6, j = 3, 5, 7; j = 3: <+ l ; значит не меняем j = 5: <+ l ; значит не меняем j = 7: <+ l ; значит не меняем 8) i = 7, j= 4, 5, 6; j = 4; не рассматриваем j = 5; не рассматриваем j = 6: <+ l ; значит не меняем Получили схему:
Обратный ход: Начиная с последней вершины, проверяем все ей смежные на выполнение условия: l = -. Получим кратчайший путь хПоучаем: хххх.
Дата добавления: 2014-01-06; Просмотров: 362; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |