jack-wang
小王
C++博客
首頁(yè)
新隨筆
聯(lián)系
聚合
管理
隨筆-379 評(píng)論-37 文章-0 trackbacks-0
一種高效的尋路算法 - B*尋路算法
轉(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ā)
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開(kāi)源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
C++中使用Lua腳本 和lua中調(diào)用c的方法
一種高效的尋路算法 - B*尋路算法
魔獸世界私服trinitycore2的架構(gòu)——世界對(duì)象
游戲?qū)ο蟮膶?shí)現(xiàn)
號(hào)稱是目標(biāo)軟件的服務(wù)器架構(gòu)(轉(zhuǎn)載的,不關(guān)我事哦,圖片就不發(fā)了,懶)
網(wǎng)絡(luò)游戲中的同步問(wèn)題
一種經(jīng)典的服務(wù)器架構(gòu)(和我的體會(huì)太接近了,不得不轉(zhuǎn))
從騰訊QQgame高性能服務(wù)器集群架構(gòu)看“分而治之”與“自治”等分布式架構(gòu)設(shè)計(jì)原則
無(wú)縫世界網(wǎng)游服務(wù)器架構(gòu)的設(shè)計(jì)思路(轉(zhuǎn))
網(wǎng)游服務(wù)器架構(gòu)的設(shè)計(jì)
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
<
2022年4月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(16)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類
(441)
Android(7)
Boost(8)
C#
c++ 程序設(shè)計(jì)基礎(chǔ)(11)
CMake(2)
Cocos2d-X(1)
CUDA(3)
DB(21)
DirectX(2)
Docker(5)
Dubbo(3)
Erlang(5)
Git(6)
GO(1)
IE(1)
iOS(1)
Java(19)
JPA(2)
LibTorch(1)
linux(99)
MQTT(2)
node.js(3)
OpenGL(2)
Python(15)
Qt(7)
Redis(5)
ROS(4)
SpringBoot(4)
TensorRT(3)
UI(5)
Unreal Engine(1)
VC(44)
VLC(2)
Web開(kāi)發(fā)(12)
Win32(4)
編譯(34)
操作系統(tǒng)(3)
調(diào)試(2)
多核編程(3)
分布式系統(tǒng)(4)
匯編(1)
腳本(1)
開(kāi)源項(xiàng)目(3)
其他(16)
嵌入式(1)
軟件工程(5)
瑞芯微(1)
設(shè)計(jì)模式(7)
算法與數(shù)據(jù)結(jié)構(gòu)(1)
網(wǎng)絡(luò)通訊(17)
音視頻(7)
游戲服務(wù)器端開(kāi)發(fā)(17)
游戲引擎(7)
隨筆檔案
(379)
2024年11月 (2)
2024年10月 (1)
2024年6月 (2)
2024年5月 (4)
2024年4月 (4)
2024年3月 (9)
2024年2月 (1)
2024年1月 (6)
2023年12月 (2)
2023年10月 (8)
2023年9月 (1)
2023年7月 (2)
2023年5月 (1)
2023年4月 (3)
2023年3月 (2)
2022年12月 (2)
2022年11月 (3)
2022年10月 (3)
2022年9月 (5)
2022年8月 (2)
2022年7月 (10)
2022年6月 (5)
2022年5月 (7)
2022年4月 (4)
2022年3月 (1)
2022年2月 (11)
2022年1月 (6)
2021年12月 (7)
2021年10月 (3)
2021年6月 (2)
2021年4月 (1)
2021年3月 (3)
2021年2月 (1)
2021年1月 (3)
2020年12月 (2)
2020年11月 (1)
2020年10月 (2)
2020年9月 (2)
2020年7月 (4)
2020年6月 (2)
2020年4月 (3)
2020年3月 (2)
2020年2月 (2)
2020年1月 (3)
2019年11月 (2)
2019年10月 (5)
2019年9月 (1)
2019年8月 (3)
2019年7月 (1)
2019年6月 (6)
2019年5月 (4)
2019年4月 (2)
2019年3月 (2)
2019年2月 (1)
2019年1月 (4)
2018年1月 (2)
2017年12月 (8)
2017年11月 (3)
2017年9月 (4)
2017年8月 (1)
2017年3月 (1)
2017年2月 (2)
2017年1月 (5)
2016年12月 (1)
2016年5月 (1)
2016年4月 (1)
2016年1月 (1)
2015年8月 (3)
2015年6月 (1)
2015年5月 (1)
2015年4月 (1)
2014年7月 (2)
2014年6月 (2)
2014年5月 (1)
2014年3月 (1)
2014年2月 (2)
2013年11月 (3)
2013年9月 (4)
2013年8月 (1)
2013年6月 (1)
2013年5月 (1)
2013年4月 (3)
2013年3月 (5)
2013年2月 (1)
2013年1月 (2)
2012年11月 (1)
2012年10月 (3)
2012年9月 (1)
2012年7月 (3)
2012年6月 (3)
2012年5月 (1)
2012年3月 (5)
2012年2月 (2)
2012年1月 (1)
2011年12月 (3)
2011年9月 (1)
2011年8月 (2)
2011年6月 (1)
2011年4月 (1)
2011年3月 (2)
2011年2月 (2)
2010年12月 (1)
2010年11月 (7)
2010年10月 (7)
2010年9月 (2)
2010年8月 (2)
2010年7月 (3)
2010年6月 (2)
2010年4月 (4)
2010年3月 (6)
2010年2月 (12)
2010年1月 (22)
2009年11月 (6)
2009年8月 (5)
2009年6月 (2)
2009年2月 (4)
2009年1月 (15)
2008年10月 (1)
Linux
chinaunix
游戲開(kāi)發(fā)
金慶
云風(fēng)
綜合
Intel
λ-calculus
周偉明
最新隨筆
1.?dnf安裝失敗
2.?RK3588設(shè)備中運(yùn)行可執(zhí)行程序報(bào)錯(cuò):error while loading shared libraries: librknnrt.so: cannot open shared object file:
3.?wget下載報(bào)錯(cuò):The certificate of ‘www.python.org’ is not trusted.
4.?執(zhí)行torch.load(模型名稱, map_location='cpu')報(bào)錯(cuò):from torchvision.transforms.functional_tensor import rgb_to_grayscale
5.?pip安裝basicsr報(bào)錯(cuò):To fix this you could try to:
6.?cmake文件中D_GLIBCXX_USE_CXX11_ABI=0,導(dǎo)致無(wú)法到入第三方庫(kù)libjsoncpp.so
7.?鏈接libjsoncpp.a時(shí)報(bào)錯(cuò):which may bind externally can not be used when making a shared object; recompile with -fPIC
8.?vs code中g(shù)it push代碼報(bào)錯(cuò):Missing or invalid credentials.
9.?git clone報(bào)錯(cuò):SSL certificate problem: self signed certificate in certificate chain
10.?openEuler系統(tǒng)中修改系統(tǒng)時(shí)間
搜索
最新隨筆
1.?dnf安裝失敗
2.?RK3588設(shè)備中運(yùn)行可執(zhí)行程序報(bào)錯(cuò):error while loading shared libraries: librknnrt.so: cannot open shared object file:
3.?wget下載報(bào)錯(cuò):The certificate of ‘www.python.org’ is not trusted.
4.?執(zhí)行torch.load(模型名稱, map_location='cpu')報(bào)錯(cuò):from torchvision.transforms.functional_tensor import rgb_to_grayscale
5.?pip安裝basicsr報(bào)錯(cuò):To fix this you could try to:
6.?cmake文件中D_GLIBCXX_USE_CXX11_ABI=0,導(dǎo)致無(wú)法到入第三方庫(kù)libjsoncpp.so
7.?鏈接libjsoncpp.a時(shí)報(bào)錯(cuò):which may bind externally can not be used when making a shared object; recompile with -fPIC
8.?vs code中g(shù)it push代碼報(bào)錯(cuò):Missing or invalid credentials.
9.?git clone報(bào)錯(cuò):SSL certificate problem: self signed certificate in certificate chain
10.?openEuler系統(tǒng)中修改系統(tǒng)時(shí)間
最新評(píng)論
1.?re: DirectUI Lib XML編寫(xiě)說(shuō)明
這個(gè)不錯(cuò),很有用。
--dictbox
2.?re: MFC:為CListCtrl添加背景圖片[未登錄](méi)
沒(méi)用
--123
3.?re: DirectUI Lib XML編寫(xiě)說(shuō)明[未登錄](méi)
很好,對(duì)于我這樣的初學(xué)者很用幫助,謝謝樓主
--king
4.?re: WindowXP下PHP5開(kāi)發(fā)環(huán)境配置
謝謝樓主分享,已經(jīng)按樓主的方法配置成功
--bbreay
5.?re: error C2220: 警告被視為錯(cuò)誤 - 沒(méi)有生成“object”文件
你好,我用的是vs2012,沒(méi)有你說(shuō)的“選擇該cpp”,如:
--coco
閱讀排行榜
1.?protobuf使用方法(9418)
2.?執(zhí)行pip install報(bào)錯(cuò): WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv(8963)
3.?1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(24) : fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d](8626)
4.?編譯cmake報(bào)錯(cuò):Cannot find a C++ compiler that supports both C++11 and the specified C++ flags.(8207)
5.?把python3的版本從3.6升級(jí)到3.10(7236)
評(píng)論排行榜
1.?網(wǎng)游服務(wù)器通信架構(gòu)的設(shè)計(jì)(3)
2.?公司散伙啦。杯具!反思!(3)
3.?Ubuntu9.10 VI下方向鍵變成ABCD的解決辦法(3)
4.?kosmix,又一個(gè)開(kāi)源的類似GFS的分布式文件系統(tǒng)(2)
5.?DirectUI Lib XML編寫(xiě)說(shuō)明(2)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 小王
久久国产精品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
|
久久婷婷综合中文字幕
|