文章目录
- 1.图的分类
- 1.1.强连通图
- 1.2.完全图
- 2.存储结构
- 2.1.邻接矩阵表示法:
- 2.2.邻接链表表示法:
- 3.图的遍历
- 3.1.深度优先遍历
- 3.2.广度优先遍历
- 4.最小生成树
- 4.1.普里姆算法:
- 4.2.克鲁斯卡尔算法:
- 5.AVO网络、AOE网络
1.图的分类
1.1.强连通图
任意两顶点间都是联通的(存在路径)
1.2.完全图
任意两个顶点都有边
2.存储结构
对于图G,有m个边,n个节点
2.1.邻接矩阵表示法:
对于图G,二维数组A[i][j],如果边(vi,vj)存在路径,则A[i][j] = 1,否则A[i][j] = 0;
深度优先遍历时:需要遍历邻接矩阵的n×n个点,所以时间复杂度为(O(n2))
2.2.邻接链表表示法:
为图的每个顶点建立一个单链表,第i个节点表示依附于顶点Vi的边(弧);
深度优先遍历时:依次访问每一个节点,然后依次访问当前节点的每条边,把这些边的终点节点的入度+1,所以每个节点,每条边都需要访问一边,所以时间复杂度为(O(m+n))
3.图的遍历
3.1.深度优先遍历
首先访问顶点,然后访问当前节点邻接且未被访问过的节点;
无符合的,则回溯到一个尚有邻接节点且未被访问的节点,重复第一步;
3.2.广度优先遍历
首先访问顶点v,然后依次访问当前v的各个未被访问的邻接点;然后分别冲这些邻接点访问他们的邻接点;
4.最小生成树
图的生成树:
图的最小生成树:各边的权值总和最小的生成树;
4.1.普里姆算法:
O(n2),与边数无关,适合边密集的图
选一条最小权值的边,不断选择与已选择边邻接且权值最小的边加入集合,直至集合包含所有的顶点;贪心法
4.2.克鲁斯卡尔算法:
O(nlogn),与顶点无关,适合边稀疏的图
在不形成回路的前提下,不断寻找权值最小的边,尝试构成最小生成树;回溯法
5.AVO网络、AOE网络
AVO网络:一个项目的的实施过程有很多活动,这些活动的进行有先后顺序,那么这些挥动的先后关系可以用一个有向图表示;顶点代表活动、有向边表示活动间的先后关系;
拓扑排序:AOV网络的拓扑排序可能有多个,只要满足,对于AVO网络中的每条弧(i,j),拓扑排序中,i都在j的前面;
AOE网络:带权值的AVO网络;边代表活动、边上的权值代表活动需要的时间、顶点代表活动结束的事件;
AOE网络的关键路径:完成项目需要的最少时间,也就是AOE网络中从开始顶点到结束顶点的最长带权路径的权值和;
求图的 拓扑排序 及关键路径长度