<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    歡迎使用我的 在線工具

    小D

    讀歷史、看小說、寫程序都是我所愛。技術不好,頭腦不靈光,靠的是興趣。
    隨筆 - 35, 文章 - 25, 評論 - 13, 引用 - 0
    數據加載中……

    A star算法弱弱的小結

    搞了N個小時,終于杯具的把A*算法寫出來了,這里只能弱弱的小結一下:
    A*算法是一種啟發式算法:
    即每次迭代都進行啟發式思考,判斷F值:
    我們維護兩個表,我這只用簡單的數組實現。
    OPEN表和CLOSE表
    OPEN表存儲我們待搜索的節點
    CLOSE表存儲已經搜索好的節點,這些節點都是每次啟發時F值最小的。
    A為其點
    B為終點

    F = H + G
    G = 從起點A,沿著產生的路徑,移動到網格上指定方格的移動耗費。G = 距離(A) * 偏移量
    H = 從網格上那個方格移動到終點B的預估移動耗費。這經常被稱為啟發式的,
    ??? 可能會讓你有點迷惑。這樣叫的原因是因為它只是個猜測。
    ??? 我們沒辦法事先知道路徑的長度,因為路上可能存在各種障礙(墻,水,等等)。
    ??? 雖然本文只提供了一種計算H的方法,但是你可以在網上找到很多其他的方法。
    ??? H = (列距離(B) + 行距離(B)) * 偏移量
    我們選定上一次添加到CLOSE表的節點為當前節點。
    然后依次判斷當前節點的四個或八個方向的節點。如果這些節點是障礙,或者已經在CLOSE表中,
    則不予考慮,否則將這些節點的父節點設為當前節點,這些節點如果也沒有在OPEN表中,
    則加入OPEN表,如果這些節點編號已經出現在OPEN表中,則判斷他們的G值,G值小的留下,G值大的扔掉。
    如果G值也相同,保留后出現的。
    我們每次把OPEN表F值最小的節點刪去加入到CLOSE表中。
    但是如果存在兩個節點的F值相同呢?隨機選一個。
    如此反復,直到我們將B點加入CLOSE表。
    如何得到我們的路徑呢?從B點依靠父節點向上遍歷就行了。

    注意一點。我們要保持OPEN表的有序就對了,顯然我們這里是通過F值來維持OPEN表的次序。
    而且每次添加新的節點到OPEN表時都要排序。當然這里是用降序,這樣對于數組來說更好操作。

    感謝,網上朋友提供的詳細的資料。

    posted on 2009-12-31 17:21 vagasnail 閱讀(402) 評論(0)  編輯  收藏 所屬分類: C\C++

    主站蜘蛛池模板: 日本免费无遮挡吸乳视频电影| 免费v片在线观看品善网| 又粗又大又黑又长的免费视频| 亚洲AV无码成H人在线观看 | 四虎永久在线精品视频免费观看| 亚洲中文字幕久久无码| 国产一区二区三区免费观在线| 国产亚洲情侣一区二区无码AV| 亚洲精品黄色视频在线观看免费资源 | 国产精品亚洲专区在线播放| 免费一级成人毛片| aa午夜免费剧场| 亚洲毛片在线观看| 毛片视频免费观看| 真正全免费视频a毛片| 综合亚洲伊人午夜网| 日韩精品内射视频免费观看| 亚洲欧洲国产成人精品| 特级做A爰片毛片免费看无码| 国产在线19禁免费观看| 亚洲一级大黄大色毛片| 久久99精品视免费看| 亚洲精品乱码久久久久久下载| 国产日韩一区二区三免费高清| 免费少妇a级毛片| 永久免费A∨片在线观看| 亚洲成av人片不卡无码| 在线观着免费观看国产黄| 国产精品玖玖美女张开腿让男人桶爽免费看| 国产亚洲综合久久系列| 无码国产精品一区二区免费式影视 | 一级有奶水毛片免费看| 久久久久亚洲精品中文字幕| 日本免费污片中国特一级| 亚洲人成网站色7799| 久久亚洲国产午夜精品理论片| 野花香高清在线观看视频播放免费 | 亚洲特级aaaaaa毛片| 亚洲精品综合久久| 99无码人妻一区二区三区免费| yellow视频免费在线观看|