亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python關(guān)于拓?fù)渑判蛑R(shí)點(diǎn)講解

瀏覽:37日期:2022-06-30 13:27:37

對(duì)一個(gè)有向無(wú)環(huán)圖(Directed Acyclic Graph簡(jiǎn)稱(chēng)DAG)G進(jìn)行拓?fù)渑判颍菍中所有頂點(diǎn)排成一個(gè)線性序列,使得圖中任意一對(duì)頂點(diǎn)u和v,若邊(u,v)∈E(G),則u在線性序列中出現(xiàn)在v之前。

通常,這樣的線性序列稱(chēng)為滿足拓?fù)浯涡?Topological Order)的序列,簡(jiǎn)稱(chēng)拓?fù)湫蛄小:?jiǎn)單的說(shuō),由某個(gè)集合上的一個(gè)偏序得到該集合上的一個(gè)全序,這個(gè)操作稱(chēng)之為拓?fù)渑判颉?/p>

在圖論中,由一個(gè)有向無(wú)環(huán)圖的頂點(diǎn)組成的序列,當(dāng)且僅當(dāng)滿足下列條件時(shí),稱(chēng)為該圖的一個(gè)拓?fù)渑判颍ㄓ⒄Z(yǔ):Topological sorting):

每個(gè)頂點(diǎn)出現(xiàn)且只出現(xiàn)一次; 若A在序列中排在B的前面,則在圖中不存在從B到A的路徑。

Python關(guān)于拓?fù)渑判蛑R(shí)點(diǎn)講解

實(shí)例代碼

from collections import defaultdict class Graph: def __init__(self,vertices): self.graph = defaultdict(list) self.V = vertices def addEdge(self,u,v): self.graph[u].append(v) def topologicalSortUtil(self,v,visited,stack): visited[v] = True for i in self.graph[v]: if visited[i] == False: self.topologicalSortUtil(i,visited,stack) stack.insert(0,v) def topologicalSort(self): visited = [False]*self.V stack =[] for i in range(self.V): if visited[i] == False: self.topologicalSortUtil(i,visited,stack) print (stack) g= Graph(6) g.addEdge(5, 2); g.addEdge(5, 0); g.addEdge(4, 0); g.addEdge(4, 1); g.addEdge(2, 3); g.addEdge(3, 1); print ('拓?fù)渑判蚪Y(jié)果:')g.topologicalSort()

執(zhí)行以上代碼輸出結(jié)果為:

拓?fù)渑判蚪Y(jié)果:

[5, 4, 2, 3, 1, 0]

實(shí)例擴(kuò)展:

def toposort(graph): in_degrees = dict((u,0) for u in graph) #初始化所有頂點(diǎn)入度為0 vertex_num = len(in_degrees) for u in graph: for v in graph[u]: in_degrees[v] += 1 #計(jì)算每個(gè)頂點(diǎn)的入度 Q = [u for u in in_degrees if in_degrees[u] == 0] # 篩選入度為0的頂點(diǎn) Seq = [] while Q: u = Q.pop() #默認(rèn)從最后一個(gè)刪除 Seq.append(u) for v in graph[u]: in_degrees[v] -= 1 #移除其所有指向 if in_degrees[v] == 0: Q.append(v) #再次篩選入度為0的頂點(diǎn) if len(Seq) == vertex_num: #如果循環(huán)結(jié)束后存在非0入度的頂點(diǎn)說(shuō)明圖中有環(huán),不存在拓?fù)渑判? return Seq else: print('there’s a circle.')G = { ’a’:’bce’, ’b’:’d’, ’c’:’d’, ’d’:’’, ’e’:’cd’}print(toposort(G))

輸出結(jié)果:

[’a’, ’e’, ’c’, ’b’, ’d’]

到此這篇關(guān)于Python關(guān)于拓?fù)渑判蛑R(shí)點(diǎn)講解的文章就介紹到這了,更多相關(guān)Python 拓?fù)渑判騼?nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 日本a及毛片免费视频 | 欧美女同视频激情 | 女人精69xxxxx免费视频 | 久久国产视频一区 | 欧美性黄色 | a级黄色毛片三个搞一 | 国产一区二区三区在线观看免费 | 沟沟人体一区二区 | 婷婷亚洲五月色综合 | 欧美13处| 国产成人亚洲精品大帝 | 日本一级毛片片在线播放 | 出a级黑粗大硬长爽猛视频 加勒比一道本综合 | 国产色视频一区 | 一级做a爰片性色毛片男 | 最近最新中文字幕在线第一页 | 欧美日韩国产精品 | 国产伦理久久精品久久久久 | 欧美一级毛片特黄黄 | 达达兔欧美午夜国产亚洲 | 国产综合久久久久影院 | 河南毛片| 无遮挡1000部拍拍拍免费 | 色婷婷视频 | 国产精品1024永久观看 | 国产百合一区二区三区 | 欧美 日韩 亚洲另类专区 | 国产美女福利视频福利 | 亚洲精品亚洲九十七页 | 最近的免费中文字幕视频 | 午夜视频久久久久一区 | 日本高清在线精品一区二区三区 | 爱福利一区二区 | 成人久久18免费网址 | 亚洲精品视频免费看 | 视频一区二区三区蜜桃麻豆 | 国模精品一区二区三区 | asian极品呦女xx农村 | 精品久久中文字幕 | 国产精品免费观看视频播放 | 国产极品精频在线观看 |