如何仅在图形中的一个循环上遍历?

Pranjal Verma

我正在尝试在MST的CLRS中使用ch23,这是一个问题:

给定一个图G和最小生成树T,假设我们减少了不在T中的边之一的权重。给出一种用于在修改后的图中找到最小生成树的算法。

我发现的一个解决方案是在中添加新的更改边T,然后在T中创建一个简单的循环,遍历该循环并删除此循环中的最大权重边voila,找到新的更新的MST!

我的问题是,如何遍历此简单循环上的节点?因为如果我说T从该新添加的边沿的一个端点开始遍历,则DFS / BFS遍历可能会超出周期T

我想到的一种解决方案是在添加新优势之后找到biconnected componentsin T只会BCC找到一个,这是这个新形成的简单循环,然后我可以在DFS代码中放入特殊条件,说仅遍历此BCC中的边/节点,一旦找到后边,就停止遍历。

编辑:图G已连接并且是无向的

dWinder

您的解决方案基本上是好的。为了使其更加正式,您可以使用Tarjan的桥接查找算法

该算法以线性时间在图形中找到最前沿(也称为桥)。考虑E'是最前沿的。这是很容易证明,在每边E'可以上一圈。因此,E / E'必须是图中的循环。

您可以使用哈希映射或数组构建函数来查找您Ecut-edges集合集合之间的差异

在这里,您可以运行简单的for循环来找到要删除的最大重量边。

希望对您有所帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何制作一个程序来循环遍历 Instagram 上所有保存的照片

如何循环遍历父数组的子数组,但在每个子数组上遍历一个索引

For循环仅在Django中的一个模板中工作

Angular:如何循环遍历嵌套在另一个FormGroup中的FormGroup中的FormArray?

如何在导轨中仅使用一个for循环同时遍历两个数组

如何循环遍历列表中除第一个之外的所有项目

如何在Haskell中实现一个遍历列表所有值的for循环?

如何循环遍历另一个对象数组中的对象数组-javascript

如何在一个表中合并层次结构并在其中循环遍历?

如何循环遍历 reactjs 中的数组,但从最后一个元素开始?

在javascript中,如何创建一个遍历所有对象的for循环?

循环遍历R中的列表时如何检索上一个列表对象

在 for 循环生成的一个图形上绘制多个图形

如何通过一个循环依次遍历多个列表?

如何遍历一个ArrayList而不使用循环构造?

一个for循环如何遍历多个数组?

在 javascript 中循环遍历一个不可变的 Map

如何在matlab中在同一个图形上创建多个图

如何在python中的一个图形上绘制许多kdeplots

如何仅在最后一个孩子上防止动画

如何仅在一个屏幕上更改NavigationBar的TintColor

如何循环遍历一个范围加上一个整数?

如何将 matplotlib 图形和 seaborn 图形放入一个组合的 matplotlib 图形中

循环内的.load似乎仅在最后一个循环上触发

循环创建图形:一个图形与另一个图形不同

逐行循环遍历一个范围

让if / else在列表理解中突破一个循环,循环遍历两个范围

如何在angualr.js中的另一个arry中循环遍历数组

如何在 Rails 6 表单中填充隐藏字段,循环遍历一个表并将答案存储在另一个表中?