IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 基本数据结构之图 -> 正文阅读

[数据结构与算法]基本数据结构之图

图是由有穷非空集合的顶点和顶点之间的边组成的集合,通常表示为G(V,E),其中G表示一个图,V是图G中顶点的集合,E是图G中边的集合。
在线性结构中,每个元素都只有一个直接前驱和直接后继,?要用来表示一对一的数据结构;在树形结构中,数据之间有着明显的父子关系,每个数据和其子节点的多个数据相关,?要用来表示一对多的数据结构;在图形结构中,数据之间具有任意关系,图中任意两个数据元素之间都可能相关,可用来表示多对多的数据结构。图根据边
的属性可分为无向图和有向图。

无向图与有向图

无向图

在这里插入图片描述

有向图:
在这里插入图片描述

邻接矩阵

我们有了图,但是在计算机里,怎么表示他们呢?

这里用到了一种邻接矩阵的方式:

无向图邻接矩阵如:

在这里插入图片描述

某一点到某一点的距离矩阵的数值表示;其中主对角线为o,因为自己到自己的距离肯定是0。

横向看某点,可以看出度。比如上图中的v1这一行有两个1,证明有两条边从v1点出去。

出度表示该点在网络中的能力,出度高的结点一般都是关键节点。

有向图邻接矩阵:

在这里插入图片描述

带权重的邻接矩阵:

在这里插入图片描述

邻接表

有了邻接矩阵,我们发现,大部分点都是0,没有什么作用。而且矩阵在计算机中占据大量内存

因此为了优化数据结构,发明出邻接表。(利用链表进行实现)

无向图邻接表

在这里插入图片描述

邻接表 是一个节点的相邻节点与之连接

比如v0 ;v0点有三个相邻节点(v1 v2 v3),那么链表就是 v0-v1-v2-v3

依次类似

有向图邻接表:

如果有权重,那么在链表节点增加一块数据域用于储存权值。
在这里插入图片描述

图的遍历

图的遍历与树的遍历差不多,分为广度优先和深度优先

通俗的说就是“雨露均沾”与“一条道走到黑”。

图的广度优先遍历如下:
广度优先遍历也叫作广度优先搜索(Breadth First Search),
类似于树的分层遍历算法,其定义为:假设从图中某个顶点V出发,在
访问了V之后依次访问V的各个未曾访问过的邻接点,然后分别从这些
邻接点出发依次访问它们的邻接点,并使先被访问的顶点的邻接点先
于后被访问的顶点的邻接点被访问,直到图中所有已被访问的顶点的
邻接点都被访问;若此时图中尚有顶点未被访问,则另选图中未曾被
访问的一个顶点作为起始点重复上述过程,直至图中所有顶点均被访
问。

在这里插入图片描述

假设从起始点V 1 开始遍历,首先访问V 1 和V 1 的邻接点V 2 和V 3 ,然后依次访问V 2 的邻接点V 4 和
V 5 ,及V 3 的邻接点V 6 和V 7 ,最后访问V 4 的邻接点V 8 ,于是得到节点的线性遍历顺序为:V 1 →V 2 →V 3 →V 4 →V 5 →V 6 →V 7 →V 8 。

图的深度优先遍历如下:
图 的 深 度 优 先 遍 历 也 叫 作 深 度 优 先 搜 索 ( Depth First
Search),类似于树的先根遍历(先访问树的根节点)。其定义如
下:
假设从图中的某个顶点V出发,在访问V节点后依次从V未被访问的
邻接点出发以深度优先的原则遍历图,直到图中所有和V节点路径连通
的顶点都被访问;若此时图中尚有顶点未被访问,则另选一个未曾访
问的顶点作为起始点重复上述过程,直至图中所有节点都被访问。
在这里插入图片描述

假设从起始点V 1 开始遍历,在访问了V 1 后选择其邻接点V 2 。因为V 2 未曾被访问,所以从V 2 出发进行深度优先遍历。依此类推,接着从V 4 、V 8 、V 5 出发进行遍历。在访问了V 5 后,由于V 5 的邻接点都被访问过,则遍历回退到V 8 。同理,继续回退到V 4 、V 2 直至V 1 ,此时V 1 的另一个邻接点V 3 未被访问,则遍历操作又 从 V 1 到 V 3 继 续 进 行 下 去 , 得 到 节 点 的 线 性 顺 序 为 :V 1 →V 2 →V 4 →V 8 →V 5 →V 3 →V 6 →V 7 。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-01-30 19:10:58  更:2022-01-30 19:11:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 17:33:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码