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

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

Жанры

Неизвестно

Шрифт:

ЕстьРеш1, ЕстьРеш, Реш).

расширить( _, д( _, _, [ ]), _, _, никогда, _ ) :- !.

% Тупиковое дерево - нет решений

расширить( _, Дер, Предел, Дер, нет, _ ) :-

f( Дер, F), F > Предел. % Рост остановлен

продолжить( _, _, _, _, да, да, Реш).

продолжить( П, д( В, F/G, [Д1, ДД]), Предел, Дер1,

ЕстьРеш1, ЕстьРеш, Реш):-

( ЕстьРеш1 = нет, встав( Д1, ДД, НДД);

ЕстьРеш1 = никогда, НДД = ДД),

опт_f( НДД, F1),

расширить( П, д( В, F1/G, НДД), Предел, Дер1,

ЕстьРеш, Реш).

преемспис( _, [ ], [ ]).

преемспис( G0, [В/С | ВВ], ДД) :-

G is G0 + С,

h( В, Н), % Эвристика h(B)

F is G + Н,

преемспис( G0, ВВ, ДД1),

встав( л( В, F/G), ДД1, ДД).

% Вставление дерева Д в список деревьев ДД с сохранением

% упорядоченности по f-оценкам

встав( Д, ДД, [Д | ДД] ) :-

f( Д, F), опт_f( ДД, F1),

F =< F1, !.

встав( Д, [Д1 | ДД], [Д1 | ДД1] ) ) :-

встав( Д, ДД, ДД1).

% Получение f-оценки

f( л( _, F/_ ), F). % f-оценка листа

f( д( _, F/_, _ ) F). % f-оценка дерева

опт_f( [Д | _ ], F) :- % Наилучшая f-оценка для

f( Д, F). % списка деревьев

опт_f( [ ], Fмакс) :- % Нет деревьев:

мaкс_f( Fмакс). % плохая f-оценка

мин( X, Y, X) :-

Х =< Y, !.

мин( X, Y, Y).

Рис. 12. 3. Программа поиска с предпочтением.

Аргументы процедуры расширить имеют следующий смысл:

Путь Путь между стартовой вершиной и корнем дерева Дер.

Дер Текущее (под)дерево поиска.

Предел Предельное значение f– оценки, при котором допускается расширение.

Дер1 Дерево Дер, расширенное в пределах ограничения Предел;

f– оценка дерева Дер1 больше, чем Предел ( если только при расширении не была обнаружена целевая вершина).

ЕстьРеш Индикатор, принимающий значения "да", "нет" и "никогда".

Решение Решающий путь, ведущий из стартовой вершины через дерево Дер1

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

Переменные Путь, Дер, и Предел– это "входные" параметры процедуры расширить в том смысле, что при каждом обращении к расширить они всегда конкретизированы. Процедура расширить порождает результаты трех видов. Какой вид результата получен, можно определить по значению индикатора ЕстьРеш следующим образом:

(1) ЕстьРеш = да.

Решение = решающий путь, найденный при расширении дерева Дер с учетом ограничения Предел.

Дер1 = неконкретизировано.

(2) ЕстьРеш = нет

Дер1 = дерево Дер, расширенное до тех пор, пока его f– оценка не превзойдет Предел (см. рис. 12.4).

Решение = неконкретизировано.

(3) ЕстьРеш = никогда.

Дер1 и Решение = неконкретизированы.

В последнем случае Дер является "тупиковой" альтернативой, и соответствующий процесс никогда не будет реактивирован для продолжения просмотра этого дерева. Случай этот возникает тогда, когда f– оценка дерева Дер не превосходит ограничения Предел, однако дерево не может "расти" потому, что ни один его лист не имеет преемников, или же любой преемник порождает цикл.

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

Элизиум. Аликс и монеты

Андерсон Александр
1. Элизиум
Фантастика:
фэнтези
сказочная фантастика
8.98
рейтинг книги
Элизиум. Аликс и монеты

Последний Паладин. Том 4

Саваровский Роман
4. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 4

География растений

Гумбольдт Александр
Классики естествознания
Научно-образовательная:
ботаника
7.50
рейтинг книги
География растений

Обломов

Гончаров Иван Александрович
Проза:
классическая проза
русская классическая проза
8.78
рейтинг книги
Обломов

Стражи душ

Кас Маркус
4. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Стражи душ

Личный аптекарь императора. Том 3

Карелин Сергей Витальевич
3. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Личный аптекарь императора. Том 3

Черный рынок

Вайс Александр
6. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Черный рынок

Путь к бессмертию 1

Покинтелица Евгений
1. Девятихвостый Богатырь
Фантастика:
попаданцы
сказочная фантастика
фэнтези
5.00
рейтинг книги
Путь к бессмертию 1

Роза ветров

Кас Маркус
6. Артефактор
Фантастика:
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Роза ветров

Белые погоны

Лисина Александра
3. Гибрид
Фантастика:
фэнтези
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Белые погоны

Афганский рубеж 3

Дорин Михаил
3. Рубеж
Фантастика:
попаданцы
альтернативная история
6.00
рейтинг книги
Афганский рубеж 3

Романов. Том 1 и Том 2

Кощеев Владимир
1. Романов
Фантастика:
фэнтези
попаданцы
альтернативная история
5.25
рейтинг книги
Романов. Том 1 и Том 2

Двойник короля 16

Скабер Артемий
16. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 16

Тринадцатый V

NikL
5. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый V