数据结构与算法(九)

news2024/12/23 14:30:49

红黑树复习

图,是一种数据结构

集合只有同属于一个集合;线性结构存在一对一的关系,树形结构一对多的关系,图形结构,多对多的关系。

微信中:许多的用户组成了一个多对多的朋友关系网,这个关系网就是数据结构当中的图(Graph)。

导航的最优路径:耗时最少,路程最短的路径,推荐一个方便最快捷的路线。其实就把经过的地方看作图上的一个一个的点,从起点出发,与另外的一个点或者其他的点产生了关联。

图的概念

图:是一种比树更为复杂的数据结构。树结点之间是一对多的关系,并且存在着一个父与子的层级划分。多对多的关系,并且的,所有的顶点都是平等的,无所谓谁是父亲,谁是儿子。

在图中,最基本的单元是顶点(vertex),顶点相当于树中的结点。

顶点之间的关系被称为边(edge)。

图的分类

按照连接的两个顶点的边的不同,可以把图分为以下几种:

  1. 无向图:边没有方向的图称为无向图,边的作用仅仅是连接两个顶点,没有其他的含义
  2. 有向图:边不仅连接两个顶点,并且具有方向性,可能是单向也可能是双向的
  3. 带权图:边可以带权重

 

图的术语 

  1. 相邻顶点:当两个顶点通过一条边相连时,我们称这两个顶点是相连的,并且是依附于这两个顶点的。
  2. :某个顶点的度:是依附于这个顶点的边的个数 (树结点的度:结点所拥有的子树的个数;树的度:书中结点度最大值)
  3. 子图:一幅图中,所有边的子集组成的图,包含这些边的依附的顶点
  4. 路径:是由边顺序连接的一系列的顶点组成
  5. :是一条至少含有一条边且终点和起点相同的路径
  6. 连通图:在无向图中,从任意一个结点出发都能到达任意一个结点,那么这副图我们就称之为连通图
  7. 强连通图:在有向图中,从任意一个结点出发都能到达任意一个结点,那么称该有向图为强连通图。
  8. 连通子图:一个非连通图由若干个连通的部分组成,每一个连通的部分就可以称为:该图的连通子图(在无向图中,如果删除这个图的一些边(删除的边数>=0),剩下的部分仍然是连通的,那么称这个图是原图的连通子图。)
  9. 强连通子图:在有向图中,如果删除这个图中的一些边(删除的边数>=0),剩下的部分仍然是连通的,那么称这个图是原图的强连通子图。
  10. 极大连通子图:如果无向图的连通子图包含它的原图中所有与它自身有关的边,那么称它为极大连通子图。
  11. 极大强连通子图:如果有向图的连通子图包含它的原图中所有与它自身有关的边,那么称它为极大强连通子图。
  12. 极小连通子图:如果删除无向图的连通子图的任意一条边都会导致该子图不再连通,那么称这个子图为极小连通分量。
  13. 极小强连通子图:如果删除有向图的连通子图的任意一条边都会导致该子图不再连通,那么称这个子图为极小强连通子图。
  14. 连通分量:无向图的极大连通子图为该图的连通分量。
  15. 强连通分量:有向图的极大强连通子图为该图的强连通分量。
  16. 弱连通图:将有向图的所有的有向边替换为无向边,所得到的图称为原图的基图。如果一个有向图的基图是连通图,则该有向图是弱连通图。
     

 欧拉七桥

每个桥走一次,回到出发点 ->办不到

欧拉得出结论,创建图论

图的存储结构

  • 顺序存储
  • 链式存储

线性表:它仅有的关系就是线性关系

树形结构:有清晰的层次的结构

图形结构:集合中的每一个元素都有可能有关系

图是由顶点和边构成。所以在图里边:要存储的图形结构的信息,无非就是存储图的顶点和图的边。

顶点存储

顶点可以直接用数组去存储

例如:

1,2,3,4=>[1,2,3,4]

A,B, C, D =>[A ,B ,C ,D]

边的存储

  • 邻接矩阵

用一个一维数组存放图中所有顶点数据;用一个二维数组存放顶点间关系(边或弧)的数据,这个二维数组称为邻接矩阵。邻接矩阵又分为有向图邻接矩阵和无向图邻接矩阵

 矩阵是一个按照长方阵列排列的负数或者实数集合。

 N* M 数据的集合

 去除表格线的九宫格就是矩阵的样式。矩阵是由行和列组成的一组数表。

 邻接矩阵让每一个结点和整数相关联

 用1表示顶点与顶点有直接的关系,用0表示没有连接

 优点:表示非常的明确,有向图:A->D:1 D->A 0

 缺点:非常浪费计算机的内存。存储了太多0,

无向图

 对称

有向图

 

带权图

 

  • 邻接表

邻接表:由图中的每个顶点以及和顶点相邻的顶点列表组成。数组/链表

存储方法跟树的孩子链表示法相类似,是一种顺序分配和链式分配相结合的存储结构。如这个表头结点所对应的顶点存在相邻顶点,则把相邻顶点依次存放于表头结点所指向的单向链表中。

  ​​​​​​​

 20172311《程序设计与数据结构》第九周学习总结 - socialsea - 博客园

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

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

相关文章

【C语言】变量

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星T…

【机器学习】分类问题和逻辑(Logistic)回归算法详解

在阅读本文前,请确保你已经掌握代价函数、假设函数等常用机器学习术语,最好已经学习线性回归算法,前情提要可参考https://blog.csdn.net/weixin_45434953/article/details/130593910 分类问题是十分广泛的一个问题,其代表问题是&…

Android studio 环境安装

1. Java JDK安装 https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe 下载jdk-17 并安装 安装完成后设置环境变量 #新增环境变量JAVA_HOME C:\Program Files\Java\jdk-17#Path 环境变量添加 %JAVA_HOME%\bin %JAVA_HOME%\jdk\bin#新增环境变量CLASSPAT…

HEVC量化编码介绍

介绍 ● 视频编码中,残差信号经过DCT,变换系数具有较大动态范围,因此对变换系数量化可以有效减小信号取值空间,获得更好的压缩效果; ● 多对一映射机制,所以不可避免的引入失真,这是视频编码中…

Spring(三)对bean的详解

一、引入外部属性文件 首先我们将依赖进行导入&#xff1a; <!--MySQL驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.22</version></dependency><!--数据…

idea连接Linux服务器

一、 介绍 配置idea的ssh会话和sftp可以实现对linux远程服务器的访问和文件上传下载&#xff0c;是替代Xshell的理想方式。这样我们就能在idea里面编写文件并轻松的将文件上传到linux服务器中。而且还能远程编辑linux服务器上的文件。掌握并熟练使用&#xff0c;能够大大提高我…

烂怂if-else代码优化方案 | 京东云技术团队

0.问题概述 代码可读性是衡量代码质量的重要标准&#xff0c;可读性也是可维护性、可扩展性的保证&#xff0c;因为代码是连接程序员和机器的中间桥梁&#xff0c;要对双边友好。Quora 上有一个帖子&#xff1a; “What are some of the most basic things every programmer s…

日本医疗保健和健康管理公司【Zerospo】申请纳斯达克IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;来自日本的医疗保健和健康管理公司【Zerospo】&#xff0c;近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纳斯达克IPO上市&#xff0c;股票代码为&#xff…

感谢海洋一所陈老师用Pospac MMS解算pospac数据及GNSS验潮

非常感谢海洋一所陈老师 帮忙用Pospac MMS解算博主的pospa从数据。解算的结果txt文件大小有2个G&#xff0c;令人非常吃惊&#xff0c;因为原始数据的时长不到1天&#xff0c;打开文件才知道每行位置数据的间隔时间是5ms&#xff0c;5ms正是惯导数据的采样频率。 用抽稀软件按…

短视频矩阵系统源码-开源开发php语言搭建

短视频矩阵系统源码---------- php源码是什么&#xff1f; PHP源码指的就是PHP源代码&#xff0c;源代码是用特定编程语言编写的人类可读文本&#xff0c;源代码的目标是为可以转换为机器语言的计算机设置准确的规则和规范。因此&#xff0c;源代码是程序和网站的基础。 PHP…

【数据结构】插入排序详细图解(一看就懂)

&#x1f4af; 博客内容&#xff1a;【数据结构】插入排序详细图解&#xff08;一看就懂&#xff09; &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f989;所属专栏&#xff1a;数据结构笔记 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准前端&#xff0c;…

ARM-FS6818-点亮LED灯

点亮LED灯 1.开发板介绍 2.cpu控制硬件原理 六大指令里边&#xff0c;只有内存访问指令能访问cpu之外的内容。那cpu如何控制硬件&#xff1f; *load/store指令-->操作4G内存 任何一个芯片都有一个地址映射表。告诉地址空间是如何映射的&#xff0c;便于我们找到对应的硬件地…

ChatGPT3.5-4资源汇总,直连无梯子

什么是ChatGPT? ChatGPT&#xff0c;全称&#xff1a;聊天生成预训练转换器&#xff08;英语&#xff1a;Chat Generative Pre-trained Transformer&#xff09;&#xff0c;是OpenAI开发的人工智能聊天机器人程序&#xff0c;于2022年11月推出。该程序使用基于GPT-3.5、GPT-4…

limou的C语言学习路径

0.前言 你好这里是limou3434的一篇个人博文&#xff0c;感兴趣的话您可以到我的CSDN博客上看看&#xff0c;下面我将以前学习了大概7个月的C语言学习总结给您做一个集合&#xff0c;希望能够帮助到您。 1.C语言大略 学习C前的一些基础知识 这篇文章简单过一下C语言的基础&a…

U盘移动硬盘变本地硬盘怎么办 ,移动硬盘变本地硬盘的恢复方法

这是分区逻辑损坏后最常见的表现。U盘移动硬盘变本地硬盘怎么办 &#xff0c;移动硬盘变本地硬盘的恢复方法有些用人到这种情况后首先会尝试使用Windows系统自带的硬盘修复工具chk命令进行修复&#xff0c;不过&#xff0c;这样操作并不能解决问题&#xff0c;往往会造成更严重…

UFS 2 -UFS架构简介2

UFS 2 -UFS架构简介2 1 UFS架构简介1.1 System Boot and Enumeration1.2 UFS Interconnect (UIC) Layer1.2.1 UFS Physical Layer Signals1.2.2 MIPI UniPro1.2.3 MIPI UniPro Related Attributes 1.3 UFS Transport Protocol (UTP) Layer1.3.1 Architectural Model1.3.1.1 Cli…

ChatGPT时代:数据标注会成为一种人机交互“语言”么?

标注猿的第70篇原创 一个用数据视角看AI世界的标注猿 大家好&#xff0c;我是AI数据标注猿刘吉&#xff0c;一个用数据视角看AI世界的标注猿。 从去年的10月份到现在有半年的时间没有更新了&#xff0c;去年没有更新是疫情的原因&#xff0c;今年没有更新主要有两个原因一…

微软联合OpenAI发大招了,上线Windows Copilot,速来围观~

目录 前言 Windows Copilot 问世 Bing Chat 插件功能上线 Edge 与 365 Copilot 结合 搭建你的第一个AI应用&#xff08;Azure AI Studio&#xff09; 总结 写到最后 大家好&#xff0c;我是大侠&#xff0c;AI领域的专业博主 前言 ChatGPT如今已成为炙手可热的话题&am…

面向亚裔人群的美国华人超市【Maison Solutions】申请纳斯达克IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;来自美国南加州的面向亚裔人群的美国华人超市【美生科技Maison Solutions】近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纳斯达克IPO上市&#xff0c;股票…

软考A计划-试题模拟含答案解析-卷十四

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…