[英]How can I check unreachable subgraph exists when I cut the specific edge?
如果要剪切特定的边缘,我想在给定的有向图中检测新创建的不可达子图(标记不可达节点)。
当我遇到这个问题时,我尝试了4种方法,但是没有比这更好的了。
由于该方法的运行时间而拒绝该方法。 当前,我们使用Dijkstra算法进行查找,当我通过将其放入作业队列尝试使用此方法时,作业队列在不到一个小时的时间内就被淹没了。
Search from edge node with given threshold level.
If I met the branch, keep previous level. Otherwise, decrease level.
If level is 0, do nothing.
当前的时间解决方案就是这一解决方案,但显然,这一解决方案忽略了很多极端情况。
这很简单:
Give a threshold(like 100) to every nodes and simulate its flow.
If I met the branch, split number into each branch.
Check the values that is lower than 1.
但是由于时间的复杂性,这种方法也被拒绝了。
最后,我按拓扑顺序检查了强连接组件。 ( 我当然知道我使用了错误的单词,请参阅下文)
这个想法是,拓扑排序用于DAG (有向无环图),但是如果我添加了一些规则(例如“如果我检测到循环,则使用SCC将该循环作为一个虚拟节点递归对待”),则可以检查“一般有向图的“拓扑顺序” 。 如果找到拓扑顺序,则意味着存在一个无法访问的区域。 (很难说,可以用方法3来思考:模拟流动网络)
我认为这种方法是最好的方法,也许可以解决问题,但是我对应该搜索和了解的关键字没有任何想法。 与实现相同。
我忘记了无法达到的手段的解释。 如果没有从节点(节点“ A”)到任何其他节点的路由,则节点“ A”为“ unreachable” 。 最初,在给定的图上,不存在不可达节点。
在此问题中,我们假设节点1是主节点。 如果没有从节点1到节点2的路由,则节点2不可达。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.