200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > python 拓扑排序_Python 拓扑排序

python 拓扑排序_Python 拓扑排序

时间:2022-11-07 01:16:55

相关推荐

python 拓扑排序_Python 拓扑排序

Python 拓扑排序

对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。

在图论中,由一个有向无环图的顶点组成的序列,当且仅当满足下列条件时,称为该图的一个拓扑排序(英语:Topological sorting):每个顶点出现且只出现一次;

若A在序列中排在B的前面,则在图中不存在从B到A的路径。

fromcollectionsimportdefaultdict

classGraph:

def__init__(self,vertices):

self.graph=defaultdict(list)

self.V=vertices

defaddEdge(self,u,v):

self.graph[u].append(v)

deftopologicalSortUtil(self,v,visited,stack):

visited[v]=True

foriinself.graph[v]:

ifvisited[i]==False:

self.topologicalSortUtil(i,visited,stack)

stack.insert(0,v)

deftopologicalSort(self):

visited=[False]*self.V

stack=[]

foriinrange(self.V):

ifvisited[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("拓扑排序结果:")

g.topologicalSort()

执行以上代码输出结果为:拓扑排序结果:

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。