确定NC电路是否计算置换


27

我想问一下由QiCheng提出的问题“ 确定给定的NC 0电路是否计算排列 ” 的特殊情况,但这个问题没有得到解答。

如果每个输出门在语法上取决于最多k个输入门,则布尔电路称为NC 0 k电路。(我们说,当电路中存在从g '到g的有向路径时,如有向无环图所示,输出门g从句法上取决于输入门g ' 。)

在上述问题中,启成询问了以下问题的复杂性,其中k为常数:

实例:具有n位输入和n位输出的NC 0 k电路。问题:给定电路是否在{0,1} n上计算置换?换句话说,是由电路的双射计算的函数从{0,1} Ñ {0,1} Ñ

正如Kaveh对这个问题的评论一样,很容易看出问题出在coNP中。在一个答案中,我表明问题对于k = 5 是coNP完全的,对于k = 2 则在P中。

问题k = 3 的复杂度是多少?

2013年5月29日的澄清:“在{0,1} n上进行置换”是指从{0,1} n到其自身的双射映射。换句话说,该问题询问对于某个n位输入字符串,每个n位字符串是否都是给定电路的输出。


1
个人说明:当我发布对QiCheng问题的答案时,我之所以这样做是因为问题看起来很有趣,并且没有任何特殊的用途。在那之后的几个月,我碰巧遇到一种情况,我不得不向某人解释,要确定给定程序是否计算排列并非易事。多亏齐成的问题,我有了一个完美的例子(巧合!)。之后,我对k = 3和k = 4的情况变得更加好奇。我怀疑k = 3的情况已经是coNP完全的,但是我无法证明任何一种方式。
伊藤刚(Tsuyoshi Ito)

这个问题似乎是Papadimitriou(sciencedirect.com/science/article/pii/S0022000005800637)定义的Pigeonhole电路问题的特例,对于PPP而言,在搜索问题之间的多时减少方面,它是完整的。
Marcos Villagra

@Marcos Villagra:谢谢您的评论,但恐怕您说“特例”会大大改变Pigeonhole电路问题的定义。鸽子洞电路问题的一个重要特性是它是一个整体搜索问题,而当前问题(被视为产生相同输出的两个输入的搜索问题)不是一个整体搜索问题。
伊藤刚(Tsuyoshi Ito)

Answers:


3

问题是coNP困难的(因此是coNP完全的)。k=3

为了证明这一点,我将从3-SAT简化为该问题的补充(对于给定的电路,该电路是否发挥非双射功能)。NC30

首先是一个有益的初步定义:

我们将标记图定义为有向图,其中一些边用文字标记,其属性是每个顶点具有一个未标记的输入边,一个标记的输入边或两个未标记的输入边。

减少

假设我们有一个包含子句的3-SAT公式,每个子句包含三个文字。第一步是建立一个标记的曲线图从。此带标签的图为每个子句包含以下小工具的一个副本(对不起的图很抱歉)。相反,标记为L1,L2和L3的三个边在子句中用文字标记。ģ φ φϕmGϕϕ

   |
   |               |
   |               |
   |               O<-----\
   |               ^      |
   |               |      |
   |               |      |
   |        /----->O      |
   |        |      ^      |
   |        |      |      |
   |        |      |      |
   |        O      O      O
   |        ^      ^      ^
   |        |      |      |
   |        |L1    |L2    |L3
   |        |      |      |
   |        O      O      O
   |        ^      ^      ^
   |        |      |      |
   |        |      |      |
   |        \------O------/
   |               ^
   |               |
   |               |
   |               O
   |               ^
   |               |
   |

这些小工具(每个子句一个)都以一个大周期排列,一个小工具的底部链接到另一个小工具的顶部。

请注意,小工具的这种排列实际上确实形成了一个带标签的图形(每个顶点的度数为1或2,仅边缘导致度数为1的顶点被标记)。

从公式和带标签的图形(由构造),我们接下来构造一个电路(这将得出简化结果)。的输入和输出的该电路的数目是其中是变量的个数和是在顶点的数量。一个输入和一个输出分配给每个变量和每个顶点。如果是某个变量,则我们将与关联的输入和输出位称为ϕφ Ñ Ç 0 3 Ñ + v Ñ φ v ģ φ ģ X φ X X Ñ X Ò ù = X Ñ = X Ñ= ¬ X Ñ = ¬ X Ñ v G v v i n v o u tGϕNC30n+vnϕvGϕGxϕxxin和。此外,如果是的文字,那么我们定义,如果是的文字,那么我们定义。最后,如果是某个顶点,那么我们将与关联的输入和输出位称为和。xoutll=xlin=xinll=¬xlin=¬xinvGvvinvout

有四种类型的输出位:

1)对于每一个变量在,。注意,该输出仅取决于一个输入位。ϕ x o u t = x i nxϕxout=xin

2)对于标记图中的每个顶点,恰好有一个传入边缘使得该边缘未被标记,。注意,该输出仅取决于两个输入位。Û v v Ô Ü = v Ñù Ñv(u,v)vout=vinuin

3)对于标记图中的每个顶点,恰好有一个传入边缘,使得边缘标记为,。请注意,此输出仅依赖于三个输入位,因为仅取决于,而字面量使用的变量依赖于此。Û v v Ô Ù = v Ñû ÑÑñ X Ñ X v(u,v)lvout=vin(uinlin)linxinxl

4)对于标记图中的每个顶点,正好有两个传入边和,。注意,该输出仅取决于三个输入位。Û v 瓦特v v Ô Ü = v Ñû Ñ瓦特Ñv(u,v)(w,v)vout=vin(uinwin)

由于在所有情况下,输出仅取决于三个输入,因此,根据需要,我们构建的电路位于中。NC30

正确性证明案例1:是令人满意的ϕ

假设存在对的满意分配。然后为输入构造以下两组值。ϕ

1)与变量关联的输入被赋予令人满意的赋值。与顶点相关联的所有输入的值均为0。GϕG

2)与变量关联的输入将获得令人满意的赋值。考虑中的一个子句小工具中的顶点。如果标签的值为0(在令人满意的分配下),则与用该标签标记的边的目标端点处的顶点关联的输入的值为0。如果L1和L2都为0,则第二个为小工具的顶部顶点(如上所示)的值也为0。其他所有顶点的值也为1。GϕG

我们希望证明这两组输入产生相同的输出,因此电路未编码置换。NC30

考虑四种类型的输出位:

1)对于每一个变量在,。由于两组输入的相同,因此在两组输入之间此形式的输出将始终相同。φ X ö Ù = X Ñ X Ñxϕxout=xinxin

2)对于标记图中的每个顶点,恰好有一个传入边缘使得该边缘未被标记,。检查其副本组成的小工具,我们看到所有这样的边仅由一对顶点组成,这些顶点的输入值在第二组输入下始终为1s。因此,在第一组输入下,,并且在第二组输入下。因此,在两组输入之间,这种形式的输出将始终相同(实际上为零)。Û v v Ô Ü = v Ñü Ñ ģ v ö Ù = v ÑÙ Ñ = 0 0 = 0 v Õ Ù = v ÑÙ Ñ = 1 1 = 0v(u,v)vout=vinuinGvout=vinuin=00=0vout=vinuin=11=0

3)对于标记图中的每个顶点,恰好有一个传入边缘,使得边缘标记为,。如果在赋值下为假,则在两组输入下为0;否则为0。然后在两组输入下,。如果在赋值下为true,则在第一个输入集下为0,在第二个输入集下为1;还要注意的是,在小工具,唯一的标记边缘具有顶点总是有Û v v Ô Ù = v Ñû Ñv Ñ v ö Ù = v Ñû Ñ= v ÑÛ ñ0 = v ñ = 0v(u,v)lvout=vin(uinl)lvinvout=vin(uinl)=vin(uin0)=vin=0v ÑÛ v û û Ñ = 1 Ù Ñ = v Ñv ö Ù = v Ñû Ñ= v Ñû Ñ1 = v ñÙ ñ = vlvin(u,v)uuin=1在第二组输入下,。结果,我们看到在两组输入下,只要为真,;然后。因此,在两组输入之间,这种形式的输出将始终相同(实际上为零)。uin=vinlvout=vin(uinl)=vin(uin1)=vinuin=vinvin=0

4)对于标记图中的每个顶点,正好有两个传入边和,。每个小工具中都有两个这样的顶点。顶部顶点和第二个从顶部顶点开始。我们分别考虑这两种情况。Û v 瓦特v v Ô Ü = v Ñû Ñ瓦特Ñv(u,v)(w,v)vout=vin(uinwin)

4a)当是小工具中的第二高顶点时,和是标记为L1和L2的边的两个目标端点。在第一组输入下,。在第二组输入下,为0 ,是L1在满足指定条件下又为0(又名);类似地,如果在满意的分配下L2的值为0(又名),则为0 ;最后,如果L1和L2都具有值0(又称为),定义为0 。因此,在第二组输入下,ü 瓦特v ö Ù = v Ñû Ñ瓦特Ñ= 0 0 0 = 0 ü Ñ Ù Ñ = 大号1 瓦特Ñ瓦特Ñ = 大号2 v ñ v ñ = 大号1 大号2vuwvout=vin(uinwin)=0(00)=0uinuin=L1winwin=L2vinvin=L1L2vout=vin(uinwin)=(L1L2)(L1L2)=0。因此,在两组输入之间,这种形式的输出将始终相同(实际上为零)。

4b)当是小工具中的顶部顶点时,是第二顶部顶点,而是标记为L3的边的目标端点。在第一组输入下,。在第二组输入下,如果L1和L2的值均为0 ,则为0(又名);为0,如果L3的值为0(又名);最后。因此,在第二组输入下,等于ü 瓦特v ö Ù = v Ñû Ñ瓦特Ñ= 0 0 0 = 0 ü Ñ Ù Ñ = 大号1 大号2 瓦特Ñ瓦特Ñ = 大号3 v ñ = 1 v Ò ù vuwvout=vin(uinwin)=0(00)=0uinuin=L1L2winwin=L3vin=1大号1 大号2 大号3 = 1vout=vin(uinwin)=1((L1L2)L3)=1(L1L2L3)=11=0(L1L2L3)=1根据定义,满足每个子句。因此,在两组输入之间,这种形式的输出将始终相同(实际上为零)。

显然,我们看到两组不同输入的输出是相同的,因此电路实现了非双射功能。NC30

正确性证明案例2:不满足ϕ

现在假设没有令人满意的赋值。然后为了矛盾起见,假设两组不同的输入导致具有相同输出的电路。N C 0 3ϕNC30

显然,两个输入端必须具有相同的值,为每个变量在。因此,我们现在可以明确地引用的值。 X φ Xxinxϕx

将定义为的顶点的集合,以使在两组输入值中不同。v ģ v ÑSvGvin

我们将在下面证明以下引理:

引理1:如果在某个小工具中,标记边缘目标端点的所有三个顶点均不在则在小工具中这三个顶点之上的顶点均不在。小号SS

引理2:如果某个小工具中的顶部顶点不在中,则在下一个小工具中,顶点不在。小号SS

由于小工具形成一个循环,因此这意味着,如果在任何小工具中,标记边缘目标端点的所有三个顶点都不在则中的顶点都不在(换句话说,为空)。ģ 小号小号SGSS

但是,请考虑与不满足子句关联的小工具。在此小工具中,所有三个标签的值均为0。我们知道标记为边必须满足,但,所以。因此,由于两个输入的输出都相同,因此在两组输入之间的值也必须相同。换句话说,我们表明不在Û v 大号v Ô Ù = v Ñû Ñ大号大号= 0 v Õ Ù = v Ñû Ñ大号= v ñû ñ(L1L2L3)(u,v)Lvout=vin(uinL)L=0 v Ñ v 小号小号vout=vin(uinL)=vin(uin0)=vin0=vinvinvS。因此,我们看到在该特定小工具中,标记边缘目标端点处的三个顶点不在。S

结果,我们得出结论为空。但是,这意味着两组输入之间没有差异,这与这些输入组不同的假设相矛盾。结果,我们看到由电路实现的函数是单射的,因此是双射的。N C 0 3SNC30

剩下的就是证明引理。

为此,我们注意到,对于每种类型的顶点(带标签的度数1,不带标签的度数1,以及度数2),如果所有传入边均来自不在的顶点,则所讨论的顶点也不在。这是因为在所有三种情况下,其中是与变量和/或具有边的顶点相关联的输入的某些函数。由于假设所有这些顶点都不在,因此在两组输入下的值必须相同。因此,在两组输入下,也相同。换句话说小号小号v ö Ù = v ÑX X v 小号X v Ñ = v ö Ü X v 小号GSSvout=vinXXvSXvin=voutXv不在。S

现在,我们有规则,一个顶点不是,只要其所有前任的不是,引理通过反复运用规则上面的小工具图简单地跟随。小号SS


-1

不是作者寻求的答案,请参阅注释,以阐明在这种情况下的“排列”。

我为单基因置换组包含图计算出了最小支配集的大小:https//oeis.org/A186202

您要做的就是测试每个素数周期分解的一个成员。

对于每个主要周期,将元素编码为(10101010 ...),然后为(01010101 ..)应该足够了?

------澄清------这种方法的目标是将2 ^ n个测试用例建模为有向图。如果一个成功的测试用例意味着另一个成功的测试用例,那么您只需要测试该测试空间图的最小控制集即可。在排列空间中,OEIS A186202是您必须测试的最大值,以检测非平凡的子组或证明不存在子组。这个数字仍然很大,但是比n!小得多。

-混合-通过使用n-1个零和n个迭代中的1个,您可以检测到所需的固定置换。之后,在O(n {(n-1)\ choose(k-1)}(2 ^(k-1))中,您可以测试每组(k-1)变量不会影响随机播放的每个索引由于k是多项式固定的,我会丢失什么吗?


嗯 不知道(01)*,(10)*是否足够。您可能必须为每个主要周期尝试所有2 ^ p配置。
乍得·布鲁贝克

2
抱歉,乍得,你丢了我。您知道问题是在问函数是否是双射的吗?(有这样的双射函数。)并不是问输出位是否是输入位的排列(重新排序),这是一个容易得多的问题,只需运行在零和个所有可能的输入上进行电路。n 1 1(2n)!n11
DW

2
乍得,是的,我相信您可能会缺少一些东西。张贴者询问函数是否是双射函数(即,中不存在,使得和)。他/她不是在问函数是否对输入位进行置换(重新排列/重新排列/重新排序)。你看得到差别吗?我怀疑您在回答错误的问题。 X X '{ 0 1 } Ñ Ç X = c ^ X 'X X ' ÇC:{0,1}n{0,1}nx,x{0,1}nC(x)=C(x)xxC
DW

2
感谢您的帮助,但正如DW所解释的那样,恐怕您回答的问题与我提出的问题有所不同。“在{0,1} ^ n上进行置换”表示从{0,1} ^ n到其本身的双射函数,并不意味着重新排列n位。
伊藤刚(Tsuyoshi Ito)

3
乍得,您介意删除此答案或至少在顶部添加注释以表明该答案无法回答Tsuyoshi的问题吗?
卡韦
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.