NCかどうかの決定


27

QiChengによる「未解決のNC 0回路が順列を計算するかどうかを決定する」という質問の特別なケースについてお聞きしたいと思います。

各出力ゲートが最大k個の入力ゲートに構文的に依存する場合、ブール回路はNC 0 k回路と呼ばれます。(非巡回有向グラフとして見られるように、回路にgからgへの有向パスがある場合、出力ゲートgは構文的に入力ゲートgに依存すると言います。)

前述の質問で、QiChengは次の問題の複雑さについて尋ねました。ここで、kは定数です。

インスタンス:nビット入力およびnビット出力のNC 0 k回路。質問:与えられた回路は{0、1} nの順列を計算しますか?換言すれば、回路全単射によって計算関数は、{0、1}であるNに{0、1} N?

Kavehがその質問についてコメントしたように、問題がcoNPにあることは容易にわかります。答えとして、問題はk = 5の場合coNP-complete であり、k = 2の場合Pにあることを示しました。

質問。k = 3の複雑さは何ですか?

2013年5月29日の説明:「{0、1} nの順列」は、{0、1} nからそれ自体への全単射マッピングを意味します。言い換えれば、問題は、すべてのnビット文字列が特定のnビット入力文字列の特定の回路の出力であるかどうかを尋ねます。


1
個人メモ:QiChengの質問への回答を投稿したとき、特定のアプリケーションを考慮せずに問題が面白そうだったという理由だけでそうしました。その数ヶ月後、あるプログラムが順列を計算するかどうかを決めるのは簡単ではないことを誰かに説明しなければならない状況にありました。QiChengの質問のおかげで、完璧な例がありました(偶然です!)。その後、私はk = 3とk = 4の場合についてもっと興味を持ちました。k = 3の場合はすでにcoNP完全であると思われますが、どちらの方法でも証明できていません。
— 伊藤剛

この問題は、Papadimitriou(sciencedirect.com/science/article/pii/S0022000005800637)によって定義されたピジョンホールサーキット問題の特定のケースであると思われます。
— マルコスビジャグラ

@Marcos Villagra:コメントありがとうございます。しかし、「特定のケース」と言うことで、ピジョンホールサーキットの問題の定義を大幅に変更していると思います。ピジョンホール回路問題の重要な特性は、それが完全な検索問題であるのに対して、現在の問題(同じ出力を生成する2つの入力の検索問題と見なされる)は完全な検索問題ではないことです。
— 伊藤剛

回答:


3

この問題はcoNP困難(したがってcoNP完全)です。k=3

これを証明するために、3-SATからこの問題を補完するものに減らします(特定の回路に対して、回路は非全単射関数を成立させます)。NC30

最初に役立つ予備的な定義:

ラベル付きグラフを有向グラフとして定義し、そのエッジのいくつかはリテラルでラベル付けされ、すべての頂点にはラベルなしの入力エッジが1つ、ラベル付きの入力エッジが1つ、またはラベルなしの入力エッジが2つあります。

削減

我々は3-SATの式を有すると仮定からなるm個のそれぞれ3個のリテラルを含む、条項。最初のステップは、標識されたグラフを構築することであるGからφを。このラベルの付いたグラフには、ϕの各句に対して次のガジェットのコピーが1つ含まれています(ひどい図は残念です)。代わりに、L1、L2、およびL3とラベル付けされた3つのエッジには、句のリテラルがラベル付けされます。ϕmGϕϕ

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

ガジェット(各句に1つ)はすべて、1つの大きなサイクルで配置され、1つのガジェットの下部が次のガジェットの上部にリンクします。

このガジェットの配列は、実際にはラベル付きグラフを形成することに注意してください(すべての頂点には、次数1または2があり、次数1の頂点につながるエッジのみがラベル付けされます)。

式とラベル付きグラフG(ϕから構築された)から、次にN C 0 3回路を構築します(これで縮約が終了します)。この回路の入力および出力の数はN + V n個の変数の数であり、φ及びvはの頂点の数であるG。1つの入力と1つの出力は、各変数に割り当てられたφとの各頂点にG。場合xがでいくつかの変数ですφϕGϕNC30n+vnϕvGϕGxϕ次に、関連付けられた入力および出力ビットをx i nおよびx o u tとして参照します。場合さらに、Lはリテラルであり、Lが= X、我々は定義LをI N = X I N及び場合lはリテラルであり、L = ¬ X我々は定義LをI N = ¬ X I nが。最後に、vがGの頂点である場合xxinxoutll=xlin=xinll=¬xlin=¬xinvG次に、関連付けられた入力および出力ビットをv i nおよびv o u tとして参照します。vvinvout

出力ビットには4つのタイプがあります。

1)inのすべての変数について、x o u t = x i n。この出力は1つの入力ビットのみに依存することに注意してください。xϕxout=xin

2)すべての頂点について正確に1つの着信エッジに標識されたグラフ中の(U 、V )エッジが標識されていないように、V O U T = V I N ⊕ U I N。この出力は2つの入力ビットのみに依存することに注意してください。v(u,v)vout=vin⊕uin

3)すべての頂点について正確に1つの着信エッジに標識されたグラフ中の(U 、V )エッジが標識されているように、L、V O U T = V iがN ⊕ (U I N ∧ L I N)。l i nはリテラルlで使用される変数xのx i nのみに依存するため、この出力は3つの入力ビットのみに依存することに注意してください。v(u,v)lvout=vin⊕(uin∧lin)linxinxl

4)すべての頂点について正確に2つの入力エッジを有する標識されたグラフ中の(U 、V )及び(W 、V )、V O U T = V I N ⊕ (U I N ∨ W I N)。この出力は3つの入力ビットのみに依存することに注意してください。v(u,v)(w,v)vout=vin⊕(uin∨win)

すべての場合において、出力は3つの入力のみに依存するため、構築する回路は必要に応じてです。NC30

正しさの証明の場合1:は充足可能ϕ

以下のための満足の割り当てが存在すると仮定。次に、入力用に次の2つの値セットを作成します。ϕ

1)の変数に関連付けられた入力満たす割り当ての値を与えられています。Gの頂点に関連付けられているすべての入力には、値0が与えられます。ϕG

2)の変数に関連付けられた入力満たす割り当ての値を与えられています。Gの 1つの節のガジェットの頂点を考えます。ラベルの値が0(満足のいく割り当ての下)の場合、そのラベルでラベル付けされたエッジのターゲットエンドポイントの頂点に関連付けられた入力には値0が与えられます。L1とL2の両方の値が0の場合-(上記の)ガジェットの頂点にも値0が与えられます。他のすべての頂点には値1が与えられます。ϕG

これら2つの入力セットが同一の出力を生成し、したがって回路が順列をエンコードしないことを示したいと思います。NC30

次の4種類の出力ビットを検討してください。

1)inのすべての変数について、x o u t = x i n。以来、X iは、n個の入力の両方のセットに対して同じである、この形式の出力が常に入力の二組で同じであろう。xϕxout=xinxin

2)すべての頂点について正確に1つの着信エッジに標識されたグラフ中の(U 、V )エッジが標識されていないように、V O U T = V I N ⊕ U I N。コピーがGを構成するガジェットを調べると、そのようなエッジはすべて、入力の2番目のセットの下で入力値が常に1である頂点のペアのみで構成されていることがわかります。したがって、V O U T = V I N ⊕ U I N = 0 ⊕ 0 =v(u,v)vout=vin⊕uinG最初の入力のセットと下 V O U T = V I N ⊕ U I N = 1 ⊕ 1 = 0の入力の第二の組の下で。したがって、この形式の出力は、2つの入力セットで常に同じ(そして実際にはゼロ)になります。vout=vin⊕uin=0⊕0=0vout=vin⊕uin=1⊕1=0

3)すべての頂点について正確に1つの着信エッジに標識されたグラフ中の(U 、V )エッジが標識されているように、L、V O U T = V I N ⊕ (U I N ∧ L )。割り当ての下でlがfalseの場合、両方の入力セットでv i nは0です。次いで、V O U T = V I N ⊕ (U I N ∧v(u,v)lvout=vin⊕(uin∧l)lvinの入力の両方の組の下で。割り当ての下で lが真の場合、 v i nは最初の入力セットでは0で、2番目の入力セットでは1です。また、ガジェットでは、ラベル付きエッジ(u 、v )のみに頂点 uがあり、常に u i n = 1であることに注意してくださいvout=vin⊕(uin∧l)=vin⊕(uin∧0)=vin=0lvin(u,v)uuin=12番目の入力セットの下。その結果、両方の入力セットの下で、lがtrueのときはいつでもあることがわかります。次いで、V O U T = V I N ⊕ (U I N ∧ L )= V I N ⊕ (U I N ∧ 1 )= V I N ⊕ U I N = V I N ⊕ Vuin=vinl。したがって、この形式の出力は、2つの入力セットで常に同じ(そして実際にはゼロ)になります。vout=vin⊕(uin∧l)=vin⊕(uin∧1)=vin⊕uin=vin⊕vin=0

4)すべての頂点について正確に2つの入力エッジを有する標識されたグラフ中の(U 、V )及び(W 、V )、V O U T = V I N ⊕ (U I N ∨ W I N)。各ガジェットには、このような頂点が2つあります。上の頂点と2番目から上の頂点。これら2つのケースを個別に検討します。v(u,v)(w,v)vout=vin⊕(uin∨win)

4a)がガジェットの2番目の頂点である場合、uおよびwは、L1およびL2とラベル付けされたエッジの2つのターゲットエンドポイントです。入力の第一の組の下で、V O U T = V I N ⊕ (uはI N ∨ W I N)= 0 ⊕ (0 ∨ 0 )= 0。入力の第二の組の下で、U iがN L1 IFF 0別名(満足割り当て下で値0を有している、U 、I 、N =vuwvout=vin⊕(uin∨win)=0⊕(0∨0)=0uin); 同様に、 W I N L2が(別名満たす割り当て下で値0を有するときに限り0であり、 wは、I N = L 2)。そして最後に、 V I N L1とL2の両方IFF 0有する値0になるように定義されているが(別名 V I N = L 1 ∨ L 2)。したがって、入力の第二の組の下で、 V O U T = V I N ⊕ (U I N ∨ W I N)= (uin=L1winwin=L2vinvin=L1∨L2。したがって、この形式の出力は、2つの入力セットで常に同じ(そして実際にはゼロ)になります。vout=vin⊕(uin∨win)=(L1∨L2)⊕(L1∨L2)=0

4b)がガジェットの最上部の頂点である場合、uは2番目の最上部の頂点であり、wはL3とラベル付けされたエッジのターゲットエンドポイントです。入力の第一の組の下で、V O U T = V I N ⊕ (uはI N ∨ W I N)= 0 ⊕ (0 ∨ 0 )= 0。入力の2番目のセットでは、L1とL2の両方の値が0である場合、u i nは0です(別名u i n = Lvuwvout=vin⊕(uin∨win)=0⊕(0∨0)=0uin)。W I N L3が(別名値0を有するときに限り0であり、 wは、I N = L 3)。そして最後に v i n = 1です。したがって、入力の第二の組の下で、 V O U T = V I N ⊕ (U I N ∨ W I N)= 1 ⊕ ((L 1 ∨ L 2 )∨ L 3 )uin=L1∨L2winwin=L3vin=1等式(L 1 ∨ L 2 ∨ L 3 )= 1は、すべての句のために満足割り当てに定義することによって成立します。したがって、この形式の出力は、2つの入力セットで常に同じ(そして実際にはゼロ)になります。vout=vin⊕(uin∨win)=1⊕((L1∨L2)∨L3)=1⊕(L1∨L2∨L3)=1⊕1=0(L1∨L2∨L3)=1

明らかに、出力は2つの異なる入力セットで同じであるため、回路は非全単射関数を実行します。NC30

正しさの証明ケース2:が満たされないϕ

満足割り当てが存在しないことになりましたと。次に、矛盾のために、いくつかの異なる入力セットが同じ出力を持つN C 0 3回路につながると仮定します。ϕNC30

明らかに、2つの入力が同じ値持っている必要がありますすべての変数のためのxでφ。したがって、xの値を明確に参照できます。xinxϕx

定義頂点の集合であることがVでGようにV I nは、入力値の二組が異なります。SvGvin

以下の補題を証明します。

補助定理1:いくつかのガジェットで標識されたエッジのターゲット・エンドポイントですべての3つの頂点がでない場合は次いでガジェットにおけるこれら3つ以上のない頂点がでないS。SS

補題2:一部のガジェットでトップの頂点はでていない場合はなし頂点まで次のガジェットで、その後はであるS。SS

ガジェットがループを形成するので、これは任意のガジェットで標識されたエッジのターゲット・エンドポイントですべての3つの頂点がでない場合ことを意味その後には頂点GがでていないS(言い換えれば、Sは空です)。SGSS

しかし、句に関連したガジェット検討満足されていません。このガジェットでは、すべての3つのラベルは、我々は、そのエッジを知っている値0を有する(U 、V )標識Lを満足しなければならないV O U T = V I N ⊕ (U I N ∧ L )が、L = 0、そうV O U T = v i n(L1∨L2∨L3)(u,v)Lvout=vin⊕(uin∧L)L=0。したがって、出力は両方の入力で同じなので、 v i nの値も2つの入力セットで同じでなければなりません。つまり、 vが Sにないことを示しました。したがって、この特定のガジェットでは、ラベル付きエッジのターゲットエンドポイントの3つの頂点は Sにありません。vout=vin⊕(uin∧L)=vin⊕(uin∧0)=vin⊕0=vinv私nvSS

結果として、は空であると結論付けます。ただし、これは、2つの入力セット間で違いがなかったことを意味し、これらの入力セットが異なるという仮定に矛盾します。その結果、N C 0 3回路によって実行される関数は単射であるため、全単射であることがわかります。SNC30

残っているのは、補題を証明することだけです。

これを行うには、すべてのタイプの頂点(ラベル付きの次数1、ラベルなしの次数1、および次数2)について、すべての着信エッジがSにない頂点から来る場合、問題の頂点もSにないことに注意してください。これは、すべての3つのケースがでV O U T = V I N ⊕ XここでXに縁を持つ変数、及び/又は頂点に関連付けられた入力のいくつかの関数であるV。そのような頂点はすべて仮定ではSにないため、Xの値は両方の入力セットで同じでなければなりません。したがって、v iGSSvoあなたはt=v私n⊕バツバツvSバツも入力の両方のセットの下で同じです。つまり、vはSにありません。v私n=voあなたはt⊕バツvS

これで、すべての先行タスクがSにないときは常に頂点がないという規則ができたので、上のガジェット図に規則を繰り返し適用するだけで、補題が続きます。SS


-1

著者が求めていた答えではなく、この文脈における「順列」とは何かを明確にするコメントをご覧ください。

単一遺伝子順列グループの包含ダイグラフの最小支配セットのサイズを決定しました:https : //oeis.org/A186202

必要なのは、すべての素数サイクル分解の1つのメンバーをテストすることだけです。

各プライムサイクルでは、要素を(10101010 ...)、次に(01010101 ..)としてコーディングするだけで十分です。

------明確化------このアプローチの目標は、2 ^ n個のテストケースを有向グラフとしてモデル化することです。1つの成功したテストケースが別の成功したテストケースを暗示している場合、このテストスペース有向グラフの最小支配セットのみをテストする必要があります。順列のスペースでは、OEIS A186202は、自明でないサブグループを検出するか、存在しないことを証明するためにテストする必要がある最大値です。この数はまだ大きいですが、n!よりはるかに小さいです。

--Musing-- n回の反復でn-1個のゼロと1個を使用することにより、探している固定置換を検出できます。その後、O(n {(n-1)\ choose(k-1)}(2 ^(k-1))で、(k-1)変数のすべてのセットがシャッフルの各インデックスに影響しないことをテストできます。 。kは多項式であるため固定されているため、何か不足していますか?


うーん (01)*、(10)*で十分かどうかわからない。プライムサイクルごとにすべての2 ^ p構成を試す必要がある場合があります。
— チャドブリューベーカー

2
申し訳ありませんが、チャド、あなたは私を失いました。あなたは、質問が関数が全単射であるかどうかを尋ねていることを知っていますか?(そのような全単射関数があります。)出力ビットが入力ビットの順列(並べ替え)であるかどうかは問いません。これは、回路を実行するだけで答えられるはるかに簡単な問題です。n − 1個のゼロと1 個のすべての可能な入力。(2n)!n−11
— DW

2
チャド、はい、あなたは何かを見逃しているかもしれません。ポスターが求めている機能かどうか全単射関数である(すなわち、存在しない、X 、X ' ∈ { 0 、1 } NようにC (X )= C (x ′)およびx ≠ x ′)。彼/彼女は、関数CC:{0,1}n→{0,1}nx,x′∈{0,1}nC(バツ)=C(バツ′)バツ≠バツ′C入力ビットを並べ替えます(シャッフル/並べ替え/並べ替え)。違いがわかりますか?あなたは間違った質問に答えていると思います。
— DW

2
助けてくれてありがとう、しかしDWが説明したように、あなたが答えた質問は私が尋ねた質問とは違うのではないかと思う。「{0,1} ^ nの順列」とは、{0,1} ^ nからそれ自体への全単射関数を意味し、nビットを再配置することを意味しません。
— 伊藤剛

3
チャド、この答えを削除するか、少なくともこれが剛の質問に答えていないというメモを一番上に追加してもいいですか?
— カベ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.