数据结构之图的基本介绍

article/2025/10/24 4:06:05

图的基本介绍

线性表局限于一个直接前驱和一个直接后继的关系,树也只能有一个直接前驱也就是父节点。当我们需要表示多对多的关系时,就需要用到图。

图的基本概念

图(Graph)是一种数据结构,由顶点(vertex)和边(edge)组成,通常表示为G=(V,E):

  • G:表示一个图
  • V:表示图中顶点的集合,顶点集V有穷且非空
  • E: 表示图中边的集合,边集E可以是空的

边:两个顶点之间的连接。

路径:一个顶点到另一个顶点的通路。

比如下面的无向图中,从顶点D到顶点C的路径有:

  1. D->B->C
  2. D->B->A->C

无向图
无向图(Undirected Graph):顶点之间的路径没有方向,比如A-B,即可以是A->B也可以B->A,上面的图就是一个无向图。

有向图(Directed Graph):顶点之间的路径有方向,比如A-B,只能是A->B,不能是B->A,下面的图就是一个有向图。

有向图
出度(Out-degree):一个顶点的出度为x,是指有x条边以该顶点为起点,例如上面的有向图中,顶点A的出度是2。

入度(In-degree):一个顶点的入度为x,是指有x条边以该顶点为终点,例如上面的有向图中,顶点C的入度是2。

出度、入度适用于有向图。

带权图(Weighted Graph):边带权值的图也叫网。

带权图

图的表示方式

图的表示方式有两种:

  • 邻接矩阵(Adjacency Matrix)
  • 邻接表(Adjacency List)

邻接矩阵

邻接矩阵是表示图形中顶点之间相邻关系的矩阵,通常采用一个存放顶点信息的一位数组和一个存放边信息的二维数组实现。

使用邻接矩阵实现的无向图如下:

邻接矩阵实现无向图
说明:

  • 邻接矩阵中的1代表两个顶点之间直连,0代表两个顶点之间不直连。
  • 顶点V1与顶点V0和顶点V2直连,所以邻接矩阵的第二行第一列和第三列为1。

使用邻接矩阵实现的有向图如下:

邻接矩阵实现有向图

邻接矩阵比较适合稠密图,不然会比较浪费内存。

邻接表

邻接矩阵需要为每个顶点都分配n个边的空间,其实有很多边都是不存在,会造成空间的一定损失。

邻接表的实现只关心存在的边,不关心不存在的边。因此没有空间浪费,邻接表由数组+链表组成。

使用邻接表实现的无向图如下:

邻接表实现的无向图
说明:

  • 顶点V1与顶点V0和顶点V2直连,所以顶点V1对应的链表为V0->V3。

使用邻接表实现的有向图如下:

邻接表实现有向图
更多精彩内容关注本人公众号:架构师升级之路
在这里插入图片描述


http://chatgpt.dhexx.cn/article/9HwSJML0.shtml

相关文章

2024年王道数据结构【考研全套笔记】

22年、23年数据结构大纲一致,24年大纲——>目前和23年大纲保持一致 该博客怎么食用? 大部分考408的友友,只是买了书,书上配置的免费视频是滞后2年的,非常不友好,建议在某鱼上or大学慕课正规购买&#x…

数据结构入门学习之数据结构学些什么?

在刚开始学习数据结构,我推荐一定要搞懂三个问题,这将对我们学习数据结构的帮助很大,能让我们对数据结构有一个清晰的认识,问题如下 1.学习数据结构是干嘛用的? 2.什么是数据结构? 3.数据结构要学习什么…

专升本数据结构复习

数据结构知识点总汇 主要参考书目: 程海英老师的《数据结构(C语言版)》教材严蔚敏,李冬梅,吴伟民.《数据结构(C语言版)》 推荐视频:西北大学 数据结构-耿国华老师 说…

数据结构基础

一、基本概念 1、数据 数据(Data)是描述客观事物属性的数、字符及所有能被输入到计算机中并被计算机程序识别和处理的符号的集合。 解释:数据不仅包括整型、字符型等数值类型,还包括字符及声音、图像、视频等非数值类型。 数据…

锚链接跳转

想让页面跳转到指定的地方&#xff0c;这个时候我们可以用到锚链接&#xff0c;锚链接主要有两个部分组成&#xff0c;点击的地方和跳转的地方&#xff0c;点击的地方我们用 <a> 标签&#xff0c;其 href 属性和即将跳转的标签的 id 保持一致就可以了&#xff0c;举个栗子…

Html中锚文本链接怎么写?锚文本链接有属性用法

锚文本链接的概念&#xff1a; 锚文本又称锚文本链接&#xff0c;是链接的一种方法。和超链接相似&#xff0c;超链接的代码是锚文本&#xff0c;把关键词做一个链接&#xff0c;指向其他网页&#xff0c;这种方法的链接就叫作锚文本。锚文本实际上是建立了文本关键词与URL链接…

Markdown(5):锚链接

一、外部链接 格式&#xff1a; 名称 示例: 百度 二、文内链接 格式 名称 示例: 前往测试锚点 这里的markdown图片没有意义&#xff0c;是为了隔开跳转锚点和锚点之间的位置&#xff0c;使点击锚点时明显的呈现跳转效果。 我是测试锚点 我是测试内容

创建锚点链接

如果网页内容较多&#xff0c;页面过长&#xff0c;浏览网页时就需要不断地拖动滚动条&#xff0c;来查看所需要的内容&#xff0c;这样效率较低且不方便。为了提高信息的检索速度&#xff0c;HTML语言提供了一种特殊的链接——锚点链接&#xff0c;通过创建锚点链接&#xff0…

Vue锚链接(两种方法) scrollIntoView

第一种&#xff1a;常见 锚链接&#xff0c;id和 href 结合起来 <div id"one" style"height: 300px;">第一</div> <div id"two" style"height: 300px;">第二</div><a href#one>回到第一</a> <…

Html的锚点链接

HTML中的链接&#xff0c;正确的说法应该称作"锚点"&#xff0c;它命名锚点链接(也叫书签链接)常常用于那些内容庞大繁琐的网页&#xff0c;通过点击命名锚点&#xff0c;不仅让我们能指向文档&#xff0c;还能指向页面里的特定段落&#xff0c;更能当作"精准链…

页面中的锚链接

1、锚链接 方法一 // 设置锚点链接 <a href"#miao">锚点链接</a> // 锚点 <a namemiao>锚点</a>注&#xff1a;name的属性值和锚链接的href中名一样 方法二 // 设置锚点链接 <a href"#miao">锚点链接</a> // 锚…

HTML链接(锚)

锚 使用<a>标记 有两种使用 <a> 标签的方式&#xff1a; 通过使用 href 属性 - 创建指向另一个文档的链接通过使用 name 属性 - 创建文档内的书签 这样说有点抽象&#xff0c;还是在几种实际应用中理解创建链接和创建书签的含义吧&#xff01; 实现网页之间跳…

HTML超链接、锚链接

超链接和锚链接的区别&#xff0c;就是超链接需要跳砖页面&#xff1b;锚链接不需要&#xff0c;在同一页面中跳转到某个位置。 不管是超链接&#xff0c;还是锚链接&#xff0c;都是用a元素。 超链接&#xff1a;超链接的使用就是在href中加入网址&#xff0c;如果是图片超链…

超链接 锚链接 功能性链接 块元素 行内元素

目录 超链接标签 页面间的锚链接 不同页面中的锚链接 功能性链接 行内元素和块元素 超链接标签 超链接的基本应用: 超链接包含两部分内容:1.是链接地址,可以是某个网址或文件的路径,对应为<a>标签的href属性 2. 是链接文本或图像,单击该文本或图像,将跳转到href属…

HDFS原理简图汇总

HDFS原理简图汇总 1.HDFS结构简图 2.namenode和datanode心跳机制 3.namenode元数据更新的checkpoint机制 4.hdfs写数据机制 5.hdfs读数据机制 一图胜千言&#xff0c;把文字转为图形确实可以更进一步对知识做提炼&#xff0c;如有错漏&#xff0c;欢迎大家留言指正。

Hadoop HDFS原理笔记

1&#xff1a;Hadoop家族 2&#xff1a;Hadoop的两大核心 3&#xff1a;HDFS介绍 4&#xff1a;HDFS结构 5&#xff1a;HDFS架构图 6&#xff1a;HDFS的数据存储单元&#xff08;Block&#xff09; 7&#xff1a;HDFS设计思想 8&#xff1a;NameNode&#xff08;NN&#xff0…

HDFS高级-架构原理

文章目录 1 HDFS架构剖析1.1 集群角色介绍1.2 HDFS重要特性 2 HDFS Web Interfaces2.1 模块功能解读OverviewdatanodesDatanode Volume FailuresSnapshotSatartup progressUtilitiesBrowse the file systemLogs、Log LevelConfigruation 3 HDFS读写流程3.1 HDFS写数据流程&…

(转载)深入分析HDFS原理及读写流程

一、架构体系 1.1、什么是HDFS&#xff1f; HDFS即Hadoop Distributed File System的简称&#xff0c;采用Master/Slave主从结构模型来管理数据。在设计上采用了分而治之的思想&#xff0c;将单服务器无法承受的大量的数据分布在多台服务器上。HDFS主要由Client、NameNode、Dat…

Hadoop分布式文件系统HDFS原理以及操作(一)

HDFS简介&#xff1a;活动在集群上并支持以流式数据访问模式来存取超大文件。存储设计是把海量数据部 署在价格低廉的节点上&#xff0c;具有高容错性和高吞吐量特性。HDFS的设计首要是针对超大文件存储&#xff0c;而对于小的文件访问和存储速度反而会降低。 HDFS体系结构&am…

【hadoop】HDFS原理 和 重要特性

文章目录 一、NameNode 概述二、DataNode 概述三、HDFS的工作机制三、HDFS 写数据流程四、HDFS 读数据流程五、HDFS重要特性1&#xff0e; master/slave 架构2&#xff0e; 分块存储3&#xff0e; 名字空间&#xff08;NameSpace &#xff09;4&#xff0e; Namenode 元数据管理…