当前位置: 首页 > news >正文

《考研408数据结构》第七章(6.1~6.3图的概念、存储方式、深/广度遍历)复习笔记

一、图的定义

【基本概念】

1、【无向图】、【有向图】、【简单图 和 多重图】

  • 【无向图】
  • 【有向图】
  • 【简单图 和 多重图】

2、【子图】、【生成子图】

只要记住:

  • 【子图】含部分顶点、【生成子图】含全部顶点
  • 然后它两可以没有一些边,但绝对不能有【空边(没有顶点可以指向)】

3、【顶点的度】、【路径】

  • 【顶点的度】
  • 【路径】、【回路】、【路径长度】
    • 一点到另一点的【路径】起码得有边!!!(想象实际生活:你A岛 到 B岛都没修路,哪来的路径?)
      • 无向图,A点到B点只要有边,A,B、B,A都算路径;
      • 而有向图,路径只能和边的方向一样,<A,B>的路径只有A,B
    • 【回路】就是这条路径【开头=结尾】,也就是【起点绕了一圈回到自己】
    • 【路径长度】和【点到点距离】
      • 【路径长度】顾名思义,起点到终点所经过几条边
      • 【距离】就是取两点【最短路径】【没有路径】就取【无穷
【连通、连通图、连通分量】
  • 【连通、连通图、连通分量】概念全部对应【无向图】
  • 【强连通、强连通图、强连通分量】概念全部对应【有向图】

  • 1、具体【连通】和【强连通】概念
  • 2、【连通图】和【强连通图】概念
    • 注意【连通图最少边】、【非连通图最多边】计算
    • 【强连通图最少边】计算                             
  • 3、【连通分量】和【强连通分量】

【生成树】、【生成森林】

  • 【生成树】就是【极小连通图】
  • 其实【生成树 的 边数】就和前面学得【连通图的最少边情况】一样
    • 这样的实际意义就可以理解为:一个城乡修建道路图,有这么多种修路方案,每个修路方案都保证只用修最少的路就能让各个地点连通,在这基础上加上权值的话,就可以选出最优方案了
  • 【生成森林】就是【各个连通分量——>变成生成树】
【边的权、网、带权路径长度】

【几种特殊形态的图】
  • 【完全图】
  • 【稀疏图 和 稠密图】
  • 【树 和 有向树】

二、图的存储方式种类

1、邻接矩阵法(最常考)

  • 1、先了解【无向图】和【有向图】怎么用【邻接矩阵】表示(写法)
    • 注意代码可以看一眼就行,以后要练大题的话再专门学一下就行
  • 2、邻接矩阵【查一个顶点的度】
    • 【无向图】:该顶点的1行或1列的非零元素个数;
    • 【有向图】:【入度】是1列的非零元素;【出度】是1行的非零元素
      • 【时间复杂度】O(n)O(|V|)
  • 3、邻接矩阵的【空间复杂度】O(n^2)
  • 4、【带权图(网)】的邻接矩阵表示:就是标上了确切数值,而不只是0、1
  • 5、(不常考)还有一种邻接矩阵是【A[i][j]^n】
    • 【n】就是表示这个邻接矩阵里,记录的【值1】表示【这两点的路径是n】
    • 记录的【值0】表示【这两点的路径不是n】或【这两点没有边】

【记忆特点】

  • 邻接矩阵使用的是【顺序存储】(一维数组、二维数组)
  • 空间复杂度高:O(n^2)
    • 而且【空间跟 “边” 没有关系!!!
    • (注意区分:时间复杂度是O(n)
    • 不适合存储【稀疏图】、适合【稠密图】
      • 大量顶点之间没有边,却还要用【0 或 无穷】来存储,占用空间
  • 而且【增加 / 删除节点】麻烦!!!需要修改整个矩阵结构

2、邻接表法(次常考)

  • 1、先了解【无向图】和【有向图】怎么用【邻接表】表示(写法)
    • 注意代码可以看一眼就行,以后要练大题的话再专门学一下就行
    • 另外这个图可以结合《计网第4章:路由算法》的迪杰斯特拉算法,一样的表示
  • 2、邻接表的【空间复杂度】
    • 无向图:O(|V| + 2|E|)
    • 有向图:O(|V| + |E|)
  • 3、邻接表【查一个顶点的度】
    • 【无向图】:遍历该顶点后的【边链表节点】;
    • 【有向图】:
      • 【出度】是遍历该顶点的【边链表节点】
      • 【入度】是遍历整个【顶点链表】,再把每个节点的【边链表节点】都遍历,找有没有【谁的边节点】是【自己】
  • 4、重要!!!
    • 【邻接表】表示形式不唯一!!!边链表的节点顺序不唯一!!!
    • 【邻接矩阵】表示形式唯一!!!只有一种形式!!!

【记忆特点】

  • 邻接表使用的是【链式存储】(单链表)
  • 空间复杂度低:无向O(|V| + 2|E|)、有向O(|V| + |E|)
    • 适合存储【稀疏图】
  • 【出度方便】、【入度麻烦】!!!!

3、十字链表法(不常考,时间紧的可以略看一眼)

【记住】:

  • 1、表示的是【有向图】!!!!!!!!!!!!!!
  • 2、它的每个顶点节点后面的单链表,指的是【顶点的出弧表】!!!
    • 可以发现每个顶点后的【弧链表】每个节点的【头】,都是【此顶点】
    • 表示的意思:这就是【这个顶点】的【出度的弧】
    • 比如:V1的编号0,他出去的弧有<V1, V2>(0 , 1)<V1, V3>(0 , 2)
  • 3、每个顶点的第二格指【该顶点的入弧】
    • 只需要把【弧节点表】的节点里,【第二格】是【该顶点】的全连起来就行
    • 比如:图片里我用颜色标注了,同颜色的都连起来了,连这些节点的编号,都是同一顶点

4、邻接多重表法(不常考,时间紧的可以略看一眼)

【记住】:

  • 1、表示的是【无向图】!!!!!!!!!!!!!!
  • 2、它的每个顶点节点后面的单链表,指的是【连了该顶点的边】!!!
    • 可以发现每个顶点后的【边链表】每个节点的【头】,都是【此顶点】
    • 表示的意思:这就是连着【这个顶点】的【边】
    • 比如:V1的编号0,他出去的弧有<V1, V2>(0 , 1)<V1, V4>(0 , 3)
  • 3、剩下所有节点的【空格】只要前面编号一样,都连起来
    • 比如:图片里我用颜色标注了,同颜色的都连起来了,连这些节点的编号,都是同一顶点

5、总结(各个存储方式对比)

三、图的操作

理解一下就行,黄色部分记住,大题选择题都会用到

四、图的遍历

1、广度搜索优先(BFS)

带入【树的层序遍历】来理解【图的广度优先搜索】

就是:每次都把一个顶点的邻近的点都遍历一遍,再到下一个顶点

  • 1、具体怎么做?核心就三步:(和树层序遍历一样,要借助队列)
  • 2、【空间复杂度】
  • 3、【时间复杂度】
    • 【邻接矩阵】形式存储的【时间复杂度】
    • 【邻接表】形式存储的【时间复杂度】
  • 4、【广度优先生成树】
    • 要记住【邻接矩阵】和【邻接表】两种存储方式的区别,前面讲过的
  • 5、【广度优先生成森林】
    • ​​​​​​​简单看一下,理解就行

【总结】

2、深度搜索优先(DFS)

3、图的遍历、图的流通性

类似树的【先根遍历】

未完待续。。。。

http://www.dtcms.com/a/545726.html

相关文章:

  • 解决Nacos 2.+版本集群启动报错问题
  • Rust 异步取消(Cancellation)策略:从原理到实践的深度解析
  • 湘潭网站建设 磐石网络优质wordpress .mo文件编辑
  • Spring Boot 框架开发 REST API 接口实践
  • 邓州网站优化新手代理怎么找客源
  • 重庆网站优化网站怎样自己不花钱在电脑上做网页
  • Python驱动的无人机生态三维建模与碳储/生物量/LULC估算全流程实战技术
  • 怎么帮客户做网站建站宠物网站开发与实现结论
  • NTP与RTC两者优先级
  • 【GitLab/CI】前端 CI
  • 做教育行业网站如何利用织梦cms做企业网站
  • 【开题答辩全过程】以 儿童游泳预约系统为例,包含答辩的问题和答案
  • 《Vue项目开发实战》第一章:项目环境配置
  • 外贸管理网站模板wordpress评论邮箱
  • 基于Python Web的大数据系统监控平台的设计与实现
  • 哈尔滨企业展示型网站建设专业做营销网站建设
  • 手机网站相册代码wordpress二维码 插件下载
  • 基于电鱼 ARM 工控机的AI视频智能分析方案:让传统监控变得更聪明
  • 邢台哪儿能做网站成都有什么好玩的吗
  • Ansible自动化部署ECS与Nginx全流程
  • 架构论文《论软件测试理论及其应用》
  • .net 8压榨rabbitMq性能
  • 关于jupyter notebook调用GPU
  • 网站的建设课程做网站的实训报告
  • 商业网站的设计与推广系统湖南做网站
  • Adobe Lightroom Classic下载与安装教程(附安装包) 2025最新版详细图文安装教程
  • 仓颉语言赋能鸿蒙应用开发:UI主题样式定制的深度实践
  • 什么是 Adobe Experience Platform (AEP)?
  • 男孩子怎么做网站推广查询域名是否备案?
  • 帝国cms 关闭网站企业管理咨询心得体会