Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Кратчайший путь в ориентированном графе




Задача о кратчайшем пути.

ЗАДАЧА. Задан неориентированный граф. Функция стоимости - cij. Найти оптимальный путь между двумя вершинами.

 

АЛГОРИТМ МИНТИ.

1. Введем переменную c/ij =cij в начальный момент.

2. Пометим начальную вершину числом m0=0.

3. Для каждой помеченной вершины i будем метить те вершины, которые можно достичь из I по дугам с нулевым значением, т.е. mj=i еще не помеченные вершины j для которых c/ij=0. Пометки расставляем до тех пор, 1) пока не пометим конечную вершину пути или 2) пока нельзя будет сделать дальнейшие пометки.
В случае 1) искомый путь (определяется по пометкам) найден и задача решена.

4. Для всех помеченных вершин I определим

5. Уменьшим c/ij при и перейдем к п.3

ПРИМЕР 3.5.

М 9 К

 

2 2 4 3

А 3 1 2 7 В

 

Р 5 Т

 

Пометим вершину А числом mA= 0. Так как дальнейшая пометка невозможна, переходим к п.4: Δ=2, c/АМ=0, c/АР=1

Пометим вершину М: mМ= А. Δ=1, c/МР=0, c/АР=0, c/МТ=1, c/МК=8

Пометим вершину Р: mР= А. Δ=2, c/РК=3, c/РТ=4, c/МТ=0, c/МК=7

Пометим вершину Т: mТ. Δ=2, c/ТВ=5, c/ТК=0

Пометим вершину К: mК. Δ=3, c/КВ=0

Пометим вершину В: mВ

Получили оптимальный путь: A→M→T→K→В. Длина пути=11

 

МЕТОД расстановки пометок.

ДАНО: (I,D,G) – неориентированный граф;

L(i,j) – длина ребра [i,j];

n, k – начальная и конечная вершины цепи.

НАЙТИ: min L(n, k)

АЛГОРИТМ

  1. Пометим каждую вершину индексом λi
  2. Примем λk =0; все остальные λi =∞
  3. Найдем ребро (i,j), для которого λj –λi >L(i,j) и заменим λjj +L(i,j)
  4. Продолжим процесс до тех пор, пока существует хотя бы одно ребро, для которого можно уменьшить λj
  5. Найдем путь движением от начальной вершины к конечной по убыванию индексов переходом по дугам, для которых λi –λj =L(i,j)

4 В   2 3 А  
ПРИМЕР 3.6. Найти кратчайший путь от А до В.

 

 

3 4 2

5 2 2

5 2

3 3 4 3

 

2 4 1

 

 

РЕШЕНИЕ

Обозначим Г(х) – множество конечных вершин дуг исходящих из x, а Г-1(х) – множество начальных вершин дуг, входящих в х.

Порядковой функцией О(х) назовем функцию, определенную на множестве вершин: если xj Є Г(xi), то O(xj)>O(xi), т.е. если вершина xj следует за вершиной xi, то значение порядковой функции в ней больше, чем в xi Величину O(xi) будем называть уровнем вершины xi.

ЗАДАЧА. Задан ориентированный граф G=(X,U) без циклов и числовая функция на дугах. Построить минимальный путь из вершины А в вершину В.

ТЕОРЕМА ОПТИМАЛЬНОСТИ. Если некоторый путь, соединяющий вершины xi и xj, является минимальным, то его подпуть также является минимальным.

АЛГОРИТМ БЕЛЛМАНА.

1. Построим порядковую функцию О(х), полагая О(А)=0.

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

ПРИМЕР 3.7.

М 9 К

2 2 4 3

А 1 2 В

3 7

Р 5 Т

 

1. О(А)=0, О(М)=1, О(Р)=2, О(К)=3, О(Т)=4, О(В)=5

2. S(T)=7, S(K)=min(9,3)=3, S(P)=min(7,12)=7, S(M)=min(12,9,8)=8, S(A)=min(10,10)=10

Минимальный путь А→Р→К→В

АЛГОРИТМ ФОРДА.

1. Положим λi=∞ в каждой вершине, кроме λ0=0

2. Ищем дугу (xi, xj ): λji >l(xi, xj ) и заменяем λj на λi+l(xi, xj ) <λj
Поступаем так до тех пор, пока возможно найти дугу, уменьшающую хотя бы одно значение.

ПРИМЕР 3.8.

М 9 К

2 2 4 3

А 1 2

3 1 7 В

Р 5 Т

λА =0, λР =3 λМ =2,λК=7, λТ=8, λВ=10

 

ПРИЛОЖЕНИЕ ЗАДАЧИ.

1. Планирование транспортных маршрутов

2. Прокладка магистрали между двумя объектами

3. Установление последовательности взаимосвязанных работ




Поделиться с друзьями:


Дата добавления: 2014-01-20; Просмотров: 669; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.006 сек.