隣接リストを作成する 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 existe Caminho"),("No Path") であり、これが最終出力です。
ご協力ありがとうございます。