我知道欧拉循环是一个循环,它只通过每个边缘一次。
但是我想知道是否有任何已知算法可以在图中找到通过特定边的周期?
例如,特别是图表让我说我只想找到经过边A-B的周期然后有周期ABD和AEB
有没有办法找到所有这些特定的边循环而不列出图中的所有循环?
答案 0 :(得分:-1)
现在我们知道如何判断图G
的所有周期数:
int count_cycles(Graph G) {
...
}
我们想知道通过特定边E
的周期数:
因此,我们可以定义新的图表G'
,它会打破E
的边G
并获取结果。
所以最后的结果是:
int count_cycles_passing_edge(Graph G, Edge E) {
Graph G_ = G.exclude(E);
return count_cycles(G) - count_cycles(G_);
}
由于
E
的周期等于所有周期,不包括未通过的所有周期E
E
的周期等于G'
所以,问题现在缩小为如何在图表中获取所有周期。
所以,你可以看看Detecting all circles in a graph ,并可能有一个有效的方法来解决减少的问题。