数据结构和算法-最小生成树(prim和krusakal)和最短路径问题(BFS和dijkastra和floyd)
文章目录
- 最小生成树
- 总览
- 生成树
- 广度优先生成树
- 深度优先生成树
- 最小生成树
- Prim算法
- Kruskal算法
- Prim vs Krusakal
- Prim的实现
- Kruskal的实现
- 小结
- 最短路径问题
- 单源最短路径问题
- BFS求无权图的单源最短路径
- 小结
- Dijkastra算法
- 算法时间复杂度
- 不适用情况
- 每一对顶点的最短路径问题
- Floyd算法
- 找两个点的最短路径
- 核心代码
- 实例
- 找两个顶点最短路径
- Floyd用于负权图
- 不能解决的问题
- 小结
最小生成树
总览

生成树

广度优先生成树

深度优先生成树

最小生成树
针对的是带权连通图



Prim算法
同一个图的最小生成树可能不唯一
从p城出发


从农场出发也一样

Kruskal算法

Prim vs Krusakal

Prim的实现
先找到最低代价的节点,每次将节点加入树后,需要更新各节点加入树的最低代价(即将原来的代价和个节点与加入节点的代价作比较)

Kruskal的实现
查找并查集(如果用二叉树实现的)的根需要log2E

小结

最短路径问题

单源最短路径问题
BFS求无权图的单源最短路径
首先访问2号顶点,然后再更新其相邻顶点后的结果

然后1号顶点出队,相邻节点入队,同时更新各相邻节点

然后6号顶点出队,更新相邻节点,同时各个相邻节点入队

5号顶点没有相邻
所以到3号顶点处理

7号顶点处理

4号和8号相邻节点都被访问,所以没有处理
小结

Dijkastra算法
BFS局限性(默认每条路径长度一样)

初始化后,即更新初始节点及其相邻节点

第一轮后

第二轮后

第三轮后

第四轮后

查找两个顶点的最短路径

算法时间复杂度


不适用情况

每一对顶点的最短路径问题

Floyd算法
初始时

允许在v0中转

允许在v0 v1中转

允许在v0 v1 v2中转

找两个点的最短路径

核心代码
空间复杂度是有n*n个矩阵那么多

实例
初始

允许在v0中转
发现没有变化
从图可以发现v0没有进去的边,所以自然没法中转

允许在v0 v1中转

允许在v0 v1 v2中转
是已经基于之前v0 v1的中转结果的
例如v2到v3是基于中转v1的,但是在以v2中转的转换中是把它认为是相连的


允许在v0 v1 v2 v3中转

允许在v0 v1 v2 v3 v4中转

找两个顶点最短路径

Floyd用于负权图

不能解决的问题
回路越多,路径越短

小结
BFS 采用邻接矩阵是V的平方 邻接矩阵是V+E

相关文章:
数据结构和算法-最小生成树(prim和krusakal)和最短路径问题(BFS和dijkastra和floyd)
文章目录 最小生成树总览生成树广度优先生成树深度优先生成树最小生成树Prim算法Kruskal算法Prim vs KrusakalPrim的实现Kruskal的实现 小结 最短路径问题单源最短路径问题BFS求无权图的单源最短路径小结Dijkastra算法算法时间复杂度不适用情况 每一对顶点的最短路径问题Floyd算…...
响应者链概述
响应者链 iOS事件的3大类型 Touch Events(触摸事件)Motion Events(运动事件,比如重力感应和摇一摇等)Remote Events(远程事件,比如用耳机上得按键来控制手机) 触摸事件 处理触摸事件的两个步骤 寻找事件的最佳响应者事件的响应在响应链中的传递 寻…...
ShenYu网关Http服务探活解析
文章目录 网关端服务探活admin端服务探活 Shenyu HTTP服务探活是一种用于检测HTTP服务是否正常运行的机制。它通过建立Socket连接来判断服务是否可用。当服务不可用时,将服务从可用列表中移除。 网关端服务探活 以divide插件为例,看下divide插件是如何获…...
基于dockerfile搭建LNMP
组件自定义IP所需组件nginx172.111.0.10nginxwordpressmysql172.111.0.20mysql-5.7.20php172.111.0.30php LNMP介绍 L:Linux平台,操作系统,另外桑组件的运行平台 N:nginx 提供前端页面 M:MySQL,开源关系的…...
基于VGG-16+Android+Python的智能车辆驾驶行为分析—深度学习算法应用(含全部工程源码)+数据集+模型(三)
目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 模型构建3. 模型训练及保存1)模型训练2)模型保存 4. 模型生成1)模型导入及调用2)相关代码(1)布局文件(2ÿ…...
springMVC-@RequestMapping
基本介绍 RequestMapping注解可以指定控制器/处理器的某个方法的请求的url, 示例 (结合springMVC基本原理理解) Controller public class UserHandler {RequestMapping(value "/login")public String login() {System.out.println("登…...
智能优化算法应用:基于树种算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于树种算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于树种算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.树种算法4.实验参数设定5.算法结果6.参考文献7.MA…...
web前端项目-影视网站开发
影视网站 本项目主要使用到了 HTML;CSS;JavaScript脚本技术;AJAX无刷新技术;jQuery等技术实现了动态影视网页 运行效果: 一:index.html <!DOCTYPE> <html lang"en"> <head>…...
QT:Unable to create a debugging engine.
debug跑不了: 报错:Unable to create a debugging engine. 参考: https://blog.csdn.net/u010906468/article/details/104716198 先检查是否安装了DEBUG插件 工具-》》选项 查看插件,如果没有的话,需要重新安装qt时…...
如何理解Rust语言中的“impl”关键字
在Rust编程语言中,impl是一个关键字,用于为类型实现方法和特性(traits)。impl关键字后面可以跟一个类型或者特性名称,然后在大括号中定义该类型或特性的具体实现。 当我们使用impl关键字为一个类型实现方法时…...
C++实现简单的猜数字小游戏
猜数字 小游戏介绍:猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了,还是小了,相等表示猜到了。如果猜到&…...
人工智能导论复习资料
题型 1、简答题(5题) 2、设计题 3、综合题 4、论述题(10分) 考点 第一章 1、人工智能的定义、发展; 2、人工智能的学派、认知观及其间的关系; 3、人工智能要素及系统分类; 4、人工智能的研究、…...
Sentinel使用详解
组件简介 Sentinel是阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。Sentinel承接了阿里巴巴近10年的双十一大促流量的核心场景,例如秒杀、消息削峰填谷、集群流量控…...
Vue3源码梳理:响应式系统的前世今生
响应性数据的前世 js的程序性: 一套固定的,不会发生变化的执行流程 1 )没有响应的数据 // 定义商品对象 const product {price: 10,quantity: 2 }// 总价格 let total product.price * product.quantity console.log(总价格:${total}) //…...
Jetpack Compose开发一个Android WiFi导航应用
在以前的一篇文章构建一个WIFI室内定位系统_wifi定位系统-CSDN博客中,我介绍了如何用Android来测量WiFi信号,上传到服务器进行分析后,生成室内不同地方的WiFi指纹,从而帮助进行室内导航。当时我是用的HTML5的技术来快速开发一个An…...
【Mode Management】ComM详细介绍
目录 1. Introduction and functional overview 2.Dependencies to other modules 3.Functional specification 3.1 Partial Network Cluster Management 3.2 ComM channel state machine 3.2.1 Behaviour in state COMM_NO_COMMUNICATION 3.2.1.1 COMM_NO_COM_NO_PENDI…...
【C++多线程编程】(二)之详解锁(lock)和解锁(unlock)
在C多线程编程中,锁(lock)和解锁(unlock)通常用于管理共享资源的访问,以防止多个线程同时对资源进行修改,从而避免竞态条件(Race Condition)和数据不一致性问题。C标准库…...
【Mypy】超级实用的python高级库!
今天,我很兴奋地向大家介绍一个神奇的Python库:Mypy。这个库是Python世界中的一颗璀璨明星,提供了静态类型检查的强大功能,极大地增强了Python这门动态类型语言的健壮性和可维护性。我们将深入探索Mypy的多个方面,并通…...
【Python基础】循环语句
文章目录 [toc]什么是循环Python中的循环方式while循环格式示例 什么是循环 程序中需要重复执行的代码,可以通过循环实现比如和女朋友道歉,或一万遍“宝宝,我错了”,在没有学习循环之前,我们只能通过如下方式实现 pr…...
【面试】广告优化
a1:点击率公式是什么?点击率低的原因是什么? 点击率点击/曝光,点击率低的原因主要有两点:一是创意不吸引人;二是目标受众不准确/定向过宽不精确,广告曝光给了对产品不感兴趣用户 a2:…...
Reachy Mini桌面机器人:开源AI机器人开发的终极指南
Reachy Mini桌面机器人:开源AI机器人开发的终极指南 【免费下载链接】reachy_mini Reachy Minis SDK 项目地址: https://gitcode.com/GitHub_Trending/re/reachy_mini Reachy Mini是一款专为开发者和AI研究者设计的开源桌面机器人,通过其精密的六…...
破解Swin Transformer部署困境:从环境适配到性能突围的全维度方案
破解Swin Transformer部署困境:从环境适配到性能突围的全维度方案 【免费下载链接】Swin-Transformer This is an official implementation for "Swin Transformer: Hierarchical Vision Transformer using Shifted Windows". 项目地址: https://gitcod…...
从仿真到现实:聊聊PIN二极管模型在有源衰减器设计中的那些“坑”与优化思路
从仿真到现实:PIN二极管模型在有源衰减器设计中的关键挑战与工程优化 在射频电路设计中,有源衰减器的性能直接影响着系统的动态范围和信号质量。当我们从仿真环境转向实际电路实现时,PIN二极管模型的准确性往往成为决定成败的关键因素。许多工…...
PostgreSQL实战:使用pg_dump精准导出特定模式下的表结构
1. 为什么需要精准导出特定模式下的表结构 在实际的数据库管理工作中,我们经常会遇到只需要导出特定模式(schema)下表结构的需求。比如在微服务架构中,每个服务可能对应数据库中的一个模式;或者在进行数据库迁移时&…...
Open WebUI:重构人机交互的开源解决方案
Open WebUI:重构人机交互的开源解决方案 【免费下载链接】open-webui Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 WebUI,设计用于完全离线操作,支持各种大型语言模型(LLM)运行器,包括Ollama和兼…...
Comsol 薄板声辐射响应优化:激励位置与频率的协同效应
1. 薄板声辐射响应基础原理 当你用手指轻轻敲击一块金属薄板时,会听到清脆的声响。这个看似简单的现象背后,隐藏着复杂的声学原理。在Comsol仿真中,我们可以精确模拟这种声辐射响应,为声学设备设计提供科学依据。 薄板声辐射的本质…...
OpenClaw多账户管理:ollama-QwQ-32B模型服务同时支持多个飞书机器人
OpenClaw多账户管理:ollama-QwQ-32B模型服务同时支持多个飞书机器人 1. 为什么需要多账户管理? 去年我们团队在尝试用OpenClaw实现自动化办公时,遇到了一个典型问题:市场部和研发部都需要使用同一个ollama-QwQ-32B模型服务&…...
3个维度突破股票数据获取难题:MOOTDX量化分析实战指南
3个维度突破股票数据获取难题:MOOTDX量化分析实战指南 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 作为量化投资和金融数据分析的核心基础设施,稳定、高效、低成本的股票…...
网站外部 SEO 优化有哪些策略_SEO 网络推广与传统推广有什么区别
<h2>网站外部 SEO 优化有哪些策略</h2> <p>在当今的数字营销领域,外部 SEO 优化已经成为提升网站排名和流量的关键策略。外部 SEO(Search Engine Optimization)优化是一项通过外部手段提升网站在搜索引擎结果页面ÿ…...
Navicat Mac版试用期解除解决方案:3种方法实现永久试用
Navicat Mac版试用期解除解决方案:3种方法实现永久试用 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 问题引入:Navicat试用期限制的技术破解需求 对于…...
