独立集

独立集（英语：Independent set）是图论中的概念。一个独立集（也称为稳定集）是一个图中一些两两不相邻的顶点所形成的集合。换句话说，独立集 S {\displaystyle S} 由图中若干顶点组成，且 S {\displaystyle S} 中任两个顶点之间没有边。等价地，图中的每条边至多有一个端点属于 S {\displaystyle S} 。一个独立集的基数是它包含顶点的数目。 如果往图 G {\displaystyle G} 的独立集 S {\displaystyle S} 中添加任一个顶点都会使独立性丧失（亦即造成某两点间有边），那么称 S {\displaystyle S} 是极大独立集。如果 S {\displaystyle S} 是图中所有独立集之中基数最大的，那么称 S {\displaystyle S} 是最大独立集，且将该基数称为 G {\displaystyle G} 的独立数，记为 α ( G ) {\displaystyle \alpha (G)} 。一般来讲，图 G {\displaystyle G} 中可能存在多个极大独立集；最大独立集亦如是。最大独立集一定是极大独立集，但反之未必。 给定一张图，寻找其中一个最大独立集的问题被称为最大独立集问题。该问题已知是NP困难的最优化问题，且即便试图以常数倍近似也是NP困难的。因此，计算机科学家普遍相信不存在解决该问题的高效算法，无论是精确求解还是以常数倍近似求解。 对于图 G = ( V , E ) {\displaystyle G=(V,E)} ，如果顶点子集 S ⊆ V {\displaystyle S\subseteq V} 满足 ∀ u , v ∈ S , { u , v } ∉ E {\displaystyle \forall u,v\in S,\{u,v\}\not \in E} ，则称 S {\displaystyle S} 为 G {\displaystyle G} 的一个独立集，称 | S | {\displaystyle |S|} 为该独立集的基数。 对于独立集 S {\displaystyle S} ，如果 ∀ v ∈ V ∖ S , ∃ u ∈ S : { u , v } ∈ E {\displaystyle \forall v\in V\setminus S,\exists u\in S:\{u,v\}\in E} ，则称 S {\displaystyle S} 是极大独立集。直观而言，极大意味着 S {\displaystyle S} 不能单纯通过加入顶点来扩充。 如果 | S | {\displaystyle |S|} 是所有独立集中最大的，那么称 S {\displaystyle S} 是最大独立集，并将 | S | {\displaystyle |S|} 称作 G {\displaystyle G} 的独立数（independence number），记作 α ( G ) {\displaystyle \alpha (G)} 。最大独立集一定是极大独立集；若不然，我们总能加入顶点来扩充之，从而与最大的定义矛盾。 计算独立数 α ( G ) {\displaystyle \alpha (G)} 的问题可以等价表达成如下的整数规划： max ∑ v ∈ V x v s.t. x u + x v ≤ 1 ∀ { u , v } ∈ E x v ∈ { 0 , 1 } ∀ v ∈ V {\displaystyle {\begin{aligned}\max \quad &\sum _{v\in V}x_{v}\\{\text{s.t.}}\quad &x_{u}+x_{v}\leq 1&\forall \{u,v\}\in E\\&x_{v}\in \{0,1\}&\forall v\in V\end{aligned}}} 其中，变量 x v {\displaystyle x_{v}} 取1代表把顶点 v {\displaystyle v} 放入独立集，取0则反之。第一条线性约束表达了每条边的两个端点不能同时放入独立集中。 图的一个顶点覆盖（vertex cover）是顶点集的一个子集，使得图中每条边都与其中某点相邻。基数最小的顶点覆盖称为图的最小顶点覆盖。独立集与顶点覆盖的定义互补，因此不难看出， S {\displaystyle S} 是图 G {\displaystyle G} 的独立集当且仅当 V ∖ S {\displaystyle V\setminus S} 是 G {\displaystyle G} 的顶点覆盖。于是， α ( G ) {\displaystyle \alpha (G)} 就等于 G {\displaystyle G} 的顶点数减去 G {\displaystyle G} 的最小顶点覆盖的基数。 在图论中，团（clique）是一个与独立集密切相关的概念。图 G = ( V , E ) {\displaystyle G=(V,E)} 的一个团指的是一个顶点子集 C ⊆ V {\displaystyle C\subseteq V} ，使得 C {\displaystyle C} 中顶点两两相邻。用图论的语言，团即一个完全的子图。 G {\displaystyle G} 的最大团的基数称作 G {\displaystyle G} 的团数（clique number），记作 ω ( G ) {\displaystyle \omega (G)} 。 如果说独立集是一种水火不容的顶点集，那么团就是一种息息相关的顶点集。不难看出，一个图的团是其补图的独立集，反之亦然。这个一一对应关系使得二者性质能够相互转述，而与二者相关的问题往往等价。例如，图的团数等于其补图的独立数，即 ω ( G ) = α ( G ¯ ) {\displaystyle \omega (G)=\alpha ({\overline {G}})} 。类似地，图 G {\displaystyle G} 中团的总数等于补图 G ¯ {\displaystyle {\overline {G}}} 中独立集的总数。 对于一般的图而言，寻找最大团是NP困难的，从而寻找最大独立集也是NP困难的。计算机科学家普遍相信没有算法能在确定性多项式时间解决之。但是，对于二分图这一特殊情形，则有多种方法可以高效地求解。例如，可以求解松弛后的线性规划并对结果作整数化处理，也可以使用匈牙利算法求出最小顶点覆盖后再转化为最大独立集。 图的点连通度 κ ( G ) {\displaystyle \kappa (G)} 定义为：最少需要删除 κ ( G ) {\displaystyle \kappa (G)} 个顶点方能使得图不复连通。独立数与点连通度有着简单关系 κ ( G ) ≤ n − α ( G ) {\displaystyle \kappa (G)\leq n-\alpha (G)} 原因是：设 S {\displaystyle S} 是一个最大独立集，把 V ∖ S {\displaystyle V\setminus S} 的顶点全部删掉以后，残余下来的正是独立集 S {\displaystyle S} ，而它自然是不连通的。 图的着色（proper colouring）即为每个顶点染上一种颜色，使得任意相邻顶点颜色均不同（但不相邻顶点颜色可以相同）。对图 G {\displaystyle G} 进行着色所需的最少颜色数被称为 G {\displaystyle G} 的着色数，记作 χ ( G ) {\displaystyle \chi (G)} 。独立数和着色数之间存在以下关系： n α ( G ) ≤ χ ( G ) ≤ n − α ( G ) + 1 {\displaystyle {\frac {n}{\alpha (G)}}\leq \chi (G)\leq n-\alpha (G)+1} 其中 n {\displaystyle n} 是 G {\displaystyle G} 中的顶点数。 求最大独立集是计算机科学中的重要问题，因为许多现实场景可以抽象成该问题。例如，人们希望组织一场会议，候选的某些演讲者之间或有嫌隙，不愿同时出席。可以将这种候选人之间敌意关系抽象成一张图，两个候选人间有边当且仅当二者不和。那么，最终的演讲者名单就应当是这张图的一个独立集。会议组织者希望邀请尽可能多的演讲者以充实内容，也就相当于寻找图中的最大独立集。 然而，计算复杂性理论在以下两方面的进展暗示该问题难以求解。 考虑最大独立集问题的判定版本：给定一张图和一个目标 I {\displaystyle I} ，图中是否存在一个独立集的基数不小于 I {\displaystyle I} ？在先前的例子中，相当于：会议组织者预先设定了一个目标邀请人数，问这个目标能否实现？其实，判定版本并不比原始版本简单。假设我们能够高效解决判定版本，那么也可以借助自归约性质（self-reducibility），相对高效地解决原始版本。 最大独立集问题的判定版本是NP完备的，这意味着，除非 P = NP {\displaystyle {\textsf {P}}={\textsf {NP}}} （而人们普遍相信这是不可能的），否则不存在确定性多项式时间算法解决之。其完备性的证明可以参见。 考虑最大独立集问题的优化版本：给定一张图 G {\displaystyle G} ，计算 α ( G ) {\displaystyle \alpha (G)} 。该问题是MAXSNP完备的，这意味着，除非 P = NP {\displaystyle {\textsf {P}}={\textsf {NP}}} ，否则不存在确定性多项式时间算法能以任意精度近似之（PTAS）。 还可以证明：假若存在某个高效算法能以某常数 c > 0 {\displaystyle c>0} 为近似比计算该问题，那么就能据此构造出一个以任意精度近似计算该问题的高效算法（PTAS）。结合前面的结论可知：除非 P = NP {\displaystyle {\textsf {P}}={\textsf {NP}}} ，否则不存在高效算法能以常数倍近似计算该问题。 Chris Godsil and Gordon Royle. Algebraic Graph Theory. New York: Springer. 2001: p. 3. ISBN 0-387-95220-9.  引文格式1维护：冗余文本 (link) Sipser, Michael. Introduction to the Theory of Computation, Third Edition. Cengage Learning. 2013: pp. 311–313. ISBN 978-1-133-18779-0.  引文格式1维护：冗余文本 (link) Papadimitriou, Christos H. Computationaly Complexity. Addison Wesley Longman. 1994: pp. 309–322. ISBN 0-201-53082-1.  引文格式1维护：冗余文本 (link)