图拓扑排序算法
1 # 有向无环图 2 def sortedTopology(graph): 3 inDict = {} # 存储节点:节点入度 4 zeroInQueue = Queue() # 存储入度为零的节点 5 for node in graph.nodes: # 遍历图所有的节点 6 inDict[node] = node.come # 将节点与节点入度存入字典中 7 if node.come == 0: # 若存在节点入度为零则将节点放入队列中 8 zeroInQueue.put(node) 9 result = [] 10 while not zeroInQueue.empty(): 11 cur = zeroInQueue.get() 12 result.append(cur) 13 for next in cur.nexts: # 若当前节点邻接节点存在 14 inDict[next] = inDict[next] - 1 # 在字典中将邻接节点入度减一再放回 15 if inDict[next] == 0: 16 zeroInQueue.put(next) 17 return result
Talk is cheap, show my code to you.