【发布时间】:2013-05-01 05:30:32
【问题描述】:
我有两个 previous 和 next 项目的列表。
[['Robert','Christopher'],['John','Eric'],['Mark','John'],['Mickael','Robert']]
对于第一个列表,“Robert”上一个,“Christopher”下一个。
我想通过保持最终列表的连续性来合并具有最低 previous 和最高 next 的它们。 结果可以是:
[['Mickael','Christopher'],['Mark','Eric']]
或
[['Mark','Eric'],['Mickael','Christopher']]
结果是两个列表,因为这两个列表之间没有连续性。 previous 和 next 无法排序(例如“Mickael”在“Christopher”之前)。没有循环,也没有重复的元素(即“罗伯特”总是在“克里斯托弗”之前,“约翰”总是在“埃里克”之前......)所以这是一个拓扑图
在 python 中可以轻松实现吗?
【问题讨论】:
-
您基本上是在寻找通过图的可能路径的起点和终点。
-
您的数据中是否有循环,例如:
[A,B], [B,A], [C,D]?这将导致 (A,A), (C,D)。 -
不,我不会有循环。 'A' 总是在 'B' 之前,'B' 在 'C' 之前......不过,我可以对这些夫妻有不同的顺序:[B,C], [A,B], [C,D ], [F,G], [E,F]
-
@ChristopheSaugé 然后在我之前发布的链接上查看解决方案。