Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 在图G中找到最大权重边?_Algorithm_Graph - Fatal编程技术网

Algorithm 在图G中找到最大权重边?

Algorithm 在图G中找到最大权重边?,algorithm,graph,Algorithm,Graph,我的任务是,给定图G中与E道路相连的V个村庄,每条道路都标有正数。你必须至少达到这个数字才能进入这条路。换句话说,如果道路标记为5,则您的标高必须至少为5或更高才能进入该道路。现在,我的任务是设计annalgorith,找到能够从任何其他村庄到达V中任何村庄所需的最低净空水平。所以,我的解释是我们可以在图中找到最大权重边。但我还没有弄清楚什么算法适合这种情况 这可以在O(E)中解决 为什么你的解决方案是错误的?考虑一个三角形,其中两个边是1,最后一个是2,需要的最小间隙是1,你的解是2。 我能想

我的任务是,给定图G中与E道路相连的V个村庄,每条道路都标有正数。你必须至少达到这个数字才能进入这条路。换句话说,如果道路标记为5,则您的标高必须至少为5或更高才能进入该道路。现在,我的任务是设计annalgorith,找到能够从任何其他村庄到达V中任何村庄所需的最低净空水平。所以,我的解释是我们可以在图中找到最大权重边。但我还没有弄清楚什么算法适合这种情况

这可以在
O(E)
中解决

为什么你的解决方案是错误的?考虑一个三角形,其中两个边是1,最后一个是2,需要的最小间隙是1,你的解是2。 我能想到的解决方案是创建(MBST),而不是获取它的最大边缘,这将是您的清除级别

为什么它会起作用?这棵树的最大边是你能得到的最小的(最小瓶颈),并且仍然可以到达图中的任何地方(跨越)

MBST
可以使用分而治之的方法,而不是遍历树中的所有边来查找最大值is
O(E)
。总共
O(E)


你可以用一个简单的方法来解决它,因为任何
MST
都是
MBST
(),但这需要
O(E log V)
O(E+V log V)
,这取决于算法(or)。

@mangusta如果图有顶点a、B、C和边(AB、1)、(BC、1)和(AC、1.5),那么1级可以使用边(AB)和(BC)到处移动,但是从A到C的最短路径的最大权重为1.5。@conditionalMethod,感谢您指出这一点!你说得对,你可以把边从最小的重量排序到最大的重量。从图的顶点集开始,没有边。开始按上一顺序将边添加到图形中。当图形未连接或边用完时,继续添加边。添加的最后一条边的权重为您提供了解决方案。用于测试连通性:添加第一条边时,请标记它连接的两个顶点。添加新边时,标记使用新边可以到达的任何新顶点。只要有未标记的顶点,图形就仍然没有连接。这基本上就是Kruskal的最小生成树算法的工作方式)简单地说,我们需要为您的响应选择最小生成树的最大边,但是为什么要提到使用MBST而不是MST(因为每个MST都必须是MBST),这样会更快?我更喜欢其中一个命令,它说我们可以使用Kruskal的算法在图中找到MST。因为我的讲座刚刚介绍了Kruskal算法和分治方法。@D.dream是的,它只是更快,问问你的教授你需要达到的时间复杂度是多少。当我在大学里做Algo1时,我们的家庭作业中有这个,这是我的答案。@D.dream我编辑了它,如果你对答案满意,如果你能批准,我将不胜感激。