4 つの演算子があるため、n 項のセットに対して 4^(n-1) の可能な値があります。各パスが一連の演算子値を表し、終点が計算の結果である検索空間のグラフを作成できます。
それらすべての終点のうち、正しい答えを与えるものだけが正しい終点で終了します。
ただし、終点から開始すると、逆方向にトラバースできることに注意してください。有効な演算子のセットがある場合にのみ、最初の値で終了します。
したがって、両端からトラバースすると、2 つの計算が途中で一致します。これは、各方向から 4^(n/2) = 2^n のはるかに小さい空間です。2 つの回答セットを一致させるには、途中で取得したリストを並べ替える必要がありますが、重複したパスがたどられないようにするために、すべてのステップでこれを行うことをお勧めします。この時点で、迷路のトラバーサルのように見えます。
既知の NP 完全問題の 1 つはブール充足可能性の問題です。これは、「与えられたブール式の変数を、式が TRUE と評価されるような方法で割り当てることができるかどうかを判断する問題」です。探索空間はブール充足可能性問題の探索空間よりも明らかに大きいため、解は式が充足可能であると判断する (したがって、少なくとも充足可能性を解くのと同じくらい難しい) ため、問題は次のようにすべきだと思います。 NP完全であること。
迷路の意味では、値がゼロから発散する部分的な解は正しい解である可能性が低く、パラメータの最初のスイープが与えられると、サイズ (つまり、すべての乗算) にどのような制限があるかが明確になるはずです。ブール問題の場合。
編集:冒頭で述べたツリーを明確にするため。私たちのリストが
1 ? 2 ? 5 = X
次に、グラフは次のようになります。
r1 --> r2 ---> r3 (X)
1 +2 3 +5 8
-5 -2
*5 15
/5 0
-2 -1 +5 4
-5 -6
*5 -5
/5 0
*2 2 +5 7
-5 -3
*5 10
/5 0
/2 0 +5 5
-5 -5
*5 0
/5 0
ご覧のとおり、X が -5 の場合、1 -2 *5 または 1 /2 -5 になる可能性があります。-5 から逆方向に作業する:
-5 +5 0
-5 -10
*5 -25
/5 -1
したがって、それぞれの端からステップした場合、中央の列になり、唯一の共通値は -1 と 0 になり、16 回の計算が一方向のみに進むのではなく、8 回の計算で 2 つのパスが生成されます。
私が見逃していたこれが提起するポイントは、整数除算は1:1マッピングではないため、後退することはあいまいです。-4/5 -> 0, -3/5 -> 0 など 4/5 -> 0 まで。同じ値 2 にマップします。これはかなりのハードルです。分割された数のサイズだけ後ろにステップするとき、可能なノードの数を上げるので、5 の場合、4 ではなく 3+5 = 8 の可能な状態があります。