Stable Matching
Formulation:双方各自拥有喜爱顺序 list。
结论:必然存在稳定匹配。
算法:
- 左方一个点的增广流程为:按照喜好不断寻找下一个人,尝试提交申请,如果申请通过则终止增广。
- 右方一个点的审核流程为:检查申请人是否优于当前选择,如果否则驳回,是则通过,并通知原选定者开始增广。
因为如果左侧有人未匹配,则右侧必然有人未匹配,所以算法必然会结束于完美匹配。右方点的匹配结果只会越来越好,所以左侧点一旦被某个右侧点拒绝,则之后也不会再被选择。因此,左侧点匹配者之前的所有人都拒绝过它;右侧点匹配者之前的所有人都没有向它提出过申请(它们已经与在自身偏好中更前者匹配)
特别地,如果左侧所有点的偏好都随机,则期望 \(\dfrac in\) 次即可查询到空点,因此复杂度平方。
Dijkstra & Prim
最优性证明方法:时刻保证当前解可以扩充为某一最优解。
Tree Width
参见 宽体树图。
Graph Minor
Graph Minor(图子式)是通过删点、删边、缩边得到的结构。
Kuratowski-Wagner 定理:平面图是不存在 \(K_5,K_{3,3}\) 子式的图。
Robertson-Seymour 图子式定理:在任意无限图集合中,至少一张图是另一张图的真子式。
Minor-Closed Family(这玩意的译名真不知道是啥,浅编了一个 子式闭族 出来)是子式属于集族的集族。一个集族是子式闭族,当且仅当它有有限个极小禁止图子式(即,一个图属于该集族,当且仅当它不含任何禁止图子式)。因此,一切子式闭族都存在类似 K-W 定理的等价式。
一些子结论:固定一张图,可以 \(O(n^3)\) 判定该图是否是另一张图的子式;存在 \(f:\mathbb{N\to N}\) 满足一切有着至少 \(f(r)\) 树宽的图都有着 \(r\times r\) 的子式。
感觉太意义不明了!
NPC problems
注意:在验证一个问题是 NPC 之前,先要确认它确实是 NP!!!
所有能被使用的 NPC 问题:
独立集;Set Packing(从 \(m\) 个集合中选取最多数目的不交集合);点覆盖;集合覆盖;3D matching(三元组覆盖三分图);三及以上染色;Hamilton 环和路径;TSP;subset sum(判定是否有和为某元素的子集);3-SAT。
独立集的补集是点覆盖。点覆盖容易归约到集合覆盖(点覆盖了邻域中所有边),同理独立集容易规约到 set packing。
3SAT 规约到独立集:每个 clause 的三个变量建三个点互相连边,同一个变量的正负取值之间互相连边,这样合法当且仅当最大独立集包含每个 clause 中的恰一个元素。
3SAT 到 Hamilton 环:对每个变量建一条足够长的路径,左向为真右向为假。自源点向第一条路径的起讫点各连边,第一条路径起讫点向第二条……最后一条起讫点连向汇点,汇点再连回源点。现在如果我们想要强制一条路径的方向,就新建一个点,其自三条路径三个点连来,再连到它们各自下一个点即可。【Hamilton 环是针对有向图定义】。Hamilton 环到 TSP 是容易的。有向 Hamilton 怎么到无向 Hamilton?答曰:拆点,一个点拆成三个点,这样让路径必须从入点走向出点。
3SAT 到 3DM:对每个变量造一堆 chip,强制选中所有奇数位或偶数位之一的所有 chip。clause 可以造两个新点然后强制需要 chip 中的某个点。剩下还有一批点没有被 cover,造一堆两个点的 cleanup 元素连到所有点即可。
3SAT 到 3color:造出 base,true,false 三个基元点连成三元环,对于所有变量造出其自身和其否定,与 base 连成三元环。如果自身与 true 同色则认为其是 true,与 false 同色则相反。clause 要求三个位置至少有一个与 true 同色,于是用 3color 造一个三个 false 的输入无法染色的图电路即可。方法:
(x_1,1),(T,1),(T,2),(1,2),(T,3),(3,x_2),(T,4),(x_3,4),(4,5),(F,5),(1,6),(3,6),(5,6)
3DM 到 Subset Sum:每个 3 pair 对应三个 bit,要求不能出现进位。
Co-NP
NP 问题需要存在某个证据并判定存在解,在不存在解时对一切证据均输出不存在解;Co-NP 则相反,存在证据判定不存在解,存在解时何种证据都无法判定不存在解。