本次笔记内容:
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】图的定义,图的表示:邻接矩阵与邻接表相关推荐

  1. 图的两种存储方式---邻接矩阵和邻接表

    图:图是一种数据结构,由顶点的有穷非空集合和顶点之间边的集合组成,表示为G(V,E),V表示为顶点的集 合,E表示为边的集合. 首先肯定是要对图进行存储,然后进行一系列的操作,下面对图的两种存储方式邻 ...

  2. 图的创建(详解邻接矩阵和邻接表)

    首先,我们来看一下涉及的知识点: 图:图 G=(V,E) 由顶点集 V 和边集 E 组成.每条边对应一个点对 (v,w),其中 v,w 属于 V .如果图中的点对是有序的,那么该图就是有向图,反之为无 ...

  3. 图的基本算法实现(邻接矩阵与邻接表两种方法)

    本博客前面文章已对图有过简单的介绍,本文主要是重点介绍有关图的一些具体操作与应用 阅读本文前,可以先参考本博客 各种基本算法实现小结(四)-- 图及其遍历 一.无向图 1 无向图--邻接矩阵 测试环境 ...

  4. 数据结构笔记(二十七)-- 图的深度优先遍历

    图的深度优先遍历 一.图遍历定义 图的遍历是指从图的某个顶点出发遍历图,访遍图中其余顶点,并且使图中的每个顶点仅被访问一次的过程 二.深度优先遍历的思想 三.深度优先遍历举例 四.伪代码

  5. 【数据结构】图的存储结构(邻接矩阵、邻接表、十字链表、邻接多重表)及实现(C语言)

    目录 1. 邻接矩阵表示法 1.1 图的邻接矩阵 1.2 创建有向网的邻接矩阵 2. 邻接表表示法 2.1 图的邻接表存储结构 2.2 创建有向图的邻接表 3. 十字链表表示法 3.1 图的十字链表存 ...

  6. 一、图的定义,邻接矩阵和邻接表的实现

    目录 一.初识图 (1)图的定义 (2)图的分类 二.图的存储结构 (1)邻接矩阵 (2)邻接表(无向图) (3)其他 一.初识图 (1)图的定义 图(Graph)是由顶点的有穷非空集合(必须存在顶点 ...

  7. 将图的广度优先遍历在邻接矩阵和邻接表存储结构上分别实现_图解:什么是“图”?

    从今天开始,我们开始介绍图的相关算法 什么是"图" 1.背景 作为图的开始,我们先来看一个经典的问题,它被认为是图论的起源. 这个问题是基于一个现实生活中的事例:河中心有两个小岛. ...

  8. 图的存储结构(邻接矩阵和邻接表)

    图的存储结构(邻接矩阵和邻接表) 前言: 前面我们学习图的有些定义和术语,对图这个数据结构有了新的见解和认知,让我们理解图结构的知识,今天我们学习图的存储结构,图的存储结构比较多,我们今天主要是学习邻 ...

  9. 图的深度优先搜索和广度优先搜索(邻接表) - Java实现

    文章目录 前言 1.什么是图? 2.图如何表示? 3.如何创建一个邻接表 一.深度优先搜索(Depth First Search) 二.广度优先搜索(Breadth First Search) 三.寻 ...

  10. 图的两种存储形式(邻接矩阵、邻接表)

    图可以使用两种存储结构,分别是邻接矩阵和邻接表. 注意:一个图所对应的邻接矩阵唯一,所对应的邻接表不唯一 一.邻接矩阵 邻接矩阵以矩阵的形式存储图所有顶点间的关系.邻接矩阵具有以下特点: 1.邻接矩阵 ...

最新文章

  1. Spring整合JMS(四)——事务管理
  2. Spring Boot 启动可以有多快?
  3. java.lang.NoClassDefFoundError: org/apache/tomcat/util/res/StringManager
  4. SQL server触发器中 update insert delete 分别给写个例子被。
  5. 谁知道这个代码片段干嘛的
  6. 【计算机网络复习 数据链路层】3.6.1 局域网
  7. linux nfs挂载域名,Linux系统挂载NFS的方法
  8. 爱奇艺全国高校算法大赛初赛A
  9. CICD详解(三)——SVN基本概念
  10. 淘宝类目批量查询工具v1.0 发布
  11. Laravel框架安装
  12. MTK Android GT928触摸屏驱动客制化触摸的开关
  13. 公务员 or 996 ?
  14. Python绘图实例3:正八边形绘制
  15. 计算机项目教学法探讨,基于项目教学法的非计算机专业计算机教学的设计和探讨...
  16. 重置ubuntu密码
  17. 【语音隐藏】基于matlab小波变换DWT结合离散余弦变换DCT音频数字水印嵌入提取【含Matlab源码 2131期】
  18. 人本是猴子,该七十二变
  19. 4.1-知识图谱在金融领域中的应用实践
  20. firemonkey 点击任务栏图标不能最小化

热门文章

  1. Ubuntu 16.04下用Wine运行的软件出现方块的解决思路(应该是兼容现在所有平台的Wine碰到这个的问题)
  2. canvas+howler.js 解决同页面视频、音频同时播放问题
  3. linux中忘记mysql用户root密码解决方案
  4. zsh: command not found: 解决方法
  5. 如何在javascript中解析带有两个小数位的浮点数?
  6. 获取文件夹中所有文件的文件名[重复]
  7. 如何知道对象在Python中是否具有属性
  8. 如何使用Bash将stdout和stderr重定向并附加到文件?
  9. Win10出现跟这台计算机连接的一个usb设备运行不正常怎么办
  10. Win11如何自动关机 windows11自动关机的设置方法