【发布时间】:2017-01-17 08:02:59
【问题描述】:
我特别对 Python 感兴趣,但也非常感谢通用解决方案。我有偶数个节点(假设是 12 个特定示例):
['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3', 'd1', 'd2', 'd3 ']
每个节点必须连接到另一个节点,形成 6 个连接(对)。
我需要找到一种方法来找到所有可能的连接组合。
此外,'a1'-'a2' 应视为与'a2'-'a1' 相同
一些想法:
我可以获得可能的
itertools.combinations(lst, 2)列表,但节点不可重用。比如说,连接'a1'<->'a2'应该从可用选项中消除'a1'<->'a3',因为'a1'已经使用。-
我不知道搜索是否适用,因为似乎存在一些问题:
- 似乎没有(简单、便宜)的方法来跟踪访问过的状态
- 解决方案总是在底部(需要遍历所有树 向下完成所有连接)
【问题讨论】:
-
您想找到所有可能的连接配置,对吗?也就是说,列表 [ [1,2], [3,4], ... [11,12] ] 代表一种配置,您希望找到所有可能的此类列表。
-
这是有向图还是无向图?例如,a1-a2 是否与 a2-a1 相同?
-
是的,这就是我要找的,a1-a2 和 a2-a1 一样
标签: python combinations itertools