2017-01-27 27 views
1

任意の(整数)金額のそれぞれのn個のチェックが、同じ金額の2つの部分にチェックを分割できるかどうかを判断すると、多項式アルゴリズム

私はこの問題を解決する方法を忘れています。これを多項式時間で解くアルゴリズムはありますか?これはNP完全ですか?

+0

この質問は、[プログラミングパズル](http://codegolf.stackexchange.com/)または[puzzling](http://puzzling.stackexchange.com/)に掲載されている可能性があります – yaitloutou

+0

@yaitloutou質問はパズルやプログラミングのパズルよりもここで話題になっています。たぶんそれはcs.stackexchange.comに投稿する必要があります – user31264

+0

@ user31264説明をありがとうございました – yaitloutou

答えて

2

はい、NP完全な問題です。それはthe subset sum problemのバリエーションです。

+0

ありがとうございました!私はずっとこれについて困惑していた。私が2つの異なる値のN個のチェックをしたらどうだろう?たとえば、値Xと値Yです。次に、NPの完全なアルゴリズムはありますか? – mocode9

+0

2つの異なる値の場合、簡単なディオファンタス方程式を解くことができます。一般的に、動的プログラミングを使用する擬似多項式アルゴリズムがあります。 – MBo

+0

あなたは間違っていますが、これは動的プログラミングを使用して多項式の複雑さで行うことができます。 –

0

実際には、動的プログラミングを使ってO(n * sum/2)でこれを解くことができます。まずすべてのチェックをvaraibel sumに集計し、チェック値にdpを実行しますその合計がs/2に等しいかどうかを最後にチェックする。