数据结构【DS】图的应用

图的连通性问题

最少边数

最多边数

无向图非连通

=

=−∗(−)/

无向图连通

=−

=∗(−)/

有向图非强连通

=

=−∗−+

有向图强连通

=

=∗(−)

最小生成树

Prim

  • 选点(point)
  • 时间复杂度:
  • 适合边稠密

Kruskal

  • 选边
  • 时间复杂度:
  • 适合边稀疏

回忆一下是如何通过这两个算法构造最小生成树的?

 最短路径问题

BFS

Dijkstra

Floyd

无权图

带权图

带负权值的图

带负权回路的图

时间复杂度

2|(+||)

(|2|)

(|3|)

通常用于

无权图单源最短路径

带权图单源最短路径
也可以求带权图各个顶点间的最短路径
适合有回路带权图的最短路径

带权图各个顶点间的最短路径

回忆如何通过这三种算法求最短路径?

拓扑序列

  • 对于任一有向图,如果它的邻接矩阵为三角矩阵,则一定存在拓扑序列(可能不唯一),反之不一定成立。
  • 若图存在拓扑序列,却不一定能满足邻接矩阵中主对角线以下的元素均为0,但是可以通过适当地调整结点的编号,使其邻接矩阵能够满足主对角线以下的元素均为0。
  • 拓扑序列唯一,也不能唯一确定该图
  • 若一个有向图具有有序的拓扑序列,则它的邻解矩阵一定为:三角矩阵
  • 若基于邻接表,则拓扑排序时间复杂度为:(||+||)
  • BFS和DFS都可以用于实现拓扑排序
  • 顶点:事件
  • 边:活动

 关键路径

详细步骤做法:

节点

最早开始时间

正着找,相加,取大值

节点

最晚开始时间

反着找,相减,取小值

最早开始时间

从谁发出的最早开始时间

最晚开始时间

被指向的最晚开始时间 减去 权值

 

 

数据结构【DS】图的应用_第1张图片

 

 

  • 如何延长工程的工期?
    • AOE图中,关键路径上活动的时间延长多少,整个工程的时间也就随之延长多少【增加任一关键活动的时间将会增加工程的工期】
  • 关键活动是什么?
    • 关键路径所有活动都是关键活动
  • 关键路径是什么?
    • 关键路径是源点到终点的最长路径
    • 求关键路径的快速方法:找起点到终点的最长路径
  • 如何缩短关键路径?
    • 只有缩短所有关键路径的长度时,整个图的关键路径才能有效缩短。
  • 能任意缩短关键路径吗?
    • 不能任意缩短,一旦缩短到一定程度,该关键活动就可能变成非关键活动。
  • 只有一条关键路径的时候,减少关键活动的时间会缩短工程的工期吗?
    • 会缩短工程的工期
  • 有多条关键路径的时候,减少关键活动的时间会缩短工程的工期吗?
    • 不一定会缩短工程的工期
  • 关键路径是唯一的吗?
    • 并不唯一。

 

你可能感兴趣的:(数据结构,算法,人工智能,数据结构,考研,408)