目前我正在使用一个赋值(BFS),我应该找到两个节点之间最长的路径。请注意,我正在使用队列类和节点类,在我的赋值中,节点类被称为Word
。单词是3个字母的单词,我目前有一个方法(longestway)返回从给定单词到最小孩子的最长路径。
问题是,我想实现它,以便它返回从列表中的任何单词到其最小子项的最长路径,然后返回所有这些路径中最长的路径。
我现在的代码正在运行,但它耗时太长时间,我需要帮助才能加快这个速度。
我的代码目前看起来像这样:
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
运行时间过长,我需要帮助来加快速度。
答案 0 :(得分:0)
一个好的开始是停止从列表的头部删除元素,因为你所做的就是打印,并引入一个偏移量变量。此外,您使用相同的参数调用printpath1
两次,这是必要计算的两倍。
offset = 0
for elem in lista:
pp1 = printpath1(elem)
if a[offset] < pp1:
a.append(pp1)
offset += 1
print(a[offset::])