拓扑排序
来源:互联网 发布:邓肯数据统计历史排名 编辑:程序博客网 时间:2024/05/22 09:44
在图论中,由一个有向无环图的顶点组成的序列,当且仅当满足下列条件时,称为该图的一个拓扑排序(英语:Topological sorting)。
- 每个顶点出现且只出现一次;
- 若A在序列中排在B的前面,则在图中不存在从B到A的路径。
也可以定义为:拓扑排序是对有向无环图的顶点的一种排序,它使得如果存在一条从顶点A到顶点B的路径,那么在排序中B出现在A的后面。
进行拓扑排序的python代码:
class Node: def __init__(self,id,in_node,out_node): self.id = id; self.in_node = in_node; self.out_node = out_node;list = [];list.append(Node(0,[2],[6,1,5]));list.append(Node(1,[0],[]));list.append(Node(2,[],[0,3]));list.append(Node(3,[2],[5]))list.append(Node(4,[5,6],[]))list.append(Node(5,[0,3],[4]))list.append(Node(6,[0,7],[9,4]))list.append(Node(7,[8],[6]))list.append(Node(8,[],[7]))list.append(Node(9,[6],[10,11,12]))list.append(Node(10,[9],[]))list.append(Node(11,[9],[12]))list.append(Node(12,[9,11],[]))def find_in_empty_node(list): for node in list: if(len(node.in_node) == 0): return node; return None;def find_node(list,id): for node in list: if(node.id == id): return node;def tidy_list(list): for node in list: for sub_node in node.in_node: if(find_node(list,sub_node) == None): node.in_node.remove(sub_node)while(1): node = find_in_empty_node(list); if(None == node): break; print node.id; list.remove(node); tidy_list(list);
0 0
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 【拓扑排序】
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- android中bitmap压缩的几种方法的解读
- 第十一周阅读程序(补充)----(3.2)
- Product Studio
- 无废话WCF系列教程网址收藏
- 博客分享
- 拓扑排序
- libcurl在嵌入式设备C 的使用
- addclass()和多类选择器结合使用提高代码规范
- MKMapView的Span和Region深入分析
- AndroidStudio 在Resolve Error窗体上Failed to import new Gradle projec
- 时间复杂度
- EasyUI修改DateBox和DateTimeBox的默认日期格式
- 大话设计模式java版本 第二章 策略模式
- 树——sum-root-to-leaf-numbers