タグ付けされた質問 「pseudo-polynomial」

3
数値アルゴリズムで数値の単項表現を使用しないのはなぜですか?
擬似多項式時間アルゴリズムは、入力値(大きさ)で多項式の実行時間を持ち、入力サイズ(ビット数)で指数関数の実行時間を持つアルゴリズムです。 たとえば、数値が素数であるかどうかをテストするには、2からまでの数値をループし、 modがゼロかどうかを確認する必要があります。modがO(1)時間かかる場合、全体的な時間の複雑さはO(n)になります。n − 1 nnnnn − 1n−1n-1nnn 私私i ただし、を入力の書き込みに必要なビット数とすると、(バイナリ)であるため、あり、問題の実行時間は指数関数的なO()になります。x = log n n = 2 x 2 xバツバツxx = ログnバツ=ログ⁡nx = \log nn = 2バツn=2バツn = 2^x2バツ2バツ2^x 私の質問は、入力単項表現を考慮する場合、常にあり、擬似多項式時間は多項式時間の複雑さに等しくなります。では、なぜこれを行わないのでしょうか?x = nnnnx = nバツ=nx=n さらに、ナップザックには擬似多項式時間アルゴリズムがあるため、をとることにより、ナップザックは結果として多項式になりますP = NPx = nバツ=nx=n

1
これはNP完全問題ですか?
次の問題ステートメントを検討してください。 最初の数が与えられると、あなたとあなたの友人は交代でそれから完全な四角形を引きます。ゼロに勝つ最初のものは勝利します。例えば: 初期状態:37 Player1は16を減算します。状態:21 Player2は8を減算します。状態:13 Player1は4を減算します。状態:9 Player2は9を減算します。状態:0 Player2が勝利! 初期状態が与えられ、最適な動き、つまりゲームの勝利につながることが保証されている動きを返すプログラムを記述します。可能な動きがあなたを勝利状態に導くことができないなら、-1を返します。 この問題は、動的プログラミングを使用して疑似多項式時間で解決できます。アイデアは、長さn(nは初期状態)の配列を下から上に最適な移動で埋めるか、または移動が勝てない場合は-1です。これは、O(n * sqrt(n))を必要とします。これは、すべての数値について、それよりも小さい可能性のあるそれぞれの完全な二乗を減算することを考慮する必要があるためです(それらの〜sqrt(n)があります)。ただし、これは疑似多項式のランタイムの複雑さです。これは、ランタイムがバイナリの入力サイズ(数値を表すために使用されるビット数)に関連して実際に指数関数的にスケーリングされるためです。 誰でもこの問題を解決するための多項式アルゴリズムを考えることができますか?そうでない場合、それはNP-Completeでしょうか?どうして?

2
弱くて強い完全性
疑似多項式アルゴリズムは、それが解決する問題について何を教えてくれますか?アルゴリズムが入力長で指数関数的で、入力値で多項式である場合、実行時間がどのように改善されるかわかりません。それでは、この指数関数から多項式へのシフトをどのように説明しますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.