3195 字
16 分钟
图论笔记——道路与回路
2025-10-27
2025-12-01

有向道路与有向回路(有向图)#

  • 有向道路: 有向图G中边序列 P=(ei1,ei2,...,eiq)P=(e_{i1},e_{i2},...,e_{iq}),其中 eik=vl,vje_{ik}=\langle v_{l},v_{j}\rangle 满足: vlv_{l}ei(k1)e_{i(k-1)} 的终点, vjv_{j}ei(k+1)e_{i(k+1)} 的始点,称边序列P是图G中的一条有向道路。
  • 有向回路: eiqe_{iq} 的终点也是 ei1e_{i1} 的始点,则称边序列P是图G中的一条有向回路。
  • 简单有向道路/回路: P中不重复出现。
  • 初级有向道路/回路: P中结点不重复出现。
  • 初级有向道路/回路一定是简单有向道路/回路

道路与回路 (无向图)#

  • 道路/链: 无向图G中点边交替序列 P=(vi1,ei1,vi2,ei2,...,eiq1,viq)P=(v_{i_{1}},e_{i_{1}},v_{i_{2}},e_{i_{2}},...,e_{i_{q-1}},v_{i_{q}})
    • 满足: vijv_{ij}vij+1v_{ij+1}eije_{ij} 的两个端点, 称序列P是图G中的一条链或道路。
  • 回路/圈: 如果 viq=vi1,v_{i_{q}}=v_{i_{1}}, 则称序列P是G中的一个圈或回路。
  • 简单道路/回路: P中不重复出现。
  • 初级道路/回路: P中结点不重复出现。
  • 简单图的道路可用结点来表示

其它相关定义#

  • 极大路径: P为一条初级道路,其始点与终点都不与P外的顶点相邻。 (路径: 初级道路)
  • 短程线: 两结点间长度最短的道路。
  • 距离: 短程线的长度 d(v1,v2)d(v_{1},v_{2})
  • : 设C为简单图G中含结点数大于3的一个初级回路,如果结点 viv_{i}vjv_{j} 在C中不相邻,而边 (vi,vj)E(G)(v_{i},v_{j})\in E(G),则称 (vi,vj)(v_{i},v_{j}) 是C的一条弦。
    • 若对每一个 vkV(G)v_{k}\in V(G),都有 d(vk)3d(v_{k})\ge3,则G中必含有带弦的回路。

  • 连通: 若无向图G的任意两个结点之间都存在道路,称G是连通的。
  • (弱)连通: 对有向图G,若不考虑边的方向时是连通的,则称G是(弱)连通的。
  • 单向连通图: 对有向图G,对任意 vi,vjVv_{i}, v_{j}\in V, vivjv_{i}\rightarrow v_{j}vjviv_{j}\rightarrow v_{i} 至少成立其一,则称G为单向连通图。
  • 强连通图: 对有向图G,对任意 vi,vjVv_{i}, v_{j}\in V, vivjv_{i}\rightarrow v_{j}vjviv_{j}\rightarrow v_{i} 均成立,则称G为强连通图。
    • 有向图G是强连通图当且仅当在G中存在经过每个顶点至少一次的回路。
  • 连通支: 若G的连通子图H不是G的任何连通子图的真子图,称H是G的极大连通子图,或称连通支。
    • G的每个连通支都是它的导出子图。
    • 任何非连通图都是2个以上连通支的并。
  • 割点: 设 vv 是G的一个结点,若 GvG-v 的连通支数比G多,则称 vv 是G的一个割点。(说人话就是删掉这个点,一个连通图变成两个了)
  • 割边(也称作桥): 设 ee 是G的一条边,若 GeG-e 的连通支数比G多,则称e是G的一个割边。(和割点的定义相似,把点换成边罢了)

二分图#

  • 二分图: 若 G=(V,E)G=(V,E) 为无向图,如果 V(G)V(G) 可划分成子集 V1V_{1}V2V_{2},使得G中每条边的两个结点一个属于 V1V_{1},另一个属于 V2V_{2},则称G是二分图。
  • 完全二分图: 若 G=(V,E)G=(V,E) 为简单二分图,如果 V1V_{1} 中的每个结点均与 V2V_{2} 中的所有结点相邻,则称G是完全二分图,记为 Ks,tK_{s,t},其中 s=V1,t=V2s=|V_{1}|,t=|V_{2}|
  • 性质: 如果二分图G中存在回路,则它们都是由偶数条边组成的。
  • 二分图判别定理: 无向图G为二分图的充分必要条件G中无奇数条边组成的回路
    • 证明 (必要性): G为二分图 => 无奇数条边的回路
      • a) 若G中无回路,显然G无奇数条边的回路。
      • b) 若G中有回路,记为C,令 C=vi1vi2...vilvi1,l2C=v_{i1}v_{i2}...v_{il}v_{i1}, l\ge2。不妨设 vi1V1v_{i1}\in V_{1},因为G为二分图,故 vi2V2v_{i2}\in V_{2}, vi3V1v_{i3}\in V_{1},依次最后 vilV2v_{il}\in V_{2} (因为 vilv_{il}vi1v_{i1} 相邻),故 ll 必为偶数 => 无奇数条边构成的回路。
    • 证明 (充分性): 无奇数条边构成的回路 => 二分图
      • 不妨设G为连通图: v0v_{0} 为G中任意一点。定义两个集合:
      • V1={vvV(G)V_{1}=\{v|v\in V(G) 且与 v0v_{0} 的距离为偶数}
      • V2={vvV(G)V_{2}=\{v|v\in V(G) 且与 v0v_{0} 的距离为奇数}
      • 显然: V1V_{1}\ne\emptyset, V2V_{2}\ne\emptyset, V1V2=V_{1}\cap V_{2}=\emptyset, V1V2=V(G)V_{1}\cup V_{2}=V(G)
      • 只需证明 V1V_{1} 中任意两点不相邻且 V2V_{2} 中任意两点也不相邻。
      • 反证法:若存在 vi,vjV1v_{i},v_{j}\in V_{1} 且相邻,令 e=(vi,vj)e=(v_{i},v_{j})。 令 v0v_{0}vi,vjv_{i}, v_{j} 的短程线分别为 Pi,PjP_{i}, P_{j}Pi\Rightarrow P_{i}PjP_{j} 与e构成长度为奇数的回路,与条件矛盾,得证。

欧拉道路与回路#

  • 欧拉回路: 连通图G中一条经过所有边的简单回路。
  • 欧拉图: 具有欧拉回路的图。
  • 欧拉道路: 连通图G中一条经过所有边的简单道路。
  • 欧拉半图: 具有欧拉道路但无欧拉回路的图。

欧拉图判定定理#

  • 定理1: 无向连通图G中存在欧拉回路的充要条件G中各结点的度都是偶数
    • 证明 (必要性): 令P是欧拉图G的欧拉回路。 当P经过任意一顶点时,该点总有进出两个方向的边; 每条边仅经过一次,所以每个顶点必是偶数度数。
    • 证明 (充分性): 对图G的边数m进行归纳证明。
      • m=1m=1 时,图G只能是个环,因此图G总是欧拉图。
      • 假设当 mkm\le k 时结论成立,证明 m=k+1m=k+1 时结论也成立。
      • 1). 连通图G顶点度数为偶数 => 图G中含有一条简单回路C;
      • 2). 去掉简单回路C的边,生成p个连通分支 Gi(i=1,2,...,p)G_{i} (i=1,2,...,p),连通分支 GiG_{i} 边小于等于k且顶点度数为偶数 => 欧拉图;
      • 3). 从C中任意一点出发,沿边走到与连通分支 GiG_{i} 的公共点 uiu_{i}, 然后通过 GiG_{i} 的欧拉回路回到 uiu_{i};;依次继续进行到另一个连通分支,最后到达出发点,得到G的欧拉回路。
  • 定理2: 无向连通图G中存在欧拉道路(欧拉半图)的充要条件G中只有两个度为奇数的结点
    • 证明: 连接这两顶点,则有欧拉回路;再删去这条边。(欧拉道路的始点和终点必须选在奇数度点)
  • 定理3: 有向连通图G是欧拉图的充分必要条件是图中各点的 入度和出度相等
  • 定理4: 有向连通图 G是欧拉半图的充分必要条件是图中至多有两个顶点,其中一个顶点的入度比出度多1,另一个顶点的出度比入度多1,其它顶点入度和出度相等。(这些都和无向图相关的条件相似)

寻找欧拉回路#

  • 逐步插入回路: 根据定理1中证明过程。
  • Fleury 算法
    • 基本思想: 能不走桥就不走桥。
    • 输入: 欧拉图G
    • (1) 任取 v0V(G)v_{0}\in V(G), 令 P0=v0P_{0}=v_{0}, i=0i=0;
    • (2) 令 Pi=v0e1v1e2v2eiviP_{i}=v_{0}e_{1}v_{1}e_{2}v_{2}\cdot\cdot\cdot e_{i}v_{i}。 如果 E(G){e1,e2,,ei}E(G)-\{e_{1},e_{2},\cdot\cdot\cdot,e_{i}\} 中没有与 viv_{i} 关联的边,计算停止; 否则按下述条件从 E(G){e1,e2,,ei}E(G)-\{e_{1},e_{2},\cdot\cdot\cdot,e_{i}\} 中任取一条边 ei+1e_{i+1}:
      • (a) ei+1e_{i+1}viv_{i} 相关联;
      • (b) 除非无别的边可供选择,否则 ei+1e_{i+1} 不应该选 G{e1,e2,,ei}G-\{e_{1},e_{2},\cdot\cdot\cdot,e_{i}\} 的桥。
    • Pi+1v0e1v1e2v2eiviei+1vi+1P_{i+1}\leftarrow v_{0}e_{1}v_{1}e_{2}v_{2}\cdot\cdot\cdot e_{i}v_{i}e_{i+1}v_{i+1};
    • (3) 令 i=i+1i=i+1,返回(2).

哈密顿道路与回路#

  • 哈密顿回路(道路): 无向图G中的一条经过全部结点初级 回路(道路)。
  • 哈密顿回路(道路): 简称为H回路(道路)。
  • 哈密顿图: 具有H回路的图。
  • 哈密顿半图: 具有H道路但无H回路的图。

H回路问题说明#

  • H回路是初级回路
  • 要求 V(G)=n3V(G)=n\ge3
  • 只需考虑简单图,因为重边和自环不起作用。
  • 完全图 Kn(n3)K_{n}(n\ge3) 中存在H回路。
  • H回路的判定比较困难,没有发现充分必要的条件,只有若干充分条件。

判定定理与推论#

H图的充分条件 (判定存在)#

  • 定理1: 若简单图 G(n3)G(n\ge3) 的任意两结点 viv_{i}vjv_{j} 之间恒有 d(vi)+d(vj)n1d(v_{i})+d(v_{j})\ge n-1, 则简单图G中存在H道路。

    • 证明:
      • (1) 首先证明G是连通图。 假设G非连通,有2个连通支 G1G_{1}G2G_{2}, V(G1)=n1,V(G2)=n2|V(G_{1})|=n_{1}, |V(G_{2})|=n_{2}。 各取 viG1v_{i}\in G_1vjG2v_{j}\in G_2,则有 d(vi)n11d(v_{i})\le n_{1}-1d(vj)n21d(v_{j})\le n_{2}-1 d(vi)+d(vj)(n11)+(n21)=n2<n1\Rightarrow d(v_{i})+d(v_{j})\le (n_1-1) + (n_2-1) = n-2 < n-1。 这与 d(vi)+d(vj)n1d(v_i)+d(v_j)\ge n-1 矛盾。 所以图G是连通图。
      • (2) 证明G中存在H道路 (寻找H道路)
      • P=v1v2vlP=v_{1}v_{2}\cdot\cdot\cdot v_{l} 是G中一条 极大路径, lnl\le n。 (极大路径: 始点 v1v_1 和终点 vlv_l 均不与P外的结点相邻)
      • (a) 若 l=nl=n,则P是为G中的H道路。
      • (b) 若 l<nl<n, 则G中存在P外的结点。 需证G中存在过P上所有点的初级回路。
        • 【1】若 v1v_{1}vlv_{l} 相邻,即 P(v1,vl)P\cup(v_{1},v_{l}) 为满足要求的初级回路。
        • 【2】若 v1v_{1}vlv_{l} 不相邻, 设 v1v_{1} 与P上k个结点 vi1=v2,vi2,,vikv_{i_{1}}=v_{2},v_{i_{2}},\cdot\cdot\cdot,v_{i_{k}} 相邻。
        • (若 k=1k=1, 则 d(v1)=1d(v_{1})=1, d(vl)l2d(v_{l})\le l-2, d(v1)+d(vl)l1<n1d(v_{1})+d(v_{l})\le l-1<n-1,矛盾。 故 k2k\ge2。)
        • v1v_{1} 与P上的 vi1=v2,vi2,,vikv_{i_{1}}=v_{2},v_{i_{2}},\cdot\cdot\cdot,v_{i_{k}} 相邻 (k2k\ge2)。
        • vlv_{l} 至少与 vi21,vi31,,vik1v_{i_{2}-1},v_{i_{3}-1},\cdot\cdot\cdot,v_{i_{k}-1} 之一相邻。
        • 否则,由 d(v1)=kd(v_1) = k, d(vl)l2(k1)d(v_{l})\le l-2-(k-1)
        • d(v1)+d(vl)l1<n1\Rightarrow d(v_{1})+d(v_{l})\le l-1<n-1,矛盾。
        • vlv_{l}vir1v_{i_{r}-1} 相邻 (2rk)(2\le r\le k)
        • 则存在初级回路 C=v1v2vir1vlvl1virv1C=v_{1}v_{2}\cdot\cdot\cdot v_{i_{r}-1}v_{l}v_{l-1}\cdot\cdot\cdot v_{i_{r}}v_{1}
      • (c) 证明存在比P更长的路径
      • 由G的连通性知,存在 vl+1V(G)V(P)v_{l+1}\in V(G)-V(P) 与P上的某结点 vtv_{t} 相邻。
      • t<ir1t<i_{r}-1 时,删除边 (vt1,vt)(v_{t-1},v_{t})
      • 路径 P=vt1v1virvlvir1vtvl+1P^{\prime}=v_{t-1}\cdot\cdot\cdot v_{1}v_{i_{r}}\cdot\cdot\cdot v_{l}v_{i_{r}-1}\cdot\cdot\cdot v_{t}v_{l+1}
      • 构造比P长度大1的路径。
      • tir1t \ge i_r - 1 时,类似构造。
      • 重复上面步骤(2),直至 l+1=nl+1=n,可得出图G的H道路。
  • 推论1: 若简单图 G(n3)G(n\ge3) 的任意两结点 viv_{i}vjv_{j} 都满足 d(vi)+d(vj)nd(v_{i})+d(v_{j})\ge n,则图G中存在H回路。

    • 证明: 由定理1可知,图G中存在哈密顿道路,记为 P=v1v2vnP=v_{1}v_{2}\cdot\cdot\cdot v_{n}
    • (1) 若 v1,vnv_{1}, v_{n} 相邻,即 (v1,vn)E(G)(v_{1},v_{n})\in E(G),则 P(v1,vn)P\cup(v_{1},v_{n}) 定为H回路;
    • (2) 若 v1,vnv_{1}, v_{n} 不相邻, 按照定理1的证明方法(b), d(v1)+d(vn)nd(v_1)+d(v_n) \ge n ( l=nl=n ), 可得存在过P上各结点的初级回路,即H回路。 (回路 C=v1v2vir1vnvn1virv1C=v_{1}v_{2}\cdot\cdot\cdot v_{i_{r}-1}v_{n}v_{n-1}\cdot\cdot\cdot v_{i_{r}}v_{1})
  • 推论2: 若简单图 G(n3)G(n\ge3) 的任一结点的度大于等于 n/2n/2, 则G中存在H回路。

    • 证明: 推论1的直接结果。
    • 示例: 判断 K3,3K_{3,3} 是否有H回路? n=6n=6, n/2=3n/2=3。所有结点的度 d(v)=3d(v)=3。 满足推论2, 存在H回路。
  • 引理1: 若简单图 G(n3)G(n\ge3) 有不相邻结点 viv_{i}vjv_{j} 满足 d(vi)+d(vj)nd(v_{i})+d(v_{j})\ge n,则G存在H回路当且仅当 G+(vi,vj)G+(v_{i},v_{j}) 有H回路。

    • 证明:
      • (必要性) G存在H回路则 G+(vi,vj)G+(v_{i},v_{j}) 存在H 回路,显然成立。
      • (充分性) 证明当 G+(vi,vj)G+(v_{i},v_{j}) 有H回路时,G存在H回路。
      • 反证法: 假设G无H回路。
      • G+(vi,vj)G+(v_{i},v_{j}) 的H回路必经过边 (vi,vj)(v_{i},v_{j})
      • 删除 (vi,vj)G(v_{i},v_{j}) \Rightarrow G 中存在以 vi,vjv_{i},v_{j} 为端点的H道路(极大路径)。
      • G无H回路即无初级回路两个端点的度满足 d(vi)+d(vj)n1<nd(v_{i})+d(v_{j})\le n-1 < n (第12页辅助结论)。
      • 这与引理条件 d(vi)+d(vj)nd(v_{i})+d(v_{j})\ge n 矛盾,得证。
  • 闭合图: 若 viv_{i}vjv_{j} 是简单图G的不相邻结点,且满足 d(vi)+d(vj)nd(v_{i})+d(v_{j})\ge n,则令 G=G+(vi,vj)G^{\prime}=G+(v_{i},v_{j}),对G’重复上述过程,直至不再有这样的结点对为止。最终得到的图称为G的闭合图,记作 C(G)C(G)

  • 引理2: 简单图G的闭合图是唯一的。

  • 引理3: 简单图G有H回路当且仅当 C(G)C(G) 有H回路。

    • 证明: 设 C(G)=GL1C(G)=G\cup L_{1}, L1={e1,e2,,el}L_{1}=\{e_{1},e_{2},\cdot\cdot\cdot,e_{l}\}
    • G有H回路     \iff G+e1G+e_{1} 有H回路     \iff G{e1,e2}G\cup \{e_{1}, e_{2}\} 有H回路     ...    C(G)\iff ... \iff C(G) 有H回路。
  • 推论3: 若 C(G)=KnC(G)=K_{n},则G有H回路。

H图的必要条件 (判定不存在)#

  • 定理2: 设G是哈密顿图,则对任意的非空点集 V1V(G)V_{1}\subset V(G),图 GV1G-V_{1} 中的连通支数不大于 V1|V_{1}|
    • 证明: 设C为G的任意一条哈密顿回路。
    • V1V_{1} 中结点在C中互不相邻, CV1C-V_{1} 的连通支达到最大 V1|V_{1}|
    • V1V_{1} 中结点在C中有相邻, CV1C-V_{1} 的连通支小于 V1|V_{1}|
    • 所以, CV1C-V_{1} 的连通支不大于 V1|V_{1}|
    • 又因为C是G的支撑子图, 则 GV1G-V_{1} 的连通支小于等于 CV1C-V_{1} 的连通支数。
  • 定理2推论: 奇数个结点构成的二分图不是哈密顿图。
    • 示例 (推论应用): 判断右图是否为哈密顿图? (一个13个结点的二分图)
    • 该图为二分图, 结点集 V1={a,b,c,d,e,f}V_1 = \{a,b,c,d,e,f\} (V1=6|V_1|=6), V2={1,2,3,4,5,6,7}V_2 = \{1,2,3,4,5,6,7\} (V2=7|V_2|=7)。
    • 总结点数为 13 (奇数)。
    • 奇数个结点的二分图不是哈密顿图。
  • 推论4: 设G是哈密顿半图,则对任意的非空点集 V1V(G)V_{1}\subset V(G),图 GV1G-V_{1} 中的连通支数不大于 V1+1|V_{1}|+1
    • 示例:判断 H图 or H半图
      • 图1: 令 V1={a,b}V_{1}=\{a,b\},则 V1=2|V_{1}|=2GV1G-V_{1} 中的连通支数为4 (结点1, 2, 3, 4)。 4 > V1+1=3|V_1|+1 = 3。因此该图不是H半图,也不是H图。
      • 图2: 令 V1={a,b,c,d,e}V_{1}=\{a,b,c,d,e\},则 V1=5|V_{1}|=5GV1G-V_{1} 中的连通支数为6 (结点1, 2, 3, 4, 5, 6)。 6=V1+16 = |V_1|+1。 满足H半图的必要条件 (不排除是H半图)。
图论笔记——道路与回路
https://ababcat927.github.io/posts/图论笔记/图论笔记二/
作者
AbabCat
发布于
2025-10-27
许可协议
MIT

部分信息可能已经过时