ブール変数NPのリストを満たす演算子を見つける問題は完全ですか?


11

これはSATと似ていますが、各変数の割り当ては知っていますが、ブール演算子の割り当てはわかりません。その場合、式が特定のブール値に評価されるように各演算子の割り当てを見つけることはNPCの問題ですか?

実際、整数算術式(1 op1 3 op2 7 op3 op4 = 10など)を満たす算術演算子の割り当てを見つけることがNP完全かどうか疑問に思っていました。


2
そのため、私が正しく理解していれば、式は満足できるものであり、ブール演算子の割り当てを知りたいと思うでしょう。演算子をすべての「演算子変数」に割り当てるだけで完了です。2番目の問題については知りませんが、面白そうです。
ジョージ

3
@GeorgeB:解決策が正しいとは思わない。すべてのブール値がfalseに設定されている場合はどうなりますか?この質問は興味深いものですが、少し手間がかかる場合があります。どのブール演算子のセットから選択していますか?おそらくようなバイナリブール演算子の興味深いサブセットを意味します{,,}。すべての二項ブール演算子を含める場合、問題は簡単です-定数マップを「true」に選択するだけです。
ハックベネット

1
ハックが言ったように、すべてのiに対してを選択します。ただし、演​​算子を特定のセットに制限すると、質問はより興味深いものになります。算術の場合も同様です。xopiy=1i
カベ

これは、QBFに何らかの接続があるか、またはそれまでに削減されているようです。おそらく、QBFを構築して、解決するとオペレーターに提供できます。正しい?高速インスペクションでは、Pspaceが完全であるように見えます...また、括弧がない場合は優先順位を定義する必要があります。ORより高いですか?括弧/グループ化を定義できる場合、問題はより自然なようです。
vzn

@GeorgeB。すみません、明確にしませんでした。ブール式の評価には、0または1のブール値を指定できます。
DSounders12年

回答:


10

加算と減算を使用すると、NP困難なパーティションの問題は2番目の問題に帰着すると思います。

集合与えられると、問題を作成します。S={s1,s2,,sn}

o p 1 s 2 o p 2 s 3 o p 3o p n 1 s n = 0s1 op1 s2 op2 s3 op3 opn1 sn=0

ソリューションが存在する場合、2つのセットを作成します。

S1={s1}{si|opi1=+}

S2={si|opi1=}

元の問題のセットアップでは、これら2つのセットの合計が同じでなければならないため、パーティションの問題は解決されます。これは、この問題に対する実際の解決策を考え出すだけでなく、実際には、NPが解決策が存在するかどうかを判断するのが難しいことを示しています(少なくとも加算と減算の場合)。

乗算や加算など、負の整数を作成できない一連の操作については、それほど明確ではありません。また、これは問題がNP困難であることを示しています。これよりも強力な結果をもたらす削減があるかもしれません。


1
ターゲットの問題をs 1s n = 1に設定するだけで、あなたの証明はケースにかなり簡単に適応できると思います。解は、分母が分子と同じであることを意味します(すべてのiについてs i > 0と仮定)。もちろん、これは4つの演算子の場合にはなりませんが、操作の順序も処理する必要があります。×/÷s1sn=1si>0i
ルークマティソン

ありがとう、@サムとルーク。4つの演算子をすべて混在させるとどうなりますか?直観的に演算子を増やすと、問題はさらに複雑になりますが、簡単な証明はありません。
DSounders

まだ4つすべてについて考えています。簡単に取得できますが、それでも一度に2つしかありません。+/÷
ルークマティソン

1
また、PRODUCT PARTITION の(強力な)完全性の参照:「「Product Partition」およびスケジューリングとシステムの信頼性の関連問題:計算の複雑さと近似」sciencedirect.com/science/article/pii/S0377221710003905NP
Luke Mathieson

4

短い答え。SATの演算子バージョンは効率的に解くことができます。少なくとも、ゲートセットの任意の選択に対して、ファンアウトのない2入力ゲートの任意の回路を想定した場合。

長い答え。 私は次の形式のブール値問題を想定しています。

x{0,1}nG C G X X X Cn2GCG xxxC

特に、回路特定の構造を課すことはなく(バイナリツリーであることを除く)、ファンアウトを許可しません(したがって、各ビットは1回だけ使用されます)。ゲートは非対称になります。2ビットゲートのみを許可することで、NOTゲートを除外します(ただし、AND / NANDなどの否定によって互いに関連する複数のゲートを使用することでシミュレートできます。また、入力のない定数を単に出力するゲートも除外しますので、回路におけるゲート数は、実際には常になることのためビット入力。簡潔にするためには、私が参照するために2-TREE-OPSATとして以下単にOPSATx n 1 nCxn1n; ただし、任意のk入力ゲートを許可する回路(k-TREE-OPSAT)またはファンアウトを許可する回路(これをk-FANOUT-OPSATと呼ぶ場合があります)では、問題の分析がはるかに困難になる場合があります。

[ 追加して編集:質問の現在のリビジョンのより一般的な問題を考慮してこれを簡単に調整できます。この場合、特定のをターゲット値にマッピングしようとします、以下の分析でと役割を交換します。これは、の役割を交換する効果有しANDORNANDNORを ] B { 0 1 } 0 1x{0,1}b{0,1}01

固定選択の、適切なゲートを持つ適切なツリーを選択する問題は、論理和と同じです:などの等価性を使用する より複雑なゲートセットを単純な(そして強力な)ゲートセットに関連付けるコレクション間でリダクションを実行できます。ゲートと同じ効果(特定の入力が与えられたとき)を持つ要素を賢明に選択することにより、1つのゲートセットがセットに属さない他のゲートをエミュレートできることを話すことができます。特に、ゲートの特定の組み合わせ()は、を生成する定数関数をシミュレートできます。ORX Y x{0,1}n

OR(x,y)(AND(x,y)PARITY(x,y))
GGG{OR,NAND}1:私たちは、そのようなゲートセットは互変異性であると言います。

異なるタイプのゲートを含むゲートセットを検討することから始め、後でそれらのゲートを分析の後半のケースから除外して、ゲートのいずれか1つを含むゲートセットが扱いやすい問題につながることを示します。定数ゲートから定数ゲートまで、問題のゲートを満たす2ビット文字列の数の順に進みます。1 0G10

  1. 定数ゲートを含むゲートセット場合、そのゲートのみを使用して単純に回路を構築できます。この場合、は任意の受け入れます。 G x y = 1 C C xGG(x,y)=1CCx

  2. ORおよびNAND。を含むすべてのゲートセットについて:他のすべてのゲートが満たす場合はますが、他のゲートを選択する利点はありませんが、回路を構築します。ゲートのみの回路は、以外の文字列を受け入れます。そうでない場合、が自己であるようなゲートが存在します。したがって、 SAT使用したOPSATのインスタンスは簡単です。も同様の注意が適用されます。OR G G G X Y GORGGOR C OR X 0 * G G { G OR } ORG NANDGG(x,y)OR(x,y)ORCORx0GG{G,OR}ORGNANDG

  3. 含意のようなゲート。ゲート考えてみましょう。これは場合にのみゼロを出力します。以下では、同様の分析がゲートます。 任意の文字列検討します。がで終わる場合、を形式の部分文字列に分解します。そのような各、を右から左に再帰的に適用し、各に対して出力を生成します。(長さが1の部分文字列の場合、単純な回路を使用します。つまり、その入力はそのままにします。)同様に、X Y = 1 0 )、G 'X Y = X ¬ Y のx { 0 1 } nは、X 0 、X 、W 、J = 1 * 0 w j G 0 w j x 1 x wG(x,y)=¬xy(x,y)=(1,0)G(x,y)=x¬y

    x{0,1}nx0xwj=10wjG0wjxはで終わり、をの形式の部分文字列に分解し、各にを左から右に再帰的に適用します。これにより、各出力が生成されます。したがって、または(は部分文字列またはの数いずれかで満たされる回路を構築する問題を減らすことができます。以下のために、我々が使用してのいずれかで受け入れることができる再帰的に適用することにより、ゲート左から右へ。これは単にケースを残します1xG W jを 1 W J 0 、M 1 、M、M 1 * 0 0 * 1 、M 2 G G M = 1 のx 1 * 0 、X = 1 * 0 G 1 * 0 0 G H G H 1 0 = 1 { G Hwj=01Gwj1wj0m1mm1001m2GGm=1、そのために問題の場合は、入力である。以下のために、のみからなる任意の回路ゲートは、フォームの短いストリングもたらす、最終的に単一ビット列得、のない回路ように:ゲートはによって満足することができませんこの入力。存在する場合にも、ゲートれる、次いで同原あります。または、ゲートがある場合、形式の文字列を減らすことができますx10

    x=10G100GHGH(1,0)=1H G H 1 1 = 0 11 * 0 1 * 0 * H X X 1 * 0 G{G,H}HGH(1,1)=0110最初の2ビットにを適用することにより、形式の文字列に。そうでない場合、を受け入れる回路を構築できません。 したがって、含意的なゲートを含むゲートセット場合、OPSATは簡単です。(10)Hxx10

    G

  4. 投影の否定。ゲートおよび考慮してください。私たちは考えると、分析類似しています。独自に、に任意の文字列を受け入れることができるのための最終還元によりの単一ビットにビットを、次いで適用 ; そして、同様にを、最後のビットを1ビットに減らしてから、回路¬ π 2X Y = ¬ Y ¬ π 1 ¬ π 2 ¬ π 1 0 0 | 1 N - 1 N 2 N - 1 ¬ π 1 1 0 | 1 N - 1のn 3¬π1(x,y)=¬x¬π2(x,y)=¬y¬π1¬π2¬π10(0|1)n1n2n1¬π11(0|1)n1n3¬ π 1¬ π 1X 1xは2xは3¬ π 1 10 11n2¬π1(¬π1(x1,x2),x3)。回路が受け入れられない入力はまたはです。補助ゲートがこれらを受け入れるかどうかを判断するのは簡単です。したがって、OPSATは予測の否定に対して簡単です。¬π11011

  5. パリティと平等。ゲート考慮してください。ゲートセットは、1の奇数を持つ文字列によってのみ正確に満たされることは明らかです。他のゲートを追加する利点を考慮します。G = { PARITY } のx { 0 1 } nはPARITY(x,y)=(x¬y)(¬xy)G={PARITY}x{0,1}n

    • とまたは 両方を含むゲートセットは、固定入力用のまたはゲート(それぞれ)を含む回路をシミュレートでき ます。OPSATの簡単なケース。AND NORX Y = ¬ X Y OR NANDPARITYANDNOR(x,y)=¬(xy)ORNAND
    • いずれかまたはどちらかをシミュレートするために使用することができる又は我々はこれらとゲートの組を減少させることができるように、偶数パリティの2ビットストリングに前のケースへのゲートと。π 2X Y = Y AND NOR PARITYπ1(x,y)=xπ2(x,y)=yANDNORPARITY
    • EQUAL = ¬ PARITYPARITYとは互変です。EQUAL=¬PARITY
    • 我々は補足場合ゲートと、我々は、を除いて、任意の偶数パリティ列を受け入れることができる適用することによって、にの-substring、その後適用残りの部分に回路を。同様に、とは、形式以外の文字列を受け入れることができます。と両方でを補完すると、を除くすべての入力を受け入れる回路を構築できG 01 = ¬ X Y のx 11 * 0 * G 01 01 X パリティPARITY G 10 = X ¬ Y PARITY G 01 G 10のx 0 * X = 11PARITYG01=¬xyx(11)0G0101xPARITYPARITYG10=x¬yx0(11)PARITYG01G10x0x=11
    • 最後に、定数ゲートでを補完する場合、ゲートを適用することにより、または以外の入力を受け入れることができますサブストリングまたは奇数パリティケースに低減。 Z X Y = 0 のx 11 * X 0 * G 01 10PARITYZ(x,y)=0x(11)x0G0110

    したがって、OPSATは、を含むにとって簡単です。同様の分析は、に適用ためのようなゲートゲート理由:、回路ゲートは、本質的に数のパリティカウント入力で秒。と交換することにより、の分析をの分析に減らすことができます。GPARITY

    EQUALPARITYEQUAL(x,y)=¬PARITY(x,y)=¬PARITY(¬x,¬y)EQUAL0EQUALPARITY01

  6. プロジェクションゲート。ゲートおよびは、それぞれで開始または終了する文字列を受け入れる回路のみを構築できます。ゲートに他のゲートをした場合の効果を考慮してください(同様の分析が)。π1(x,y)=xπ2(x,y)=y1π1π2

    • と両方を許可すると、入力から任意の1ビットを出力するだけの「選択」回路を構築できます。これらは、任意のを受け入れ、である任意のゲートでそれらを補完することにより、任意のに対して満たされた回路を構築できます。π1π2x0nGG(0,0)=1x
    • 我々は補足場合いずれかで又は、我々はどちらかシミュレートすることができるまたは含意状固定入力用ゲートと OPSATは、これらの両方のケースで解決されます。π1NORG01=¬xyOR
    • 我々は補足場合いずれかと、、一定のゲート、またはそれらの任意の組み合わせを、我々は追加受付電力を得るないので、我々はそのまだ始まる文字列のみを受け入れることができます。π1ANDG10=x¬yZ(x,y)=01

    したがって、他のゲートについては、(または)を補完するか、セットを取得するか、(または)のみで追加の受け入れ電力を取得しないか、またはの以前の簡単なケースに減らすことができます。その後、またはを使用したOPSATのインスタンスは簡単です。π1π2π1π2π1Gπ2G

  7. デルタ機能ゲート。入力を満たす入力が1つしかない2ビットゲートについて考えます。、、、および。ゲートのみで作成された回路は、文字列のみを受け入れることができます。他のデルタ関数ゲートでそれらを補うと、、、またはいずれかをシミュレートできます。同様の発言が適用されます。同様に、ゲートセットを使用してシミュレートすることもできます。ANDNORG10(x,y)=x¬yG01(x,y)=¬xyAND1EQUALπ1π2NOR{G01,G10}PARITYゲート。したがって、ゲートまたはいずれかに注目することができます。おそらく、ゲート補完され。場合も同様であるため、注目します。なる回路単独では受け入れるように構築することができる文字列を除いて、ファイナルに任意の回路を適用することにより、ビットと、回路を適用。明らかに、文字列はまたは受け入れられません。帰納法により、G10G01Z(x,y)=0G10G01

    G101(0|1)n111n2G10(x1,G10(x2,x3))11G10ZG10文字列を受け入れる回路は、左端のブランチにあるゲートの中間結果を持ち、すべてから左端の入力までを生成する必要があります。ゲートを追加しても、追加の利点は得られません。したがって、回路はのみを受け入れることができます。1ZG10x1(0|10|11)(0|1)

  8. 最後に、ゲートのみで構成される回路は入力を受け入れません。Z

各ゲートは、それを受け入れる明確に定義された一般的に非常に大きな入力クラスを生成し、追加のゲートが問題を平凡にする傾向があるため、2-TREE-OPSATPにあることがわかります。


1
@DSounders:特別なケースではなく、ターゲット値にをマッピングする回路があるかどうかを判断する問題の最近の修正に関して、同じ問題がPにあることを示すには、現在の答えのような分析で十分です。ゲートの役割のみが変更されます。たとえば、目的の結果とを交換する場合、ANDおよびORNANDおよびNOR、暗黙的なゲートの役割を他のデルタ関数などと効果的に交換しますX B { 0 1 } 、B = 1 0 1Cx b{0,1}b=101
ニールドボードラップ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.