В настоящее время я работаю с назначением (BFS), где я должен найти самый длинный путь между двумя узлами. Обратите внимание, что я работаю как с классом очереди, так и с узловым классом, класс node называется Word
в моем задании. Слова являются 3-буквенными словами, и в настоящее время у меня есть метод (longestway), который возвращает самый длинный путь от данного слова до его самого маленького ребенка.BFS, пытаясь найти самый длинный путь между узлами
Проблема заключается в том, что я хочу реализовать это, чтобы он возвращал самый длинный путь из любого слова в списке до самого маленького его потомка, а затем возвращает самый длинный из всех этих путей.
Код, который у меня есть сейчас, работает, но он проходит слишком долго, мне нужна помощь, чтобы ускорить это.
Мой код в настоящее время ищет, как это:
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
в настоящее время работает нормально, но ordpar
принимает слишком много времени, чтобы работать, и мне нужна помощь, чтобы ускорить его.
Вы уверены, что это ваш _exact_ код? Сначала 'a = []', а затем ничего не добавляя к нему, вы пытаетесь получить доступ к 'a [0]', который должен дать 'IndexError'. Также почему вы создаете 's' _if_, это ваш _exact_-код? Вы не используете 'lista' в любом месте, поэтому можете просто использовать его вместо создания его копии. – Lafexlos