• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-379  評(píng)論-37  文章-0  trackbacks-0
            轉(zhuǎn):http://qinysong.iteye.com/blog/678941


            在此把這個(gè)算法稱作B* 尋路算法(Branch Star 分支尋路算法,且與A*對(duì)應(yīng)),本算法適用于游戲中怪物的自動(dòng)尋路,其效率遠(yuǎn)遠(yuǎn)超過(guò)A*算法,經(jīng)過(guò)測(cè)試,效率是普通A*算法的幾十上百倍。

            通過(guò)引入該算法,一定程度上解決了游戲服務(wù)器端無(wú)法進(jìn)行常規(guī)尋路的效率問(wèn)題,除非服務(wù)器端有獨(dú)立的AI處理線程,否則在服務(wù)器端無(wú)法允許可能消耗大量時(shí)間的尋路搜索,即使是業(yè)界普遍公認(rèn)的最佳的A*,所以普遍的折中做法是服務(wù)器端只做近距離的尋路,或通過(guò)導(dǎo)航站點(diǎn)縮短A*的范圍。

            算法原理
            本算法啟發(fā)于自然界中真實(shí)動(dòng)物的尋路過(guò)程,并加以改善以解決各種阻擋問(wèn)題。
            前置定義:
            1、探索節(jié)點(diǎn):
            為了敘述方便,我們定義在尋路過(guò)程中向前探索的節(jié)點(diǎn)(地圖格子)稱為探索節(jié)點(diǎn),起始探索節(jié)點(diǎn)即為原點(diǎn)。(探索節(jié)點(diǎn)可以對(duì)應(yīng)為A*中的開(kāi)放節(jié)點(diǎn))

            2、自由的探索節(jié)點(diǎn):
            探索節(jié)點(diǎn)朝著目標(biāo)前進(jìn),如果前方不是阻擋,探索節(jié)點(diǎn)可以繼續(xù)向前進(jìn)入下一個(gè)地圖格子,這種探索節(jié)點(diǎn)我們稱為自由探索節(jié)點(diǎn);

            3、繞爬的探索節(jié)點(diǎn):
            探索節(jié)點(diǎn)朝著目標(biāo)前進(jìn),如果前方是阻擋,探索節(jié)點(diǎn)將試圖繞過(guò)阻擋,繞行中的探索節(jié)點(diǎn)我們成為繞爬的探索節(jié)點(diǎn);
            算法過(guò)程
            1、起始,探索節(jié)點(diǎn)為自由節(jié)點(diǎn),從原點(diǎn)出發(fā),向目標(biāo)前進(jìn);
            2、自由節(jié)點(diǎn)前進(jìn)過(guò)程中判斷前面是否為障礙,
                 a、不是障礙,向目標(biāo)前進(jìn)一步,仍為自由節(jié)點(diǎn);
                 b、是障礙,以前方障礙為界,分出左右兩個(gè)分支,分別試圖繞過(guò)障礙,這兩個(gè)分支節(jié)點(diǎn)即成為兩個(gè)繞爬的探索節(jié)點(diǎn);
            3、繞爬的探索節(jié)點(diǎn)繞過(guò)障礙后,又成為自由節(jié)點(diǎn),回到2);
            4、探索節(jié)點(diǎn)前進(jìn)后,判斷當(dāng)前地圖格子是否為目標(biāo)格子,如果是則尋路成功,根據(jù)尋路過(guò)程構(gòu)造完整路徑;
            5、尋路過(guò)程中,如果探索節(jié)點(diǎn)沒(méi)有了,則尋路結(jié)束,表明沒(méi)有目標(biāo)格子不可達(dá);


            演示如下: 
                
               



            B*與A*算法的性能比較

            尋路次數(shù)比較(5秒鐘尋路次數(shù)) 


             
            B*與A*性能比較實(shí)例
            1、 無(wú)障礙情況
            此種情況,根據(jù)以上測(cè)試數(shù)據(jù),B*算法效率是普通A*的44倍(左為A*,右為B*)

                 
             

            2、線形障礙
            此種情況,根據(jù)以上測(cè)試數(shù)據(jù),B*算法效率是普通A*的28倍(左為A*,右為B*)

               

              
            3、環(huán)形障礙
            此種情況,根據(jù)以上測(cè)試數(shù)據(jù),B*算法效率是普通A*的132倍(左為A*,右為B*)

                  


            4、封閉障礙(目標(biāo)不可達(dá))
            此種情況,根據(jù)以上測(cè)試數(shù)據(jù),B*算法效率是普通A*的581倍(左為A*,右為B*)
                

            衍生算法
            通過(guò)以上封閉障礙,可以看出,這個(gè)方法在判斷地圖上的兩個(gè)點(diǎn)是否可達(dá)上,也是非常高效的,在不可達(dá)情況下,時(shí)間復(fù)雜度與封閉障礙的周長(zhǎng)相當(dāng),而不是整個(gè)地圖的面積。
            posted on 2011-04-07 00:07 小王 閱讀(4850) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 游戲服務(wù)器端開(kāi)發(fā)
            久久国产精品99精品国产| 一级A毛片免费观看久久精品| 久久精品国产亚洲av麻豆色欲 | 精品久久8x国产免费观看| 久久亚洲AV成人出白浆无码国产| 精品久久久久久久| 亚洲精品99久久久久中文字幕 | 国产精品毛片久久久久久久| 91精品国产综合久久香蕉| 狠狠色丁香婷婷久久综合五月| 久久精品人人做人人爽97 | 丁香色欲久久久久久综合网| 一本久久a久久精品综合夜夜| 久久精品国产99久久久古代| 国内精品久久久久久不卡影院| 日韩久久久久久中文人妻| 日本欧美国产精品第一页久久| 久久99毛片免费观看不卡| 久久精品国产亚洲AV久| 久久夜色精品国产亚洲av| 精品免费tv久久久久久久| 日韩乱码人妻无码中文字幕久久 | 久久久久亚洲AV无码专区网站 | 偷偷做久久久久网站| 久久精品这里热有精品| 久久精品www人人爽人人| 国产A级毛片久久久精品毛片| 亚洲国产精品无码久久久久久曰| 色综合久久久久网| 国产精品一久久香蕉国产线看观看 | 久久久91人妻无码精品蜜桃HD| 亚洲欧洲精品成人久久曰影片| 91精品国产高清久久久久久91 | 久久久精品久久久久影院| 国产成人精品久久| 99久久精品这里只有精品| 91久久精品国产91性色也| 国产国产成人精品久久| 精品久久久久久亚洲| 99热热久久这里只有精品68| 久久婷婷综合中文字幕|