图论(概念)

图的基本概念

点(顶点)

图上的一些点,每个点代表一个位置

连接两个点的线

权重

代表边的重要性,比如从家到学校和家到超市走的路的时间不同,这个时间就是权重

邻接

若两个点之间有一条边直接连接,则称这两个点邻接

路径

经过一系列点和边的路线

连通

在一个图中,能从任意一个点到达其他任意一个点

若要形成连通图,n个顶点最少需要n-1条边

邻接矩阵表示法

若有n个点,则矩阵为n行n列 若a到b有直接连接的边,则矩阵第a行第b列为1 否则为0

邻接表表示法

在图中的每个点都有一个列表,列表里记录了该点能直接相连的所有点

比邻接矩阵更省空间

图的储存特点

  1. 空间效率

    • 邻接矩阵:如果图中的点很多,但每个点的连接不多,那么邻接矩阵会占用很多空间,因为它为每一对点都保留了空间,不管它们是否直接相连。
    • 邻接表:相比之下,邻接表只记录实际存在的边,所以对于那些点很多但边相对较少的图来说,它更节省空间。
  2. 访问效率

    • 邻接矩阵:要判断两个点是否直接相连,只需查看矩阵的对应位置即可,非常快速。
    • 邻接表:要找出两个点是否直接相连,可能需要遍历其中一个点的邻接表,这在最坏的情况下可能需要更多时间。
  3. 添加或删除边的效率

    • 邻接矩阵:添加或删除边非常简单和快速,只需要更新矩阵的对应位置。
    • 邻接表:添加边相对容易,但删除边可能需要遍历列表来找到并移除边。
  4. 适用场景

    • 邻接矩阵适合于边的数量接近点的数量平方的图,也就是所谓的“稠密图”。
    • 邻接表适合于边的数量远小于点的数量平方的图,也就是“稀疏图”。
  5. 直观性

    • 邻接矩阵直观地表示了所有点之间的关系,容易理解和展示。
    • 邻接表更抽象一些,需要一定的理解才能看出整个图的结构。

DFS(深度优先搜索)

一条路先走到头,走到不能走了为止,然后回到上一个点寻找有没有还能走的路,没有就继续回溯,如果有就也是一条路走到头,然后回溯

BFS(广度优先搜索)

从起点开始,搜索周围所有的点,然后一层层一下去,像是扩散开一样

最小生成树

是一个边为n-1的带权连通图

克鲁斯卡尔算法

先把所有的边按权重从小到大排序,从最小的边开始,依次考虑,若加入这条边不会形成环,则加入最小生成树中

普利姆算法

选一个顶点作为起点,然后从已选的顶点中找到一条权重最小的边,连上去,这样就能连到一个新的节点,不断重复 直到所有的点都连上 也是不能形成环

若边非常多时,普利姆算法可能好点,边少的时候克鲁斯卡尔算法好点

有向无环图(DAG)

拓扑排序

把顶点排成线性序列的方法

一张图拓扑排序可能会有好多好多种序列(不唯一

我的方法:

找到一个没有入度的节点,然后把它加到序列里,然后把这个点和这个点连着的边删了,再找图中没有入度的节点,加到序列里,然后再删,不断重复,直到所有点都加入序列了

AOV网

用来表示顶点之间先后顺序的有向图

使用AOV网的主要目的就是用来拓扑排序

举个栗子

  • 每个活动(比如布置会场、彩排节目、准备食物)都是图中的一个顶点。
  • 如果一个活动必须在另一个活动之前完成,那么图中就会有一条从后一个活动指向前一个活动的有向边。

关键路径

指的是完成一个项目所需的最长时间路径。这条路径上的任务是项目成功的决定性因素,因为任何这些任务的延迟都会直接导致整个项目的延迟。即带权图中权值累加最长的路径。

关键路径的特点:

  1. 最长持续时间的路径:关键路径是项目中所有路径中耗时最长的一条。它决定了项目的最短完成时间。

  2. 不容许延误的任务:关键路径上的任务没有时间上的弹性,即它们的延误将直接影响整个项目的完成日期。

  3. 关键任务的识别:关键路径分析帮助项目经理识别哪些任务是关键任务,这些任务需要特别关注,以确保项目按时完成。

  4. 浮动时间为零:关键路径上的任务通常没有浮动时间(Slack Time),即没有可用的额外时间来延迟任务,而不影响项目的整体进度。

AOE网

是一种用来表示项目活动和事件之间依赖关系的有向图。在AOE网中,图的每条边代表一个活动或任务,而顶点则表示事件,即活动的开始或结束点。这种表示方法主要用于项目管理中的关键路径方法,帮助分析项目中任务的时序关系和持续时间。

  • 顶点(Vertex):代表项目中的关键事件,如任务的开始或完成。每个顶点都可以理解为一个时间点,比如项目的开始、某个任务的结束等。
  • 边(Edge):表示从一个事件到另一个事件之间的活动或任务。每条边上通常会标记该活动的持续时间。

举个栗子

比如,在建筑一个房子的项目中:

  • 一个顶点可能代表“地基挖掘完成”,另一个顶点可能代表“地基浇筑完成”。
  • 这两个顶点之间的边代表“浇筑地基”的活动,边上可能标有这个活动需要的天数。

AOE网的一个重要用途是确定项目的关键路径。关键路径是从项目开始到结束所经过的最长路径,决定了项目的最短完成时间。

最短路径

从一个起点到终点的边的权重和最小的路径

迪杰斯特拉算法

适用于没有负权边的图。这个算法从起点开始,逐步扩展到图中的所有点,每次选择距离起点最近的一个未被访问的顶点,并更新其他顶点的最短路径。

ford算法

适用于包含负权边的图。这个算法通过对所有边进行多次松弛操作(尝试更新最短路径的估计值),来逐步找到真正的最短路径。

弗洛伊德算法

用于找到所有顶点对之间的最短路径。通过动态规划的方法,逐步构建每对顶点间的最短路径。

版权声明:本文为博主作者:X_StarX原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/X_StarX/article/details/134957258

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2024年1月16日
下一篇 2024年1月16日

相关推荐