簡體   English   中英

最短路徑算法的輸入自動化(BFS 算法)

[英]Input Automation to Shortest Path Algorithm (BFS Algorithm)

我正在使用 BFS 算法來找到覆蓋所有點並生成最短路徑的點之間的最短路徑。 我手動提供輸入(最近的鄰居),並發現難以自動輸入 BFS 算法。 另外請建議您是否知道任何算法可以更好地生成覆蓋所有點的最短路徑。

示例:點 - [R59C36,R59C39,R59C52,R60C1,R60C20,R60C34,R62C2,R62C7,R63C8,R65C9,R66C11,R66C6,R67C11]

輸入——給每個點最近的鄰居

graph = {
    'R59C36':['R59C39','R59C52','R60C34','R60C20','R60C1'],
    'R59C39':['R59C52','R60C34','R60C20','R60C1'],
    'R60C1':['R60C20','R62C2','R62C7'],
    'R60C20':['R60C34','R62C2','R62C7'],
    'R60C34':['R62C2','R62C7'],
    'R59C52':['R60C34'],
    'R62C2':['R62C7','R63C8'],
    'R62C7':['R63C8'],
    'R63C8':['R65C9'],
    'R65C9':['R66C6','R66C11'],
    'R66C6':['R66C11','R67C11'],
    'R66C11':['R67C11'],
    'R67C11':[]
}

Output - R59C36, R59C39, R59C52, R60C34, R60C20, R60C1, R62C2, R62C7, R63C8, R65C9, R66C6, R66C11, R67C11

graph = {
    'R59C36':['R59C39','R59C52','R60C34','R60C20','R60C1'],
    'R59C39':['R59C52','R60C34','R60C20','R60C1'],
    'R60C1':['R60C20','R62C2','R62C7'],
    'R60C20':['R60C34','R62C2','R62C7'],
    'R60C34':['R62C2','R62C7'],
    'R59C52':['R60C34'],
    'R62C2':['R62C7','R63C8'],
    'R62C7':['R63C8'],
    'R63C8':['R65C9'],
    'R65C9':['R66C6','R66C11'],
    'R66C6':['R66C11','R67C11'],
    'R66C11':['R67C11'],
    'R67C11':[]
}
points = ['R59C36','R59C39','R59C52','R60C1','R60C20','R60C34','R62C2','R62C7','R63C8','R65C9','R66C11','R66C6','R67C11']


output = []
for point in points:
    if point not in output:
        output.append(point)
    
    _points = graph[point]
    for _point in _points:
        if _point not in output:
            output.append(_point)

print(output)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM