Momentan arbeite ich mit einer Zuweisung (BFS), wo ich den längsten Weg zwischen zwei Knoten finden soll. Beachten Sie, dass ich sowohl mit einer Queue-Klasse als auch mit einer Node-Klasse arbeite. Die Node-Klasse heißt Word
in meiner Zuweisung. Die Wörter sind Wörter mit drei Buchstaben, und ich habe derzeit eine Methode (longestway), die den längsten Pfad von einem gegebenen Wort zu seinem kleinsten Kind zurückgibt.BFS, versucht den längsten Weg zwischen Knoten zu finden
Das Problem ist, ich möchte dies implementieren, so dass es den längsten Pfad von einem Wort in einer Liste zu seinem kleinsten Kind zurückgibt, und dann den längsten aller dieser Pfade zurückgibt.
Der Code, den ich gerade habe, funktioniert, aber es dauert viel zu lange Zeit, ich brauche Hilfe, um dieses zu beschleunigen.
Mein Code sieht derzeit wie folgt aus:
def printpath1(start):
ordet=longestway(setlista(),start)
path=[]
p=ordet
while p is not None:
path.append(p.ordet)
p=p.parents
path.reverse()
#print (path)
return len(path)
def ordpar(lista):
s=lista
a=[]
for elem in s:
if a[0]<printpath1(elem):
a.pop(0)
a.append(printpath1(elem))
print(a)
printpath1
arbeitet derzeit in Ordnung, aber ordpar
nimmt viel zu lange laufen zu lassen, und ich brauche Hilfe, um es zu beschleunigen.
Sind Sie sicher, dass dies Ihr _exact_ Code ist? Zuerst 'a = []', dann versucht man, ohne etwas hinzuzufügen, auf 'a [0]' zuzugreifen, was einen 'IndexError' ergeben sollte. Warum erstellen Sie auch 's' _if_ das ist Ihr _exact_ code? Du verwendest 'lista' nicht irgendwo, also kannst du es einfach verwenden, anstatt eine Kopie davon zu erstellen. – Lafexlos