Алгоритм А.ppt
- Количество слайдов: 5
АЛГОРИТМ А* 1 Визначимо функцію F(D) для будь-якої вершини D як: F(D)= g(D) + h( D), де F(D) – оцінка вартості ШМВ від початкової D 0 до цільової Dt вершини через вершину D, тобто – функція оцінювання або оціночна функція. Позначимо d*(Di , Dj) – дійсну вартість між вершинами Di і Dj. Якщо Т= {Dt} то вартість ШМВ від Di до Dt можна визначити як: Нехай функція g* визначає ШМВ від початкової D 0 до довільної вершини D: G*(D) = d*(D 0, D) Тоді можемо записати функцію F* як суму двох складових: F*(D)= g*(D) + h*( D) Зауважимо, що f*(D 0) = h*(D 0) надає дійсну вартість ШМВ від D 0 до Dt. Зрозуміло, що за g(D) можна брати наявну вартість ШМВ у дереві перебору. З визначення випливає, що g(D) g*(D) і може зменшуватись при пошуку. h(D) – називають евристичною функцією, оскільки її оцінку h*(D) визначають на основі евристичної інформації. Алгоритм, що використовує функцію оцінювання F називають алгоритмом А* Для h=0 і g= d алгоритм А* співпадає з алгоритмом пошуку в ширину. Покажемо, що якщо h є нижньою межею h*, тобто завжди виконується h(D) h*(D), то А* гарантовано знайде оптимальний шлях до цілі. Зауважимо, що оскільки h = 0 є безумовно нижньою межею для h*, то те, що пошук в ширину завжди знаходить оптимальний шлях випливає, я к окремий випадок, більш загального результату для А*. -
СПРОМОЖНІСТЬ АЛГОРИТМУ А* (1) Алгоритм пошуку є спроможним, якщо для будь-якого графа він закінчує роботу знаходженням оптимального шляху від початкової до цільової вершини, за умови, що такий шлях існує. Доведемо це для алгоритму А* Позначимо через М довжину найкоротшого шляху - M: = F*(D 0) = h*(D 0) Теорема. Якщо ∀D h(D) ≤ h*(D), то алгоритм A* є спроможним. Доведення теореми базується на лемах, які доводяться для умов h ≤ h*. Лема 1. Якщо алгоритм А* не закінчує свою роботу, то оцінка розкритого вузла необмежено зростає. Тобто ∀N ∃k F(Dk) > N. Доведення. Нехай e = min r. c > 0, p - глибина вузла D. Тоді p > log |R| k. Положимо k > |R|N/e. Отримаємо: F(Dk) > g(Dk) > e х p > e log|R|k> e log |R||R|N/e = N. Лему доведено. Лема 2. Якщо існує оптимальний шлях А, то в списку відкритих вузлів О завжди є вузол D, який належить шляху A і оцінка якого не перевищує M. Доведення. Нехай A=<D 0, Dt> - оптимальний шлях. За індукцією. База: D 0∈A. Відкриття вузла з А залишає спадкоємця в О (оскільки шлях від початкової до цільової вершини існує). Нехай тепер D'∈O, D'∈A, і D' – сама ліва вершина у графі пошуку, тобто g(D') = g*(D'). Тоді F(D) = g(D') + h(D') = g*(D') + h(D') ≤ g*(D') + h*(D') = F*(D') = M, оскільки ∀D ∈ A F*(D) = M. Лему доведено. 2
СПРОМОЖНІСТЬ АЛГОРИТМУ А* (2) 3 Лема 3. Якщо існує оптимальний шлях, алгоритм А* завжди відкриває вузол, оцінка якого не перевищує M. Доведення. За лемою 2 ∃D∈O F(D)≤ M, але Select вибирає вузол з мінімальним значенням оцінки. Лему доведено. Доведення теореми. Нехай ∃А і алгоритм не закінчує роботу. Тоді за лемою 1∃k F(Dk) > M, що суперечить лемі 3. Отож, алгоритм закінчує свою роботу. Алгоритм А* може закінчити роботу з результатом fail, якщо список OPEN стане пустим. Але за лемою 2 О≠ ∅. Нехай алгоритм А* закінчив роботу з результатом ОК, але знайдений шлях Р – не є оптимальним. Тоді: h*( Dt) = 0 → h(Dt) = 0. F(Dt) = g(Dt) + h(Dt) = g(Dt) > g*( Dt) = F* (Dt) = M, що суперечить лемі 3. Теорему доведено. Отже, сформулюємо основні властивості алгоритму А*. Наслідок 1. Будь-яка вершина D∈O, для якої F(D) <M, буде розкрита алгоритмом у процесі пошуку розв’язку. Останнім вибирається для розкриття цільовий вузол Dt, що має значення оціночної функції F(Dt) = М. Оскільки ж, для розкриття завжди вибираються вузли з мінімальною оцінкою, то перед Dt, будуть розкрити всі вузли с оцінкою меншою за М. Наслідок 2. Пошук в ширину є спроможним. Характеристики пошуку в ширину: h = 0, F = g, 0 ≤ h*, – задовольняють усім вимогам алгоритму А*. Отож алгоритм пошуку в ширину є спроможним.
ОПТИМАЛЬНІСТЬ АЛГОРИТМУ А* 4 Нехай А 1* і А 2* - два варіанти алгоритму А* з функціями оцінювання: F 1(D) = g 1(D) + h 1(D), F 2(D) = g 2(D) + h 2(D), для яких виконуються умови теореми про спроможність: h 1(D) ≤ h*(D), h 2(D) ≤ h*(D). Нехай h 2(D) > h 1(D) - більш інформована функція. Тоді А 2* розкриє не більше вузлів ніж А 1*. Теорема. Якщо існує оптимальний шлях, то до моменту закінчення пошуку всякий вузол, розкритий алгоритмом А 2*, буде розкритий і алгоритмом А 1*. Тобто більш інформована функція швидше знаходить рішення. Доведення. Використаємо індукцію по глибині k вузлів D у дереві пошуку F 2. База: якщо D 0 = Dt , то жоден з алгоритмів не розкриває жодної вершини. Якщо D 0 не є цільовою вершиною, то її розкриють обидва алгоритми. Нехай А 2* на кроці k вибере вузол D. За індукційним припущенням, А 1* розкрив до D не менше вузлів ніж А 2*, тобто g 1(D) g 2(D). Далі від супротивного. Нехай А 1* не розкрив вершину D, яку розкрив А 2*. Тоді за наслідком 1 до теореми про спроможність F 1(D) M, отже g 1(D) + h 1(D) M. Але алгоритм А 2* розкрив вузол D, тобто F 2(D) M і g 2(D) + h 2(D) M. Маємо g 1(D) + h 1(D) g 2(D) + h 2(D) g 1(D) + h 2(D), звідки випиває h 1(D) h 2(D) що суперечить умові. Теорему доведено.
МОНОТОННЕ ОБМЕЖЕННЯ 5 Кажуть, що функція h задовольняє монотонному обмеженню, якщо ∀D h(D) ≤ h(r. f(D))+r. c & h(Dt)=0 (нерівність трикутника) Тобто, евристична функція локально узгоджена з вартостями правил. Теорема. Якщо виконано умову спроможності, оціночна функція задовольняє монотонне обмеження та існує оптимальний шлях, то алгоритм А* завжди вибирає для розкриття вершину, до якої вже знайдений оптимальний шлях, тобто g (D) = g*(D). Доведення. Скористаємось методом математичної індукції по довжині оптимального шляху. База: g(D 0) = g*(D 0) = 0. Нехай для розкриття обрано вершину D ≠ D 0 і нехай A = D 0, D 1, …, Di, …, D – оптимальний шлях. ∀i g*(Di)+h(Di) ≤ g*(Di)+c(Di, Di+1)+h(Di+1) за монотонним обмеженням. Далі: Di, Di+1∈ A → g*(Di)+c(Di, Di+1) = g*(Di+1). Маємо: ∀i g*(Di) + h(Di) ≤ g*(Di+1) + h(Di+1) і за транзитивністю∀i g*(Di) + h(Di) ≤ g*(D) + h(D). Нехай тепер Dk ∈ A, Dk ∈ O & ∀j<k Dj ∈ C. Такий вузол існує, оскільки D 0∈C, D∈O. Усі вершини на А лівіші за Dk вже розкриті, отож g(Dk) =g*(Dk). Маємо: g(D)+h(D) = F(D) ≤ F(Dk) = g(Dk)+h(Dk) = g*(Dk)+h(Dk) ≤ g*(D)+h(D) Отже, g(D) ≤ g*(D). Але ∀D g(D) ≥ g*(D) і значить g(D) = g*(D). Теорему доведено. Наслідок. Якщо оціночна функція задовольняє монотонне обмеження, то послідовність значень оціночної функції для вибраних вузлів не зменшується. Доведення. Нехай розкриті вузли D 1, D 2 (підряд). Якщо у мить розкриття D 1 вже D 2∈O, то з побудови GS маємо F(D 1)≤ F (D 2). Інакше D 2 повинен потрапляти до О при розкритті D 1. F(D 2) = g(D 2) + h(D 2) = g*(D 1) + c(D 1, D 2) + h(D 2) = = g(D 1) + C(D 1, D 2) + h(D 2) ≥ g(D 1) + h(D 1) = F(D 1). Теорему доведено.
Алгоритм А.ppt