Чтение онлайн

на главную - закладки

Жанры

Неизвестно

Шрифт:

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

Если наш И / ИЛИ-граф - это граф общего вида, содержащий циклы, то пролог-система, следуя стратегии в глубину, может войти в бесконечный рекурсивный цикл

.

Попробуем постепенно исправить эти недостатки. Сначала определим нашу собственную процедуру поиска в глубину для И / ИЛИ-графов.

Прежде всего мы должны изменить представление И / ИЛИ-графов. С этой целью введём бинарное

отношение, изображаемое инфиксным оператором '--->'. Например, вершина а с двумя ИЛИ-преемниками будет представлена предложением

а ---> или : [b, с].

Оба символа '--->' и ':' - инфиксные операторы, которые можно определить как

:- ор( 600, xfx, --->).

:- ор( 500, xfx, :).

Весь И / ИЛИ-граф рис. 13.4 теперь можно задать при помощи множества предложений

а ---> или : [b, с].

b ---> и : [d, e].

с ---> и : [f, g].

е ---> или : [h].

f ---> или : [h, i].

цель( d). цель( g). цель( h).

Процедуру поиска в глубину в И / ИЛИ-графах можно построить, базируясь на следующих принципах:

Для того, чтобы решить задачу вершины В, необходимо придерживаться приведенных ниже правил:

(1) Если В - целевая вершина, то задача решается тривиальным образом.

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

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

Если применение этих правил не приводит к решению, считать, что задача не может быть решена.

Соответствующая программа выглядит так:

решить( Верш) :-

цель( Верш).

решить( Верш) :-

Верш ---> или : Вершины, % Верш - ИЛИ-вершина

принадлежит( Верш1, Вершины),

% Выбор преемника Верш1 вершины Верш

решить( Bepш1).

решить( Верш) :-

Верш ---> и : Вершины,
% Верш - И-вершина

решитьвсе( Вершины).

% Решить все задачи-преемники

решитьвсе( [ ]).

решитьвсе( [Верш | Вершины]) :-

решить( Верш),

решитьвсе( Вершины).

Здесь принадлежит– обычное отношение принадлежности к списку.

Эта программа все еще имеет недостатки:

она не порождает решающее дерево, и

она может зацикливаться, если И / ИЛИ-граф имеет соответствующую структуру (циклы).

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

решить( Верш, РешДер).

Решающее дерево представим следующим образом. Мы имеем три случая:

(1) Если Верш– целевая вершина, то соответствующее решающее дерево и есть сама эта вершина.

(2) Если Верш– ИЛИ-вершина, то решающее дерево имеет вид

Верш ---> Поддерево

где Поддерево– это решающее дерево для одного из преемников вершины Верш.

(3) Если Верш– И-вершина, то решающее дерево имеет вид

Верш ---> и : Поддеревья

где Поддеревья– список решающих деревьев для всех преемников вершины Верш.

% Поиск в глубину для И / ИЛИ-графов

% Процедура решить( Верш, РешДер) находит решающее дерево для

% некоторой вершины в И / ИЛИ-графе

решить( Верш, Верш) :- % Решающее дерево для целевой

цель( Верш). % вершины - это сама вершина

решить( Верш, Верш ---> Дер) :-

Верш ---> или : Вершины, % Верш - ИЛИ-вершина

принадлежит( Верш1, Вершины),

% Выбор преемника Верш1 вершины Верш

решить( Bepш1, Дер).

Поделиться:
Популярные книги

Я Пилигрим

Хейз Терри
Детективы:
прочие детективы
боевики
7.67
рейтинг книги
Я Пилигрим

Методы статистического анализа исторических текстов (часть 2)

Фоменко Анатолий Тимофеевич
Научно-образовательная:
история
5.00
рейтинг книги
Методы статистического анализа исторических текстов (часть 2)

Петербургские трущобы. Том 1

Крестовский Всеволод Владимирович
1. Петербургские трущобы
Проза:
историческая проза
9.10
рейтинг книги
Петербургские трущобы. Том 1

Игрок, забравшийся на вершину (цикл 7 книг)

Михалек Дмитрий Владимирович
Игрок, забравшийся на вершину
Фантастика:
фэнтези
6.10
рейтинг книги
Игрок, забравшийся на вершину (цикл 7 книг)

Во власти Скорпиона. Вернуть свое

Майерс Александр
2. Путь Скорпиона
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Во власти Скорпиона. Вернуть свое

Астральный летчик

Яковлев Алексей
Детективы:
триллеры
5.00
рейтинг книги
Астральный летчик

Точка Бифуркации VIII

Смит Дейлор
8. ТБ
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Точка Бифуркации VIII

Иржина

Завойчинская Милена
Фантастика:
фэнтези
8.12
рейтинг книги
Иржина

Добыча

Ергин Дэниел
Деловая литература:
о бизнесе популярно
5.00
рейтинг книги
Добыча

Бояръ-Аниме. Газлайтер. Том 33

Володин Григорий Григорьевич
33. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
6.40
рейтинг книги
Бояръ-Аниме. Газлайтер. Том 33

Том 11. Былое и думы. Часть 6-8

Герцен Александр Иванович
11. Собрание сочинений в тридцати томах
Проза:
русская классическая проза
5.00
рейтинг книги
Том 11. Былое и думы. Часть 6-8

Непорочность

Фэй Кира
Фантастика:
ужасы и мистика
9.16
рейтинг книги
Непорочность

Во весь голос

Маяковский Владимир Владимирович
Проза:
советская классическая проза
5.00
рейтинг книги
Во весь голос

Седьмой урок

Сказбуш Николай Иосифович
Проза:
советская классическая проза
5.00
рейтинг книги
Седьмой урок