Задачи удобнее решать, когда они формализованы, т.е. представлены в одной из стандартных форм, методы решения для которой известны
Существует несколько типовых форм представления задач. Основные из них – поиск в пространстве состояний и поиск на графах «И-ИЛИ».
Процедуры поиска м/б информированными или неинформированными. Информированные – когда известна какая-либо дополнительная информация кроме минимально необходимой. Например: минимальная информация для поиска пути – матрица связи городов дорогами, к дополнительной информации относится: качество дорог, посты ДПС, длина дорог. Дополнительная информация позволяет быстрей найти наилучшее решение. Для ее использования разработаны различные эвристические алгоритмы.
Когда информация минимальна, то используются методы полного перебора в том или ином варианте. 1) Поиск в пространстве состояний.
Решение задачи представляется как поиск путей на множестве состояний. Есть тройка множеств (S0,F,Sy), где S0- множество исходных состояний, Sy – множество целевых состояний, F- множество операторов, переводящих одни состояния в другие. Требуется найти путь из S0 в Sy. Решить задачу – найти последовательность операторов f1,f2,f3,…,fk,(fi принадлежит F), f- преобразовывает начальное состояние в целевое.
Поиск удобно вести на графе. Вершины – состояния, дуги – операторы перехода.
Если Pi->Pj , то Pi вершина-родитель, а Pj вершина-преемник, потомок, дочерняя. Раскрытие вершины – определение множества ее потомков.
Процесс поиска удобно отображать в виде дерева. Пример: Дерево: на каждом шаге происходит:
1) проверка «Новое состояние – целевое?» Если «Да» то конец;
2) Определение потомков, раскрытие вершин;
3) Выбор направления перехода и его выполнение.
На этом примере очевидно:
1) При неуправляемом переборе возможно зацикливание(S0->S3->S2->S1->S3);
2) Есть тупиковые ветви и тупиковые вершины (S6), она – терминальная и нецелевая;
3) Существуют различные варианты достижения целей. Стратегия поиска – функция от имеющейся информации, стоимости поиска и т.д.
Из неинформированных процедур, наиболее известный – поиск вглубь и поиск вширь.
При поиске вглубь, вершины раскрываются в порядке их порождения.
Часто используют ограничения на глубину поиска, т.е. задают предельное количество шагов, после которых возвращаются.
При поиске вширь, вершины раскрываются в порядке удаления от центра поиска (исходной вершины). Преимущества поиска вширь: быстро находятся решения, если они сравнительно близко Недостатки: Необходимо запоминать все множество путей на дереве.
В кружочках на рисунке – порядок поиска при использовании поиска вглубь.
Трудоемкость поиска решений принято оценивать количеством раскрытых вершин. Объем раскрытых вершин возрастает по мере удаления от исходной:
При разработке был предложен встречный поиск.
Поиск считается завершенным, когда в обоих списках появится хотя бы одна одинаковая вершина.
Если из любой вершины есть путь в любую другую, можно применить безвозвратные методы поиска.
В противном случае, применяется методы поиска с возвратом (бэктрекинг).
Существуют простейшие варианты с возвратом на один шаг (хронологический бэктрекинг) и более сложные методы возврата.
При их использовании (бэктрекинг управляемой зависимостью) возврат по дереву поиска идет сразу на несколько шагов до точки, с которой начиналась дорога к неуспеху, запоминаются неудачные ходы, зацикливания, и далее эти пути уже исключаются.
Если исходное состояние одно , а целевых много, то лучше применять прямые методы поиска.
Если исходных состояний несколько, а целевое – одно, то лучше применять обратные методы.
При одинаковом числе состояний, прямые и обратные методы эквивалентны.
Опубликовал Kest
January 11 2010 11:45:28 ·
0 Комментариев ·
9589 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.