1. 程式人生 > 其它 >Python實現圖遍歷

Python實現圖遍歷

 

Python實現圖遍歷

 

#coding=utf-8
def dfs(G,s):
    Q=[]
    S=set()
    Q.append(s)
    while Q:
        u=Q.pop()
        if u in S:
            continue
        S.add(u)
        Q.extend(G[u])
        yield u

def createGraph(pairlist):
    graph = {}
    keys = set()
    for index in pairlist:
        keys.add(index[0])
        keys.add(index[
1]) for key in keys: graph[key] = set() for index in pairlist: graph[index[0]].add(index[1]) graph[index[1]].add(index[0]) graph[index[0]].add(index[0]) graph[index[1]].add(index[1]) print("頂點的個數為:",len(keys)) return graph def getLinkInfo(graph):
#使用集合來存放已訪問過的節點 looked = set() #標記序號 i = 0 for keys in list(graph.keys()): #判斷該節點是否已經訪問(已經歸屬於某一個鏈路) if keys in looked: del graph[keys] continue else: result = set(list(dfs(graph, keys))) looked = looked.union(result) i
= i + 1 print('--------第'+str(i)+'號-------共'+str(len(result))+'名成員') for keyidvalue in result: print(str(i)+','+keyidvalue) #可以理解為任務依賴圈 data = [('A','B'),('B','G'),('D','E'),('C','C')] pairlist = [] for index in data: pairlist.append(list(index)) graph = createGraph(pairlist) print(graph) getLinkInfo(graph)
View Code