値をチェックするのは複雑で理論的に難しいですか?


13

プライム・カウント機能降格、、以下の素数の数として定義されるかに等しい。xπバツバツ

次のようにから決定問題を定義できます。πバツ

2 進で記述された2つの数値と与えられた場合、かどうかを判断します。nはπ X = Nバツnπバツ=n

今日、友人と私はこの問題について話していました。この問題には擬似多項式時間アルゴリズムがあります- 各ステップで試行除算を使用してまでカウントし、数が素数であるかを確認し、それがと等しいかどうかを確認します。問題はPSPACEにもあります。これは、先ほど説明したアルゴリズムを実装して、多項式補助空間のみを使用できるためです。nバツn

ただし、この問題をより低い複雑度のクラスに配置する方法を見つけるのに苦労しています。私は問題の多項式時間検証を構築する方法を見ることができないので、それがNPにあるかどうかはわかりません、そしてそれを多項式階層に入れる方法をまったく考えることができません。

この問題に最も適切な複雑度クラスは何ですか?

ありがとう!


通常、これらのタイプの問題は、リーマン予想に依存する傾向があります。...その接続を持っているあなたの多くの「近くの」機能があります
。...-vzn

回答:


11

これは非常に未解決の問題です。問題が「自然に」適合する可能性のあるいくつかのクラスをスケッチします。

あなたの定義はやや扱いにくいものであり、問​​題は既存の複雑さのクラスに適合するのは困難です。定義した言語は、言語とです。したがって、たとえばがクラス場合、はます。これにより、「の言語と言語の」をして、最も厳しい境界を与える必要があるため、した言語の特徴付けをます。{ X N | π X N } { X N | π X N } K { X N | π X N } C O K K{バツn|πバツn}{バツn|πバツn}{バツn|πバツn}K{(x,n)|π(x)n}coKKcoK

問題「Compute」は問題です。ここで、は「非決定的多項式TMの受け入れパスの数を計算する」形式の問題のクラスです。明らかに、数を推測する非決定的TMを構築し、(AKSを使用して)が素数かどうかをテストできます。P P F P S P A C E Q X Qπ(X)#P#PFPSPACEqxq

決定バリアントは。これは、「非決定的多項式TMが与えられた場合、少なくとも半分の計算パスを受け入れますか?」という形式の言語のクラスです。両方のと、おそらくに問題に還元されている一部を実行して(受け入れパスの数のバランスをとるために前述のTMに手を加えます)。P P { X N | π X N } { X N | π X N } P P#PPP{(x,n)|π(x)n}{(x,n)|π(x)n}PP


3

あなたの問題はアルゴリズムを介してC P= にあります,

非決定論的推測整数ようにおよびビットその場合、拒否し その場合: その後、受け入れる場合は、他を拒否します その他: もし素数であれば、それ以外は拒否する[m0m<2log2(x+1)]b
x < m
b=1
m < n

m




特に、問題はPPにもあります。これは、PPが真理値表簡約で閉じられているためです。


2

実際には、より速くまたはより遅く答えを得ることができます:-(

π(x)には適切な近似があります。そのため、このような近似を計算しますが、遠すぎる場合は、π(x)≠nであることがわかります。たとえば、n≥xの場合、何も計算せずにπ(x)≠nであることがわかります。

π(x)が偶数か奇数かを決定する高速アルゴリズムがあり、O(x ^(1/2))で実行されます。このアルゴリズムを実行すると、nのパリティが間違っていることが検出され、完了です。nがπ(x)に近いランダムな整数である場合、50の可能性があります。

それ以外は、π(x)を計算するよりも速い方法は知りません。これは非常に不便です-π(10 ^ 25)を計算するはずのプログラムを作成し、明らかに間違っていない結果が得られた場合、結果が正しいことを確認する方法はありません。計算。そして、あなたは私のプログラムを使用して計算を繰り返すことはできません。別のプログラムを書く必要があります。そうしないと、私のプログラムにπ(x)とは少し異なる関数を計算させるバグがあるかどうかを検出できません

π(x)は約O(n ^(2/3))で合理的に簡単に計算でき、いくつかの本当に深い数学でより高速に計算できます。


1
これは興味深いですが、問題は問題を含む複雑度クラスに関するものです。
-usul
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.