古い投稿に答えてすみません。
私はそれについて考えてきました、そして固定アルファベットの問題もまたNP完全だと思います。
この単語の問題に対して、肯定的な1対3のSATを削減します
昨日、問題を解決するためのアイデアが思いつかなかった。質問をもう一度確認するまで、各変数を異なるものにするのに苦労し、シンボルが埋め込まれた正方形を使用できることに気づきました。これにより、削減が大幅に簡素化されました。私の他のアイデアは、変数ごとに異なる長さの単語を持つことでした。
削減
次に、使用するガジェットについて説明します。
可変ガジェット
各変数には異なる数値インデックスでラベルを付け、変数ごとに異なる番号を割り当てます。最大のインデックスを選び、その数をバイナリで表します。このバイナリチェーンをと呼びます。ん
次に、変数ごとに2つの異なる垂直方向の単語を作成します。すべての単語の長さは(単語のリストで単語の重複を許可する場合のみ)、ここで| n | バイナリチェーンnの長さです。3 + | n || n |ん
たとえば、最大のインデックスをます。この数値をバイナリで変換すると、チェーン100がバイナリで取得されます。このチェーンの長さは3です。したがって、この例では、各可変ワードの長さは6になります。41006
次に、変数ごとに2つの異なる単語を作成します。1つの単語には、最初に記号、次に下の記号2、次に変数のインデックスを表すバイナリチェーンがあり、チェーンnと同じ長さになるようにチェーンをゼロで埋め、最後にシンボル3にします最後に。もちろん、シンボルは変更できます。32ん3
もう1つの単語はほとんど同じですが、記号3ではなく記号になります。43
たとえば、最大のインデックスをます。インデックス1の変数には、次の2つの単語があります。41
および 420014320013420014
ご覧のとおり、数値バイナリ表現にゼロを埋め込んで、|の長さを|にしています。n |1| n |
これらの単語を何度もコピーする必要があります。SATインスタンスで変数が出現するたびに、各単語のコピーが1つ必要です。これにより、単語のリストに重複が作成されます。変数を一意に識別するバイナリチェーンに別のバイナリチェーンを追加することで、重複を取り除くことができます。この新しいチェーンは、変数の各オカレンスを一意に識別します。
そのためには、変数の各オカレンスに別のバイナリチェーンを割り当てるだけで、そのチェーンを変数のバイナリ表現の最後に配置します。
この新しいバイナリチェーンを作成するには、まず各変数に異なるインデックスを作成する必要があります。各インデックスの最大数をと呼びます。ここで、iは各変数の識別子です。その後、数値n iをバイナリチェーンに変換し、チェーンの長さをカウントします。この数値を| n i | 。次に、インデックスごとに、変数の出現ごとに異なる2進数を作成します。バイナリチェーンの長さが|になるまで、数値にゼロを埋め込みます。n i | 変数の各オカレンスに属するすべての単語が同じ長さになるようにします。ん私私ん私| ん私|| ん私|
これにより、変数ワード内の重複が取り除かれます。
バツ2
32010013 4201001432010103 4201010432010113 42010114
条項ガジェット
6
535354535453545353
435
mm|m||m|。節に属する節の単語に各バイナリチェーンを追加します。
さて、ボード内の条項ガジェットの写真を見てみましょう:
(x2∨x3∨x4)(x1∨x2∨x3)∧(x2∨x3∨x4)
4
単語リスト内の重複を許可しない場合は、画像を変更する必要があります。
5b5b5b10
b201010bb201110bb21001b
b
例を見る:
可変一貫性ガジェット
これは、プレーヤーが変数のすべてのリテラル列に同じ値のみを割り当てることができるようにするガジェットです。
各変数に新しいガジェットを作成します
ガジェットごとに2つの新しい単語を作成します。
2∗kkx263 k64 k
x2
63636464
単語の繰り返しを避けたい場合は、各整合性ガジェットが異なる変数に属していることに注意してください。したがって、このガジェット用に作成した2つの単語に、各変数を識別するバイナリチェーンを追加できます。
次に、このガジェットのサンプル画像を見てみましょう。
x2(x1∨x2∨x3)∧(x2∨x3∨x4)
3434。このgagdetの残りの単語を別の行に配置できます
単語リストの重複を許可しない場合、サンプル画像内の単語は次のようになります。
行の場合:
6b6b0106b6b010
列の場合:
b201001bb201010b
b
例を見る:
句ダンプガジェット
未使用の句を配置するために作成されたガジェットです。そのためには、ボードの空白部分に各句の単語ごとに2行を配置するだけです。これらの行は他の行または列に接続されていません。
削減に必要なシンボルは6つだけであると主張したため、これで削減を完了しました。
例
前の説明が混乱していた場合は、この単語の問題に削減された肯定的な1 in 3 SATのインスタンスの例の画像を次に示します。
単語の繰り返しを禁止する場合:
削減されたインスタンスは次のとおりです。
(x1∨x2∨x3)∧(x2∨x3∨x4)