Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
А_ЛЕКЦИИ 8-9.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
924.16 Кб
Скачать

5.5.2. Примеры представлений в виде графа and/or

Пример 5.5.1. Представление в виде графа AND/OR задачи поиска маршрута

Для задачи поиска кратчайшего маршрута (см. рис.5.13) граф AND/OR, который включает функцию стоимости, можно определить следующим образом.

  • Узлы OR имеют форму X-Z, а это означает, что нужно найти кратчайший маршрут от X до Z.

  • Узлы AND имеют такую форму:

X-Z via Y

а это означает — найти кратчайший маршрут от X до Z, при условии, что этот маршрут должен пройти через Y.

  • Узел X-Z является целевым узлом (простейшая задача), если X и Z на карте со­ единены непосредственно.

  • Стоимость каждого целевого узла X-Z представляет собой указанное дорожное расстояние между X и Z.

  • Стоимости всех других (нетерминальных) узлов равны 0.

Стоимость графа решения представляет собой сумму стоимостей всех узлов в гра­фе решения (в данном случае это сумма стоимостей всех терминальных узлов). Для за­дачи, показанной на рис.5.13, начальным узлом является a-z. На рис. 5.17.показано дерево решения со стоимостью 9. Это дерево соответствует маршруту [a,b,d,f,i,z], который можно реконструировать из дерева решения, посетив все листья в этом де­реве в последовательности слева направо.

Рис.5.17. Дерево решения с минимальной стоимостью для задачи поиска маршрута (см. рис.5.13.), оформленное в виде графа AND /OR

Пример 5.5.2. Задача с ханойской башней

Задача с ханойской башней (рис.5.18) является еще одним классическим приме­ром эффективного применения схемы декомпозиции AND/OR. Для упрощения рас­смотрим описанную ниже простую версию этой задачи, содержащую только три диска.

Даны три оси, 1, 2 и 3, и три диска, а, bи с (из них а — самый маленький и с — самый большой). Первоначально все диски нанизаны на ось 1. Задача состоит в том, чтобы перенести их все на ось 3. Разрешено переносить одновременно только один диск и нельзя класть диск большего диаметра на диск меньшего диаметра.

Рис.5.18. Задача с ханойской башней

Такую задачу можно рассматривать как задачу достижения следующего множест­ва целей.

  1. Диск а на оси 3.

  2. Диск b на оси 3.

  3. Диск с на оси 3.

К сожалению, эти цели не являются независимыми. Например, диск а можно не­медленно нанизать на ось 3, достигнув первой цели. Но это помешает достижению двух других целей (если мы не откажемся от непосредственного достижения первой цели). К счастью, имеется удобный способ упорядочения процесса достижения этих целей, такой, что решение можно легко найти на основании этого упорядочения. Требуемую последовательность достижения всех целей можно определить с помощью следующих рассуждений: цели 3 (диск с на оси 3) достичь сложнее всего, поскольку для перемещения диска с необходимо преодолеть больше всего ограничений. Хоро­шая идея, которая часто оказывается продуктивной в подобных ситуациях, состоит в том, что вначале следует попытаться достичь самой сложной цели. В основе этого принципа лежит наблюдение, что если другие цели не являются такими труднодос­тижимыми (не связаны с преодолением таких ограничений, как самая трудная), то можно надеяться, что их удастся достичь без необходимости отмены результатов дос­тижения этой самой трудной цели.

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

вначале достичь цели "диск с на оси 3"; затем достичь оставшихся целей.

Но первой из этих целей нельзя достичь немедленно: в начальной ситуации диск с невозможно переместить сразу же, поскольку на нем лежат еще два диска. Поэто­му вначале подготовим этот ход и уточним нашу стратегию следующим образом.

  1. Обеспечить перемещение с оси 1 на ось 3 диска с.

  2. Перенести с оси 1 на ось 3 диск с.

  3. Достичь оставшихся целей — диск а на оси 3 и диск b на оси 3.

Диск с можно перенести с оси 1 на ось 3, если оба оставшихся диска, а и b , на­низаны на ось 2. Поэтому наша первоначальная задача переноса с оси 1 на ось 3 дис­ков a, b и с сводится к трем перечисленным ниже подзадачам.

Чтобы переместить с оси 1 на ось 3 диски а, b и с, необходимо выполнить следующее.

  1. Переместить с оси 1 на ось 2 диски а и b.

  2. Переместить с оси 1 на ось 3 диск с.

  3. Переместить с оси 2 на ось 3 диски а и b.

Задача 2 является тривиальной (решение состоит из одного хода). Две другие под­задачи можно решить независимо от задачи 2, поскольку диски а и b можно перено­сить независимо от положения диска с. Чтобы решить задачи 1 и 3, можно приме­нить тот же принцип декомпозиции (на этот раз самой сложной является задача пе­ремещения диска b). В соответствии с этим задача 1 сводится к трем перечисленным ниже тривиальным подзадачам.

Чтобы переместить с оси 1 на ось 2 диски а и Ь, необходимо выполнить следующее.

  1. Переместить с оси 1 на ось 3 диск а.

  2. Переместить с оси 1 на ось 2 диск b.

  3. Переместить с оси 3 на ось 2 диск а.

В заключение отметим, что многие игры такие, например, как шахматы и шашки, могут быть естественным образом представленные в виде графов AND/OR. (см.1) .В 1.-3. можно найти описание процедур поиска на AND/OR графах с реализацией их на языке Пролог (см.1).

5.6.Упражнения.

  1. Приведите примеры следующих графов:

1.1. Граф,имеющий петли и параллельные ребра;

1.2. Корневой граф, имеющий циклы;

1.3. Корневой ациклический граф, не являющийся деревом;

1.4. Граф- дерево, не являющееся корневым графом.

2. Выберите схему расположения пяти городов с указанием разметки ( расстояний между городами или стоимостей переездов из города в город) ; постройте пространство состояний для задачи коммивояжера с такой схемой городов; укажите путь в графе , представляющий решение задачи.

  1. Представьте в пространстве состояний известную задачу о переправе через реку человека, волка, козы и капусты.

  1. Пройдите «вручную» алгоритм с возвратами для выбранного Вами корневого графа на 15 вершинах, имеющего хотя бы один цикл.

  1. Составьте программу на языке Турбо- Пролог , реализующую алгоритм поиска с возвратами на Вашем графе из п. 4.

  2. Постройте дерево эвристического поиска для игры в «8» с начальными позициями

а). 1 3 4 б). 2 1 6

8 2 4 8

7 6 5 7 5 3 ,

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

  1. Приведите пример задачи, допускающей естественную декомпозицию на подзадачи и укажите ее представление графом AND/OR.

  2. Постройте граф состояний для задачи о ханойской пирамиде, представляя состояния упорядоченной тройкой чисел из набора

{1, 2,3}.

9. Постройте граф состояний для известной задачи о кувшинах: имеются два кувшина вместимостью 8 и 5 литров и бочка

с жидкостью. Как , использую только указанные емкости, отмерить 4л ?

10*. Из доски , содержащей 2n x 2n клеток вырезано по одной клетке из двух противолежащих (по диагонали) углов. Докажите, что теперь доску невозможно покрыть полностью фишками размером 1х2 так, чтобы они не высовывались за край доски и не накрывали друг друга.

Указание: Удалите из доски по одной клетке из двух ее противолежащих углов. Покажите, что теперь невозможно полностью покрыть эту искаженную доску фишками размером 1´2 так, чтобы они не высовывались за край доски и не накрывали друг друга. Рекомендуем рассмотреть сначала частные случаи доски: 2´2, 4´4, 8´8 и лишь потом перейти к общему случаю.

11*. На каком-нибудь процедурном языке программирования разработайте программу поиска решений в игре в «8».

12*. На языке Турбо-Пролог разработайте программу реализующую алгоритм решения задачи «Обезьяна и бананы».

13*. На каком-нибудь процедурном языке разработайте программу:

13.1. Поиск в глубину в пространстве состояний;