查找图中的路径数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查找图中的路径数相关的知识,希望对你有一定的参考价值。

我试图得到一个可以计算有向图中路径数的代码,而我得到了两个代码。第一个使用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

答案

您的错误在此行中: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]

以上是关于查找图中的路径数的主要内容,如果未能解决你的问题,请参考以下文章

在具有特定成本的无向图中查找路径

Django 在图中查找两个顶点之间的路径

在图中查找所有可能的路径

C语言打印图中两点之间的所有路径,不是最短路径!!!谢谢高手麻烦帮忙 代码要实现哈!

使用Gremlin在图中查找最长的循环路径

在 Go 中回溯以查找有向无环图中的所有路径,将路径分配给解决方案切片的问题(Leetcode 797)