码迷,mamicode.com
首页 > 其他好文 > 详细

拓扑排序

时间:2014-07-31 23:15:30      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:style   strong   问题   size   type   设计   ef   c   

对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若<u,v> ∈E(G),则u在线性序列中出现在v之前。

若图中存在有向环,则不可能使顶点满足拓扑次序。

利用DFS每次取出入度为0的点,存入栈中,即可获得拓扑序列。

可以解决类似如下的问题:

一、系统有很多任务,任务之间有依赖,比如B依赖于A,则A执行完后B才能执行
  (1)不考虑系统并行性,设计一个函数(Task *Ptask,int Task_num)不考虑并行度,最快的方法完成所有任务。
  (2)考虑并行度,怎么设计
  typedef struct{
      int ID;
     int * child;
      int child_num;
  }Task;
  提供的函数:
    bool doTask(int taskID);无阻塞的运行一个任务;
    int waitTask(int timeout);返回运行完成的任务id,如果没有则返回-1;
    bool killTask(int taskID);杀死进程

拓扑排序,布布扣,bubuko.com

拓扑排序

标签:style   strong   问题   size   type   设计   ef   c   

原文地址:http://www.cnblogs.com/notlate/p/3881548.html

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