Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Анализосновныхметодовпоиска




В данном разделе проводятся анализ и сравнение основных методов поиска. Вна­чале рассмотрим их применение для поиска в графах, затем прокомментируем опти­мальность вырабатываемых ими решений. Наконец, проанализируем предъявляемые ими требования к ресурсам времени и пространства.

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



Часть II. Применение языка Prolog в области искусственного интеллекта



 


Рас. 11.8. Пример дублирования узлов: а) пространства состояний, в котором а представляет собой начальный узел; б) дерево всех возмож­ных ациклических путей из узла з, которое, по сути, формируется про граммой поиска в ширину, приведенной в листинге 11.3

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

Но в приведенных в данной главе программах не учитываются какие-либо стои­мости, связанные с дугами в пространстве состояний. Если в качестве критерия оп­тимизации рассматривается минимальная стоимость пути решения (а не его длина), поиск в ширину не может обеспечить выбор оптимального пути решения. Для опти­мизации стоимости предназначен поиск по заданному критерию, который рассмат­ривается в главе 12.

Типичной проблемой, связанной с поиском, является комбинаторная сложность. При наличии нетривиальных проблемных областей количество вариантов, подлежа­щих рассмотрению, становится столь значительным, что наибольшее значение при­обретает существенное увеличение затрат ресурсов на исследование данных вариан­тов. Можно легко проанализировать причины того, почему это происходит. Для уп­рощения такого анализа предположим, что пространство состояний представляет собой дерево с единообразным ветвлением Ь. Это означает, что каждый узел в дереве, за исключением листьев, имеет точно b преемников. Предположим, что кратчайший путь решения имеет длину d, и в дереве на глубине d или меньшей отсутствуют ли­стья. Количество альтернативных путей длины d от начального узла равно ъ°. При поиске в ширину количество рассматриваемых путей пропорционально Ь". Это обо­значается как О (Ьс). Итак, количество возможных путей очень быстро возрастает при увеличении их длины, что приводит к так называемому комбинаторному взрыву.

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

Рассмотрим поиск в ширину в дереве с коэффициентом ветвления Ь и кратчай­шим путем решений длиной d. Количество узлов на последовательно углубляющихся


Глава 11. Основные стратегии решения проблем



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

1 + b to2 + b 3 +...

Общее количество узлов, вплоть до глубины решения с, составляет Э(ЬП), поэто­му затраты ресурсов времени при поиске в ширину измеряются значением Qjb^). Кроме того, при поиске в ширину информация обо всех возможных путях хранится в памяти, поэтому затраты ресурсов пространства также измеряются значением 0(bd).

Задача анализа неограниченного поиска в глубину является менее очевидной, по­скольку при таком поиске система может полностью пропустить правильный путь решения длиной о и неограниченно долго продолжать поиск в бесконечном поддере­ве. Для упрощения анализа рассмотрим поиск в глубину, ограниченный максималь­ной глубиной draaK, такой, что d < cW Затраты времени при этом измеряются зна­чением ОоЛынс). Но затраты ресурсов пространства составляют всего C(dms*). При

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

При итеративном углублении выполняется поиск в глубину (d + 1) со все воз­растающей глубиной: О, I,..., d. Поэтому затраты ресурсов пространства при этом по­иске измеряются значением 0!d). Посещение начального узла происходит {d + 1) раз, дочерних узлов начального узла — d раз и т.д. В худшем случае количество формируемых узлов измеряется следующим выражением: (d+l)*l + d*b + (d-l}*b2 +... + l*bd

Это выражение также измеряется значением 0(bd;. Но фактически затраты на повторное формирование узлов верхних уровней по сравнению с поиском в ширину весьма малы. Можно показать, что отношение между количеством узлов, вырабаты­ваемых при итеративном углублении и при поиске в ширину, составляет приблизи­тельно Ь/! b - 1). При Ь Ь 2 такие дополнительные расходы на итеративное углуб­ление относительно невелики, если к тому же учесть весьма значительное уменьше­ние потребности в пространстве по сравнению с поиском в ширину. В этом смысле итеративное углубление сочетает в себе наилучшие свойства поиска в ширину (гарантированное достижение оптимального решения) и поиска в глубину (экономия пространства) и поэтому на практике часто является наиболее предпочтительным среди всех основных методов поиска.

Рассмотрим также двунаправленный поиск (упражнения 11.10-11.12). В тех слу­чаях, если этот метод поиска является применимым (известен целевой узел), он мо­жет привести к значительной экономии. Предположим, что имеется граф поиска с единообразным ветвлением b в обоих направлениях, а двунаправленный поиск реа­лизован как поиск в ширину в обоих направлениях. Допустим, что кратчайший путь решения имеет длину d, поэтому двунаправленный поиск окончится, когда встретят­ся оба пути поиска в ширину; это означает, что оба эти пути пройдут приблизитель­но до середины между начальным и целевым узлами. Таким образом, встреча путей произойдет, когда они пройдут от своих соответствующих узлов на глубину, состав­ляющую примерно d/2. Поэтому затраты ресурсов при выполнении поиска в каждом из направлений измеряются значением, которое ориентировочно равно Ь. При та­ких благоприятных обстоятельствах двунаправленный поиск позволяет найти путь решения длиной d с потреблением примерно таких же ресурсов, как при поиске в ширину, но в результате решения более простой задачи с длиной пути решения, рав­ной d/2. В табл. 11.1 приведены итоговые данные, позволяющие провести сравнение основных методов поиска.

244 Часть II. Применение языка Prolog в области искусственного интеллекта


Таблица 11.1. Приближенные оценки затрат ресурсов, связанных с использованием основных методов поиска. Здесь b - коэффициент ветвления, d - длина кратчайшего пути решения, d™, предел глубины при поиске в глубину, d_< dr.«

Метод поиска Время Пространство Сам ое к оротк: ое га р а нтир уе мое решен и


е


 

Поиск в ширину   Ъ" b да
Поиск а глубину   b<W ■drrai l-.Cl
Итеративное углубление   ъ" d да
Двунаправленный, если он возможен bd/2 ьа/3 да

Рассматриваемые в данной главе основные методы поиска не обеспечивают вы­полнения каких-либо обоснованных действий, позволяющих преодолеть комбинатор­ный взрыв. В них все возможные пути рассматриваются как в равной степени пер­спективные и не используется какая-либо информация, относящаяся к конкретной задаче, для управления ведением этого поиска в более перспективном направлении. В данном смысле эти методы не являются достаточно информационно насыщенными. Поэтому описанные в этой главе простые методы поиска не позволяют решать круп­номасштабные задачи. При решении подобных задач необходимо использовать ин­формацию, относящуюся к конкретной проблеме, для обеспечения целенаправленно­го поиска. Такая руководящая информация называется эвристикой. Алгоритмы, в которых применяются эвристики, обеспечивают выполнение эвристического поиска. Подобный метод поиска представлен в следующей главе.

Резюме



Пространство состояний используется в качестве формализованной структу­ры для представления проблем.

Пространство состояний - это ориентированный граф, узлы которого соответ­ствуют проблемным ситуациям, а дуги •— возможным действиям. Конкретная задача определяется с помощью начального узла и целевого состояния. В та­ком случае решение задачи соответствует одному из путей в графе. Поэтому решение задачи сводится к поиску пути в графе.

Задачи оптимизации можно моделировать, назначая стоимости дугам в про­странстве состояний.

Тремя основными стратегиями поиска, которые позволяют систематически ис­следовать пространство состояний, являются поиск в глубину, поиск а ширину и итеративное углубление.

Разработка программы поиска в глубину может быть осуществлена проще все­го, но такая программа восприимчива к образованию циклов. Для предотвра­щения циклов применяются два простых метода: ограничение глубины поиска и проверка на наличие повторяющихся узлов.

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

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

Для поиска в ширину требуется больше пространства, чем для поиска в глу­бину. На практике пространство часто является наиболее важным и ограни­ченным ресурсом.

Метод поиска в глубину с итеративным углублением сочетает в себе наилуч­шие свойства поиска в глубину и в ширину.


 


Глава 11.Основные стратегии решения проблем



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

• В настоящей главе представлены следующие понятия;

 

• пространство состояний;

• начальный узел, целевое условие, путь решения;

• стратегия поиска;

• поиск в глубину;

• поиски ширину;

• поиск с итеративным углублением;

• двунаправленный поиск;

• эвристический поиск.





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 509 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Ваше время ограничено, не тратьте его, живя чужой жизнью © Стив Джобс
==> читать все изречения...

2340 - | 2309 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.