我選擇用節點列表(例如n=[1,2,3,4]
)和表示邊緣的對列表(示例m=[(1,2), (2,3)]
)在Haskell中表示圖形。現在我必須看看圖表是否強連接。Haskell中的圖形表示
我的主要問題是如何找到圖中2個節點之間是否有方法。我寫了這樣的事情:
-- sees if 2 nodes are adjacent
adjacent x y [] = False
adjacent x y (mu:m) =
if(x== (fst mu) && y==(snd mu)) then True
else adjacent x y m
-- the successor of a node, ex for the edge (1,2) the succ of 1 is 2
suc x [] = 0
suc x (l:list) =
if(x==(fst l)) then snd l
else suc x list
-- my main function
way 0 y list = False
way x y (mu:m)
| x==y = True
| (adjacent x y (mu:m)) == True = True
| otherwise =
if ((way (suc x (mu:m)) y (mu:m))==False) then way (suc x m) y m
else True
它工作時,我有1度節點,但對於具有更大程度的節點並不總是工作。你能給我一些線索嗎?
+1爲是明確它是家庭作業!讓我們知道如何接近幫助。 – MtnViewMark 2010-05-05 20:28:59
一旦某個特定答案幫助您成功解決了您的問題,選擇它就很正常(點擊投票計數下的 複選標記),以便知道問題已解決。向成員表明他們現在可能想花時間處理其他問題。 – MtnViewMark 2010-05-06 13:13:18