2008年11月30日 星期日

電腦鼠-中右法則

這次來介紹,電腦鼠如何找到終點


要用中右法則前,需學會FLOOD 演算法,這樣才可以讓老鼠迷宮時,可以幫忙找一條建議路徑提供給老鼠走到終點。


S為起點,G為終點,黃色格子為已走過的路徑。


因為規格上指出,起點為東南方,朝向為北邊的方向,邊東、南、西皆為有牆。


根據這條規格,所以我們可以將第一格事先更新,且定義已走過的格子。



因為是中右法則,所以優先順序為:前方優先、右轉第二、左轉第三。因為前方有路,所以老鼠會向前走。


因為是中右法則,所以優先順序為:前方優先、右轉第二、左轉第三。因為前方有路,所以老鼠會向前走。


因為是中右法則,所以優先順序為:前方優先、右轉第二、左轉第三。因為前方沒路,所以老鼠會向右轉。



走到這裡,中間有一格雖然沒有走過,但是它的上、下、左、右、皆走過。


所以我們可以定義中間這格為:已走過。


像這樣,已走過就會填上黃色,定義成已走過。


老鼠走到都走過的路徑時,會執行一次FLOOD 演算法,提供一條路徑供老鼠走到還沒走過的地方。


走到這裡,因為前方沒有走過,所以會放棄藍色的建議路徑,改為中右法則。


照著中右法則,走到這裡。一樣中間有一格沒有走過,但上、下、左、右也走過了,所以可以視為已走過。


當老鼠走到死巷死,一樣會執行FLOOD演算法。


FLOOD 演算法會提供一條建議路徑給老鼠。


老鼠走到沒有走過的路徑時,就會放棄建議路徑了。


用這個想法,就可以幫忙老鼠走到終點了。


其實中右、中左、左中右、右中左,大概的想法都是這樣,只是優先權不一樣而已。


我們用了中右法則好一陣子了,雖然走的路徑很多,但是如果要測試校正的話,中右法則是一個不錯的選擇。


沒有留言:

張貼留言