查找图中的路径数

问题描述 投票:0回答:1

我试图得到一个可以计算有向图中路径数的代码,而我得到了两个代码。第一个使用networkx图作为参数的代码,另一个使用图的邻接表,但是它们两个都给我相同的错误答案,所以我想知道是否有人可以帮助我。预先感谢

def caminos(G, u, v):
  H = G.copy()
  for x in H.node:
    H.node[x]['caminos'] = 0
  H.node[u]['caminos'] = 1
  abiertos = [u]
  while abiertos:
    x = abiertos.pop()
    k = H.node[x]['caminos']
    for y in H.adj[x]:
        H.node[y]['caminos'] += k
       abiertos.append(y)
       return H.node[v]['caminos']

def caminos(LA, u, v):
# LA: adjacency list
# Vertex numbered
# from 0 to len(LA) - 1.
n = len(LA)
caminos = n * [0]
caminos[u] = 1
abiertos = [u]
while abiertos:
    x = abiertos.pop()
    k = caminos[x]
    for y in LA[x]:
        caminos[y] += k
        abiertos.append(y)
return caminos[v]

编辑:我尝试了两种代码,结果在图片Picture of results and graph used

python algorithm graph graph-algorithm
1个回答
0
投票

您的错误在此行中:caminos[y] += k,尝试加1代表“通往y的另一条路径”。

此外,请考虑使用其他变量名。具有变量caminos和函数caminos是有效的,但可能会造成混淆。示例:

def caminos(LA, u, v):
    # LA: adjacency list
    # Vertex numbered
    # from 0 to len(LA) - 1.
    n = len(LA)
    pathcnt = n * [0]
    pathcnt[u] = 1
    abiertos = [u]
    while abiertos:
        x = abiertos.pop()
        k = pathcnt[x]
        for y in LA[x]:
            pathcnt[y] += 1
            abiertos.append(y)
    return pathcnt[v]
© www.soinside.com 2019 - 2024. All rights reserved.