主要方法:
1.先用Dijstra算法從目標節點G向起始節點搜尋。儲存路網中目標點到各個節點的最短路和該位置到目標點的實際值h,k(k為所有變化h之中最小的值,當前為k=h。每個節點包含上一節點到目標點的最短路信息1(2),2(5),5(4),4(7)。則1到4的最短路為1-2-5-4。
原OPEN和CLOSE中節點信息保存。
2.機器人沿最短路開始移動,在移動的下一節點沒有變化時,無需計算,利用上一步Dijstra計算出的最短路信息從出發點向後追述即可,當在Y點探測到下一節點X狀態發生改變,如堵塞。機器人首先調整自己在當前位置Y到目標點G的實際值h(Y),h(Y)=X到Y的新權值c(X,Y)+X的原實際值h(X).X為下一節點(到目標點方向Y->X->G),Y是當前點。k值取h值變化前後的最小。
3.用A*或其它算法計算,這裡假設用A*算法,遍歷Y的子節點,點放入CLOSE,調整Y的子節點a的h值,h(a)=h(Y)+Y到子節點a的權重C(Y,a),比較a點是否存在於OPEN和CLOSE中,方法如下:
while()
{
從OPEN表中取k值最小的節點Y;
遍歷Y的子節點a,計算a的h值 h(a)=h(Y)+Y到子節點a的權重C(Y,a)
{
if(a in OPEN) 比較兩個a的h值
if( a的h值小於OPEN表a的h值 )
{ 更新OPEN表中a的h值;k值取最小的h值
有未受影響的最短路經存在
break;
}
if(a in CLOSE) 比較兩個a的h值 //注意是同一個節點的兩個不同路徑的估價值
if( a的h值小於CLOSE表的h值 )
{
更新CLOSE表中a的h值; k值取最小的h值;將a節點放入OPEN表
有未受影響的最短路經存在
break;
}
if(a not in both)
將a插入OPEN表中; //還沒有排序
}
放Y到CLOSE表;
OPEN表比較k值大小進行排序;
}
機器人利用第一步Dijstra計算出的最短路信息從a點到目標點的最短路經進行。
D*算法在動態環境中尋路非常有效,向目標點移動中,只檢查最短路徑上下一節點或臨近節點的變化情況,如機器人尋路等情況。對於距離遠的最短路徑上發生的變化,則感覺不太適用。
相關詞條
-
D算法
D算法,是拓撲結構測試中最經典的方法,也是最早實現自動化的測試生成算法之一。是由Roth在1966年提出的,此後又有許多人在此基礎上作了改進 ,從而使 ...
簡介 基本思路 -
Dijkstra算法
Dijkstra算法是典型最短路算法,用於計算一個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴展,直到擴展到終點為止。Dijkstr...
-
計算機算法
計算機算法是以一步接一步的方式來詳細描述計算機如何將輸入轉化為所要求的輸出的過程,或者說,算法是對計算機上執行的計算過程的具體描述。
簡介 重要算法 特性 評價 十位大師 -
貪婪算法
貪婪算法是一種不追求最優解,只希望得到較為滿意解的方法。
概念 問題實例 -
分而治之算法
in Min Min
分而治之算法 算法思想 注意事項 套用 -
主曲線算法
是Hastie[14]於1984年提出的。主曲線是通過數據分布“中央”並滿足“自相合”的光滑曲線,其目的是根據給定的數據集合求出一條曲線,使得這條曲線對...
概念 定義 主曲線算法研究 初始化工作 研究動機與意義 -
歐幾里德算法
歐幾里德算法又稱輾轉相除法,是指用於計算兩個正整數a,b的最大公約數。套用領域有數學和計算機兩個方面。計算公式gcd(a,b) = gcd(b,a mo...
算法簡介 計算證明 算法原理 程式設計 算法版本 -
拉斯維加斯算法
拉斯維加斯算法的一個顯著特徵是它所作的隨機性決策有可能導致算法找不到所需的解。
n後問題 整數因子分解 Pollard算法 -
路由算法
路由算法,又名選路算法,可以根據多個特性來加以區分。算法的目的是找到一條從源路由器到目的路由器的“好”路徑(即具有最低費用的路徑 )。算法設計者的特定目...
簡介 主要目的 設計目標 技術要素 區分要素