zoukankan      html  css  js  c++  java
  • 【algo&ds】9.拓扑排序、AOV&AOE、关键路径问题

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

    使用场景

    Snipaste_2019-11-24_16-21-36

    topo

    可以参考视频

    伪码描述

    void TopSort() {
    	for ( 图中每个顶点V )
    		if ( Indegree[V]==0 )
    			Enqueue( V, Q );
    	while ( !IsEmpty(Q) ) {
    		V = Dequeue( Q );
    		输出V,或者记录V的输出序号;
    		cnt++;
    		for ( V 的每个邻接点W )
    			if ( ––Indegree[W]==0 )
    				Enqueue( W, Q );
    	}
    	if ( cnt != |V| )
    		Error( “图中有回路” );
    }
    

    AOV和AOE

    • AOV(Activity On Vertex),用顶点表示活动,而用边集表示活动间优先关系的有向图,常用于拓扑排序计算,途中不应该出现有向环。
    • AOE(Activity On Edge),用带权的边集表示活动,用顶点表示事件,其中边权表示完成活动所需要的时间,事件仅代表一个中间状态。

    关键路径问题

    Snipaste_2019-11-24_16-50-13

    Snipaste_2019-11-24_16-53-58

    注意理解图中虚线的含义!!!

    可以参考视频

  • 相关阅读:
    FASTJSON
    数据库索引(转)
    设计模式
    jQuery EasyUI教程之datagrid应用(三)
    EasyUI---tree
    EasyUI、Struts2、Hibernate、spring 框架整合
    eclipse最有用快捷键整理
    框架整合----------Hibernate、spring整合
    jQuery EasyUI教程之datagrid应用(二)
    marquee 标签 文字滚动
  • 原文地址:https://www.cnblogs.com/ericling/p/11923161.html
Copyright © 2011-2022 走看看