7.1 图的定义

image.png
图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G 表示一个图,V 是图 G 中顶点的集合,E 是图 G 中边的集合。
特点:

  • 线性表中的元素数据叫元素,树中叫结点,图中称为顶点(Vertex)。
  • 图结构中,不允许没有顶点,集合 V 为有穷非空。
  • 图中,任意两个顶点之前都可能有关系,顶点之间的逻辑关系用来表示。

    7.1.1 各种图定义

  1. 无向图:若顶点 Vi 到 Vj 之间的边没有方向,则这条边称为无向边(Edge),表示为(Vi, Vj)。如果图任意顶点的边都为无向边,则称该图为无向图(Undirected graphs)。
    下图表示为 G1 = (V1, {E1}),V1 = { A, B, C, D }; E1 = { (A, B), (B, C), (C, D), (D, A), (A, C) }**image.png
  2. 有向图:若顶点 Vi 到 Vj 之间的边有方向,则这条边称为有向边,也称为弧(Arc)。表示为 ,Vi 称为弧尾(Tail),Vj 称为弧头(Head)。如果图任意顶点之间的边都为有向边,则称为有向图(Directed graphs)。
    下图表示为 G2 = (V2, {E2}),V2 = { A, B, C, D }; E1 = { , , , }
    image.png
  3. 无向完全图:在无向图中,任意顶点之间都存在边。
    n个顶点边的数量公式为 第七章 图 - 图4
    image.png
  4. 有向完全图:在有向图中,任意顶点之间都存在互为相反的两条弧。
    n个顶点边的数量公式为 n * (n-1)。
    第七章 图 - 图6
  5. 稀疏图与稠密图:根据边的数量多少来定义,为模糊的概念。
  6. 网(Network):带权值的图称为网。
    image.png
  7. 子图:有两个图 G = (V, {E}) 和 G’ = (V’, {E’})。如果 第七章 图 - 图8第七章 图 - 图9,则称 G’ 为 G 的子图(Subgraph)。
    下图右侧为左侧的子图。
    image.png

    7.1.2 图的顶点与边之间的关系

    对于无向图:
    顶点 V 的度记作 第七章 图 - 图11
    对于 n 个顶点的无向图来说,边的数量为各个顶点之间度数和的一半,多出的一半为重复两次计数导致。数学公式为第七章 图 - 图12

对于有向图:
顶点 V 为头的弧称为入度 第七章 图 - 图13;V 为尾的弧称为出度 第七章 图 - 图14
顶点 V 的度为 第七章 图 - 图15
有向图的入度总和与出度总和相等,即 第七章 图 - 图16

路径:
无向图的路径是无方向。有向图的路径需要区分方向。
路径的长度是路径上的的数目。

环(回路):
第一个顶点到最后一个顶点相同时的路径称为回路或环(Cycle)。

7.2 图的存储结构

点击查看【bilibili】

7.2.1 邻接矩阵

7.2.2 邻接表

7.3 图的遍历

7.3.1 深度优先遍历(DFS)

7.3.2 广度优先遍历(BFS)