2010-03-01 105 views
2

要將實習生,我使用A *算法在以下情況下:ASTAR在C#中的特定情況下

  • 單位形狀是高度和1寬度的正方形,
  • 我們可以從另一個矩形表示的區域旅行,但我們不能在這些預先限定的區域外行駛,我們可以通過一個門從矩形走到另一個門,用對應的方形邊上的線段表示。

這裏有兩件事情我已經做了但並沒有滿足我的老闆:

1: 我創建了以下類: 其中包含2個分離正方形的位置-a門類和門的方向(頂部,左側,底部,右側), -a包含門列表的地圖類,代表可行走區域的矩形列表 和代表地面方塊的二維數組(通過枚舉的附加信息) - A *算法的類(節點,AStar)

2: -a MapCase類,其中包含有關案例效果的信息以及通過枚舉設置的門(設置了[標記]屬性,以便能夠在每個案例上累積多個信息) -a僅包含一個MapCase類的2D數組 - A *算法的類(仍然是AStar的節點)。

由於2版本比第一版本更好(更無用的計算,更好的地圖類架構),我的老闆對我的地圖類架構還不滿意。

A *和節點類很好,很容易維護,所以我不認爲我現在必須更深入地解釋它們。

所以這裏是我的問題:有人有一個好主意來實現A *的問題規範(矩形步行,但有一個方形單位面積,穿過門)?

他說,問題的網格視覺(如此二維陣列)不應該是解決問題的正確方法。

我想我已經清楚,同時露出我的問題..

感謝

風箏

回答

1

,而不是一個多維數組,你可以使用節點加權邊緣。這很適合您需要的距離和連接的A *搜索。如果distancs全部爲1,那麼您可以忽略這些權重。

+0

是的,但我應該如何確定重量呢? – 2010-03-01 15:33:15

+0

你能否澄清一下:你是否想通過迷宮般的房間找到一條路線?如果是這樣,所有連通房間之間的距離是否相等?如果是這樣,權重可以全部設置爲1(或任何你喜歡的常數)。 – sfg 2010-03-01 15:54:37

+0

「你想通過迷宮般的房間找到一條路線嗎?」 - >是 「如果是這樣,所有連通房間之間的距離是否相等?」 - > no,因爲房間是不同大小的矩形,但它們全部由相同的單位平方組成 – 2010-03-01 15:56:39