找到一个最小的瓶颈生长树

时间:2012-10-29 16:42:00

标签: algorithm tree graph-theory minimum-spanning-tree

嗨,所以我正在做一些测试准备,我需要找出b和c部分。我知道a部分是真的,我可以证明它,但是找到b和c部分的算法目前是在逃避我。

  

解决以下最小瓶颈树的问题,其中具有最大成本的边缘被称为瓶颈。   (a)每个最小瓶颈   生成G的最小生成树G?证明你的主张。

     

(b)对于给定的成本c,给出O(n + m)时间算法   找出最小瓶颈生成树的瓶颈成本   G不超过c。

     

(c)找到一种算法来找到最小瓶颈   生长树的G。

提前感谢任何可以帮助我的人

3 个答案:

答案 0 :(得分:2)

对于(b)

删除费用超过 c G 中的每个边缘,然后检查左图是否仍然连接。

(c)

使用解决(b)作为除法条件的算法对 c 进行二元搜索。

(b)的证明

假设我们从 G 中删除边缘成本超过 c 后得到的图表是 G'。 然后:

  1. 如果连接了 G',则 G'中必须有生成树 T 。由于 G'的优势不会超过 c ,我们可以确定 T 中的优势不会超过 c < / strong>即可。因此 T G'的生成树,还有 G ,其瓶颈最多 c
  2. 如果未连接 G',则 G'中根本没有生成树。由于我们知道 G - G'的每个优势都超过 c ,并且我们知道任何生成树 G 将包含 G - G'的至少一个边缘,因此我们知道没有 G 的边缘生成树,其瓶颈&lt; = c
  3. 当然,检测图表是否连接成本为O(n + m)

    (c)的证明

    比如说,我们在(b)中使用的算法是 F(G,c)

    然后我们

    如果某些 c F(G,c) = True ,则 F(G,c') c'的强>> c'&gt; = c

    如果某些 c F(G,c) = False ,则 F(G,c') c'&lt; = c

    的所有 c',strong> = False

    所以我们可以在 c :)

    上进行二分搜索

答案 1 :(得分:1)

Ans. a)False,every minimum bottleneck spanning tree of graph G is not a minimum spanning tree of G.

b)To check whether the value of minimum bottleneck spanning tree is atmost c,you can apply depth first search by selecting any vertex from the set of vertices in graph G.

***Algorithm:*** 


check_atmostvalue(Graph G,int c)
{

for each vertex v belongs to V[G] do {
visited[v]=false;
}

DFS(v,c); //v is any randomly choosen vertex in Graph G
for each vertex v belongs to V[G] do {
if(visited[v]==false) then
return false;
}
return true;
}



DFS(v,c)
{
visited[v]=true;

for each w adjacent to v do {
if(visited[w]=false and weight(v,w)<=c) then
DFS(w,c);
}
visited[w]=true;
}


This algorithm works in O(V+E) in the worst case as running timr for depth first search DFS is O(V+E).

答案 2 :(得分:0)

这个问题可以通过简单地找到图的MST来解决。这基于以下权利要求:
MST是连接图的MBST 对于MST,选择MST中的最大边e,边e将MST分为两组S和T.然后,从切割属性,边e必须是连接S和T的边之间的最小权重。 /> 然后对于MBST,必须有一些连接S和T的边e'。然后w(e')必须不小于w(e)。因此我们知道MST必须是MBST。

但是,还有另一种方法可以确定最小瓶颈。我们不需要计算机MBST。在你的问题中,你实际上暗示了最小瓶颈的单调性。因此,我们可以使用二进制搜索结合连接算法来找到最小的瓶颈。我已经看到在其他情况下使用monocity。我有点惊讶于这里可以使用类似的技术!