多项式内核


10

k-FLIP SAT参数化问题定义为:

输入: 3-CNF公式φn 变量和真值分配 σ:[n]{0,1}
参数: k
问题:我们可以改变作业吗σ 达成令人满意的任务 σ 对于 φ 最多翻转真实值k 变量?

FPT 中显然存在此问题(Stefan Szeider:k翻转SAT和MAX SAT局部搜索的参数化复杂性。离散优化8(1):139-145(2011)

它是否接受多项式内核?(在合理的复杂度假设下)

最近的交叉合成技术(请参见Hans L. Bodlaender,Bart MP Jansen,Stefan Kratsch,“通过交叉合成实现内核化下界”)对于此问题似乎没有用。而且,它们对于类似的问题似乎毫无用处,这些问题询问是否可以通过本地搜索从给定实例中找到给定的NP难题问题的给定解决方案(在某种自然距离度量下,将搜索限制为给定实例的邻居)。


很酷,但是为什么这个问题显然是FPT?如果您使用恰好k个可变翻转(而不是最多)使它成为2-CNF,那么我认为问题是fpt等效于k-clique。我一直在写一篇论文,其中包含一些有关精确k翻转问题的结果。
Michael Wehar '16

我认为说它在FPT中意味着可以解决 f(k)nO(1)时间。
Michael Wehar '16

我认为说它在XP中意味着它可以在XP中解决 nf(k)时间。
Michael Wehar '16

我不知道确切k翻转问题和至多k翻转问题之间的关系。我最初以为您是在说“最多k翻转”是FPT的意义上说,“最多k翻转”问题更容易。我说起来容易些,因为除非ETH为假,否则exact-k-flip不能为FPT。这样做的原因是因为它等效于k-clique,并且已知f(k)nO(1)k-clique的时间算法暗示ETH为假。
Michael Wehar

1
@MichaelWehar:抱歉,您是对的(我删除了错误的傻瓜评论),这个问题需要完善(我将问题定义为“最多k个FLIPS”)。我将尽快看一下论文(其中之一应该是Stefan Szeider,“针对SAT和MAX SAT的k翻转本地搜索的参数化复杂度”),其中k-FLIP SAT是FPT用于有界大小的子句。
Marzio De Biasi

Answers:


12

除非NP位于coNP / poly中,否则问题就不会具有多项式内核。我们论文的交叉合成技术以非平凡的方式应用。

让我展示一下经典的“顶点覆盖”问题是如何与k-FLIP-SAT问题进行交叉组合的。根据引用论文中的结果,这已足够。具体来说,我们建立一个多项式时间算法,其输入是一系列“顶点覆盖”实例(G1,k),(G2,k),,(Gt,k) 都具有相同的价值 k 所有人都有 n顶点。输出是的实例k-FLIP SAT,参数值为 O(k+logt),对于交叉组合来说足够小,以至于 k-FLIP SAT实例的答案为是,只要其中一个输入图的顶点覆盖大小为 k。通过复制一个输入(不会更改OR的值),我们可以确保输入的数量t 是二的幂。

组成如下进行。在每个输入图形中对图形中的顶点进行编号Givi,1,vi,2,,vi,n。在FLIP-SAT实例中为每个输入图的每个顶点创建一个相应的变量。此外,使选择器变量ui 对于每个输入实例号 i[t]。对于每个输入图Gi,我们在公式中添加了一些子句。对于每个边缘{vi,x,vi,y} 图的 Gi,添加子句 (vi,xvi,y¬ui) 公式,它将编码为“该边的端点之一设置为true,或实例 i 不活跃”。在初始分配中,所有顶点变量均设置为false,所有选择器变量 ui设置为false,以便满足所有这些子句。为了将OR行为构建到合成中,我们将增加公式,以确保满足要求的分配将至少一个选择器设置为true,然后还必须形成所选图形的顶点覆盖。

为了确保我们可以进行选择,同时保持与输入数量相比较小的翻转距离 t,我们使用完整的二叉树的结构 t 叶子,有高度 logt。编号树叶1t 并关联 i带有变量的第四个叶子 ui 控制是否输入 i是否活跃。为二叉树的每个内部节点创建一个新变量。对于每个内部节点,让其对应的变量为x 它的两个孩子的变量是 yz。添加子句(¬xyz) 捕获含义的公式 (x(yz)),强制执行 x仅当其子级之一为真时才可以为真。要完成该公式,请添加一个singleton子句,其中说二叉树的根节点的变量必须为true。在初始真值分配中,内部节点的所有变量的值均设置为false,这满足公式的所有子句,但单例子句要求树的根节点使其变量为true。

这样就完成了公式和真值分配的描述。设定参数k FLIP DISTANCE问题的等于 (k+logt+1),适用于交叉组合。它仍然表明我们可以翻转k 一些输入图使公式变为真的变量 Gi 有一个顶点覆盖大小 k

相反,假设 Gi 有一个尺寸k顶点覆盖。设置k 对应于 k通过翻转将顶点中的顶点变为true。设置选择器变量ui 为true以对该输入进行编码 i 被激活,然后翻转 logt 叶路径上的内部二叉树节点 i扎根为真。容易验证这是令人满意的分配:二叉树中的含义都得到满足,根节点的值设置为true,检查子句边缘的子句Gi 对于 ii 保持满意,因为 ui 仍然为false,而图的子句 Gi 之所以感到满意,是因为对于每条边,我们至少将一个端点设置为true。

对于正向,假设最多可以通过翻转来满足公式 k+logt+1变量。然后,我们必须将根节点的变量翻转为true。例如,二叉树中的含义强制将叶子的至少一个选择器变量设置为true。ui。为了满足二叉树中编码的含义,从ui 将根目录设置为true,占 1+logt翻转。以来ui 设置为true,为图创建的子句 Gi 对文字不满意 ¬ui,因此它们很满意,因为的每个边缘的端点之一 Gi设置为true。由于至少1+logt 二叉树的变量最多被翻转 k在此解决方案中,顶点变量变为true。这编码了一个大小为kGi并证明输入之一是YES实例。这样就完成了证明。


1
本文从这种压缩中给出了更强的后果。

谢谢!!!(我立即从引用中删除了“等” ;-)。很好的证明(IMO应该将其发布在论文中)。
Marzio De Biasi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.