zoukankan      html  css  js  c++  java
  • ----------拓扑排序--------------

    拓扑排序

    拓扑序:如果图中从V到W有一条有向路径,则V一定排在W之前.满足此条件的顶点序列称为一个拓扑序.

    获得一个拓扑序的过程就是拓扑排序

     

    在进行拓扑排序之后会得到这样一个序列

     

    每一次我们要输出没有前驱顶点的结点,也就是没有入度的点.在输出之后就把这个顶点的出度设置为0

    AOV(Activity On Vertex网络)如果有合理的拓扑序则必定是有向无环图(Directed Acyclic Graph , DAG)

     

    V必须在V开始之前结束,,,,明显错误,,,所以一个合理的拓扑序不可能存在环.

    void TopSort()
    {
        for(cnt=0;cnt<V;cnt++)
        {
            V=未输出的入度为0的顶点;    //下面 讨论这一步.
            if(这样的V不存在)
            {
                Error("图中有回路");
                break;
            }
            输出V,或者记录V的输出序号
            for(V的每个临接点W)
                Indegree[W]--;// 减少了V那么 V的每个临接点的入度都会减一.
        }
    }

     

    第一种解决方法是  遍历一遍 时间复杂度为  N^2  .

    第二种解决方法是,随时将入度变为0的放到一个另外的容器里面.时间复杂度为 常数级

    第二种方法用队列的时候代码如下

    void TopSort()
    {
        for(途中的每个顶点V)
            if(Indegree[V]==0)
            Enqueue[V,Q];
        while(!IsEmpty(Q))
        {
            V=Dequeue(Q);
            输出V,或者记录V的输出序列号.
            for(V的每个临接点W)
            {
                if(--Indegree[W]==0)
                    Enqueue[W,Q];
            }
        }
        if(输出的顶点不够顶点的个数)
            Error("图中有回路");
    }

    AOE(Activity on Edge)网络

    关键路径问题

    一般用于安排项目的工序

    工序之间有先后关系,AOE用于解决此类问题.

    边表示活动,顶点表示  达到顶点活动结束.

     

    需要注意的是工程时间是用边来表示的.

     

     

    虚线那里有向上的箭头 看清楚了哦.

    在虚线那里好好考虑一下工期和机动时间  联系一下显示

    关键路径 是什么呢?

    关键路径就是  由绝对不能延误的活动组成的路径

     

     

     

     

    下面附上习题

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

       

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

      

  • 相关阅读:
    EF Core 小技巧:迁移已经应用到数据库,如何进行迁移回退操作?
    ABP Framework 5.0 RC.1 新特性和变更说明
    OI迷惑行为大赏【目前较少,持续更新中】
    【比赛日志】APIO2020(2020.08.15)
    【好题】【IPSC2003】 Got Root? 无向图删边游戏
    [HNOI2019] 校园旅行 —— 一个边界数据
    【题解】JOISC 2020 Day 3 stray
    ExtJS学习:MVC模式案例(四) 林枫705
    ExtJS学习:MVC模式案例(三) 林枫705
    ExtJS学习:MVC模式案例(二) 林枫705
  • 原文地址:https://www.cnblogs.com/A-FM/p/5154804.html
Copyright © 2011-2022 走看看