Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Conspekt.doc
Скачиваний:
11
Добавлен:
31.08.2019
Размер:
1.39 Mб
Скачать

3.6 Алгоритм поиска в глубину

Глубина вершины - номер ее уровня. При этом методе всегда раскрывается та вершина, которая имеет наибольшую глубину. Если таких вершин несколько, то должно существовать правило выбора (зависит от задачи). Глубину поиска обычно ограничивают некоторым уровнем. Этот уровень называется граничным. Т.е. раскрывается вершина с максимальной глубиной из вершин с глубиной, меньше граничного значения.

Алгоритм:

1.Поместить начальную вершину в список ОТК .

2.Если ОТК- пуст, то завершить решение задачи, сообщить о неудаче.

3.Перенести первую вершину ОТК в ЗКР. Проверить, является ли эта вершина целевой. Если вершина целевая, то возвратить пройденный путь на графе.

4.Раскрыть 1-ю вершину списка ЗКР и поместить все дочерние вершины, снабженные ссылками на родительскую вершину, которых нет в списке ЗКР в начало списка ОТК. Проверить критический уровень. Если мы его достигли, то не раскрывать вершину, а перейти к п.2.

5.Если критический уровень не достигнут, то перейти к п.3.

П ример:

ОТК ЗКР

1.Севастополь ---> Сев

2.Терновка-Сев ---> Терновка-Сев

Бахчисарай-Сев Сев

3.Куйбышево-Терн ---> Куйбышево-Терн

Ялта-Терн Терновка-Сев

Бахчисарай-Сев Сев

4.Ялта-Куйб ---> Ялта-Куйб

Ялта-Терн Куйбышево-Терн

Бахчисарай-Сев Терновка-Сев

Сев

5.Симф.-Ялта ---> Симф.-Ялта

Симф.-Бахчисарай Ялта-Куйб

Ялта-Терн Куйбышево-Терн

Бахчисарай-Сев Терновка-Сев

Сев

Обычно, критический уровень вводят тогда, когда граф представлен в виде дерева. В рассмотренном примере не имеет смысла вводить критический уровень.

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

Методы слепого перебора дают решение всегда, но они являются затратными.

3.7Алгоритм равных цен

Каждой вершине присваивается стоимость раскрытия вершин. Стоимость раскрытия некоторой вершины определяется: g(Vi+1)=g(Vi)+g(Vi,Vi+1), где Vi- родительская вершина.

Vi   Vi+1

g(Vi,Vi+1)- стоимость пути.

Стоимость раскрытия начальной вершины g(V0)=0.

Алгоритм:

1.Поместить начальную вершину V0 в список ОТК и положить стоимость раскрытия g(V0)=0.

2.Если ОТК- пустой, то завершить решение задачи, сообщить о неудаче.

3.Взять из ОТК ту вершину, которая имеет минимальную стоимость раскрытия и поместить ее в ЗКР на первое место. Присвоить этой вершине идентификатор V. Если вершин с равной минимальной стоимостью несколько, то берем любую из них.

4.Если V- целевая вершина, то выдать обратный путь.

5.Раскрыть вершину V и для каждой дочерней вершины определить стоимость раскрытия. Поместить эти вершины вместе с соответствующими стоимостями и указателями на родителtq в список ОТК. Если V не имеет дочерних вершин, то п.2. Если дочерние вершины есть, то раскрыть их и п.2.

Пример:

Севастополь

20 50

Терновка Бахчисарай

50 Куйбошево 25

50 30

50

Ялта 70 Симферополь

ОТК ЗКР

1.Севастополь,0 ---> Сев,0

2.Терновка-Сев,20 ---> Терновка-Сев,20

Бахчисарай-Сев,50 Сев,0

3.Бахчисарай-Сев,50 ---> Бахчисарай-Сев,50

Куйбош.-Терн,50 Терновка-Сев,20

Ялта-Терн,70 Сев,0

4.Симферополь-Бахч,80 ---> Куйбош.-Терн,50

Куйбош.-Терн,50 Бахчисарай-Сев,50

Ялта-Терн,70 Терновка-Сев,30

Куйбош.-Бахчисарай,75 Сев,0

5.Ялта - Куйбош.,100 ---> Ялта-Терн,70

Симферополь-Бахч,80 Куйбош.-Терн,50

Ялта-Терн,70 Бахчисарай-Сев,50

Куйбош.-Бахчисарай,75 Терновка-Сев,20

Сев,0

6.Ялта - Куйбош.,100 ---> Куйбош.-Бахчисарай,75

Симферополь-Бахч,80 Ялта-Терн,70

Куйбош.-Бахчисарай,75 Куйбош.-Терн,50

Ялта – Симферополь,140 Бахчисарай-Сев,50

Терновка-Сев,20

Сев,0

7.Ялта - Куйбош.,100 ---> Симферополь-Бахч,80

Ялта – Симферополь,140 Бахчисарай-Сев,50

Сев,0

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

Метод применяется, когда пространство поиска мало

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]