拓扑排序及其应用

拓扑排序及其应用
1.拓扑排序的介绍
对于一个有向无环图G=(V,E)来说,其拓扑排序是G中所有结点的一种线性次序。该次序满足如下条件:如果图G包含边(u,v),则结点u在拓扑排序中处于结点v的前面(如果图G包含环路,则不可能排出一个线性次序。)可以将图的拓扑排序看作是将图的所有结点在一条水平线上排开,图的所有有向边都从左指向右。
2.拓扑排序与深搜的结合
poj1270:http://poj.org/problem?id=1270。
题目大意:列出有序序列(Following Orders)
给定一行小写字母以及这些小写字母之间的一些关系。按字典序列出所有的满足约束条件的有序序列。
大体思路:深搜+剪枝。按照约束条件构造图。在深搜求出全排列的过程中,结合拓扑排序进行剪枝。
3.拓扑排序与广搜的区别
相同点:拓扑排序实质上就是一种广搜。在算法的执行过程中,通过栈顶顶点访问它的每个邻接点,整个算法的执行过程中,每个顶点访问一次且仅一次,每条边扫描一次且仅一次。
不同点:广搜在扫描每条边时,如果边的终点没有访问过,则入队列;而拓扑排序算法在扫描每条边时,终点入度要减1,当减到0时才将该终点入栈。
注意点:拓扑排序算法用栈或者队列实现均可。但是广搜必须栈来存储待扩展的顶点。
poj1094,2585都是用队列实现拓扑排序的基本题目。用拓扑排序证明是否存在环,给定的约束条件是否产生冲突以及能否产生一个拓扑序列。
4.逆拓扑排序
poj3687:给球编号(Labeling Balls)
参考这篇博文:http://blog.csdn.net/sdj222555/article/details/6705025
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值