查找图中的路径数
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]
以上是关于查找图中的路径数的主要内容,如果未能解决你的问题,请参考以下文章