サブセット合計、疑似多項式時間動的プログラミングソリューション?


8

しばらく前にP対NPの問題を発見し、最近サブセットサム問題に取り組みました。サブセット和問題に関するWikipediaの記事と、サブセット和アルゴリズムの質問を読みました

私は問題を見ていくつかの解決策を見つけましたが、今のところそれらはNPのようですが、NP時間で十分に高速なアルゴリズムを作成できると思います。

私の問題は理論的には私が上手ではないので、クック・レビンの定理や非決定論的チューリングマシンについて話すことはあまり役に立ちません。

ウィキペディアにある疑似多項式の時間動的プログラミングのサブセットの合計について説明します。

私はそれを読みましたが、なぜPではなくNPであるかという一般的な概念は理解しています(それを使用した操作ではなく入力のサイズに関連しています)が、アルゴリズムは理解していません。

誰かがいくつかの数字とそれがどのように機能するかを例に挙げていただければ幸いです。それは次のようになるので、それは私に多くの助けになるでしょう:

  • 将来のアルゴリズムを改善するためのアイデアを教えてください
  • アルゴリズムがNPではなく疑似多項式である場合、直感的に理解できるようにしてください。



2
質問は何ですか?最初は、リンク先のアルゴリズムがどのように機能するかの例を尋ねると思っていましたが、リンクをたどると、すでにそこに例があります。
rgrig

2
私はまた、投稿を理解するのに苦労しています、何が尋ねられているのか明確ではありません。ところで、Pのすべての問題はNPにもあります。あなたの投稿のいくつかの場所でNPではなくNP完全を意味していると思います。最後に、アルゴリズムがNPであると言っても意味がありません。NPはアルゴリズムではなく言語のクラスです。私の推測では、NPは非多項式時間(または指数時間)アルゴリズムを意味するという一般的な誤解があります。
カヴェ

2
サイズを入力の値にバインドした場合(各値のビット数をバインドして入力の合計ビット数を対数にする)、問題は動的計画法を使用して多項式時間で解決できます。それらが制限されていない場合、それらは指数的に大きい値を持つ可能性があり、動的プログラミングのテーブルのサイズは指数的になります。
カヴェ

回答:


5

Kavehのコメントを回答として言い換える:

サイズを入力の値にバインドした場合(各値のビット数をバインドして入力の合計ビット数を対数にする)、問題は動的計画法を使用して多項式時間で解決できます。それらが制限されていない場合、それらは指数的に大きい値を持つ可能性があり、動的プログラミングのテーブルのサイズは指数的になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.