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

4 Дек в 11:50
4 +4
0
Ответы
1
Определения и условия
- Эвристика адекватна (admissible): для любой вершины nnn верно h(n)≤h∗(n) \:h(n)\le h^*(n)\:h(n)h(n), где h∗(n)h^*(n)h(n) — истинная стоимость кратчайшего пути от nnn до цели.
- Эвристика монотонна (consistent): для любого ребра (n,m)(n,m)(n,m) выполнено h(n)≤c(n,m)+h(m) \:h(n)\le c(n,m)+h(m)\:h(n)c(n,m)+h(m). Монотонность влечёт адекватность.
Доказательство корректности (оптимальности) A* при адекватной эвристике
1. Обозначения. Пусть старт sss, цель GGG. Пусть A* извлекла из OPEN цель GGG с записанной стоимостью g(G)=Cg(G)=Cg(G)=C. Пусть истинная оптимальная стоимость пути до цели равна C∗=g∗(G)C^*=g^*(G)C=g(G). Предположим противное: C>C∗C>C^*C>C.
2. Рассмотрим некоторый оптимальный путь s=v0,v1,…,vk=Gs=v_0,v_1,\dots,v_k=Gs=v0 ,v1 ,,vk =G. Пусть iii — наименьший индекс такой, что viv_ivi находится в OPEN в момент извлечения GGG (все vjv_jvj с j<ij<ij<i уже были извлечены/рассмотрены). Тогда для этого viv_ivi после обработки предыдущих вершин A* имеет точное значение g(vi)=g∗(vi)g(v_i)=g^*(v_i)g(vi )=g(vi ) (путь до viv_ivi уже раскрыт).
3. Оценим f(vi)=g(vi)+h(vi)f(v_i)=g(v_i)+h(v_i)f(vi )=g(vi )+h(vi ). По адекватности h(vi)≤h∗(vi) \:h(v_i)\le h^*(v_i)\:h(vi )h(vi ), поэтому
f(vi)=g∗(vi)+h(vi)≤g∗(vi)+h∗(vi)=g∗(G)=C∗. f(v_i)=g^*(v_i)+h(v_i)\le g^*(v_i)+h^*(v_i)=g^*(G)=C^*.
f(vi )=g(vi )+h(vi )g(vi )+h(vi )=g(G)=C.
4. Для цели h(G)=0h(G)=0h(G)=0, значит в момент извлечения GGG её приоритет f(G)=g(G)=Cf(G)=g(G)=Cf(G)=g(G)=C. По предположению C∗<CC^*<CC<C, следовательно f(vi)≤C∗<C=f(G)f(v_i)\le C^*<C=f(G)f(vi )C<C=f(G).
5. Но A* всегда извлекает из OPEN вершину с минимальным fff-значением, значит GGG не мог быть извлечён раньше, чем viv_ivi . Противоречие с шагом 1. Следовательно предположение неверно и C=C∗C=C^*C=C. A* возвращает оптимальный путь.
Замечания про монотонность: если эвристика монотонна, то fff-значения невозрастают по извлекаемым вершинам и каждый узел извлекается не более одного раза (не требуется повторного открытия). Если эвристика адекватна, но не монотонна, корректность сохраняется, но алгоритм может повторно открывать вершины (нужно допускать обновление g-значений и повторную вставку в OPEN).
Влияние изменения эвристики на время и память
- Точность эвристики: чем ближе h(n)h(n)h(n) к h∗(n)h^*(n)h(n) (но не превышает его), тем меньше вершин A* расширит. Граничные случаи:
- h(n)≡0h(n)\equiv 0h(n)0 → A* совпадает с алгоритмом Дейкстры, возможны максимальные расширения (много времени и памяти).
- h(n)=h∗(n)h(n)=h^*(n)h(n)=h(n) (идеальная эвристика) → A* расширяет только вершины на оптимальном пути (минимум расширений и хранения).
- Монотонность: монотонная эвристика уменьшает число повторных открытий и тем самым снижает время; также облегчает реализацию (не нужна обработка релаксаций закрытых узлов).
- Стоимость вычисления эвристики: более информативная эвристика часто дороже по вычислению. Итоговое время = (число расширений)×(стоимость обработки одной вершины+стоимость вычисления hhh). Иногда лучше простая и дешёвая эвристика, чем дорогая, хоть и более точная.
- Память: A* хранит OPEN и CLOSED; число хранимых вершин примерно равно числу сгенерированных/необработанных узлов. Более информативная hhh уменьшает это число. Однако вычисление сложной эвристики может требовать дополнительной памяти (например, таблицы для паттерн-эвристик).
- Неправильная (overestimating) эвристика: может снизить число расширений и время, но теряется гарантия оптимальности. Управляемая компромиссная стратегия — взвешенный A*: f=g+ϵhf=g+\epsilon hf=g+ϵh с ϵ>1\epsilon>1ϵ>1 даёт приближённый ответ быстрее; при выбранном ϵ\epsilonϵ можно получить предел на субоптимальность.
Коротко
- Адекватность h(n)≤h∗(n) \:h(n)\le h^*(n)\:h(n)h(n) гарантирует оптимальность A* (доказано выше).
- Монотонность упрощает реализацию и уменьшает повторные открытия.
- Чем информативнее (ближе к h∗h^*h) эвристика, тем меньше расширений, следовательно меньше времени и памяти, но обычно выше стоимость вычисления эвристики; превышение h∗h^*h даёт выигрыш в ресурсах ценой потери оптимальности.
4 Дек в 11:57
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир