0

我正在处理图表中的一个问题,并试图找出找到独特的路径

让我举个例子,让我们考虑一个有 4 个节点和 6 个边的图,边如下 -

1 2
2 3
3 4
4 1
1 3
2 4

长度为 5 的唯一循环路径将是 -

  1. 1 -> 2 -> 3 -> 4 -> 1

  2. 1 -> 3 -> 2 -> 4 -> 1

  3. 1 -> 2 -> 4 -> 3 -> 1

    如果路径的边集相等,则认为两条路径相等。考虑两条路径 1 -> 2 -> 3 -> 4 -> 1 和 1 -> 3 -> 2 -> 4 -> 1 第一条路径就是集合 = [(1,2), (2,3 ), (3,4), (4,1)],而第二个是 = [(1,3), (3,2), (2,4), (4,1)]
    显然,这两组是不同的,因此路径也是不同的。边的顺序无关紧要,因为您只比较任何两组(路径)之间公共边的存在。

获得循环路径后,如何检查路径中是否具有相同的节点集?即 , 1 -> 2 -> 3 -> 4 -> 1 和 1 -> 4 -> 3 -> 2 -> 1 具有相同的集合,即
[(1,2), (2,3), (3 ,4), (4,1)] 以不同的顺序。
我想实现一对集合的映射并检查重复项.. 仍在寻找更好的选择。对如何进行的任何帮助表示赞赏?

4

1 回答 1

0

您是否考虑过使用Python 模式 - 实现图。它是一个极好的资源。我用它来解决关于图中从顶点 x 到 y 的唯一路径的编程竞赛问题。在此处输入链接描述

于 2016-07-15T19:55:28.703 回答