数据结构——图的应用

最小生成树

生成树 连通图包含全部顶点的有效连通子图
在这里插入图片描述

性质

1.不一定唯一
最小生成树可能唯一可能不唯一,当所有边的权重都不一样的时候最小生成树一定唯一,如果图只有结点数减一条边时一定唯一。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

算法思想

在这里插入图片描述

prim

在这里插入图片描述
先加入顶点A,找出A与其他为加入顶点边最短的边
在这里插入图片描述
同理找出顶点A和顶点C与为加入顶点之间最短的边
在这里插入图片描述
同上,依次比遍历完所有的顶点
在这里插入图片描述
在这里插入图片描述

prim 算法的实现

在这里插入图片描述
在这里插入图片描述
算法实现过程(此处有错误)
在这里插入图片描述

KRUSKAL

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

kruskal代码实现

在这里插入图片描述

最短路径

两个顶点之间带权路径长度最短的路劲为最短路劲
在这里插入图片描述

Dijkstra

在这里插入图片描述
算法描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Dijkstra代码实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Floyd

在这里插入图片描述
在这里插入图片描述

Floyd代码实现

在这里插入图片描述
Floyd的时间复杂度是V3看似比Dijkstra好大其实并不一定,因为Floyd算出了所有顶点之间的最短距离,如果要算出所有顶点之间的最短距离,floyd其实和dijkstra是一样的甚至更快。

拓扑排序

表示一定的传递关系
有向无环图(DAJ)
AOV网
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

要求

拓扑排序需要要求无环不然就会出现所有顶点都有入度的情况
在这里插入图片描述
拓扑排序的结果不一定唯一
在这里插入图片描述

代码实现

在这里插入图片描述
在这里插入图片描述

关键路径

AOE网
在这里插入图片描述

事件最早发生时间

结点需要在所有入边都完成了之后才能开始,最早发生时间要取最大边,从原点开始计算相邻结点的最早发生时间,每个结点的最早发生时间就是活动上的时间加上上一个结点的最早发生时间的最大值,最早发生时间决定了工程的总时间
在这里插入图片描述

事件最迟发生时间

从汇点开始,每个结点的出边加上上一节点的最迟发生时间取最小值,汇点的最迟发生时间就等于汇点的最早发生时间,最迟发生时间决定了工程在不改变总时间的情况下最多能推迟的时间。
在这里插入图片描述

活动的最早开始时间

活动的最早开始时间,就是其开始事件的最早开始时间
在这里插入图片描述

活动的最迟开始时间

活动的最迟开始时间就是其结束事件的最迟开始时间
在这里插入图片描述

活动的差额

差额为0的活动就是关键活动,关键活动组成的路径就是关键路径,关键路径决定了工程的总时间,如果想要缩短工程的总时间的话据需要缩短关键路径上的活动时间。

在这里插入图片描述

关键路径计算

先计算事件的最早发生时间,然后通过事件的最早发生事件计算出最早发生活动时间,计算出事件的最迟发生事件,然后通过事件的最迟发生事件计算出最迟发生活动时间,用活动最早发生时间减去活动最迟发生时间,取这个差值为0的活动,为关键路径
在这里插入图片描述
当有多个关键路径的时候,应该缩短所有关键路径都出现了的活动的时间来缩短整个工程时间。
在这里插入图片描述

真题

2012:若矩阵中主对角线以下的元素均为0,则关于该图拓扑排序的结论是,存在可能不唯一。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值