Python 3.x 从两个列表创建最大有向图路径

Python 3.x 从两个列表创建最大有向图路径,python-3.x,graph-theory,discrete-mathematics,Python 3.x,Graph Theory,Discrete Mathematics,假设有两个列表u和v,如下所示: u v 6 4 0 1 0 3 1 2 2 3 3 0 4 2 …其中u是边的开始,v是边的结束。数字6表示边的数量,4表示节点的数量。在u列表中的第一个0之后,可以看到u指向v,从而0指向1,0指向3。您可以继续此过程,看到1然后指向2,然后指向3,得到[0,1,2,3]。或者,在另一个0后面,0点到3,这意味着2,给你[0,3,2] Answer = [ [0,1,2,3], [0,3,2] ] 我该怎么做呢?这似乎相对容易,但我还没有找

假设有两个列表u和v,如下所示:

u  v
6  4
0  1
0  3
1  2
2  3
3  0
4  2
…其中u是边的开始,v是边的结束。数字6表示边的数量,4表示节点的数量。在u列表中的第一个0之后,可以看到u指向v,从而0指向1,0指向3。您可以继续此过程,看到1然后指向2,然后指向3,得到[0,1,2,3]。或者,在另一个0后面,0点到3,这意味着2,给你[0,3,2]

Answer = [ [0,1,2,3], [0,3,2] ]

我该怎么做呢?这似乎相对容易,但我还没有找到一个好的解决方案。

这是图论中的一个经典问题,被称为。这是NP难的,因为它至少和要求访问每个顶点的路径的NP完全一样难。因此,没有已知的算法既能给出精确解(即真正的最长路径),又能有效地扩展到问题的大型实例

如果您需要精确的解决方案,那么您将无法比某种类型的解决方案做得更好。否则,如果近似解对于您的用例来说“足够好”,那么就有一些启发式算法,但它们不是很好;给定关于问题难度的标准假设,对于任何常数c>0,没有有效的近似算法能够始终找到与n^c成比例的路径(当存在路径时)

在未加权但有向图的情况下,强不可逼近性结果是已知的。对于每一个e>0,除非P=NP,否则问题不能在n^(1-e)的因子内近似,并且在更为复杂的理论假设下,问题不能在n/(logn)^(2+e)的因子内近似。如果存在对数长度的路径,则可以使用颜色编码技术来查找它们,但这只提供了O(n/logn)的近似比