특정 노드 사이의 모든 경로를 반환하는 함수를 작성해야합니다.Haskell - 노드 간의 모든 경로를 생성합니다.
connect :: Int -> Int-> [[(Int,Int)]]
Data.Graph 라이브러리는 저 그래프를 생성 함수 'buildG을'내 유용한 준다. 내가
let g = buildG (1,5) [(1,2),(2,3),(3,4),(4,5),(2,5)]
를 호출하면 나는 모든 노드가 자신의 이웃에 매핑되는 배열을 얻을 것이다. 예 :
g!1 = [2]
g!2 = [3,5]
..
g!5 = []
내가 지능형리스트를 사용하여 일을하려고했지만, 나는 하스켈에서 아주 좋은 아니에요 그리고 내가 복구 할 수 점점 입력 오류입니다.
connect x y g
| x == y = []
| otherwise = [(x,z) | z <- (g!x), connect z y g]
주기에 대해서는 지금 걱정할 필요가 없습니다. 다음은 내가 원하는 것입니다.
connect 1 5 g = [[(1,2),(2,3),(3,4),(4,5)],[(1,2),(2,5)]]
감사합니다. 사이클에 대해 걱정할 필요가 없다고했지만 어쨌든 고마워 .-) – user1460863