python有向無權圖遍歷指定兩點路徑並排序輸出

有向無權圖簡介

圖是作爲數據結構的一種類型,有向無權圖是指有方向但沒有方向路徑權值。

python如何模擬有向無權圖

利用列表模擬,看作爲鄰接表。鄰接表是圖的一種表示方法。
關於數據結構更多可以查看這篇博文:
執念斬長河專欄數據結構–目錄

實例:python搜索圖中指定兩點的最短路徑

實例用圖:
在這裏插入圖片描述
實驗效果:
在這裏插入圖片描述
實驗代碼:

# -*- coding:utf-8 -*-

def searchGraph(graph,start,end):
    results = []
    generatePath(graph,[start],end,results)
    results.sort(key=lambda x:len(x))
    return results

def generatePath(graph,path,end,results):
    state = path[-1]
    if state == end:
        results.append(path)
    else:
        for arc in graph[state]:
            if arc not in path:
                generatePath(graph,path + [arc],end,results)

if __name__ == '__main__':
    Graph = {'A':['B','C','D'],
             'B':['E'],
             'C':['D','F'],
             'D':['B','E','G'],
             'E':[],
             'F':['D','G'],
             'G':['E']}
    r = searchGraph(Graph,'A','E')

    print('*************************')
    print(' path A to E')
    print('*************************')

    if not r:
        print('很遺憾,無此路徑...')
    else:
        for i in r:
            print(i)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章