计算无向图中有约束的所有一对顶点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算无向图中有约束的所有一对顶点相关的知识,希望对你有一定的参考价值。

我正在努力解决以下算法难题:

给定具有N个顶点和N个边的图形,我必须对具有以下属性的所有顶点对(A,B)进行计数:A> B,并且存在至少一条由所有顶点标记为A和B之间的数字的路径...

例如,如果存在以下路径,则(1,5)是有效的一对顶点:(1,2,3,4,5)但即使存在以下路径(1、5、2、3也可以) ,4)或(1,3,4,3,2,3,5)...我对路径的长度或其顺序不感兴趣,它只需要包含标签> = A且<=B。我尝试使用改进的bfs和dfs,但没有成功。

可以帮忙吗?

提供一些提示?

感谢

答案

删除连接两个不连续数字的节点的所有边。 (例如,将节点2与节点6连接的边缘,而不是从节点2到节点3的边缘)。在修改后的图中,每个节点的度数为0、1或2。

现在遍历从节点1开始的图形。将所有访问的节点存储在列表中。如果到达度数为1的节点,请从节点2重新开始(然后再从节点3开始,依此类推)。

考虑具有7个节点和边E = {{{1,2},{2,3},{3,4},{4,5},{6,7}}的图的以下示例输出。请注意,1..5表示具有以下元素{1},{2},{3},{4},{5}的列表。

节点|列表|有效对

1 | 1..5 | 4 {(1,5),(1,4),(1,3),(1,2)}

2 | 2..5 | 3 {(2,5),{2,4),(2,3)}

3 | 3..5 | 2

4 | 4..5 | 1

5 | 5..5 | 0

6 | 6..7 | 1

7 | 7..7 | 0

这应该回答您的问题。抱歉,表格格式不正确。如表中所示,一旦节点1具有所有对,就可以计算节点2、3、4和5的有效对。因此,有一些空间可以改进我的算法。

以上是关于计算无向图中有约束的所有一对顶点的主要内容,如果未能解决你的问题,请参考以下文章

访问k个顶点的无向图中的最短路径

在两个顶点之间的无向图中查找特定边

数据结构与算法分析 - 7 - 图

10 无向图的边

图的相关知识

在无向图中通过其顶点找到一条边 [C++ BGL]