0

有谁知道更改 prim 的算法如何处理未连接的图?我知道我必须使用森林,但我不知道如何在 Haskell 中实现它。

4

3 回答 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 回答