BFS,尝试在节点之间找到最长的路径

2024-05-14 20:10:30 发布

您现在位置:Python中文网/ 问答频道 /正文

目前我正在处理一个任务(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运行时间太长,我需要帮助来加快运行速度。你知道吗


Tags: path代码路径节点def时间单词start
1条回答
网友
1楼 · 发布于 2024-05-14 20:10:30

一个好的开始是停止从列表的头部删除元素,因为您所做的只是打印,并引入一个偏移量变量。另外,您使用相同的参数调用printpath1两次,所需的计算量是原来的两倍。你知道吗

offset = 0
for elem in lista:
    pp1 = printpath1(elem)
    if a[offset] < pp1:
        a.append(pp1)
        offset += 1
print(a[offset::])

相关问题 更多 >

    热门问题