路徑規劃問題是在給定的地圖上,一直起點,並給定乙個目標點,從而尋找這其中的最短路徑。
動態環境下尋路——避開行人
靜態環境下尋路——最短路徑(環境成本),避開障礙物
一 介紹a星演算法
三 實施說明
草圖a* 演算法分成close和open兩個集合,open集合包含候選的節點,和起始位置點,close集包含已經檢查過的節點。open集是「邊界」部分,close集合屬於"內部",每個節點需要儲存指向它的 副將
去掉所有**後的a*演算法相當簡單。有兩組,開啟和關閉。開放集包含那些候選節點。最初,開放集只包含乙個元素:起始位置。封閉集包含已經檢查過的節點。最初,閉合集為空。從圖形上看,開放集是「邊界」,封閉集是訪問區域的「內部」。每個節點還儲存指向它的父節點的指標,以便我們可以確定它是如何找到的。
有乙個主迴圈,它重複的呼叫出open中最好的節點n(f值最低的節點)並檢查它。
如果n是目標,那麼我們就完成了。
否則,節點n將從open列表中移除,並新增到close列表中。
找到f值最小的節點後,我們開始檢查它的鄰居n個網格。
在close列表中的鄰居已經被檢查過了,我們不需要再看了。
open列表中的鄰居是將要被檢視的,所以我們現在不需要看它。
我們先將它新增到open列表中,其父級設定為n。到n′的路徑成本為g(n′)其可以設定為g(n)+movementcost(n,n′)。
可通過互動式圖示檢視其中的細節
(參照部落格)
演算法學習 第一天 插入演算法
入程式設計師這一行不久,而且是從網路工程師半路轉過來的。聽說不懂演算法的都不能算是合格的程式設計師,馬上開始學演算法。今天第一天,加油。看 introduction to algorithms 第三版 chapter 2 插入演算法 書中的偽 for j 2to a.length key a j i...
基礎演算法學習第一天(快速排序演算法)
快速排序的思想 1.以陣列為例,將陣列中第乙個數或者最後乙個數為基準數記為 j 用這個基準數來將陣列分為兩個部分,基準數 j左邊部分都是比j小的數,右邊是比j大的數。2.再將左邊陣列進行快速排序,右邊也進行快速排序。這就是快速排序最基礎的思想。3.知道了思想,接下來就是如何將這個陣列該如何以j為基準...
學習第一天
知識是學會的,不是教會的 程式設計 驗證性或體驗性 創造性 學程式設計的4個階段 1.能看懂別人的 除錯別人的 2.能修改別人的 3.能拷貝別人的 做自己的事 4.能自己設計編寫 方法 多讀 做記錄 執行 修改 執行 練習,光說不練假把式 刷oj總結 寫部落格或許是個不錯的選擇 學生和已經工作的程式...