[英]Haskell Prim's Algorithm
有谁知道change prim的算法如何处理未连接的图? 我知道我必须使用森林,但是我不知道如何在Haskell中实现它。
`这就是我得到的
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)
Prim的算法找到一个MST,但是如果未连接图形,则不存在任何MST。 如果具有| V |,则可以检查您的树是否为生成树。 -1个元素。
很容易找到图形的连接部分。 分别为每个连接的子图运行Prim的算法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.