2016-09-26 27 views
0

我有一個二維數組(假定類似下面的一個):獲取的最短路徑的第一移動 - 2D陣列 - 的java

#....#.# 
####.### 
.....#.# 
##..#.## 

# = obstacle and . = empty 

我在能夠計算最短路徑從一個點迷宮到另一個。但是,我不想這樣做,我只想得到這個計算出的最短路徑的第一步。

是否有更好的方法來做到這一點,而不是一次又一次地重新計算整體最短路徑....

我是一個*,Dijkstra算法和BFS之間切換的舒適。

任何建議,將不勝感激。

+1

難道你不能只計算一次路徑,然後遵循該路徑? – satnam

+0

這條最短路徑的起點和終點都是遊戲對象。因此,這兩個遊戲對象都在一個不變的方向上前進。所以每一秒鐘,我必須重新計算路徑,並在路徑上進行第一步... –

回答

0

您可以嘗試使用一些啓發式來猜測哪些可用的移動會讓您更接近終點。但是,如果要獲得絕對最短路徑的第一步,則必須計算整個路徑。你可以嘗試使用一些記憶來提高你的表現。

+0

你能給我一些僞碼或者其他的幫助我開始「猜猜哪些可用的移動會讓你更接近結束點使用一些啓發式「,什麼是啓發式? –

+0

A *算法包括啓發式算法,用於估計到目標的最便宜路徑的成本。你可以從那裏開始。 – uoyilmaz