Page 110 - 6109
P. 110

While ОРЕN 'порожній список' Dо
                      Веgin
                         п:=First (Open);
                         If n='цільова вершина' Тhen Вихід(УСПІХ);
                         Перемістити n з Open в Сlosed;
                         Розкрити n і для всіх її дочірніх вершин і, обчислити оцінку
                         f^(n, n i) = g^(n, n i) + h^(n i);
                         Помістити дочірні вершини, яких немає в списках Open і
               Сlosed, в список Open, пов'язавши з кожною вершиною покажчик на
               вершину n;
                         Для дочірніх вершин n, які вже містяться в Open, порівняти
               оцінки f^(n, n i) і f(n i), якщо f^(n, n i)<f^(n i), то пов'язати з
               вершиною n i нову оцінку f^(n, n i) і покажчик на вершину n; Якщо
               вершина n і, міститься в списку Сlosed і f^(n, n i)<f^(n i), то
               пов'язати з вершиною n,  нову оцінку f^(n, n i), перемістити її в
               список Open і встановити покажчик на n;
                         Упорядкувати список Open за збільшенням f^(n i);
                      Еnd;
                      Вихід(НЕВДАЧА);
                      Еnd.

                                                                                               €
                      Вкажемо властивості А-алгоритма. Якщо для всіх вершин  ( ) 0h n  , то А-
               алгоритм  відповідатиме  алгоритму  рівних  цін.  В  цьому  випадку  гарантується
               знаходження  оптимального  шляху,  але  ефективність  пошуку  буде  низькою,  і
               якщо простір пошуку буде нескінченний, то пошук просто не здійснимо.
                      А-алгоритм не дає гарантії, що знайдений шлях буде оптимальним. Шлях
               може бути не оптимальним у випадку, якщо оцінка витрат на шляху з вершини
                                                                                                €
               і в цільову вершину буде перебільшена (переоцінена), тобто якщо  ( )h n                h ( )n .
                      А-алгорітм  забезпечить  пошук  оптимального  шляху,  якщо  виконується
               умова
                       €
                       h ( )n   h ( )n                                                                  (11.1)
                      Алгоритм,  що  враховує  умову  (2.1),  називають  А*-алгоритмом  або
               гарантуючим  алгоритмом.  А*-алгоритм  недооцінює  витрати  на  шляху  з
               проміжної вершини в цільову вершину або оцінює їх правильно, але ніколи не
               переоцінює.
                      Нехай  А1*  і  A2*  –  довільні  гарантуючі  алгоритми  і  на  всіх  вершинах
                        €
                €
               h  ( )n   h  ( )n .  Тоді  інформованість  А1*  вище,  ніж  А2*.  Говорять,  що  в  цьому
                 1       2
               випадку А1* має більшу евристичну силу, ніж А2*. Евристично більш сильний
               алгоритм А1* більшою мірою скорочує простір пошуку.
                      Ефективність  пошуку  за  допомогою  А*-алгоритма  може  знижуватися
               через те, що вершина, що знаходиться в списку Closed, може потрапляти назад
               в список Open і потім повторно розкриватися. Наступний приклад демонструє
               випадок багатократного розкриття вершин (рис.11.1).











                                                                                                            110
   105   106   107   108   109   110   111   112   113   114   115