码迷,mamicode.com
首页 > 编程语言 > 详细

DAG图的拓扑排序 python

时间:2014-05-22 23:12:10      阅读:487      评论:0      收藏:0      [点我收藏+]

标签:python   图论   dfs   递归   

在DAG中DFS中顶点的出栈顺序即逆拓扑序。

bubuko.com,布布扣


def topological_sort( graph ):

    is_visit = dict( ( node, False ) for node in graph )
    li = []

    def dfs( graph, start_node ):
        
        for end_node in graph[start_node]:
            if not is_visit[end_node]:
                is_visit[end_node] = True
                dfs( graph, end_node )
        li.append( start_node )
    
    for start_node in graph:
        if not is_visit[start_node]:
            is_visit[start_node] = True
            dfs( graph, start_node )

    li.reverse()
    return li
    
            
if __name__ == '__main__':
    graph = {
        'v1': ['v5'],
        'v2': ['v1'],
        'v3': ['v1', 'v5'],
        'v4': ['v2', 'v5'],
        'v5': [],
    }
    li = topological_sort( graph )
    print li


DAG图的拓扑排序 python,布布扣,bubuko.com

DAG图的拓扑排序 python

标签:python   图论   dfs   递归   

原文地址:http://blog.csdn.net/pandora_madara/article/details/26478385

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!