Chapter 4 图

.

1-   图的存储结构

无向图:对称

有向图:……

2-   图的遍历

1   深度优先搜索(DFS)

类似于二叉树的先序遍历

2   广度优先搜索(BFS)

类似于二叉树的层序遍历

3-   最小(代价)生成树(针对无向图)MST

1   Prim算法  O(|V2|)

只与顶点数有关,与边无关

2   Kruskal算法  O(|E|log|E|)

只与边数有关,与顶点数无关

//什么样的图最小生成树唯一?图中所有权值不相等。

4-   最短路径

1   Dijkstra  O(|V2|)

单源最短路径

l  要找出所有节点的最短路径,需要对每一个结点用Dijkstra O(|V3|)

l  边上有负权值,不适用

2   Floyd  O(|V3|)

求解任意一对顶点间的最短距离

l  允许带有负权值的边,但不允许有负权值边组成的回路

5-   拓扑排序  O(|V|+|E|)

1   AOV

以顶点表示活动,以边表示活动的先后次序,且没有回路的有向图

2   对有向无环图的拓扑排序

可能不唯一:如果有多个入度为0的顶点,可任选一个输出

6-   关键路径

1   AOE

活动在边上的网,与AOV网相比

     相同点:都是有向无环图

     不同点:AOE网边表示活动、有权值,表示活动持续时间。顶点表示事件,事件是图中新活动开始旧活动结束的标志。

AOV网边表示活动之间的相互关系,无权值,顶点表示活动。

l  只存在一个入度为0的点称为源点

求关键路径的步骤:

1   拓扑排序

2   事件Vk的最早发生时间Ve(k)

V1->Vi  max

3   时间Vk的最迟发生时间Vl(k)

从后向前算 min = 后-max

4   活动ai的最早开始时间e(i)

边上首结点的Ve(k)

5   活动ai的最迟开始时间l(i)

边上尾结点的Vl(k)-ai

6    d = l(i) - e(i)

//可以通过加快那些在所有关键路径上的关键活动来缩短工期

//关键路径不唯一

注:

1-   邻接矩阵的空间复杂度O(|V2|)

2-   邻接表—方便找出所有邻边(不唯一)

邻接矩阵—给定的两个顶点是否存在边

3-   十字链表—有向图的链式存储

容易求得顶点的入度和出度

图的十字链表表示不唯一,但一个十字链表可以唯一确定一个图。

4-   邻接多重表是无向图的另一种链式存储结构

5-   BFS借助一个辅助队列,空间复杂度是O(|V|)

邻接表O(|V|+|E|),邻接矩阵O(|V2|)

6-   DFS借助一个栈,空间复杂度是O(|V|)

邻接表O(|V|+|E|),邻接矩阵O(|V2|)

7-   当各边权值相等时,广度优先算法可以解决单源最短路径问题。

8-   Prim  O(|V2|)

Kruskal  O(|E|log|E|)

Dijkstra  O(|V2|)

Floyd  O(|V3|)

拓扑  O(|V|+|E|)

9-   最短路径一定是简单路径

10- 可以判断有向图是否有环:深度优先搜索,拓扑排序

最新文章

  1. VB将JSON映射到表格实现解析
  2. Linux环境下安装Oracle 10g 发生错误 You do not have permission to write to the inventory location
  3. JS运动基础(一)
  4. c语言描述简单的线性表,获取元素,删除元素,
  5. linux打包压缩命令汇总
  6. 【HDOJ】5096 ACM Rank
  7. js创建对象的三种方法:文本标识法和构造器函数法和返回对象的函数
  8. Hive 6、Hive DML(Data Manipulation Language)
  9. C#操作IIS完整解析
  10. Graph - leetcode [图]
  11. 201521123018 《Java程序设计》第2周学习总结
  12. 在Bootstrap开发框架中使用Grid++报表
  13. Linux shell 脚本报错:/bin/bash^M: bad interpreter: No such file or directory
  14. ajaxToolkit 异步加载报 错误500的解决方法
  15. 记一次bash脚本开发的经历
  16. python程序编写中常见错误
  17. php Pthread 多线程基本介绍
  18. System.net.mail 使用ssl发送邮件失败
  19. mysql刚启动就停止是什么原因
  20. rz -be 上传文件解压失败

热门文章

  1. 2018-10-29-微软-Tech-Summit-技术暨生态大会课程-·-基于-Roslyn-打造高性能预编译框架...
  2. sysobjects syscolumns
  3. eclipse导出说明文档
  4. Erlang学习记录:运算符
  5. soapui打开即报错------连接不上Internet
  6. Delphi判断MDI子窗体是否被创建
  7. H5页面在手机上查看 使用手机浏览自己的web项目
  8. Taro框架---左滑动删除
  9. android—退出应用程序
  10. ArrayList 扩容