打印将SCC连接到另一个SCC的边缘

时间:2018-03-21 16:26:54

标签: c graph tarjans-algorithm

我目前正在做一个项目,我需要在图表中找到有多少强连接组件(SCC),之后,我需要检查是否有任何边缘从任何SCC转到另一个SCC

我正在使用Tarjan的算法,我已经可以从给定的图形中获取所有SCC,但我无法计算下一部分。

我有两个想法:

  1. 删除每个SCC内的所有边。剩下的只有可能的候选人。
  2. 以某种方式将每个SCC转换为“顶点”或超级顶点,然后检查是否存在与任何其他超级顶点的任何传出连接。
  3. 我唯一的限制是:

    • 如果同一个SCC有多个连接,我只需要显示一次;

    • 当我显示连接时,我需要始终显示属于SCC的最小顶点id,无论是传出的SCC还是传入的SCC。

    一个小例子:

    输入边缘从x到y

    1 2; 2 3; 3 1; 2 4; 4 5; 5 4;

    这是一个image of the above graph,其中1 = A,2 = B等等......

    我的问题是:我该如何计算?我似乎想出的每一个选项,似乎都是耗费时间和资源。

    感谢所有帮助:)

0 个答案:

没有答案