下三角矩阵说明顶点编号大的指向了顶点编号小的
这两种情况说明可以进行拓扑排序,但是可以拓扑排序的,不一定必须是上三角矩阵或者下三角矩阵
编号大的可以指向编号小的 ,编号小的也可以指向编号大的
有向无环图具有拓扑排序,其邻接矩阵没有明显的特征
以二叉树为例,后序遍历,是先沿着一棵子树深入,从根节点开始访问
深度优先遍历DFS,拓扑排序
在使用邻接矩阵存储的时候,时间复杂度为O(n^2);
Prim算法和Kruskal算法
Prim算法的时间复杂度为O(n^2) ,主要与点有关
Kruskal算法的时间复杂度为O(eloge),主要与边有关
求点与点之间的最短路径:
迪杰斯特拉算法 弗洛伊德算法
边稠密,就选用Prim算法,时间复杂度与边无关
边稀疏,就选用Kruskal算法,时间复杂度与边有关,与顶点无关
最小生成树如果不唯一,说明一定有多条边具有相同的权值
弗洛伊德算法的时间复杂度为:O(n^3) 迪杰斯特拉算法和弗洛伊德算法,都不能有权值为负的路径
当各边的权值相等的时候,BFS算法可以保证求得从源点到汇点的最小边数
因为BFS是一层一层的从源点到汇点进行扩展的
弗洛伊德算法,O(n^3)
迪杰斯特拉算法O(n^2)
邻接矩阵为上三角矩阵,或者下三角矩阵,都能够保证,一定存在拓扑排序,但是拓扑排序,不一定非要为上三角矩阵,或者下三角矩阵,可以是一般矩阵
拓扑排序:如果顶点A在拓扑排序序列中排在顶点B的前面,则图中不存在从顶点B到顶点A的路径,而不是直接相连的弧
AOE网:Activity On Edge,信息在边上
关键路径,AOE网中,从源点到汇点,具有最大路径长度的路径
一个事件(顶点)的最迟发生事件,是该事件的所有后继节点减去活动时间后的最小值
关键活动一定位于于关键路径上
关键路径有多条,只有减少多条关键路径共享的关键活动的时间,才能够减少整个工程的工期