Skip to content

定义Definition

参数化复杂度类 FPT

施工中 · 内容逐步修订

Fixed-parameter tractable · FPT

可由统一算法在 f(k)N^c 时间求解的参数化问题类;用顶点覆盖分支与核化解释固定指数及参数选择。

形式陈述 ​

让困难依赖参数,而不占据输入指数 ​

一个问题可能在一般输入上很难,但实际实例还带有一个较小的结构量:允许选几个顶点、删除几条边,或解与某种简单结构相差多少。参数化复杂度把这个量单独记为 k,询问能否让昂贵的组合搜索主要依赖 k,而对大型输入保持固定次数的多项式开销。

固定参数可解(fixed-parameter tractable,FPT)要求的正是这种分离。对参数化问题的实例 (x,k),令 N 为完整输入的编码长度。若存在可计算函数 f、与 k 无关的常数 c 和统一算法,在

f(k)Nc

时间内判定实例,则该参数化问题属于 FPT。关键不是“固定 k 之后得到多项式”,而是对所有 k,输入长度的指数始终是同一个常数。[1]

直觉

为什么 Nk 还没有给出 FPT 算法 ​

比较下面两种界:

2kN2,Nk.

当输入长度放大十倍、参数不变时,第一种开销放大 100 倍;第二种则放大 10k 倍。Nk 把参数放进输入规模的指数,因而只给出 XP 型算法。两者对每个固定 k 都是多项式,但只有前一种明确满足 FPT 的统一形式。

这里是在判断算法上界,不是给问题贴永久标签。发现一个 Nk 算法,并不能证明问题不属于 FPT;它也许还有一个尚未采用的 2kN2 算法。另一方面,f(k) 可以增长得非常快,22kN2 也符合定义。FPT 描述一种最坏情况结构,不等于参数依赖已经足够好。

例子与边界

顶点覆盖:一条边迫使两选一 ​

给定简单无向图 G=(V,E) 和非负整数参数 k,询问是否能选至多 k 个顶点,使每条边至少有一个端点被选中。这就是按解大小参数化的顶点覆盖。

任取一条仍未覆盖的边 {u,v}。任何合法解都必须包含 u 或 v,于是只需两条分支:选择 u 并删去它覆盖的边,或者选择 v 并删去它覆盖的边;两条分支都把剩余预算减一。

text
                 未覆盖边 {u,v}
                  /          \
             选择 u          选择 v
             预算 k−1        预算 k−1

当边全部消失时成功;当预算已经为零而仍有边时失败。搜索树深度至多为 k,节点数为 O(2k)。若每个节点用 O(1+n+m) 时间处理当前图,就得到

O(2k(1+n+m)),n=|V|, m=|E|,

的 RAM 模型上界,进而符合编码长度下的 f(k)NO(1) 形式。[1][2]

这里真正缩小分支的是约束:不是从所有 n 个顶点中任选一个,而是由一条未覆盖边把必要选择压缩到两个端点。三角形图也能直接检验规则:k=1 时,无论选哪个端点,另两点之间仍有边;k=2 时,选任意两点即可覆盖全部边。

参数选错,结论会完全不同 ​

对 SAT,以变量个数为参数时,枚举全部 2k 个赋值并检查公式,立即给出 FPT 算法。若改以每个子句最多含多少个文字为参数,固定到 k=3 就包含 3-SAT;若这个参数化问题属于 FPT,则 3-SAT 会有多项式算法,从而推出 P=NP。

因此“SAT 是不是 FPT”缺少了必要信息;需要说明参数是什么。树宽、解大小和修改距离虽然都可能是小整数,却编码了不同结构,不能把对一个参数的算法保证移植给另一个参数。

最大独立集提供了结构参数的具体例子。若输入同时给出宽度 k、含 q 个节点的 nice 树分解,逐袋动态规划只需对每袋的至多 2k+1 个选择子集计算最优值,表计算时间为 2kpoly(k)q,另计图与袋的预处理。这里的参数是树宽,不是希望找到的独立集大小。q 是输入分解的规模,也必须计入完整输入长度;若输入只有图,还需计寻找分解的参数化算法成本。把指数放在接口宽度上,才是这一 FPT 机制的实质。

有界搜索树和核化展示了两种基本路径。树宽上的动态规划则利用窄接口限制状态数,颜色编码利用随机标记捕获小结构;它们能否给出 FPT,最终仍要回到 f(k)Nc 检查。FPT 归约用于传递参数化可解性,W[1] 等层级用于组织条件困难性,这些都是围绕定义发展的工具,而不是定义之前必须掌握的前置概念。

推论与应用

核化:先把大图压到参数规模 ​

同一个问题还能展示核化的作用。设当前剩余预算为 k。若一个顶点的度大于 k,任何大小至多为 k 的覆盖都必须选它;否则,为覆盖它的全部关联边,就得把它的所有邻居都选入,超过预算。

反复应用这条规则,每选一个被迫顶点就删除它及关联边,并把 k 减一;同时删除孤立顶点。若预算耗尽而仍有边,则拒绝。规则结束后,图中最大度不超过剩余的 k。

此时,k 个顶点最多覆盖 k2 条边。所以若剩余边数大于 k2,立即判定无解;否则非孤立顶点至多为 2k2 个,得到一个大小仅依赖参数的等价实例。重新编号顶点后,还能使图的编码长度由 k 的多项式控制,而不是保留原始的大编号。

这个核可以再交给分支算法。核化削减的是输入规模,搜索树控制的是组合选择;两种机制互补。还原实际解时,要把预处理阶段被迫选择的顶点加回去。

对通常的可判定参数化问题,FPT 与存在大小受某个可计算函数 g(k) 控制的核等价。但一般核不必是多项式核:后者要求核大小为 kO(1),是额外而更强的结论。不能从“属于 FPT”直接推导“总能先压成参数的多项式规模”。[1]

这里的界是算法的时间复杂度,必须同时说明输入长度和参数。

参考资料

[1] Marek Cygan 等,Parameterized Algorithms,2015,第 1–3 章,参数化算法、核化与有界搜索树;Rodney G. Downey、Michael R. Fellows,Fundamentals of Parameterized Complexity,2013,第 1–3 章。

[2] EPFL,Fine-Grained and Parameterized Complexity: Lecture 2,2021,顶点覆盖的分支改进与核化。

关系图谱7 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系

被这些条目使用