有谁知道更改 prim 的算法如何处理未连接的图?我知道我必须使用森林,但我不知道如何在 Haskell 中实现它。
troubledstudent
问问题
924 次
3 回答
1
`这就是我得到的
prim for = prim' [n] ns [[]]
where (n:ns) = nodes for
es = edges for
prim' t [] mst = mst
prim' t (r:rs) (x:xs) = let m = minimum[(c,u',v'| u <-t, v <- (r:rs), (u,v,c) <- es]
m | m == Nothing = prim' (r:t) rs ([]:mst)
| otherwise = prim' (v:t) (delete v' r) ((m:x):xs)
于 2011-12-13T15:52:02.830 回答
0
Prim 的算法找到一个 MST,但如果图未连接,则不存在 MST。你可以检查你的树是否是生成树,如果它有 |V| - 1个元素。
于 2011-12-12T05:07:18.247 回答
0
很容易找到图形的连接部分。分别为每个连接的子图运行 Prim 算法。
于 2011-12-12T08:47:51.523 回答