【数据结构与算法】第十六篇:图论(基础篇)

知识导航

  • 图形结构的引进
  • 图(Grapth)
    • 1.图的概念与应用
    • 2.有向图
      • 入度,出度
    • 3.无向图
    • 4.完全图
      • 无向完全图
      • 有向完全图
    • 5.连通图
    • 6.连通分量
      • 强连通分量
  • 图的实现方案
    • 1.邻接矩阵实现法
    • 2.邻接表实现法
    • 3.两种方法对比分析


图形结构的引进

数据结构包括物理结构和逻辑结构,其中逻辑结构又包括线性结构和非线性结构,树,图都属于非线性结构。
【数据结构与算法】第十六篇:图论(基础篇)_第1张图片

图(Grapth)

1.图的概念与应用

◼ 图由顶点(vertex)和边(edge)组成,通常表示为 G = (V, E)
G表示一个图,V是顶点集,E是边集
顶点集V有穷且非空
任意两个顶点之间都可以用边来表示它们之间的关系,边集E可以是空的
【数据结构与算法】第十六篇:图论(基础篇)_第2张图片

图的应用
【数据结构与算法】第十六篇:图论(基础篇)_第3张图片

2.有向图

◼ 有向图的边是有明确方向的
【数据结构与算法】第十六篇:图论(基础篇)_第4张图片
◼ 有向无环图(Directed Acyclic Graph,简称 DAG)
如果一个有向图,从任意顶点出发无法经过若干条边回到该顶点,那么它就是一个有向无环图
【数据结构与算法】第十六篇:图论(基础篇)_第5张图片

入度,出度

◼ 出度、入度适用于有向图
◼ 出度(Out-degree)
一个顶点的出度为 x,是指有 x 条边以该顶点为起点
顶点11的出度是3
◼ 入度(In-degree)
一个顶点的入度为 x,是指有 x 条边以该顶点为终点
顶点11的入度是2
【数据结构与算法】第十六篇:图论(基础篇)_第6张图片

3.无向图

◼ 无向图的边是无方向的
类似于双向有向图
【数据结构与算法】第十六篇:图论(基础篇)_第7张图片

4.完全图

无向完全图

无向完全图的任意两个顶点之间都存在边
n 个顶点的无向完全图有 n(n − 1)/2 条边
✓ n − 1 + n − 2 + n − 3 + ⋯+ 3 + 2 + 1
【数据结构与算法】第十六篇:图论(基础篇)_第8张图片

有向完全图

◼ 有向完全图的任意两个顶点之间都存在方向相反的两条边
n 个顶点的有向完全图有 n(n − 1) 条边
【数据结构与算法】第十六篇:图论(基础篇)_第9张图片稠密图:边数大于等于完全图
稀疏图:边数远远小于完全图

5.连通图

◼ 如果顶点 x 和 y 之间存在可相互抵达的路径(直接或间接的路径),则称 x 和 y 是连通的(任意两个节点之间都有相互抵达的路径)
◼ 如果无向图 G 中任意2个顶点都是连通的,则称G为连通图
【数据结构与算法】第十六篇:图论(基础篇)_第10张图片强连通图
如果一张图即使连通图又是有向图则他是强连通图
【数据结构与算法】第十六篇:图论(基础篇)_第11张图片

6.连通分量

连通分量:无向图的极大连通子图
◼连通图只有一个连通分量,即其自身;非连通的无向图有多个连通分量
◼ 下面的无向图有3个连通分量

【数据结构与算法】第十六篇:图论(基础篇)_第12张图片

强连通分量

强连通分量:有向图的极大强连通子图
强连通图只有一个强连通分量,即其自身;非强连通的有向图有多个强连通分量
【数据结构与算法】第十六篇:图论(基础篇)_第13张图片

图的实现方案

1.邻接矩阵实现法

◼ 邻接矩阵的存储方式
一维数组存放顶点信息
二维数组存放边信息
如果两个顶点之间存在边则填写1,否则则填写0
【数据结构与算法】第十六篇:图论(基础篇)_第14张图片【数据结构与算法】第十六篇:图论(基础篇)_第15张图片

◼ 邻接矩阵比较适合稠密图(因为 0)
不然会比较浪费内存

2.邻接表实现法

用一维数组链上链表的形式进行存储
【数据结构与算法】第十六篇:图论(基础篇)_第16张图片

3.两种方法对比分析

【数据结构与算法】第十六篇:图论(基础篇)_第17张图片

【数据结构与算法】第十六篇:图论(基础篇)_第18张图片

你可能感兴趣的:(数据结构与算法,图论,算法,数据结构)