Algorytm A*: Różnice pomiędzy wersjami

[wersja przejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
Paweł Ziemian BOT (dyskusja | edycje)
m Zamieniam przestarzały tag 'source' na 'syntaxhighlight'
Znirzej (dyskusja | edycje)
m →‎Cechy algorytmu A*: jęz., drobne merytoryczne Pojęcie "zbiór zamknięty" które było użyte, nijak się ma do matematycznego znaczenia tego pojęcia, autorowi chodziło o zbiór "closed_set" z kodu, który oznacza zbiór przetworzonych już wierzchołków. Wygląda, że ktoś to przetłumaczył z języka angielskiego bez głębszej analizy lub użył automatycznego tłumacza. Któryś raz już ten błąd spowodował, że musiałem się dłużej nad tym zastanawiać, więc zgłaszam poprawkę.
Linia 70:
== Cechy algorytmu A* ==
Algorytm A* jest kompletny – w każdym przypadku znajdzie optymalną drogę i zakończy działanie, jeśli taka droga istnieje.
Jeśli heurystyka <math>h</math> jest dopuszczalna (czyli nigdy nie zawyża wartości wagi na ścieżce między dowolnymi dwoma wierzchołkami) to algorytm A* jest dopuszczalny, o ile w algorytmie nie używamy zamkniętego zbioru zamkniętych wierzchołków. Jeśli natomiast zbiórużywamy zbioru jestzamkniętych zamkniętywierzchołków, to aby algorytm A* był dopuszczalny heurystyka <math>h</math> musi być spójna, czyli dla wierzchołków <math>x</math> i <math>y{:}</math>
:: <math>h(x) \leqslant d(x,y) + h(y),</math>
 
gdzie <math>d(x,y)</math> oznacza faktyczną odległość międzyz wierzchołkamiwierzchołka <math>x</math> ido wierzchołka <math>y.</math>
 
Spełnienie tego warunku gwarantuje poprawność decyzji podejmowanych przez algorytm w oparciu o heurystykę, ponieważ nie zajdzie sytuacja, w której <math>h(x)</math> dla pewnego <math>x</math> będzie większe niż faktyczna długość ścieżki z <math>x</math> do wierzchołka docelowego. Niespełnienie warunku oznacza, że algorytm mógłby wskazać nieoptymalną ścieżkę, jeśli dla pewnego węzła <math>y</math> w optymalnej ścieżce <math>h(y)</math> byłoby zawyżone.