問題:尋路算法難度
修改A *算法我們爲減少匝數優化。該算法現在將找到從(a,b)到任何TILE ADJACENT TO(x,y)的路徑,其中(x + 1,y)或(x-1,y)在可能的情況下傾向於 。
我嘗試的解決方案:
- 運行從原來的A *算法(A,B)到(x,y)的。
- 找到經過(x-1,)或(x + 1,)(如果有的話)的路徑中的最後一個座標。
- 如果在該座標平面中存在從*到y的直線可訪問垂直線,請修改該路徑以跟隨該線。
視覺演示:(來自S對路徑e其中X是無法訪問)
......S .....S
. X . X
. => .
. .
E E.
但是我不知道我的解決方案會在某些情況下工作,即:
......S .....S
. X . X
.X ??? X.
. .
E E..
任何人都可以想出解決這個問題的辦法嗎?
注意:A *算法是通用的,不同於考慮方向更改的數量,以減少生成路徑中的轉彎次數。
什麼是「儘可能喜歡」的意思?這是否意味着如果存在與(x + 1,y)和(x,y + 1)等長的路徑,那麼必須找到(x + 1,y)的路徑?或者這是否意味着如果有一條通往(x + 1,y)的路徑,它必須被找到,即使更長?另外鄰居是什麼意思? (x + 1,y + 1)是否相鄰? – btilly 2012-04-14 21:37:54
只有當它仍然是最短路徑時,纔有可能意味着。相鄰不包括對角線。 – 2012-04-14 21:41:29
我的朋友建議:1.查找返回的路徑是否經過了x + 1或x-1平面。 2.從開始運行A *到(x + 1,y)或(x-1,y)(無論哪一側更靠近)。如果生成的路徑更短,則返回它。這似乎根據我的測試給出了正確的解決方案,但基本上需要兩次運行算法。好奇,如果有什麼更優雅的。 – 2012-04-14 21:43:37