我正在使用Data.Graph圖形模擬Haskell中的模擬。仿真僅限於我的圖形模型的2D網格。下面網格上每個點上的一個節點將包含一個Maybe Molecule類型,因此可能存在一個分子或者沒有分子。編輯/更新Haskell中的圖形
1 - 2 - 3
| | |
4 - 5 - 6
| | |
7 - 8 - 9
我已經建立了這種表示,但是當涉及到更新分子的位置時,我覺得我要解決這個問題很長的路要走。到目前爲止,我所做的是將所有節點都刪除到節點列表中。我寫了一個函數來交換這個節點列表中的兩個項目。但是現在當我把所有東西都拉回來時,我遇到了問題,因爲要生成一個新圖,我需要一個頂點列表,我可以從頂點Graph函數輕鬆獲得這些頂點。但我也需要用邊緣觸摸的頂點列表來壓縮。不幸的是,Data.Graph的邊緣Graph函數返回一個類型爲Edge的元組列表,儘管我可以編寫一個函數來派生具有邊緣到頂點的列表頂點,但它並不直接有助於生成圖形。這樣做似乎對我來說足夠的工作,我想知道我是否錯過了一個有一個Graph函數,它只是採取一個圖形,並返回一個更新節點的圖形?
如果我使用圖形,我可以看到相鄰節點是否被其他分子佔用以進行碰撞檢測檢查。 – mikeyP 2011-12-21 12:01:48
@mikeyP但是你也可以用數組來做到這一點,不是嗎? – 2011-12-21 13:12:48
你是對的,在Graph下是一個數組。但是通過圖形,我可以去除圖形上的分子不能通過的區域。我看不出一個乾淨利落的方式來與陣列做到這一點。 – mikeyP 2011-12-21 13:49:33