25考研数据结构复习·6.4图的应用

news2025/1/11 23:46:06

最小生成树

Prim算法

从某一顶点开始构建生成树;每次将代价最小的新顶点纳入生成树,知道所有顶点都纳入为止。

时间复杂度O(|V|^2)

适合用于边稠密图

实现思想

从V0开始,总共需要n-1轮处理

每一轮处理:循环遍历所有结点,找到lowCast最低的,且还没加入树的顶点。

再次循环遍历,更新还没加入的各个顶点的lowCast的值(每一轮时间复杂度O(2n))

Kruskal算法

每次选择一条权值最小的变,使这条边的两头联通(原本已经联通的就不选),知道所有结点都联通。

时间复杂度O(|E|log2|E|)

适合用于边稀疏而顶点较多的图

实现思想

初始:将各条边按权值排序

共执行e轮,每轮判断两个顶点是否属于同一集合,需要O(long2e)

最短路径

单源最短路径

BFS算法(无权图)

就是对BFS的小修改,在visit一个顶点时,修改其最短路径长度d[]并在path[]记录前驱结点

Dijkstra算法(带权图、无权图)

final[ ]:标记各顶点是否已找到最短路径

dist[ ]:最短路径长度

path[ ]:路径上的前驱

时间复杂度:O(n^2)即O(|V|^2)

👩‍💻 Dijkstra算法并不适合于有负权值的带权图

各顶点间的最短路径

Floyd算法(带权图、无权图)

求出每一对顶点之间的最短路径。

使用动态规划思想,将问题的求解分为多个阶段。

//……准备工作,根据图的信息初始化矩阵A和path
for(int k = 0;k < n;k++){  //考虑以vk作为中转点
	for(int i = 0;i < n;i++){  //遍历整个矩阵,i为行号,j为列号
		for(int j = 0;j < n;j++){
			if(A[i][j] > A[i][k] + A[k][j]){  //以vk为中转点的路径更短
				A[i][j] =  A[i][k] + A[k][j];  //更新最短路径长度
				path[i][j] = k; //中转点
			}
		}
	}
}

时间复杂度O(|V|^3) ; 空间复杂度O(|V|^2)

👩‍💻 Floyd算法可以用于负权值带权图

👩‍💻 Floyd算法不能解决带有“负权回路”的图,这种图有可能没有最短路径


 

BFS算法Dijkstra算法Floyd算法
无权图✔️✔️✔️
带权图✔️✔️
带负权值的图✔️
带负权回路的图
时间复杂度O(|V|^2)或O(|V|+|E|)O(|V|^2)O(|V|^3)
通常用于求无权图的单源最短路径求带权图的单源最短路径求带权图中各顶点间的最短路径

🐧 也可以用Dijkstra算法求所有顶点间的最短路径,重复|V|次即可,总的时间复杂度也是O(|V|^3) 

有向无环图描述表达式

定义:一个有向图中不存在环。(DAG图)

DAG描述表达式

【2019统考真题】用有向无环图描述表达式(x+y)((x+y)/x),需要的顶点个数至少是(A)

A.5 B.6 C.8 D.9

 在表达式的有向无环图表示中,不可能出现重复的操作数顶点

解题步骤

  1. 把各个操作数不重复地排成一排
  2. 标出各个运算符的生效顺序(先后顺序有点出入无所谓)
  3. 按顺序加入运算符,注意“分层
  4. 自底向上逐层检查同层的运算符是否可以合体

拓扑排序

  1. AOV网:用DAG图(有向无环图)表示一个工程。顶点表示活动,有向边<Vi,Vj>表示活动Vi必须先于活动Vj进行
  2. 每个AOV网都有一个或多个拓扑排序序列
  3. 采用邻接表:时间复杂度O(|V|+|E|);采用邻接矩阵:时间复杂度O(|V|^2)
  4. 用DFS实现拓扑排序

拓扑排序的实现

  1. 从AOV网中选择一个没有前驱(入度为0)的顶点并输出
  2. 从网中删除改顶点和所有以它为起点的有向边
  3. 重复1和2直到当前的AOV网为空当前网中不存在无前驱的顶点为止(说明有回路)

逆拓扑排序

  1. 从AOV网中选择一个没有后继(出度为0)的顶点并输出
  2. 从网中删除改顶点和所有以它为起点的有向边
  3. 重复1和2直到当前的AOV网为空

关键路径

  1. AOE网:在带权有向图中,以顶点表示事件,以有向边表示活动,以边上的权值表示完成该活动的开销
    1. 仅有一个入度为0的顶点,称为开始顶点(源点)
    2. 仅有一个出度为0的顶点,称为结束顶点(汇点)
  2. 具有最大路径长度的路径称为关键路径,而把关键路径上的活动称为关键活动

求关键路径的步骤

  1. 事件Vk的最早发生时间ve(k)——决定了所有从Vk开始的活动能够开工的最早时间
    1. 拓扑排序序列,依次求各个顶点的ve(k):
      1. ve(源点) = 0
      2. ve(k) = Max{ve(j) + Weight(vj,vk)},vj为vk的任意前驱
  2. 事件Vk的最迟发生时间vl(k)——它是指在不推迟整个工程完成的前提下,该事件最迟必须发生的时间。
    1. 逆拓扑排序序列,依次求各个顶点的vl(k):
      1. vl(汇点) = ve(汇点)
      2. vl(k) = Min{vl(j) - Weight(vk,vj)},vj为vk的任意后继
  3. 活动Ai的最早发生时间e(i)——指该活动弧的起点所表示的事件的最早发生时间
    1. 若边<vk,vj>表示活动Ai,则有e(i) = ve(k)
  4. 活动Ai的最迟发生时间l(i)——它是指该活动弧的重点所表示事件的最迟发生事件与该活动所需时间之差。
    1. 若边<vk,vj>表示活动Ai,则有l(i) = vl(j) - Weight(vk,vj)
  5. 活动Ai的时间余量d(i)=l(i)-e(i)。d(i)=0的活动Ai是关键活动。
    1. d(i) = l(i) - e(i)

特性

  1. 若关键活动耗时增加,则整个工程的工期将增长
  2. 缩短关键活动的时间,可以缩短整个工程的工期
  3. 当缩短到一定程度时,关键活动可能编程非关键活动
  4. 可能有多条关键路径,只提高一条关键路径上的关键活动速度并不能缩短整个工程的工期,只有加快那些包括在所有关键路径上的关键活动才能达到缩短工期的目的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1959668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

京东商品详情API:多规格商品的返回值处理

处理京东商品详情API中关于多规格商品的返回值&#xff0c;首先需要了解京东API的返回数据结构。通常&#xff0c;对于多规格商品&#xff08;如不同颜色、尺寸等选项的商品&#xff09;&#xff0c;API会返回一个包含多个规格选项和对应价格、库存等信息的复杂数据结构。 以下…

java中 VO DTO BO PO DAO

VO、DTO、BO、PO、DO、POJO 数据模型的理解和实际使用_vo dto bo-CSDN博客 深入理解Java Web开发中的PO、VO、DTO、DAO和BO概念_java dto dao-CSDN博客

汇凯金业:区块链的介绍和应用场景

区块链&#xff0c; 一个近年来炙手可热的技术名词&#xff0c; 它就像一颗耀眼的明星&#xff0c; 吸引着人们的目光&#xff0c; 引发着人们的思考。 究竟什么是区块链? 它为何能够引发如此巨大的关注? 它又将如何改变我们的未来? 一、 区块链&#xff1a; 去中心化的信任…

中仕公考:什么是事业编?

事业编制内的职员是指那些经过考试选拔&#xff0c;成功进入公共机构服务&#xff0c;同时在人事部门和组织部有正规记录的个体。 入职条件&#xff1a; 要求应聘者参与由事业单位举办的公开招聘考试。 管理方式&#xff1a; 事业编制内职员的人事管理由当地的人事部门或相…

02 RabbitMQ:下载安装

02 RabbitMQ&#xff1a;下载&安装 1. 下载&安装1.1. 官网1.2. Docker方式1.2.1. 下载镜像1.2.2. 启动1.2.3. 登录验证 1. 下载&安装 1.1. 官网 RabbitMQ: One broker to queue them all | RabbitMQ 1.2. Docker方式 1.2.1. 下载镜像 # docker pull 镜像名称[…

Windows API钩子

原文链接&#xff1a;https://www.cnblogs.com/zhaotianff/p/18073138 有前面的文章中&#xff0c;我介绍了一个Windows API的监控工具&#xff08;API Monitor&#xff09;的使用。它内部就是使用了Hook机制&#xff0c;能Hook Windows API&#xff0c;能在我们钩选的API函数…

C++必备知识--类和对象

类的定义 格式 class是类的关键字&#xff0c;Stack是类的名字(自己定义的)&#xff0c;在{}中定义类的主体。C中类的出现是为了替代C语言中的结构体&#xff0c;所以类的结构与结构体类似&#xff0c;{}之后需要加分号。类体中的内容称为类的成员&#xff0c;类中(声明)的变量…

国内优秀的消防报警设备企业「三江电子」×企企通启动采购数字化项目,共筑消防电子产品数字化新篇章

近日&#xff0c;深圳市高新投三江电子股份有限公司&#xff08;以下简称“三江电子”&#xff09;与企企通成功召开SRM采购供应链管理项目启动会。三江电子副总经理黄总、副总经理沈总、企企通高级副总裁徐总&#xff0c;以及双方项目负责人和项目组成员一同出席本次启动会。 …

AlmaLinux9安装中文语言包_zabbix没有中文语言包

更新你的系统包&#xff0c;如果系统最新可以忽略&#xff1a; sudo dnf update安装中文简体语言包 sudo yum install langpacks-zh_CN安装繁体中文包 sudo dnf install kde-l10n-Chinese-traditional安装完成后重启系统&#xff0c;以确保语言设置生效 设置系统为简体中文&…

《昇思25天学习打卡营第25天|第28天》

今天是打卡的第二十八天&#xff0c;实践应用篇中的计算机视觉中Vision Transformer图像分类。 从Vision Transformer&#xff08;ViT&#xff09;简介开始了解&#xff0c;模型结构&#xff0c;模型特点&#xff0c;实验的环境准备和数据读取&#xff0c;模型解析&#xff08…

Vue学习---vue 项目结构

这只是一个基础的目录结构&#xff0c;根据项目的复杂性和规模&#xff0c;可能会有所不同。 node_modules 项目依赖文件&#xff0c;其中包括很多基础依赖和自己安装的依赖。 public 存放公共资源和项目的主入口文件inde…

详细分析Sql Server索引的创建、查询、删除等基本知识(附Demo)

目录 前言1. 基本知识2. 索引2.1 创建2.2 删除2.3 查询 3. 总结 前言 原先分析过Sql的基本知识&#xff0c;感兴趣也可阅读&#xff1a; Mysql的两种存储引擎详细分析及区别&#xff08;全&#xff09;Mysql优化高级篇&#xff08;全&#xff09; 1. 基本知识 索引是在数据…

论文阅读-《Distant Supervision for Relation Extraction beyond the Sentence Boundary》

文章提出了首个将远程监督应用于跨句子关系提取的方法&#xff0c;通过整合句内和句间关系&#xff0c;利用图表示和多路径特征提取提高了准确性和鲁棒性。 摘要 文章提出了一种新的方法&#xff0c;用于在远程监督下进行跨句子的关系抽取。这种方法利用图表示来整合依赖和话…

滤芯材料做CE认证,按照什么EN标准测试?

要对滤芯材料进行CE认证&#xff0c;您需要遵循欧洲联盟的相关法规和标准。滤芯材料通常与产品安全性、电磁兼容性和环保性有关。以下是可能适用于滤芯材料的一些标准、要求和指令&#xff1a; 低电压指令(Low Voltage Directive&#xff0c;LVD)&#xff1a;滤芯材料通常包含电…

Vue3自研开源Tree组件:人性化的拖拽API设计

针对Element Plus Tree组件拖拽功能API用的麻烦&#xff0c;小卷开发了一个API使用简单的JuanTree组件。拖拽功能用起来非常简单&#xff01; 文章目录 使用示例allowDragallowDrop支持节点勾选支持dirty检测后台API交互 源码实现 使用示例 组件的使用很简单&#xff1a; 通过…

Kubernetes—二进制部署k8s集群搭建单机matser和etcd集群(1)

目录 组件部署 一、操作系统初始化配置 二、升级Liunx内核 三、部署docker引擎 四、部署etcd集群 1.在 master01 节点上操作 2.在 node节点上操作 检查etcd群集状态 增删查键 备份还原 etcd&#xff08;拓展&#xff09; 五.部署 Master 组件 1.上传解压 2.创建…

git查看记录详解

文章目录 git查看记录查看文件修改列表查看修改差异友好的查看修改记录结合多个选项查看记录示例输出 git查看记录 使用 git log 你不仅可以查看提交记录&#xff0c;还可以通过一些选项查看文件的修改列表、修改差异&#xff0c;并以更友好的方式查看修改记录。以下是一些常用…

ROS2入门到精通—— 2-14 ROS2实战:远程可视化实车上的文件

0 前言 ROS车的外接屏幕很小&#xff0c;在上面鼠标操作和键盘操作都比较麻烦&#xff0c;想要远程可视化ROS车上的文件&#xff0c;可以在本文学到一些用到实际工作中 1 ssh 终端操作远程桌面 ssh -Y pi192.168.33.200输入密码登陆&#xff0c;这样还是不能可视化文件&…

CS224W—02 Node Embeddings

CS224W—02 Node Embeddings Node Embeddings概念 传统的图机器学习&#xff1a; 给定一个输入图&#xff0c;抽取节点、边和图级别特征, 学习一个能将这些特征映射到标签的模型(像SVM&#xff0c; NN…)这个抽取不同级别特征的过程&#xff0c;就是特征工程feature enginee…

华为NetEngine AR1000V虚拟路由器 nfv

华为NetEngine AR1000V虚拟路由器 华为NetEngine AR1000V虚拟路由器彩页 - 华为企业业务 华为NetEngine AR1000V虚拟路由器 NetEngine AR1000V是华为公司在传统企业网络向SD-WAN转型的趋势下推出的虚拟路由器。 AR1000V基于NFV技术&#xff0c;可以部署在X86硬件平台的服务…