数据结构 7.1知识点---最短路径、拓扑排序、关键路径
最短路径
单源最短路径问题:Dijkstra算法
求解思路:
设G=(V,E)是一个带权有向图, 把图中顶点集合V分成两组:
第1组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径v,… ,u,就将u加入到集合S中,直到全部顶点都加入到S中,算法就结束了)。
第2组为其余未求出最短路径的顶点集合(用U表示)。
算法演示
dist[]集合中每次寻找最小顶点,根据上一次加入的新顶点找出所有通往该顶点的路径。
拓扑排序
设G=(V,E)是一个具有n个顶点的有向图,V中顶点序列v1,v2,…,vn称为一个拓扑序列
在一个有向图中找一个拓扑序列的过程称为拓扑排序。
关键路径
AOE网
用一个带权有向图(DAG)描述工程的预计进度。
顶点表示事件,有向边表示活动,边e的权c(e)表示完成活动e所需的时间(比如天数)。
图中入度为0的顶点表示工程的开始事件(如开工仪式),出度为0的顶点表示工程结束事件。
从AOE网中源点到汇点的最长路径,具有最大长度的路径叫关键路径。
关键路径是由关键活动构成的,关键路径可能不唯一。
最早、最迟开始时间
定义图中任一事件v的最早开始时间(early event)ee(v)等于x、y、z到v所有路径长度的最大值
事件v的最迟开始时间:定义在不影响整个工程进度的前提下,事件v必须发生的时间称为v的最迟开始时间(late event) ,记作le(v)。le(v)应等于ee(y)与v到汇点的最长路径长度之差
演示最早开始时间求法
关键活动的速度改变
理解成维修、建造工程事件。只有不改变网的关键路径的情况下,提高关键活动的速度有效。
网中有多条关键路径,应该提高在多条关键路径上活动的速度。