AO*算法詳解,附例子和算法詳細步驟

 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*詳細步驟,如有不對,請指正,感謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章