Graph 最小化特定节点度的最小生成树

Graph 最小化特定节点度的最小生成树,graph,graph-algorithm,minimum-spanning-tree,kruskals-algorithm,Graph,Graph Algorithm,Minimum Spanning Tree,Kruskals Algorithm,在所有最小生成树中,我们如何找到最小化节点度的最小生成树 修改Kruskal算法,如果有多条边具有相同的权重,我们会选择一条不接触v的边来解决问题吗?部分回答问题,修改问题中所述的Kruskal算法并不能解决问题。考虑图 g=(v,e,w)< /c> > V = {1,2,3}, E = {{1,2}, {2,3}, {3,1}}, w({1,2}) = 1, w({1,3}) = 1, w({2,3}) = 2 1是最小生成树中度最小化的节点。然后,边集 S1={{1,2},{1,3}}

在所有最小生成树中,我们如何找到最小化节点度的最小生成树


修改Kruskal算法,如果有多条边具有相同的权重,我们会选择一条不接触
v
的边来解决问题吗?

部分回答问题,修改问题中所述的Kruskal算法并不能解决问题。考虑图<代码> g=(v,e,w)< /c> >

V = {1,2,3},
E = {{1,2}, {2,3}, {3,1}},
w({1,2}) = 1,
w({1,3}) = 1,
w({2,3}) = 2
1
是最小生成树中度最小化的节点。然后,边集

S1={{1,2},{1,3}}
构成权重
2
的最小生成树。然而,Kruskal算法的修改版本将在不丧失一般性的情况下选择边
{1,2}
,这将导致
{1,3}
被禁止,从而选择
{2,3}
。总的来说,在选定的边集中

S2={{1,2},{2,3}}
节点
1
的度小于
S2
,但
S2
的总权重为
3
,这意味着它不构成最小生成树

此外,注意,要最小化的节点
v
的程度必须至少为
3
,以便在最小生成树中具有
v
的多个邻域的可能性


在彻底搜索中,选择
v
的任何可能邻域。由于
v
最多有
n个
邻居,因此最多有
2^n个
这样的邻居。使用Prim的算法,将每一个扩展到一个生成树,该生成树相对于包含选定的
v
邻域而言成本最小;在所有这些成本最低的解决方案中,选择一个
v
程度最低的解决方案。然而,这种方法不能产生多项式时间算法。

我认为G的定义有一些错误?您没有定义节点4,但包含了一条边{3,4},并且没有指定其权重。