问题描述
我正在尝试设计一种算法,在给定连通权重图G =(V,E)和V中的一部分顶点U的情况下,将构造最小生成树,使得U中的所有顶点都是叶子(其他顶点也可能是叶子),或者返回不存在这样的树(假)。
这就是我得到的,适应了Prim的算法(合理的警告,它的确很糟糕;甚至不知道它是否有效/是否有效,或者不使用什么数据结构,我会接受 literal 而是使用其他正确的算法):
\n\[\"this is my code\"\]
我也有一张我认为会对这张图做些什么的图片: pic here
算法正确的证明也可以让我省心。
解决方法
如果要在解决方案中保留所有顶点u ∈ U
,则可以在该解决方案中使用 no u
来连接其他两个顶点。所有不在U
中的顶点必须通过不与任何u
入射的边连接。
移除U
,并将所有边缘入射到U
。找到最小的生成树,然后通过我们删除的树中可用的最小加权边将每个u
连接到树。