Procedure AO*
1.建立一個只由根節點構成的搜索圖G.
s的費用 q(s) := h(s), G’:=G.
如果s是目標,標記s爲SOLVED.
2.Until s被標記爲 SOLVED,do:
3.begin
4. 通過跟蹤從s出發的有標記的連接符計算部分解圖G’(G的連接符將在以後的步驟中標記)
5. 在G’中選一個非終止的葉節點n.
6. 擴展節點n產生n的所有後繼,並把它們連到圖G上,
對於每一個不曾在G中出現的後繼nj,q(nj) :=h(nj),
如果這些後繼中某些節點是終止節點,則用SOLVED標記。
7. S:={n};建立一個只由n構成的單元素集合S。
8. Until S變空,do:
9. begin
10. 從S中刪除節點m,滿足 m在G中的後裔不
出現在 S中
11. 按以下步驟修改m的費用q(m):
對於每一從m出發的指向節點集合{n1i,…,nki}
的連接符,計算qi(m)=ci+q(n1i)+…+q(nki),
q(m):=min {qi(m)}。
(1)將指針標記加到實現此最小值的連接符上。
(2)如果本次標記與以前的不同,抹去先前的標記。
(3)如果這個連接符指向的所有後繼節點都標記了SOLVED,則把m標上SOLVED.
12. 如果m標記了SOLVED 或者
如果m的修改費用與以前的費用不同,
則把m的通過指針標記的連接的所有父節點加到S中.
13. end
14.end
例子詳解和概念詳解,附筆記內容:
以上以我筆記展示了AO*詳細步驟,如有不對,請指正,感謝!