在python中查找n长度循环

时间:2015-04-08 15:09:43

标签: python algorithm digraphs

我是Python的新手,并且花了一段时间没有编程,所以非常感谢你的帮助。

我必须在给定的数据结构中查找所有n个长度的循环 - 我现在正在使用列表但是也许dict可以完成工作 -

第一行中的每个元素直接映射到它下面的元素,如果重复使用映射导致返回初始值,则形成一个循环。 假设我有:

A=[[2,3,4,5,6,7,8,9,10],
   [6,3,6,1,8,8,4,1,9]]

然后周期为(3)(4,6,8)

A=[[2,  3, 4, 5, 6,  7,  8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
   [17, 7, 7, 3, 12, 18, 1, 8, 20, 1,  6,  13, 4,  17, 4,  13, 5,  10]]

周期为(3,7,18,5)(6,12)(13)

我真的被困住了,所以提前感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

谢谢你们! 这很简单,我只是看不到它...... 将A中的元素排列成2列(成对A [0] [i],A [1] [i])并将其提供给networkx对象,如

>>>G = nx.DiGraph(A)
>>>list(nx.simple_cycles(G))
>>>[[12, 6], [5, 3, 7, 18], [13]]

生成输出。