【发布时间】:2020-12-20 05:37:42
【问题描述】:
这是我要解决的问题:
给定一个无向图,找出可以通过遍历任意两个节点之间的路径并跟踪我们去了哪些节点(不去任何节点两次)可以获得的不同无序节点组合的数量。
比如说邻接矩阵是:
1: 2,3
2: 1,3,4
3: 1,2,4
4: 2,3,5
5: 4
一个无序组合是 [1,2,3,4],可以通过路径 1>3>4>2 或 1>3>2>4
答案将是 17,包含以下无序集:
[1,2] [1,3] [2,3] [2,4] [3,4] [4,5]
[1,2,3] [1,2,4] [1,3,4] [2,3,4] [2,4,5] [3,4,5]
[1,2,3,4] [1,2,4,5] [1,3,4,5] [2,3,4,5]
[1,2,3,4,5]
目前,我的函数在我的程序中所做的只是暴力破解所有可能性,但我想知道如果图表有 10,000 多个节点,是否有更快的方法来做到这一点?暴力破解太慢了。
【问题讨论】:
-
对于这个问题的有效解决方案没有太大希望。在某些时候,算法需要确定是否存在连接每个节点的路径(不访问任何节点两次)。这就是所谓的Hamiltonian path problem,即 NP-Complete。
标签: algorithm graph combinations