离散数学笔记-图论

Author Deed9189
6.8k
23 mins
26/06/15

Summary

  • 图的基本概念
    1. 通路与回路
    2. 图的连通性
    3. 图的矩阵表示
  • 欧拉图与汉密尔顿图
  • 平面图

一. 图的基本概念

1) 图

  • 图是由顶点和边组成的数学结构,用于表示对象之间的关系。图可以是有向的或无向的,边可以带权重或不带权重。

  • 对于有向图或无向图,均用二元组 表示,其中 为顶点集合, 为边集合。

  • 其中,对于边,无向边使用 表示,其中 为两个端点,顺序可调换;
    有向边使用笛卡尔积 表示,即 ,其中 表示从 指向 的矢量,顺序不可调换。

  • 图的,指图中顶点的个数。 个顶点的图即称作 阶图。
    (零图:没有边的图;平凡图:1阶零图)

  • 无向图的关联和相邻: 如图G1所示。

    • 关联:
      对于边 ,称 相关联,且由于 不相同,关联次数为1。
      假设一自反关系 定义在图G1上,则称 相关联,且关联次数为2。同理, 的关联次数为0,即不关联。
    • 相邻:
      对于任意有公共边的点,如 ,称它们相邻。
      对于任意有公共端点的边,如 ,称它们相邻。
graph subgraph G1 direction LR v1((v1)) v2((v2)) v3((v3)) v4((v4)) v5((v5)) v1 ---|e1| v2 v1 ---|e2| v1 v1 ---|e3| v2 v1 ---|e4| v3 v3 ---|e5| v4 end
  • 有向图的端点、关联和相邻: 如图D1所示。
    • 端点: 对于有向边 ,称 为始点, 为终点。
    • 关联和相邻原理与无向图同理。
graph subgraph D1 direction LR v1((v1)) v2((v2)) v3((v3)) v4((v4)) v1 -->|e1| v2 v4 -->|e2| v1 v2 -->|e3| v4 v4 -->|e4| v2 v2 -->|e5| v3 end
  • 无向图的度数(度):顶点 作为无向边的端点的次数,记作
    • 如图G1,,
  • 有向图的度数:
    • 入度:顶点 作为有向边的终点的次数,记作
    • 出度:顶点 作为有向边的始点的次数,记作
    • 如图D2,
graph subgraph D2 direction LR v1((v1)) v2((v2)) v3((v3)) v4((v4)) v1 --> v2 & v2 & v3 v2 --> v3 v3 --> v4 v4 --> v4 & v3 end
  • 握手定理

    • 无向图:
    • 有向图:
    • 推论:
      • 任何图中,奇度顶点的个数是偶数
        (原因:每条边都会贡献两次度数,因此所有度数的和必为偶数,所以奇度顶点的个数必须是偶数,否则矛盾)
      • + =
    • e.g
      已知阶无向图中有条边,各个顶点的度数均为,又已知, 则
      解析:
  • 度数列:

    • 阶无向图:
    • 阶有向图:
      • 入度列:
      • 出度列:
    • e.g.
      • 一个三阶有向图的度序列是, 入度序列是,则出度序列是
    • 非负整数列是可图化的,当且仅当为偶数;
    • 非负整数列简单可图化的,当且仅当:
      • 1.为偶数
      • 2.

        (注:最大度,最小度
  • 无向完全图:设阶无向简单图,若中每个顶点均与其余的个顶点相邻,则称为无向完全图,记作
    阶无向完全图的边的条数为


2) 通路与回路

  • 通路:对于无向图中G中的顶点与边的交替序列,若,则称为回路。
    对于图是一个回路。

3) 图的连通性

  • 设无向图,若之间存在通路,则称连通的,记作
    若无向图是平凡图或中任意两个顶点都是连通的,则称是连通图。

  • 在有向图中,对于,若从存在通路,则称可达,记作。若在此基础上,从也存在通路,则称是相互可达的。规定

  • 对于有向图

    • 强连通图:
    • 单向连通图:
    • 弱连通图: 在略去有向边后得到的无向图是连通的。

4) 图的矩阵表示

  • 对于无向图, 令之间的边的条数,则称矩阵为图的关联矩阵。

<aigc>

  • 其他常用的图的矩阵表示:

    • 邻接矩阵(Adjacency matrix):对于简单无向图,定义,其中 a{ij}=\begin{cases}1,&\text{若 }(vi,v_j)\in E\0,&\text{否则}\end{cases} 对于有向图,为非对称矩阵;对于带权图,可取为对应边的权值。

    • 关联矩阵(Incidence matrix):对于无向图,令,顶点为行、边为列,若边与顶点关联则(环可计为2),否则为0。对于有向图可将入、出端用-1、+1标记。

    • 度矩阵(Degree matrix):对角矩阵,常与邻接矩阵一起用于构造拉普拉斯矩阵。

    • 拉普拉斯矩阵(Graph Laplacian):定义为,其中为度矩阵,为邻接矩阵。为对称半正定矩阵,零特征值的重数等于连通分支数,可用于研究图的谱性质、连通性与随机游走。

    • 归一化拉普拉斯矩阵(Normalized Laplacian):一种常用形式为,便于处理度异质性的图谱分析。

    这些矩阵在图论的算法与谱图理论中广泛使用,用于表示结构、计算最短路、连通分量、谱聚类等。

</aigc>


二. 欧拉图与 汉密尔顿 哈密顿图

1) 欧拉图

  • 欧拉通路:通过图中所有一次,且仅通过一次的通路。
  • 欧拉回路:定义相同的回路
  • 欧拉图:具有欧拉回路的图
  • 半欧拉图:具有欧拉通路但不具有欧拉回路的图

    • 无向图是欧拉图,当且仅当是连通图且为偶数
    • 有向图是欧拉图,当且仅当D为强连通图,且

    2) 哈密顿图

  • 哈密顿通路:经过图中所有顶点一次,且仅经过一次的通路。
  • 哈密顿回路:定义相同的回路
  • 哈密顿图:具有哈密顿回路的图
  • 半哈密顿图:具有哈密顿通路但不具有哈密顿回路的图
    • 充分条件:
      • 阶无向简单图,若, 则G中存在哈密顿通路
      • 阶简单无向图,若,则中存在哈密顿回路

3) 最短路问题

  • 权和带权图:
graph subgraph W1 direction LR v1((v1)) v2((v2)) v3((v3)) v4((v4)) v5((v5)) v6((v6)) v1 ---|1| v2 v3 ---|1| v5 v2 ---|2| v3 v4 ---|2| v6 v4 ---|3| v5 v1 ---|4| v3 v2 ---|5| v5 v5 ---|6| v6 v2 ---|7| v4 end
  • 称图为带权图,其中为权集,为边的权值。

  • 最短路径:在带权图中,时,从长度权的和最短的路径,称其长度为从的距离,记作
    规定:

  • 最短路问题:在带权图中,求时,从的最短路径。

  • 计算方法:Dijkstra算法

    • 算法思想:

      1. 初始化:设定起点,将加入已确定最短路径的集合,并将所有顶点的距离初始化为,除了
      2. 迭代:

      * 从未确定的顶点中选择距离最小的顶点<span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal">u</span></span></span></span>,将其加入集合<span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6833em;"></span><span class="mord mathnormal" style="margin-right:0.0576em;">S</span></span></span></span>。  
      (第一次选择也就是加入<span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal">s</span></span></span></span>)
      * 对于每个与<span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal">u</span></span></span></span>相邻的顶点<span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal" style="margin-right:0.0359em;">v</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel"><span class="mord"><span class="mrel">∈</span></span><span class="mord vbox"><span class="thinbox"><span class="llap"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="inner"><span class="mord"><span class="mord">/</span><span class="mspace" style="margin-right:0.0556em;"></span></span></span><span class="fix"></span></span></span></span></span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6833em;"></span><span class="mord mathnormal" style="margin-right:0.0576em;">S</span></span></span></span>,检查是否可以通过<span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal">u</span></span></span></span>更新<span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">d</span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.0359em;">v</span><span class="mclose">)</span></span></span></span>:
        <span class="katex-display"><span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal">d</span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.0359em;">v</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mop">min</span><span class="mopen">(</span><span class="mord mathnormal">d</span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.0359em;">v</span><span class="mclose">)</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal">d</span><span class="mopen">(</span><span class="mord mathnormal">u</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathnormal" style="margin-right:0.0269em;">w</span><span class="mopen">(</span><span class="mord mathnormal">u</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal" style="margin-right:0.0359em;">v</span><span class="mclose">))</span></span></span></span></span>
      1. 重复步骤2,直到所有顶点都被加入集合或所有可达顶点的最短路径已确定。

      (其实我也不知道怎么描述,以上是aigc)


得,写不完了,让我拖完了,只能说f1太好看了。