我在创建邻接列表的 python 程序中遇到问题。列表本身工作正常,但随后程序将查看 va 和 vb(a 到 b)之间是否存在路径。问题是 if 语句即使在处理元组和括号之后也被完全忽略。if 应该验证是否有路径,如果有则发送消息。如果没有路径,则变量将递增,直到循环结束。如果它在没有找到路径的情况下结束,则会出现一条失败消息。这是代码:grafo 是一种图形类型。
class graph:
v = 0
a = 0
node = []
class vertex:
ta = []
adj = {}
def caminhografo(grafo, va, vb):
vat = defaultdict(list)
i = 0
a = 0
z = 0
vo = int(va)
vq = int(vb)
vz = int(va)
vw = int(vb)
x = len(grafo.node)
if vz < vw:
for vz in range (vw+1):
a = 0
x = len(grafo.node)
for a in range (x):
if [int(vz),int(a)] in grafo.node:
vat[vz].append(a)
if vz > vw:
while vz > vw:
a = 0
x = len(grafo.node)
for a in range (x):
if[int(va),int(a)] in grafo.node:
vat[vz].append(a)
vz = vz - 1
a = 0
x = len(grafo.node)
print(vat)
z = 0
#Problem starts here, after adjacency list is complete, none of the if's work and There is never a path between vertex.
for z in range (x):
if (vo,vq) in vat:
print("""
==============================================
Existe Caminho
==============================================
""")
break
elif (vo,z) in vat:
vo = z
print("""
==============================================
Não Existe Caminho
==============================================
"")
因此,如果我在顶点 0 和 1 之间插入弧后将 va 和 vb 作为 0 和 1 发送,则输出显示为 (0:[1],1:[0])。这意味着这些顶点之间有路径。除了最后的 if ,那应该验证一条路径,永远不会成功。
我也在使用 defaultdict,邻接列表是来自 defaultdict 的列表字典。最终输出始终为 ("Não existse Caminho"),("No Path"),即最终打印。
感谢您的任何帮助。