Haskell Prim 算法

发布于 2024-12-20 14:44:23 字数 67 浏览 1 评论 0原文

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

does anyone know how the change prim's algorithm so that is handle a graph that is not connected? I know I have to use a forest but I don't know how to implement that in Haskell..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

乱世争霸 2024-12-27 14:44:23

`这就是我得到的

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)

`This is what I got

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)
蓝颜夕 2024-12-27 14:44:23

Prim 的算法找到了 MST,但如果图未连接,则不存在 MST。您可以检查您的树是否是生成树(如果它具有 |V|) - 1 个元素。

Prim's algorithm finds a MST, but if the graph is not connected no MST exist. You can check if your tree is a spanning tree if it has |V| - 1 elements it in.

趴在窗边数星星i 2024-12-27 14:44:23

很容易找到图形的连接部分。分别对每个连接的子图运行 Prim 算法。

It's easy to find the connected parts of the graph. Run Prim's algorithm for every connected sub-graph separately.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文