• 数据结构回顾
  • 图(Graph)
    • 有向图(Directed Graph)
      • 出度、入度
    • 无向图(Undirected Graph)
    • 混合图(Mixed Graph)
    • 简单图、多重图
    • 无向完全图(Undirected Complete Graph)
    • 有向完全图(Directed Complete Graph)
    • 有权图(Weighted Graph)
    • 连通图(Connected Graph)
    • 连通分量(Connected Component)
    • 强连通图(Strongly Connected Graph)
    • 强连通分量(Strongly Connected Component)
  • 图的实现方案
    • 邻接矩阵(Adjacency Matrix)
      • 邻接矩阵 – 有权图
    • 邻接表(Adjacency List)
      • 邻接表 – 有权图

数据结构回顾

回顾一下目前为止掌握的学过的数据结构。

线性结构:数组、链表、栈、队列、哈希表

树形结构:二叉树、B树、堆、Trie、哈夫曼树、并查集

图是不属于以上两类的数据结构。

图(Graph)

图由顶点(vertex)和(edge)组成,通常表示为 G = (V, E)

  • G 表示一个图,V 是顶点集,E 是边集
  • 顶点集 V 有穷且非空
  • 任意两个顶点之间都可以用边来表示它们之间的关系,边集 E 可以为空

以下都属于图。

图结构的应用极其广泛:

  • 社交网络
  • 地图导航
  • 游戏开发

有向图(Directed Graph)

有向图的边是有明确方向的:

有向无环图(Directed Acyclic Graph,简称 DAG)

  • 如果一个有向图,从任意顶点出发无法经过若干条边回到该顶点,那么它就是一个有向无环图

出度、入度

出度、入度适用于有向图

出度(Out-degree)

  • 一个顶点的出度为 x,是指有 x 条边以该顶点为起点
  • 顶点 11 的出度是 3

入度(In-degree)

  • 一个顶点的入度为 x,是指有 x 条边以该顶点为终点
  • 顶点 11 的入度是 2

无向图(Undirected Graph)

无向图的边是无方向

无向图可以通过有向图表示出来,但是有向图无法通过无向图来表示。
下面这个有向图就相当于上面的无向图。

混合图(Mixed Graph)

混合图的边可能是无向的,也可能是有向的

简单图、多重图

平行边

  • 在无向图中,关联一对顶点的无向边如果多于1条,则称这些边为平行边
  • 在有向图中,关联一对顶点的有向边如果多于1条,并且它们的的方向相同,则称这些边为平行边

多重图(Multigraph)

  • 有平行边或者有自环的图

简单图(Simple Graph)

  • 既没有平行边也不没有自环的图
  • 课程中讨论的基本都是简单图

无向完全图(Undirected Complete Graph)

无向完全图的任意两个顶点之间都存在边

  • n 个顶点的无向完全图有 n(n − 1) / 2 条边
  • (n − 1) + (n − 2) + (n − 3) + ⋯ + 3 + 2 + 1

有向完全图(Directed Complete Graph)

有向完全图的任意两个顶点之间都存在方向相反的两条边

  • n 个顶点的有向完全图有 n(n − 1) 条边

稠密图(Dense Graph):边数接近于或等于完全图
稀疏图(Sparse Graph):边数远远少于完全图

有权图(Weighted Graph)

有权图的边可以拥有权值(Weight)

连通图(Connected Graph)

如果顶点 x 和 y 之间存在可相互抵达的路径(直接或间接的路径),则称 x 和 y 是连通的

如果无向图 G 中任意 2 个顶点都是连通的,则称G为连通图

连通分量(Connected Component)

连通分量:无向图的极大连通子图

  • 连通图只有一个连通分量,即其自身
  • 非连通的无向图有多个连通分量

下面的无向图有 3 个连通分量:

强连通图(Strongly Connected Graph)

如果有向图 G 中任意2个顶点都是连通的,则称G为强连通图

强连通分量(Strongly Connected Component)

强连通分量:有向图的极大强连通子图

  • 强连通图只有一个强连通分量,即其自身;非强连通的有向图有多个强连通分量

图的实现方案

图有2种常见的实现方案:

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

邻接矩阵(Adjacency Matrix)

邻接矩阵的存储方式

  • 一维数组存放顶点信息
  • 二维数组存放边信息

邻接矩阵比较适合稠密图

  • 不然会比较浪费内存


邻接矩阵 – 有权图

邻接表(Adjacency List)



邻接表 – 有权图

【恋上数据结构】图基础知识介绍相关推荐

  1. MJ恋上数据结构(第1季 + 第2季)笔记

    文章转载自:https://blog.csdn.net/weixin_43734095/article/details/104847976 恋上数据结构完整笔记(第1季 + 第2季) 前言 数据结构 ...

  2. 【恋上数据结构与算法 第二季】【04】图-基础实现_遍历_拓扑排序

    持续学习&持续更新中- 学习态度:脚踏实地 [恋上数据结构与算法 第二季][04]图-基础实现_遍历_拓扑排序 图的实现方案 邻接矩阵 邻接表 图的基础接口 顶点.边的定义 图的基础实现 图的 ...

  3. 【恋上数据结构】复杂度知识以及LeetCode刷题指南

    基础知识 什么是算法? 如何评判一个算法的好坏? 大O表示法(Big O) 对数阶的细节 常见的复杂度 多个数据规模的情况 LeetCode刷题指南 斐波那契数列复杂度分析 斐波那契数列 - 递归 斐 ...

  4. 《恋上数据结构第1季》哈希表介绍以及从源码分析哈希值计算

    哈希表(Hash Table) 引出哈希表 哈希表(Hash Table) 哈希冲突(Hash Collision) JDK1.8的哈希冲突解决方案 哈希函数 如何生成 key 的哈希值 Intege ...

  5. 《恋上数据结构第1季》二叉树基础、真二叉树、满二叉树、完全二叉树、二叉树的遍历(重点)

    二叉树(Binary Tree) 树(Tree)的基本概念 有序树.无序树.森林 二叉树(Binary Tree) 二叉树的性质 真二叉树(Proper Binary Tree) 满二叉树(Full ...

  6. 【恋上数据结构】排序算法前置知识及代码环境准备

    排序准备工作 何为排序? 何为稳定性? 何为原地算法? 时间复杂度的知识 写排序算法前的准备 项目结构 Sort.java Asserts.java Integers.java Times.java ...

  7. 《恋上数据结构与算法》第1季:算法概述

    数据结构与算法的学习笔记目录:<恋上数据结构与算法>的学习笔记 目录索引 算法概述 1. 算法和数据结构 1.1 什么是算法 1.2 什么是数据结构 2. 时间复杂度 2.1 如何判断一个 ...

  8. OpenGL开发之旅基础知识介绍

    最近由于手机项目中需要用到OpenGL ES的知识,所以这段时间正在研究OpenGL的相关知识.因为OpenGL ES是OpenGL的剪裁版本,所以我直接从OpenGL入手,然后再去看OpenGL E ...

  9. 【恋上数据结构】跳表(Skip List)原理及实现

    跳表(Skip List) 引出跳表 跳表介绍 跳表原理及实现 使用跳表优化链表 跳表基础结构 跳表的搜索 跳表的添加.删除 跳表的层数 跳表的复杂度分析 跳表 - 完整源码 数据结构与算法笔记:恋上 ...

最新文章

  1. URAL 2027 URCAPL, Episode 1 (模拟)
  2. python画折线图代码-Python折线图的分析过程和画图的方法
  3. nginx-http服务器
  4. idea 配置多个jdk
  5. 传统的http请求存在那些缺点
  6. python中bytes转int的实例
  7. 语音合成:模拟最像人类声音的系统
  8. 架构之:REST和HATEOAS
  9. ConstraintLayout 学习笔记
  10. CAMERA(12)---[Android相机]光线传感器识别环境光亮强度
  11. 翻车事故频发,原来是开发者漏了这一步!
  12. druid 连接池的释放 配合上spring bean销毁_spring boot基于DRUID数据源密码加密及数据源监控实现...
  13. Atitit 高性能架构之道 attilax著 艾龙 著 1. 应用服务与数据隔离 2 2. 负载均衡你问题 2 2.1. 用户的请求由谁来转发到到具体的应用服务器 2 2.2. 有什么转发的算法
  14. 如何按页进行PDF文档拆分
  15. 学习记录 | ZigBee协议栈工作流程
  16. 【MATLAB】修改黑色炫酷主题darcula.prf
  17. 文件服务器文件删除记录查询,Windows server2008r2共享文件操作记录、查询服务器日志方法...
  18. strongbox-数论
  19. MACD金叉启动副图/选股指标 通达信 源码 有未来
  20. exp参数feedback_exp/imp命令详解

热门文章

  1. 现在最简单的赚钱套路
  2. 怎么玩转你现在的圈子?
  3. 为什么现在电脑基本没有病毒了?
  4. QFileInfoList
  5. SQL Server中的表变量
  6. sql server 缓存_搜索SQL Server查询计划缓存
  7. SQL Server商业智能功能–创建简单的OLAP多维数据集
  8. JQuery插件,轻量级表单模型验证
  9. strcore.cpp(156) 内存泄漏
  10. MySQL(三) —— 约束以及修改数据表