1
機能と実装が似ている検出回路
ましょうx=(x1,…,xn)x=(x1,…,xn)x=(x_1,\dots,x_n)ブール変数のベクトルです。ましょC,DC,DC,D上の2つのブール回路でxxx。次の場合、CCCは類似しているとしDDDます。 Pr[C(x)≠D(x)]Pr[C(x)≠D(x)]\Pr[C(x) \ne D(x)]xxx{0,1}n{0,1}n\{0,1\}^n C,DC,DC,Dはグラフ編集距離がわずかに異なります(編集距離は回路のサイズ、たとえばまたはいくつかの小さな定数よりもはるかに小さくなります)、つまりほとんどすべてのゲートとワイヤが一致します対応するゲートとワイヤ、追加/削除/変更されたわずかなゲートのみ。O(1)O(1)O(1)CCCDDD 私の問題は:私は、回路与えられています、そして私は、回路が存在するかどうかを知りたいに似ていると同じではなく、(すなわち、そこに存在する場合ように)。CCCDDDCCCCCCxxxC(x)≠D(x)C(x)≠D(x)C(x)\ne D(x) 誰でもこの問題を解決するアルゴリズムを提案できますか? それが助け場合は、回路に注意を制限することができます与えられた回路よりも小さい(すなわち、我々は回路が存在するかどうかを知りたいというようにより小さくなる、に似ている、およびそこに存在するその結果、)。DDDCCCDDDDDDCCCDDDCCCxxxC(x)≠D(x)C(x)≠D(x)C(x)\ne D(x) それが役立つ場合、既知の良好なテストケースが与えられ、がすべての、我々はさらに回路のみに注意を制限することができるがように、全てに対して。x1,…,xm,y1,…,ymx1,…,xm,y1,…,ymx^1,\dots,x^m,y^1,\dots,y^mC(xi)=yiC(xi)=yiC(x^i)=y^iiiiDDDD(xi)=yiD(xi)=yiD(x^i)=y^iiii これは実用的なアプリケーションから発生するため、この問題を解決できない場合は、バリアントや興味深い特殊なケースを自由に解決してください。たとえば、パラメーターやしきい値は、都合の良い方法でインスタンス化できます。回路が大きすぎない(多項式サイズなど)と仮定できます。グラフの編集距離を、実装のほぼ一致する他の尺度に置き換えてください。また、実際には、SATソルバーは実際に生じる構造化された回路に対して驚くほど効果的であることが多いため、SATソルバーをサブルーチン/オラクルとして呼び出すことはおそらく問題ありません(少なくとも、SATインスタンスから派生したようなもので呼び出している場合は、ような回路から)。CCC あるいは、アルゴリズムがない場合、存在の質問にも興味があります。「平均」回路場合、すべての基準を満たすが存在する確率はどれくらいですか。(私はこの確率が非常に低いことを望んでいますが、そうであるかどうかはわかりません。)CCCDDD 実用的なアプリケーションは、回路悪意のあるバックドア/隠されたイースターエッグが含まれるかどうかをテストすることです。そのようなものがどのように挿入されるのかという仮説は、このようになります。「ゴールデン」回路から始めます。これは、目的の機能を計算し、隠されたバックドアはありません。次に、敵はに小さな変更を加えて、隠れたバックドアを導入し、修正された回路取得します。バックドアの目的は、によって計算された関数を何らかの方法で変更することです。場合は小さすぎない敵はおそらく維持しようとしますので、変更はもっともらしく、ランダムテストによって検出することができるCCCDDDDDDCCCDDDPr[C(x)≠D(x)]Pr[C(x)≠D(x)]\Pr[C(x) \ne D(x)]Pr[C(x)≠D(x)]Pr[C(x)≠D(x)]\Pr[C(x) \ne D(x)]非常に少ない。同様に、がとあまりにも多くの場所で異なる場合、これは回線のランダム検査によって認識される可能性があるため、敵はおそらく変更の数を最小限にしようとします。(また、目的の機能のインスタンスを表すペアのテストスイートがある場合があるため、「ゴールデン」回路が何であれ、満たすことがわかります。 for all。)最終的に、回路(ただし「ゴールデン」回路はない)が与えられ、が一部の修正バージョンであるかどうかを知りたいCCCDDDxi,yixi,yix^i,y^iDDDD(xi)=yiD(xi)=yiD(x^i)=y^iiiiCCCDDDCCCDDD、この種の隠されたバックドアを導入するために変更が行われました。