Je reçois l'erreur suivante dans mon programme. La trace de la pile :
Traceback (most recent call last):
File "C:\Python33\Archive\PythonGrafos\Alpha.py", line 126, in
menugrafos()
File "C:\Python33\Archive\PythonGrafos\Alpha.py", line 97, in menugrafos
zetta = Beta.caminhografo(grafo,va,vb)
File "C:\Python33\Archive\PythonGrafos\Beta.py", line 129, in caminhografo
if ([vo, a]) in vat == ([vo,vq]) in vat:
TypeError: type non hashable : 'list'
Le programme est censé créer une liste d'adjacence qui fonctionne bien, puis rechercher s'il existe un chemin entre les sommets va et vb. J'ai utilisé un dictionnaire de listes dans collection/defaultdict pour ajouter correctement un sommet adjacent.
Le problème se situe dans les clauses if après la liste a été créée à la fin du programme. Je ne trouve pas de moyen d'utiliser correctement les clauses if avec le dict pour vérifier s'il existe un chemin valide entre les sommets. De plus, grafo est une classe de graphe.
Voici le code :
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)
for a in range (x):
if ([vo, a]) in vat == ([vo,vq]) in vat:
print("""
==============================================
Existe Caminho
==============================================
""")
break
elif ([vo,a]) in vat:
vo = a
else:
print("""
==============================================
Não Existe Caminho
==============================================
""")
break