【数据结构笔记20】图的定义,图的表示:邻接矩阵与邻接表
本次笔记内容:
6.1.1 什么是图 - 定义
6.1.2 什么是图 - 邻接矩阵表示法
6.1.3 什么是图 - 邻接表表示法
文章目录
- 图的定义
- 线性表与树可看做图的特殊实例
- 图包含
- 抽象数据类型定义
- 常见术语
- 在程序中表示图
- 邻接矩阵
- 存储无向图,如何节省一半空间?
- 邻接矩阵优点
- 临界矩阵缺点
- 邻接表
- 邻接表特点
图的定义
线性表与树可看做图的特殊实例
图(Graph)表示“多对多”的关系:
- 线性表表示“一对一”的关系;
- 树表示“一对多”的关系。
图包含
- 一组定点:通常用V(Vertex)表示顶点集合;
- 一组边:通常用E(Edge)表示边的集合;
- 边是顶点对:(v,w)∈E,其中v,w属于V;
- 有向边<v,w>表示从v指向w的边(单行线);
- 不考虑重边和自回路。
抽象数据类型定义
如上图,图的操作集很庞大,这里只提几个常用的。
常见术语
- 无向图与有向图;
- 带权重的路径:网络;
- 具体术语应用时再说。
在程序中表示图
邻接矩阵
如上图,邻接矩阵规律如下:
- 对角元全部设为0;
- 矩阵是对称的。
存储无向图,如何节省一半空间?
如上图,用一维数组只存下三角的元素。
邻接矩阵优点
- 直观简单;
- 方便检查任意一对顶点间是否存在边;
- 方便找任意顶点的所有“邻接点”(有边直接相连的顶点);
- 方便计算任一顶点的“度”(从该点发出的边数为“出度”,指向该点的边数为“入度”):
- 无向图:对应行(或列)非0元素的个数;
- 有向图:对应行非0元素的个数是“出度”;对应列非0元素的个数是“入度”。
临界矩阵缺点
- 浪费空间:存稀疏图(点很多而边很少)有大量无效元素;
- 浪费时间:统计稀疏图中一共有多少条边。
邻接表
邻接表的表示不唯一,因为每个链表中顺序不唯一。但是上图的方法中,并不很省空间,而且对于网络来说,结构中还要增加表示权重的域。
因此,一定要够稀疏才用邻接表。
邻接表特点
- 方便查找任一顶点的所有“邻接点”;
- 节省稀疏图的空间:
- 邻接表需要N个头指针+2E个结点(每个结点至少2个域);
- 方便计算任一顶点的“度”么?
- 对于无向图:是的;
- 对于有向图:只能计算“出度”,需要构造“逆邻接表”(存指向自己的边)来方便计算“入度”;
- 方便检查任意一对顶点间存在边么?
- 不方便。
还有很多表示图的方法,应用取决于具体问题。
【数据结构笔记20】图的定义,图的表示:邻接矩阵与邻接表相关推荐
- 图的两种存储方式---邻接矩阵和邻接表
图:图是一种数据结构,由顶点的有穷非空集合和顶点之间边的集合组成,表示为G(V,E),V表示为顶点的集 合,E表示为边的集合. 首先肯定是要对图进行存储,然后进行一系列的操作,下面对图的两种存储方式邻 ...
- 图的创建(详解邻接矩阵和邻接表)
首先,我们来看一下涉及的知识点: 图:图 G=(V,E) 由顶点集 V 和边集 E 组成.每条边对应一个点对 (v,w),其中 v,w 属于 V .如果图中的点对是有序的,那么该图就是有向图,反之为无 ...
- 图的基本算法实现(邻接矩阵与邻接表两种方法)
本博客前面文章已对图有过简单的介绍,本文主要是重点介绍有关图的一些具体操作与应用 阅读本文前,可以先参考本博客 各种基本算法实现小结(四)-- 图及其遍历 一.无向图 1 无向图--邻接矩阵 测试环境 ...
- 数据结构笔记(二十七)-- 图的深度优先遍历
图的深度优先遍历 一.图遍历定义 图的遍历是指从图的某个顶点出发遍历图,访遍图中其余顶点,并且使图中的每个顶点仅被访问一次的过程 二.深度优先遍历的思想 三.深度优先遍历举例 四.伪代码
- 【数据结构】图的存储结构(邻接矩阵、邻接表、十字链表、邻接多重表)及实现(C语言)
目录 1. 邻接矩阵表示法 1.1 图的邻接矩阵 1.2 创建有向网的邻接矩阵 2. 邻接表表示法 2.1 图的邻接表存储结构 2.2 创建有向图的邻接表 3. 十字链表表示法 3.1 图的十字链表存 ...
- 一、图的定义,邻接矩阵和邻接表的实现
目录 一.初识图 (1)图的定义 (2)图的分类 二.图的存储结构 (1)邻接矩阵 (2)邻接表(无向图) (3)其他 一.初识图 (1)图的定义 图(Graph)是由顶点的有穷非空集合(必须存在顶点 ...
- 将图的广度优先遍历在邻接矩阵和邻接表存储结构上分别实现_图解:什么是“图”?
从今天开始,我们开始介绍图的相关算法 什么是"图" 1.背景 作为图的开始,我们先来看一个经典的问题,它被认为是图论的起源. 这个问题是基于一个现实生活中的事例:河中心有两个小岛. ...
- 图的存储结构(邻接矩阵和邻接表)
图的存储结构(邻接矩阵和邻接表) 前言: 前面我们学习图的有些定义和术语,对图这个数据结构有了新的见解和认知,让我们理解图结构的知识,今天我们学习图的存储结构,图的存储结构比较多,我们今天主要是学习邻 ...
- 图的深度优先搜索和广度优先搜索(邻接表) - Java实现
文章目录 前言 1.什么是图? 2.图如何表示? 3.如何创建一个邻接表 一.深度优先搜索(Depth First Search) 二.广度优先搜索(Breadth First Search) 三.寻 ...
- 图的两种存储形式(邻接矩阵、邻接表)
图可以使用两种存储结构,分别是邻接矩阵和邻接表. 注意:一个图所对应的邻接矩阵唯一,所对应的邻接表不唯一 一.邻接矩阵 邻接矩阵以矩阵的形式存储图所有顶点间的关系.邻接矩阵具有以下特点: 1.邻接矩阵 ...
最新文章
- Spring整合JMS(四)——事务管理
- Spring Boot 启动可以有多快?
- java.lang.NoClassDefFoundError: org/apache/tomcat/util/res/StringManager
- SQL server触发器中 update insert delete 分别给写个例子被。
- 谁知道这个代码片段干嘛的
- 【计算机网络复习 数据链路层】3.6.1 局域网
- linux nfs挂载域名,Linux系统挂载NFS的方法
- 爱奇艺全国高校算法大赛初赛A
- CICD详解(三)——SVN基本概念
- 淘宝类目批量查询工具v1.0 发布
- Laravel框架安装
- MTK Android GT928触摸屏驱动客制化触摸的开关
- 公务员 or 996 ?
- Python绘图实例3:正八边形绘制
- 计算机项目教学法探讨,基于项目教学法的非计算机专业计算机教学的设计和探讨...
- 重置ubuntu密码
- 【语音隐藏】基于matlab小波变换DWT结合离散余弦变换DCT音频数字水印嵌入提取【含Matlab源码 2131期】
- 人本是猴子,该七十二变
- 4.1-知识图谱在金融领域中的应用实践
- firemonkey 点击任务栏图标不能最小化
热门文章
- Ubuntu 16.04下用Wine运行的软件出现方块的解决思路(应该是兼容现在所有平台的Wine碰到这个的问题)
- canvas+howler.js 解决同页面视频、音频同时播放问题
- linux中忘记mysql用户root密码解决方案
- zsh: command not found: 解决方法
- 如何在javascript中解析带有两个小数位的浮点数?
- 获取文件夹中所有文件的文件名[重复]
- 如何知道对象在Python中是否具有属性
- 如何使用Bash将stdout和stderr重定向并附加到文件?
- Win10出现跟这台计算机连接的一个usb设备运行不正常怎么办
- Win11如何自动关机 windows11自动关机的设置方法