2008年11月30日 星期日

電腦鼠-演算法

其實電腦鼠需要一個好的腦袋,就需要一個迷宮演算法


我們的迷宮演算法是參考flood 演算法,FLOOD 的意思就是像洪水一樣的流動。


因為直走的速度可以較快,像我們的直走最高速約160cm/s,轉彎約50cm/s,所以如果考慮了希望可以讓直走的路徑多一點的話,就把轉彎的權重變大,這樣找路徑的時後,就會找直線多一點的路出來(因為直走的權重較低,會以權重較低的為優先尋找)


假設電腦鼠已知地圖:S為起點,G為終點。洪水先從終點開起,直到流到起點。



將終點的上、下、左、右,可以流動的填上權重值。


將1的上、下、左、右,可以流動的填上權重值。


將2的上、下、左、右,可以流動的填上權重值。


將終點的上、下、左、右,可以流動的填上權重值。這時後可以看到,轉彎會在2的地方填上4。


照著這個想法,一直填到起點。


再從起點,由大到小,就可以找到一條最短的路徑出來。


或許也可以比較一下A*演算法的差異性。如果電腦鼠要走斜線的話,也是可以考慮直接使用A*演算法。


1 則留言:

  1. 您好~我想請問幾個問題~
    當中A*演算法
    其中,h(n) 主導著A* 演算法的表現方式,有以下幾種情形:
    1. h(n)=0: A* 演算法這時等同 Dijkstra 演算法,並且保證能找到最短路徑。
    2. h(n)目前節點到結束點的距離: 不保證能找到最短路徑,但計算比較快。有關這幾點有點不懂~
    像是1.h(n)=0 不就等於到達目標點才會有這狀況!?那根 Dijkstra 有何關係
    2.h(n)>==<目前節點到結束點的距離!!?好怪3.A*跟flood-fill演算法比較起來
    感覺flood-fill演算法比較好~為何A*還是那麼多人再用??
    thx~
    [版主回覆12/10/2011 09:16:22]雖然我不熟A Star algorithm,但是我覺得主要是因為a star
    1、 可以算斜線。
    2、flood 是因為知道終點&起點,所以才讓你有錯覺,況且,迷宮的環境是固定的。
    我的一點小見解

    回覆刪除