Java数据结构与Java算法学习Day11---有向图、拓扑排序、加权无向图、最小生成图、加权有向图、最短路径(简略笔记记录)

news2024/12/24 3:10:24

目录

一、有向图 157

1.1有向图的定义及相关术语 157

1.2有向图的实现 158

二、拓扑排序 159

2.1检测有向图中的环 160

2.1.1检测有向图中环API设计 160

2.1.2检测有向环实现 161

2.2基于深度优先顶点排序 162

2.2.1顶点排序API设计

2.2.2顶点排序实现的原理过程

2.2.3顶点排序代码的实现及测试 162、163、164

三、加权无向图 165

3.1加权无向图边的表示---加权的边实现 166

3.2加权无向图边的表示---无向图的实现 167

四、最小生成图 168

4.1最小生成树定义及相关约定 168

4.2最小生成树原理---切分定理 169

4.2.1树的性质

4.2.2切分定理

4.3贪心算法 170

4.4Prim算法 171

4.4.1Prim算法API设计

4.4.2Prim算法的实现原理 172  

4.4.3Prim算法的代码实现及测试173、174、175

4.5kruskal算法 176

4.5.1kruskal算法API设计 

4.5.2kruskal算法的实现原理 177

4.5.3kruskal算法代码实现及测试 178、179

五、加权有向图 180

5.1加权有向图边的表示 180

5.2加权有向图的实现 181

六、最短路径182

6.1最短路径定义及性质 182

6.2最短路径树API设计 182

6.3松弛技术 183

6.4Dijstra算法实现及测试 184、185、186


一、有向图 157

图的边是有方向的

1.1有向图的定义及相关术语 157

 

1.2有向图的实现 158

 

二、拓扑排序 159

基于有向图实现拓扑排序。

2.1检测有向图中的环 160

检测有向图环的目的:

有向图中存在环,就没办法进行拓扑排序了

2.1.1检测有向图中环API设计 160

 成员变量:onStack的原理:利用栈的思想进行操作的。如下所示:

2.1.2检测有向环实现 161

2.2基于深度优先顶点排序 162

2.2.1顶点排序API设计

2.2.2顶点排序实现的原理过程

文档P11

2.2.3顶点排序代码的实现及测试 162、163、164

三、加权无向图 165

 ​​​​​​​

3.1加权无向图边的表示---加权的边实现 166

3.2加权无向图边的表示---无向图的实现 167

四、最小生成图 168

4.1最小生成树定义及相关约定 168

 

分别计算各个独立的连通图。这些组合在一起称为最小生成森林。

4.2最小生成树原理---切分定理 169

4.2.1树的性质

4.2.2切分定理

切分: 

横切边:

切分定理:

4.3贪心算法 170

基于切分定理实现的

步骤一:

步骤二:

步骤三:

 步骤四:

 步骤五:

 步骤六:

 步骤七:

 步骤八:直到所有的顶点都被连接起来,则说明查找完毕

 

 贪心算法是基础:

求最小生成树的算法都是贪心算法的一种变形

4.4Prim算法 171

Prim算法实现的过程:

步骤一:

 ​​​​​​​步骤二:

 其他的部分依次类推,就可以找到所有的最小生成树了。

4.4.1Prim算法API设计

4.4.2Prim算法的实现原理 172  

参考文档P27

4.4.3Prim算法的代码实现及测试173、174、175

4.5kruskal算法 176

 ​​​​​​​

 

 是将森林进行连接

4.5.1kruskal算法API设计 

本部分使用了并查集 

4.5.2kruskal算法的实现原理 177

文档P32

4.5.3kruskal算法代码实现及测试 178、179

五、加权有向图 180

5.1加权有向图边的表示 180

5.2加权有向图的实现 181

 

六、最短路径182

 ​​​​​​​

6.1最短路径定义及性质 182

这个不是最小生成树,最小生成树是所有的顶点都要连接起来,这个只是连接需要的两个顶点。

路径:可以是部分的连接

6.2最短路径树API设计 182

6.3松弛技术 183

 边的松弛:

 顶点的松弛:

 

6.4Dijstra算法实现及测试 184、185、186

 

 

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

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

相关文章

【Day2】零基础学java--》牛客网刷题【字符集合】

大家好,我是良辰丫💞!好久不见,一个多月没写博客了,都有些生疏了,学校的一些事情,考试,实训,各种实验,嘿嘿嘿!其实也不能为自己找借口&#xff0c…

PDF文件怎么添加水印?一定要学会的两个方法

相信大家都遇到过这种难题,那就是自己制作PDF文件传输给别人之后,害怕文件内容被别人使用,窃取自己的劳动成果,所以需要对自己的文件进行保护,我们通常的做法是给PDF文件添加水印,这样就可以尽可能的保护文…

Redis这个内存回收,确实有点牛逼!!!

1. 过期 key 处理 Redis 之所以性能强,最主要的原因就是基于内存存储。然而单节点的 Redis 其内存大小不宜过大,会影响持久化或主从同步性能。 我们可以通过修改配置文件来设置 Redis 的最大内存: maxmemory 1gb当内存使用达到上限时&…

【LeetCode】1812. 判断国际象棋棋盘中一个格子的颜色

题目描述 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。 如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false 。 给定坐标一定代表国际象棋…

五、卷积神经网络CNN5(卷积相关问题2)

采用宽卷积的好处有什么 窄卷积和宽卷积 对于窄卷积来说,是从第一个点开始做卷积,每次窗口滑动固定步幅。比如下图左部分为窄卷积。那么注意到越在边缘的位置被卷积的次数越少。于是有了宽卷积的方法,可以看作在卷积之前在边缘用 0 补充&…

MySQL数据库学习(1)

一、概述 MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。 在本教程中,会让大家快速掌握 MySQL 的基本知识,并轻松使用 M…

【畅购商城】微信支付模块之微信支付二维码

目录 流程分析 微信支付概述 账号申请 已有账号 ​​​​​​​支付接口和SDK(了解)​​​​​​​ ​​​​​​​入门案例 统一下单 ​​​​​​​查询订单 ​​​​​​​JS版二维码:QRCode.js ​​​​​​​概述 ​​​​​​​入门案例 ​​​​…

字节跳动3-2专家强烈推荐入广告核心部门,要学的12大技术实战PDF

前言 你了解过字节跳动的薪资和职级是什么样的吗? 想必大家都对字节跳动的薪资和职级都有一定的了解了,下面就给大家介绍字节3-1专家推荐的进入字节跳动需要储备知识技能!!! 应届生进入字节跳动的是711的学习路线&am…

Innodb如何实现表--下篇

Innodb如何实现表--下篇Innodb数据页结构File HeaderPage HeaderInfimum和Supremum RecordUser Records和Free SpacePage DirectoryFile Trailer实例分析Innodb数据页结构 Innodb数据页由以下7个部分组成: File Header(文件头) Page Header(页头) Infimun和Supremum Records U…

Abaqus二次开发:局部坐标系的建立与应用

问题描述 在单向复材中,纤维的力学性能往往是横观各向同性的,于是需要规定材料方向。 通常需要新建局部坐标系用于材料方向的定义,而在实际建立坐标系中,坐标系会储存在对应的Part下: mdb.models[‘Model-1’].parts[…

GraphQL基础使用--mongoDB数据库操作

GraphQL hello world 首先我们要安装好执行GraphQL的环境 因为其是运行在node服务器端的,所以我们要安装 express express-graphql graphql mongoose 安装好后的package.json文件是这个样子的 其次我们就要开始配置端口为3000的node服务器 const express requir…

Leetcode---2.两数之和

目录题目分析链表最终代码实现(内含注释)题目 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和…

护眼灯对眼睛真的有作用吗?一文了解市面上的护眼灯是否真的管用

我们都知道,现在越来越多的人开始使用护眼台灯照明了,不为别的,只为眼睛健康,所以同样的也有许多人质疑护眼灯是否真的对眼睛有效果,今天就来聊聊护眼灯是否真的有护眼作用。 在我看来,人体眼睛看任何事物…

TS201的通过外部中断IRQ0控制DMA传输(含参考代码)

外部中断控制DMA传输 DMA的原理就不多说了,之前的文章里有写。 电路中的Interrupt Pin ADSP-TS201 EZ-KIT Lite评估板上每片DSP含有4个外部中断(IRQ3–0 ),其中IRQ0接到了一个按键上(SW4和SW5)。 当按键按下时,表现…

西湖论剑 Flagshop 分析复现

前言 比赛时候没能做出来,其实这道题就是一道pwn题。后面与p w n师傅讨论分析EXP分析还原了解题过程。学到了很多,也希望分享给大家。 任意文件读取 抓包或者看源码就会发现有一个SSRF,但是没有权限读flag,测试发现存在一个readf…

全网惟一面向软件测试人员的Python基础教程-为什么要学Python

全网惟一面向软件测试人员的Python基础教程 起点:python软件测试实战宝典》目录 第一章 为什么软件测试人员要学习Python 文章目录全网惟一面向软件测试人员的Python基础教程前言一、Python是什么?二、为什么要学二、测试人员如何学二、怎么从0开始学Py…

旅行路线可视化研究与实现(Java+Android+Eclipse实现的旅游APP)

目 录 1 概论 1 1.1 研究现状 1 1.2 系统开发意义 1 1.3 系统开发背景 2 2 开发环境以及相关技术 5 2.1 Eclipse 5 2.2 Adroid 5 2.2.1 基本概念 5 2.2.2 简介 6 2.2.3 系统架构 6 2.2.4 四大组件 7 2.3 Java语言 7 2.4 SQLite 7 2.4.1 简介 7 2.4.2 架构 7 2.4.3 特点 8 2.5 F…

《Redis 深度历险:核心原理与应用实践》学习

1、Redis的5种基础数据结构 Redis的5种基础数据结构:string (字符串)、list (列表 )、hash (字典)、 set (集合)、zset (有序集合)。 Redis所有的数据结构都以唯一的key字符串作为名称, 然后通…

基于粒子群优化算法的边缘链接用于边缘检测(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

艾美捷FLIVO探针:用于细胞活体凋亡检测,助力科研!

细胞凋亡在胚胎发育、造血、免疫系统的成熟以及维护正常组织和器官的细胞恒定与生长平衡,乃至机体衰老方面都起着重要作用。因此,有关凋亡的研究在临床和基础等各个领域已经广泛开展,凋亡细胞的检测方法显得非常重要。 FLIVO(荧光活体)是一种强大的无创检…