Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
5.6. Алгоритм А*Всякой ситуации
где последовательности действий, начинающейся с S и заканчивающейся решением. Следовательно, Алгоритм А (см. скан) В алгоритме А в отношении функции
Следовательно, функция
где Теорема. Алгоритм А приводит к цели за конечное число шагов, если существует конечная последовательность действий, которая ведет от исходной ситуации к решению. Доказательство. Сначала заметим, что если число возможных действий для каждой ситуации всегда конечно и число самих ситуаций тоже конечно, то алгоритм А заведомо сходится. В самом деле, ведь каждая итерация вычеркивает из множества О одну вершину и добавляет в него некоторое конечное число новых; при этом поисковый граф останется конечным, и его проверка потребует лишь конечного числа итераций. Итак, допустим, что поисковый граф бесконечен и условия нашей теоремы выполняются. Будем рассуждать от противного и предположим, что алгоритм А работает неограниченно долго. Это возможно только при условии, что само множество О возрастает бесконечно. Покажем, что в этом случае наименьшее из значений
Тем самым реальное значение
Поскольку эвристическая функция
Таким образом, если Докажем теперь, что на каждом этапе работы алгоритма вплоть до его остановки в множестве О обязательно присутствует вершина
Пусть существует конечная последовательность действий и ситуаций, ведущая от
В частности, если исходная последовательность была оптимальной, то
Итак, предположение о бесконечности Конечно, значения функции и с помощью
мы можем доказать, что для каждой полученной вершины алгоритм А уже построил оптимальную последовательность, заканчивающуюся в этой вершине. При этом последовательность значений функции Последний случай является вариантом алгоритма Моора— Дейкстры (1957) поиска кратчайшего пути на графе (разд. 4.2). Несомненно, большим недостатком этого алгоритма является его поведение при отсутствии решения поставленной задачи. Пример применения алгоритма А*Рассмотрим знаменитую головоломку, которую изобрел гениальный Сэм Лойд, — игру в 8. На
(Символ Выберем в качестве оценочных функций: Итак, мы имеем 1) 2) Монотонность Было предложено несколько вариантов этого алгоритма. Так, наиболее общая форма функции
где
Рис. 5.7. Алгоритм А для игры в 8: дерево поиска. в оценке между бесспорной составляющей В действительности коэффициент а не обязательно должен оставаться постоянным в течение всего поиска: можно уменьшать его значение по мере нашего продвижения вперед, когда эвристическая оценка теряет свою значимость; для некоторой конкретной задачи наилучшие значения а могут быть приняты апостериори для минимизации числа получаемых ситуаций с помощью определенной программы. Наконец, поиск может идти в двух направлениях: вперед от исходной ситуации, а также одновременно от целевой ситуации через инверсию возможных действий; поиск останавливается, когда одна и та же ситуация встречается в обоих поисковых графах. Критические замечания. Алгоритм А, как и другие градиентные алгоритмы, рассмотренные в данной главе, является строго численным, поэтому исключается формальный анализ каждой ситуации. Алгоритм основан на оценке стоимости некоторого решения. Но существует большое число задач, для которых эта оценка не имеет смысла, потому что, например, в них необходимо найти единственное осуществимое решение. Он не дает способа подсчета интеграла, решения системы уравнений или установления медицинского диагноза. Нельзя заранее обнаружить тупики и петли. Так, если в игре в 8 (рис. 5.7) заменить верхний ряд исходной ситуации на (8 2 3), то чтобы доказать, что эта задача не имеет решения, алгоритм А должен будет исследовать абсолютно все возможные случаи и поэтому оказывается бесполезным. Следовательно, рассматриваемый тип алгоритма может использоваться только при решении задач, возникающих в малоизвестных пространствах, т. е. там, где мало информации (плохое знание контекста, недостаток опыта, отсутствие формальных аргументов). Задача о взвешиванииНа обычных рычажных весах найти из двенадцати шариков один, не совпадающий по весу ни с одним из одиннадцати оставшихся (мы не знаем, существует ли такой шарик и является ли он легче или тяжелее). Число взвешиваний должно быть минимальным. Эта задача довольно известна, но нас сейчас интересует, каким именно образом приступить к ее решению. Конечно, мы можем сравнивать шарики на весах попарно. Поскольку от других отличается не более чем один шарик, мы может быть уверены в том, что получим ответ не более чем за 12 взвешиваний (11 сравнений шарика № 1 со всеми остальными Ответ на этот вопрос можно получить, определив оценочную функцию и ее градиент. Каждое взвешивание должно увеличивать имеющуюся информацию о множестве шариков. Следовательно, речь идет о том, чтобы сделать как можно меньшим математическое ожидание числа неизвестных шариков (здесь имеется в виду вероятностное ожидание, так как до последнего шага мы ни в чем не уверены). Итак, если мы начинаем с 6 шариков В качестве оценочной функции
Минимум функции можно получить путем дифференцирования, так как Конечно, данное значение лишь указывает на наилучший путь к решению, не использующий интуицию. Следуя по нему, легко получить решение за три взвешивания. Интересно, что эти взвешивания можно задать заранее независимо от результатов каждого из них. Обозначив шарики буквами от А до
Она позволяет различать В самом деле, легко доказать, что 3 является минимальным числом взвешиваний. Поскольку в результате каждого взвешивания возникают три возможности, два взвешивания позволяют различить только
|
1 |
Оглавление
|