Программирование на языке Пролог для искусственного интеллекта
Шрифт:
Рис. 12.3. Программа
Аргументы процедуры
Путь | Путь между стартовой вершиной и корнем дерева Дер . |
Дер | Текущее (под)дерево поиска. |
Предел | Предельное значение f– оценки, при котором допускается расширение. |
Дер1 | Дерево Дер , расширенное в пределах ограничения Предел ; f– оценка дерева Дер1 больше, чем Предел (если только при расширении не была обнаружена целевая вершина). |
ЕстьРеш | Индикатор, принимающий значения "да", "нет" и "никогда". |
Решение | Решающий путь, ведущий из стартовой вершины через дерево Дер1 к целевой вершине и имеющий стоимость, не превосходящую ограничение Предел (если такая целевая вершина была обнаружена). |
Переменные
(1)
(2)
(3)
В последнем случае
Некоторые предложения процедуры
означает следующее. Во-первых, расширению подвергается наиболее перспективное дерево
Рис. 12.4. Отношение
Предложение, относящееся к случаю
порождает всех преемников вершины
Другие отношения:
после( В, В1, С) | В1 — преемник вершины В ; С — стоимость дуги, ведущей из В в В1 . |
h( В, H) | H — эвристическая оценка стоимости оптимального пути из вершины В в целевую вершину. |
макс_f( Fмакс) | Fмакс — некоторое значение, задаваемое пользователем, про которое известно, что оно больше любой возможной f– оценки. |
Рис. 12.5. Связь между g-оценкой вершины В и f- и g-оценками ее "детей" в пространстве состояний.
В следующих разделах мы покажем на примерах, как можно применить нашу программу поиска с предпочтением к конкретным задачам. А сейчас сделаем несколько заключительных замечаний общего характера относительно этой программы. Мы реализовали один из вариантов эвристического алгоритма, известного в литературе как А*-алгоритм (ссылки на литературу см. в конце главы). А*-алгоритм привлек внимание многих исследователей. Здесь мы приведем один важный результат, полученный в результате математического анализа А*-алгоритма:
Алгоритм поиска пути называют допустимым, если он всегда отыскивает оптимальное решение (т.е. путь минимальной стоимости) при условии, что такой путь существует. Наша реализация алгоритма поиска, пользуясь механизмом возвратов, выдает все существующие решения, поэтому, в нашем случае, условием допустимости следует считать оптимальность первого из найденных решений. Обозначим через h*(n) стоимость оптимального пути из произвольной вершины n в целевую вершину. Верна следующая теорема о допустимости А*-алгоритма: А*-алгоритм, использующий эвристическую функцию h, является допустимым, если
h(n) ≤ h*(n)
для всех вершин n пространства состояний.
Этот результат имеет огромное практическое значение. Даже если нам не известно точное значение h*, нам достаточно найти какую-либо нижнюю грань h* и использовать ее в качестве h в А*-алгоритме — оптимальность решения будет гарантирована.
Существует тривиальная нижняя грань, а именно:
h(n) = 0, для всех вершин n пространства состояний.
И при таком значении h допустимость гарантирована. Однако такая оценка не имеет никакой эвристической силы и ничем не помогает поиску. А*-алгоритм при h=0 ведет себя аналогично поиску в ширину. Он, действительно, превращается в поиск в ширину, если, кроме того, положить с(n, n')=1 для всех дуг (n, n') пространства состояний. Отсутствие эвристической силы оценки приводит к большой комбинаторной сложности алгоритма. Поэтому хотелось бы иметь такую оценку h, которая была бы нижней гранью h* (чтобы обеспечить допустимость) и, кроме того, была бы как можно ближе к h* (чтобы обеспечить эффективность). В идеальном случае, если бы нам была известна сама точная оценка h*, мы бы ее и использовали: А*-алгоритм, пользующийся h*, находит оптимальное решение сразу, без единого возврата.
Стеллар. Трибут
2. Стеллар
Фантастика:
боевая фантастика
рпг
рейтинг книги
Его огонь горит для меня. Том 2
2. Мир Карастели
Фантастика:
юмористическая фантастика
рейтинг книги
На границе империй. Том 9. Часть 4
17. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
рейтинг книги
Наследник
1. Рюрикова кровь
Фантастика:
научная фантастика
попаданцы
альтернативная история
рейтинг книги
