質問

私が知っていること(厳密に言えない):私はPとNPクラスの平等について、そしてPでNPの問題を解決する既知のアルゴリズムがない限り、私は知っています。その後、そのような問題の時空間の溶媒性について区別します。また、問題の間に(多項式の時間の)を(多項式の時間の)かかることができることを知っているので、問題が特定のクラスに属していることがわかっている場合は、その他の問題もこのクラスに属します。また、シンプレックスアルゴリズムが線形プログラミングの問題を解決することを知っています

私が知りたいこと:問題がNPクラスに属している場合は「推測」する方法を知りたいです。問題の制約、制約数、制約の「タイプ」とは関係ありませんか?

このリンクの例 https://www.geeksforgeeks.org/maximum-profit-by-buying-and-selling-a-share-at-most-k-times/ 解決するアルゴリシムを見ることができます動的プログラミングで「最大のk回のシェアを購入して販売することによる最大利益」

しかし、制約を増やしたらどうなるか。私たちが純資産に限られている(私たちは無制限のお金を持っていません)、または一度に複数の在庫を購入して売ることができますが、私たちは与えられた時間内に売買することができる株式の在庫に限られています。あるいは、私たちが選ぶことができるさまざまな企業の複数の株式がありますが、私たちが持つことができる株式の総数で限られています。

どのような制約が問題を難しく、それをPからNPクラスに移動するのに困難にするのかを知っていますか?この問題がPまたはNPクラスのいずれかに属することを確実にする必要がある場合は、どのような制約があるべきですか?

役に立ちましたか?

解決

  1. 必ず正しく使用することを確認してください。問題の適切な解決策を速くチェックすることができることを除いて、NPに属するものは本当に何も言わない。

  2. 私の経験から、それはあなたがそれを与える特定の制約よりも問題の種類についてのものです。
    たとえば、indipendent-set:グラフのもう一方の端に頂点を取ることができれば、グラフの一方の端に頂点を含めることができます。この種の予測不可能な副作用は、あなたがその意味を知らないのであなたの解決策について何も決めることができないので、本当にアルゴリズムを見つけることは不可能になる。

  3. それとは反対のことです。QuickSortを使用する場合は、ピボットを選択して要素を2つの部分に分割することができます。

    このようにあなたはすでに問題を簡単にしました。

    NPハードの問題でそのようなハンドルを取得することはまだ成功しませんでした。

    これがかなり曖昧だったことを知っています、最後にあなたの質問を一般化することはできません。特定の問題へのすべての変更は一般的にそれをNP-Hardにすることができ、個別に見える必要があります。

    何かがNPハードなことを証明するために、既知のNPハード問題をそれに短縮することを試みることができます。これはそれがそれらのほとんどで行われる方法です。

    あなたの質問の例も次のようになります。
    最大カット問題はnp-hardですが、カットが存在するかどうかを尋ねる場合サイズ| e |、その後、グラフが bipartite

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top