图论入门

由于本人是小升初,图论学的不多,有错误请多多指教。

前置知识:无。

图的概念

图,就是由很多个结点和很多条边组成的数据结构,也可以表示成二元组 \(G=(V(G),E(G))\),其中 \(V(G)\) 代表图 \(G\) 的点集,\(E(G)\) 代表图 \(G\) 的边集,每个点可能有点权,边也可能有边权。

有向图和无向图

有向图,顾名思义,就是每条边都有方向的图;
无向图和有向图相对,每条边都没有方向的图。

有向图:

无向图:

简单图和多重图

简单图就是没有重边(两条完全相同的边)或自环(从自己到自己的边)的图;
多重图和简单图相对,就是允许有重边和自环的图。

若无特殊说明,图一般指简单图。

简单图:上面两个图都是简单图。
多重图(自环真画不上):

完全图

有向完全图(竞赛图)中,任意两个结点都有且仅有一条有向的边,共有 \(n \times (n-1)\) 条边;
无向完全图中,任意两个结点都有且仅有一条边,共有 \(\frac{n \times (n-1)}{2}\) 条边。

有向完全图:

无向完全图:

二分图

二分图就是可以将结点划分成两个集合的图,使得图中每条边都连接两个不同集合的结点,换言之,假设两个集合分别叫 \(A\) 和 \(B\),那么二分图中,在集合 \(A\) 中的结点连接的结点均为集合 \(B\) 中的结点,所以二分图无奇环(结点数为奇数的环)。

二分图 (深色点为第一个集合,浅色点为第二个集合):

DAG

DAG(Directed Acyclic Graph),即有向无环图,也就是没有环的有向图,通常用于进行拓扑排序。

DAG:

强连通图、强连通分量和缩点

在一个有向图中,若任意两个结点都可以互相到达,则该图为强连通图;
一个有向图的强连通分量(SCC)为该图的极大(不能再加入其它结点)强连通子图(子图就是从原图中选出一些点和一些边组成的图。),一个图可能有多个强连通分量;
一个有向图中,如果将所有强连通分量都缩成一个点,那么这个新的图是 DAG,将强连通分量缩成一个点的操作被称为缩点。

强连通图:

强连通分量(虽然 \(2\)、\(3\)、\(5\) 也可以组成强连通分量,但是由 \(2\)、\(3\)、\(5\)、\(6\) 组成的强连通分量才是极大的):

缩点后的上图:

连通图、连通分量

在一个无向图中,若任意两个结点都可以互相到达,则该图为连通图,上述任意无向图均为连通图;
一个无向图的连通分量为它的极大连通子图。

连通分量(下图的连通分量为 \(1\)、\(2\)、\(3\)、\(4\)、\(5\) 组成的连通子图):

割点、桥和双连通分量

在一个无向图中,如果存在结点,使得删除这个结点和与其连接的边后,该图的连通分量变多了,那么这个结点就是割点;
在一个无向图中,如果存在边,使得删除这条边后,该图的连通分量变多了,那么这条边就是桥;
一个无向图的极大无割点连通子图被称为这个图的点双连通分量,简称点双;
一个无向图的极大无桥连通子图被称为这个图的边双连通分量,简称边双。

割点(下图中 \(4\) 为割点):

桥(下图中 \((1,4)\) 为桥):

点双(下图中 \(2\)、\(3\)、\(5\)、\(6\) 组成的连通块是点双):

边双(下图中 \(1\)、\(3\)、\(5\)、\(7\) 组成的连通块是边双):

欧拉图和半欧拉图

在一个无向图中,如果从任一结点出发,可以经过所有边恰好一次且可以回到原点,那么这个图就是欧拉图,换言之,如果所有点的度数(连接这个点的边数)都是偶数,那么这个图就是欧拉图,这条路径就叫欧拉回路;
在一个无向图中,如果从任一结点出发,可以经过所有边恰好一次但不能回到原点,那么这个图就是半欧拉图,换言之,如果有且仅有两个点的度数是奇数,其它点的度数是偶数,那么这个图就是半欧拉图,这条路径就叫欧拉路径。

欧拉图:

半欧拉图:

反图

在一个有向图 \(G=(V(G),E(G)\) 中,若 \(V(G)\) 不变,将 \(E(G)\) 中所有边的方向都反过来,得到的新图 \(\overline{G}\) 就是 \(G\) 的反图。

反图(两张图互为反图):

补图

在一个无向图 \(G=(V(G),E(G))\) 中,若 \(V(G)\) 不变,将 \(E(G)\) 中没有的边都加上,有的边都删掉,得到的新图 \(\overline{G}\) 就是 \(G\) 的补图,换言之,如果 \((u,v) \in E(G)\),则 \((u,v) \notin \overline{E(G)}\);如果 \((u,v) \notin E(G)\),则 \((u,v) \in \overline{E(G)}\)。\(\overline{G}=(V(G),\overline{E(G)})\),那么 \(\overline{G}\) 是 \(G\) 的补图。

补图(两张图互为补图):

平面图

平面图指可以在平面上画出且边不相交(除了在结点处相交)的图。

平面图:

树的概念

接下来都会以这棵树为示范:

树是一种特殊的无环图,有以下几个概念:

父亲(父结点)

树上一个点的所有边中向上那条边连着的结点是该点的父亲,除了根结点以外,一个点有且仅有一个父亲,如图,\(7\) 的父亲是 \(2\),\(6\) 的父亲是 \(3\)。

孩子(子结点)

树上一个点的所有边中向下的边连着的结点是该点的孩子,除了叶结点以外,每个点都有孩子,一个点可能有多个孩子,如图,\(7\) 的孩子是 \(8\),\(2\) 的孩子是 \(4\)、\(7\)。
如果 \(u\) 是 \(v\) 的父亲,那么 \(v\) 是 \(u\) 的孩子。

根结点

没有父亲的结点是这棵树的根结点,如图,\(1\) 是根结点。

叶结点

没有孩子的结点是这棵树的叶结点,一棵树可能有多个叶结点,如图,\(5\)、\(6\)、\(8\) 是叶结点。

祖先

从根结点到结点 \(v\) 的路径上,所有出现在 \(v\) 前面的结点,都是 \(v\) 的祖先 (注意:有些定义中祖先包含自己,本文不包含),如图,\(7\) 的祖先有 \(2\)、\(1\)。

后代

所有能从结点 \(v\) 沿着向下边走到达的结点,都是 \(v\) 的后代,如图,\(2\) 的后代有 \(4\)、\(5\)、\(8\)、\(7\)。

兄弟

有相同父亲的两个结点是兄弟,如图,\(4\) 和 \(7\) 是兄弟。

深度

一个结点到根结点的边数为这个结点的深度,特别的,根结点的深度为 \(0\)(其实也可以定义为一个结点到根节点的点数为这个节点的深度,根节点的深度为 \(1\),两种方法都有人用),如图,\(7\) 的深度为 \(2\)。

高度

一个树所有结点的最大深度为这棵树的高度,图上这棵树的高度为 \(3\)。

子树

一个结点删掉与父亲相连的边后,该结点所在的子图被称为子树,如图,\(2\) 的子树含有 \(2\)、\(4\)、\(5\)、\(8\)、\(7\) 这些结点。

注意,以上概念只适用于有根树,至于无根树,就要先建一个根。

posted @ 2026-08-14 08:39  陈宥心  阅读(10)  评论(0)    收藏  举报