给定一个元组列表,我需要从该列表中查找所有唯一路径:
输入:[('a','b'),('b','c'),('c','d'),('g','i'),('d','e'),('e','f'),('f','g'),('c','g')]
输出:[['a','b','c','d','e','f','g'],['a','b','c','g','i']]
(2个可能的唯一路径)
如果元组的第二个元素与另一个元组的第一个元素匹配,则两个元组可以连接,即:一个元组是(_,a)
,另一个元组像(a,_)
。你知道吗
这里已经提出了这个问题:Getting Unique Paths from list of tuple但是解决方案是用haskell实现的(我对这种语言一无所知)。你知道吗
但是你知道在Python中有没有一种有效的方法来实现这一点吗?
我知道库itertools
有许多高效的内置函数来处理类似的内容,但我对此不太熟悉。你知道吗
您可以构建一个dict,将每个父节点映射到一个已连接子节点的列表,这样您就可以以平均时间复杂度O(n)递归地生成来自每个父节点的路径:
这将输出:
您希望找到图形中的所有simple paths。你知道吗
Python有一个惊人的图形处理库:networkx。你可以用几行代码来解决你的问题:
将返回给您:
[['a', 'b', 'c', 'g', 'i'], ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'i']]
如果需要所有可能的路径,只需将最后一行替换为:
可以对生成器使用递归:
输出:
相关问题 更多 >
编程相关推荐