なぜ線形プログラミングはPであるのに整数プログラミングはNP困難なのですか?


35

線形計画法(LP)はPで、整数計画法(IP)はNP困難です。しかし、コンピューターは有限の精度でしか数値を操作できないため、実際にはコンピューターは線形計画法に整数を使用しています。このため、LPとIPは同じ複雑さのクラスにすべきではありませんか?


7
jmiteの答えに少し付け加えてください:積分性の制約が問題をより困難にする多くの場合があります。たとえば、整数ナップザック問題はNPハードですが、分数ナップザック問題は多項式時間で解くことができます。したがって、これはLPとIPに当てはまることだけではありません。
user340082710

7
コンピューターが整数を使用して演算を実行すると考える場合でも、返される解が整数であることを意味しません。有理数、つまり、2つの整数の比にすることができます。そして、それははるかに柔軟性を与えます。そしてもちろん、合理的ソリューションをIPの実現可能なソリューションに常に変換できるとは限りません。一般的に、IPには、単に積分解を求めるよりも、変数に対してより多くの制約があります。考える整数プログラム。0,1
メガ

1
必要に応じて、特に合理的な場合、無限の精度で数値を操作するのはそれほど難しくありません。有限精度は、実行時間を短縮するための最適化にすぎません。

2
@Hurkyl「特に合理的な場合は、必要に応じて数値を無限の精度で操作するのはそれほど難しくありません。」計算可能な数と呼ばれる実数の厳密なサブセットがあり、これには有理数+ sqrt(2)などの数が含まれ、チューリングマシンで計算可能な数のセットとして定義されます。そこに含まれていないものは、定義上、コンピューターで操作することはできません。
サーシャヌーブ

1
@SashatheNoobあなたが言っていることは、本当にHurkylが言ったことと対立していません。計算可能な数値には、精度の上限が事前に定義されていません(チューリングマシンに十分なメモリがある場合、任意の値に任意に設定されます-したがって、精度は無限です)。計算可能数のサブセットにすべての有理数が含まれると言うには、コンピューターが無限の精度で数を操作できることを認めています。(Hurkylの声明は絶対に真実です。特定のデータ型に対して精度が制限されているという事実は、単に最適化にすぎません。)
BrainSlugs83

回答:


9

50人の担当者が必要なのでコメントできませんが、特に誤解が広がっています。特にラファエルのコメント「一般的に、連続ドメインとは、ブルートフォースがないことを意味します。

これは絶対に間違っています。キーポイントは確かに凸性です。いくつかの技術的な制約条件を除いて、凸時間関数の凸関数を最小化(または凹関数を最大化)することは、多項式時間収束の意味で本質的に簡単です。

大まかに言って、「数学」最適化の問題の凸性と「コンピューターサイエンス」最適化の貪欲なアルゴリズムの実行可能性との間には対応があると言えます。これは、どちらもローカル検索方法を有効にするという意味です。貪欲なアルゴリズムで後戻りする必要はなく、凸最適化問題で下降の方向を後悔する必要もありません。目的関数のローカルな改善により、常にグローバルな最適化に近づくことができます。

これは、非凸の場合にはそうではありません。ここでは、グローバル最小値が存在する場合がありますが、NP問題に適用された場合に貪欲なアルゴリズムが行うのと同じ方法で、ローカル降下アルゴリズムが常に描画されるいくつかのローカル最小値があります。時には彼らは真の最適を見つけますが、ほとんどの場合そうではありません。



21

線形計画法が「効率的」である理由は、解空間が単一の凸多面体で表現される可能性があるためです。その多面体で「最高」の頂点を見つけようとしている場合(線形プログラミング問題に線形変換を適用して、「高さ」を最大化する量に対応させることができます)、頂点からエッジに沿って移動することができます「下り坂」に行かなくても最高のポイントです。整数プログラミングを「困難」にしているのは、連続的なソリューション空間がなく、代わりに多くのばらばらなソリューション空間があり、最適なソリューションに向かって徐々に作業する方法がないことです。


2
ここでのキーワードは「凸」です
-cody

1
この山登りは、シンプレックス法ではありません。シンプレックス法のうち、最悪の場合にバリアントであることが知られているものはありませんか?
jbapple

1
連続空間よりも離散空間(離散検索が可能)で解決するのが簡単な問題がたくさんあります。
ラファエル

@Raphael:そのような問題の例をいくつか挙げていただけますか?私はこれについて考えてきましたが、多くを思い付くことができません。
コディ

@codyたとえば、(1次元)関数の最大値/最小値を見つける。有限の探索空間を有限の空間に縮小できることに気付いた後にのみ受け入れられるかわいい例については、こちらを参照してください。LPはそのように特別なものであることに注意してください。多面体の角だけを考慮する必要があることに注意することにより、有限の探索空間が得られます。一般に、連続ドメインとは、総当たり攻撃がないことを意味します(そして、高速化するための巧妙なヒューリスティックもありません)。
ラファエル

3

他の答えは正しいですが、私はそれらが少し技術的であると思います。マトリックスをスイープ(削除)して、解決策を探しているとします。マトリックスは次のようになります。

column x1 x2 x3 x4 x5 x6 | solution
-----------------------------------
       1           1  1  | 3
          1              | 1
             1     1     | 2
                2  1  1  | 1  

Q

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