Справочник от Автор24
Поделись лекцией за скидку на Автор24

Поиск в пространстве состояний:стратегии информированного (эвристического) поиска

  • 👀 230 просмотров
  • 📌 195 загрузок
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Поиск в пространстве состояний:стратегии информированного (эвристического) поиска» pdf
Лекция 3 Поиск в пространстве состояний: Стратегии информированного (эвристического) поиска Поиск «сначала лучший» (Best-First Search – BFS) • Методы «слепого» поиска в большинстве случаев неэффективны, т. к. • … • Эффективность поиска может быть повышена за счет использования дополнительных специфичных для данного класса задач знаний – эвристик • Эти знания: • должны позволять оценивать желательность раскрытия той или иной вершины в дереве поиска; • их естественно представить оценочной функцией, которая возвращает число, отражающее предпочтительность раскрытия вершин; • BFS (Best-First Search) – поиск, при котором первой раскрывается вершина с максимальной оценкой Реализация BFS через обобщенный поиск • В обобщенном алгоритме поиска единственным местом, где можно использовать дополнительные знания об особенностях задачи является функция построения очереди: Queueing-Fn(Queue, Elements) • Пусть: Eval-Fn – функция оценки; Queuing-Fn – функция, упорядочивающая вершины в соответствии с Eval-Fn Тогда BFS поиск на базе обобщенного поиска General-Seach реализуется следующим образом: function BFS (problem, Eval-Fn) returns a solution sequence return GENERAL-SEARCH (problem, Queuing-Fn) • Название BFS – строго говоря неточно, т. к. оценочная функция не гарантирует абсолютно лучшего, оптимального выбора вершины для раскрытия, а лишь определяет вершину, которая представляется лучшей с точки зрения скорейшего достижения целевого состояния Жадный поиск (Greedy Search) • Жадный поиск – первой раскрывается вершина, состояние которой оценивается как ближайшее к целевому состоянию • Обозначим h(n) – оценочная стоимость самого дешевого пути из состояния вершины n в целевое состояние • h(n) – эвристическая функция • Тогда реализация жадного поиска на основе BFS : function GREEDY-SEARCH (problem) returns a solution or failure return BFS (problem, h) Жадный поиск. Пример В транспортных задачах (поиск путей на графе) в качестве h(n) часто используют расстояние по прямой - hSLD Жадный поиск: пример Шаги жадного поиска для Бухареста. В качестве эвристической функции используется hSLD – расстояние по прямой до Бухареста Эффективность жадного поиска Жадный поиск: • НЕ оптимален; • НЕ полон; • Временная сложность O(bm), m – максимальная глубина пространства поиска; • Емкостная сложность O(bm), (все вершины сохраняются в памяти); • аналогичен поиску в глубину; • как правило находит решение (если оно существует) быстро, хотя оно не всегда является оптимальным; • в конкретных задачах при наличии хорошей эвристической функции емкость и/или время могут быть существенно сокращены Поиск A* • Жадный поиск стремится минимизировать оценочную стоимость пути до цели h(n), что позволяет в ряде случаев повысить эффективность поиска, однако не является ни оптимальным, ни полным • С другой стороны поиск по критерию стоимости использует минимальную стоимость пути до текущего состояния g(n) и является полным и оптимальным, однако часто оказывается неэффективным • Естественно совместить эти два подхода или стратегии, чтобы использовать их преимущества • Введем аддитивную оценочную стоимость: f(n) = g(n) + h(n), f(n) – оценочная стоимость наиболее дешевого пути, проходящего через n Поиск A* • Эвристика h(n) является допустимой (admissible), если она никогда не переоценивает реальное значение (в задачах минимизации) • в задачах максимизации эвристика h(n) допустима, если она никогда не недооценивает реальное значение • Поиск BFS, использующий функцию f (n) = g(n) + h(n), где h(n) является допустимой называется поиском A* • Реализация поиска A* на основе BFS : function A*-SEARCH (problem) returns a solution or failure return BFS (problem, g+h) Поиск A*. Пример Поиск A* в задаче поиска пути до Бухареста: Поиск A*. Пример Шаги поиска A* для пути в Бухарест. Вершины помечены f = g + h. Значения h – расстояние по прямой до Бухареста. Монотонность эвристик • f(n) монотонна, если для каждой вершины n и каждого ее последователя n‘, сгенерированного любым действием a, оценочная стоимость достижения цели из n не больше чем стоимость c(n, a, n’) шага достижения n’ плюс оценочная стоимость достижения цели из n’: f(n) ≤ c(n, a, n’) + f(n’) • Иначе говоря, монотонная f(n) никогда не убывает вдоль пути из корня к цели • Пример. Пусть g(n) = 3, h(n) = 4, т. е. f(n) = 7 g(n’) = 4, h(n’) = 2, т. е. f(n’) = 6 Имеем нарушение монотонности. n f(n) = 3 + 4 = 7 n’ f(n’) = 4 + 2 = 6 Для восстановления используется прием – выравнивание максимального пути: f(n’ ) = max(f(n), g(n’ ) + h(n’ )) • Если эвристика монотонна, то она является допустимой!!! Представление поиска A* контурами A* поиск с монотонной эвристикой можно интерпретировать как поиск по контурам, которые фокусируются в направлении целевой вершины: Контуры для f = 380, f = 400 и f = 420, для исходной точки Arad. Вершины внутри контуров имеют f-стоимость меньше чем значение контура Поиск A* A* поиск фокусируется в направлении целевой вершины. Пусть f * - стоимость оптимального пути, тогда поиск A*: - раскрывает все вершины, у которых f(n) < f * - может раскрывать некоторые вершины, у которых f(n)= f * A* поиск является полным, так как по мере расширения контура с возрастанием f , неизбежно достигается контур, у которого f равна стоимости f * пути к целевому состоянию. A*-поиск является оптимально эффективным – никакой другой алгоритм не гарантирует нахождения оптимальных вершин эффективнее, чем A* поиск Полнота поиска A* • Поскольку A* раскрывает вершины в порядке возрастания f, он рано или поздно должен достичь целевого состояния. • Это справедливо, если число узлов с f(n)  f * не бесконечно • число узлов с f(n)  f * может быть бесконечно, если: • существует узел с бесконечным коэффициентом ветвления • существует путь с конечной стоимостью пути, но бесконечным числом узлов в нем • Итак, A* является полным на графах с конечным коэффициентом ветвления при наличии некоторой положительной константы , такой что стоимость каждого оператора не меньше  Доказательство оптимальности поиска A* Пусть G – оптимальное целевое состояние и f(G) = f * = g(G). Пусть G2 – субоптимальное целевое состояние, т.е. f(G2) = g(G2) > f *. Предположим противное: A* выбрал из очереди G2 (тогда A* завершится с субоптимальным решением) Рассмотрим ситуацию, когда алгоритм мог бы (гипотетически!) достичь целевое состояние G2 (субоптимальное) раньше, чем G (оптимальное): n – вершина, которая в текущий момент является листом на оптимальном пути к G Если n не выбрана для раскрытия раньше G2, то f (n)  f (G2) Поскольку h является допустимой, f * = f(G)  f (n). Таким образом, f *  f (G2). Поскольку h(G2)=0, имеем f *  g(G2) – противоречие! Сложность A* В общем случае: • Временная - O(bd) • Емкостная - O(bd) • Суб-экспоненциальный рост при |h(n) - h*(n)|  O(log h*(n)) • для большинства практических эвристик ошибка, к сожалению, по крайней мере пропорциональна стоимости пути A* является оптимально эффективным для любой заданной h-функции среди алгоритмов расширяющих пути поиска от корня. Т.е никакой другой оптимальный алгоритм не гарантирует раскрытия меньшего числа вершин. • Интуитивно ясно: любой алгоритм, который не раскрывает все вершины в контурах между корнем и контуром цели рискует пропустить оптимальное решение Эвристики h(n) для A* Пример головоломки 8-ка 5 4 6 1 8 8 7 3 2 7 1 Исходное состояние 2 3 4 6 5 Целевое состояние Эвристики: • h1 - число фишек, находящихся в неверной позиции • h2 сумма Манхэттенских расстояний фишек от их целевых позиций • h2 доминирует над h1: n, h2(n)  h1(n) Эвристики h(n) для A* Сравнение стоимости поиска и эффективного коэффициента ветвления для поиска с итеративным углублением и поиска A* с h1 и h2. Данные усреднены по 100 примерам 8-ки, для решений различной глубины Эффективный коэффициент ветвления (effective branching factor) – среднее число преемников узла в дереве поиска после применения эвристик. Характеризует качество используемой эвристической функции. Всегда лучше использовать эвристику h(n) с большими значениями, при условии что она не делает переоценки, т.к. A* раскрывает все вершины с f(n) < f *
«Поиск в пространстве состояний:стратегии информированного (эвристического) поиска» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ
Получи помощь с рефератом от ИИ-шки
ИИ ответит за 2 минуты

Тебе могут подойти лекции

Смотреть все 588 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot