Дер1
Дерево Дер, расширенное в пределах ограничения Предел;
ЕстьРеш
Индикатор, принимающий значения "да", "нет" и "никогда".Решение
Решающий путь, ведущий из стартовой вершины через дерево Дер1к целевой вершине и имеющий стоимость, не превосходящую ограничение
Предел (если такая целевая вершина была обнаружена).Переменные Путь
, Дер, и Предел - это "входные" параметры процедуры расширить в том смысле, что при каждом обращении к расширить они всегда конкретизированы. Процедура расширить порождает результаты трех видов. Какой вид результата получен, можно определить по значению индикатора ЕстьРеш следующим образом:(1) ЕстьРеш = да.
Решение
= решающий путь, найденный при расширении дерева Дер с учетом ограничения Предел.Дер1
= неконкретизировано.(2) ЕстьРеш = нет
Дер1
= дерево Дер, расширенное до тех пор, пока егоРешение
= неконкретизировано.(3) ЕстьРеш = никогда.
Дер1
и Решение = неконкретизированы.В последнем случае Дер
является "тупиковой" альтернативой, и соответствующий процесс никогда не будет реактивирован для продолжения просмотра этого дерева. Случай этот возникает тогда, когдаНекоторые предложения процедуры расширить
требуют пояснений. Предложение, относящееся к наиболее сложному случаю, когда Дер имеет поддеревья, т.е.Дер = д( В, F/G, [Д | ДД ] )
означает следующее. Во-первых, расширению подвергается наиболее перспективное дерево
Д. В качестве ограничения этому дереву выдается не Предел, а не-Рис. 12. 4.
Отношение расширить: расширение дерева Дер до техпор, пока
которое, возможно, меньшее значение Предел1
, зависящее отПредложение, относящееся к случаю
Дер = л( В, F/G)
порождает всех преемников вершины В
вместе со стоимостями дуг, ведущих в них из В. Процедура преемспис формирует список поддеревьев, соответствующих вершинам-преемникам, а также вычисляет ихДругие отношения:
после( В, В1, С)
В1 - преемник вершины В; С - стоимость дуги, ведущей из В в В1.h( В, Н)
Н - эвристическая оценка стоимости оптимального путииз вершины
В в целевую вершину.макс_f( Fмакс)
Fмакс - некоторое значение, задаваемое пользователем,про которое известно, что оно больше любой возможной
В следующих разделах мы покажем на примерах, как можно применить нашу программу поиска с предпочтением к конкретным задачам. А сейчас сделаем несколько заключительных замечаний общего характера относительно этой программы. Мы реализовали один из вариантов эвристического алгоритма, известного в литературе как А*-алгоритм (ссылки на литературу см. в конце главы). А*-алгоритм привлек внимание многих исследователей. Здесь мы приведем один важный результат, полученный в результате математического анализа А*-алгоритма:
Рис. 12. 5.
Связь междуее "детей" в пространстве состояний.
Алгоритм поиска пути называют
для всех вершин