令为布尔变量的向量。令为上的两个布尔电路。假设在以下情况下与相似:C ,D x C D
当从\ {0,1 \} ^ n中随机地均匀绘制时,呈指数减小(换句话说,它们具有几乎相同的功能);和,
的图形编辑距离相差很小(它们的编辑距离远小于电路的大小,例如或一些小常数),这意味着C的几乎所有门和导线都匹配D中对应的门和导线,仅添加/删除/更改了几个门。
我的问题:给我一个电路,我想知道是否存在一个类似于C但不等于C的电路D(即,存在x使得C(x)\ ne D(x))。
谁能提出解决这个问题的算法?
如果有帮助,我们可以将注意力集中在小于给定电路C的电路上(即,我们想知道是否存在一个电路D使得D小于C,D类似于C,并且存在x这样C(x)\ ne D(x))。
如果有帮助,则可以额外地假设我们给出已知良好的测试用例,使得为所有,我们可以进一步将注意力集中在仅电路,使得所有i的D(x ^ i)= y ^ i。
这是由实际应用引起的,因此,如果您不能解决此问题,请随时解决任何变体或有趣的特殊情况。例如,可以随意使用任何方便的方式实例化任何参数或阈值。您可以假设电路不是太大(多项式大小或其他大小)。可以用其他一些接近实现的方法来替换图形编辑距离。此外,在实践中,SAT解算器通常在实践中出现的结构化电路上出奇地有效,因此将SAT解算器作为子例程/ oracle调用可能很好(至少,如果要在派生的SAT实例上调用它)来自像的电路)。
或者,由于缺乏任何算法,我也会对存在问题感兴趣:对于“平均”电路,存在满足所有条件的的概率是多少?(我希望这种可能性非常低,但是我不知道是这种情况。)d
实际应用是测试电路是否包含恶意后门/隐藏的复活节彩蛋。这样的事情可能会被插入的假设是这样的。我们从“黄金”电路开始,该电路计算所需的功能并且没有隐藏的后门。然后,对手使一个小的变化,以引入隐藏后门,获得改性电路。后门的目的是以某种方式更改由计算的函数。如果不太小,则可以通过随机测试合理地检测到该变化,因此对手可能会尝试保持D D C D Pr [ C (x )≠ D (x )] Pr [ C (x )≠ D (x )] C D x i,y i D D (x i)= y i i C D C D很小。同样,如果在很多地方都与不同,则可能会通过对电路的随机检查注意到这一点,因此对手可能会尝试尽量减少更改次数。(而且,可能会有一组表示所需功能实例的对测试套件,因此我们知道,无论“黄金”电路是什么,它都满足所有的。)最后,我们给出的电路(但不是“黄金”电路),我们想知道是否可能会有一些修改后的版本,在此处进行了修改以引入这种隐藏的后门。