在给定源节点和路径长度的情况下,如何计算图中的不同路径

2024-10-06 07:42:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的图,有4个节点ABCD以及以下边:

[A,B]
[B,D]
[B,C]

我想找到从节点C开始的路径,给定一定的长度n。例如:

对于n = 1,我将只有[C]作为可能的路径。结果是1

对于n = 2,我们只有[C,B]。结果是1

对于n = 3,我们有[C,B,C][C,B,D][C,B,A]。结果是3

等等

我编写了以下(python)代码:

dg = {'A':['B'],
      'B':['C','D','A'],
      'D':['B'],
      'C':['B']}

beg = ['C']


def makePath(n):
    count = 0
    curArr = beg
    for i in range(n):
        count = len(curArr)
        tmp = []
        for i in curArr:
            tmp.extend(dg[i])
        curArr = tmp
    return count

然而,它在n=12以上变得非常缓慢。有没有更好的算法来解决这个问题,更重要的是。一种可以推广到任何无向图(即最多有20个节点)的方法


Tags: 代码in路径forlen节点defcount