質問

動的プログラミングで最適な下部構造物件の使用の額を取得しようとしていますが、私たちがその問題に対する の最適解を証明しなければならない理由について盲目になったその副問題に対するIT最適な解決策を含みます。

問題に対するいくつかの最適な解決策を示すのは十分ではありません、そして、これを使用してこれを使用して、私たちの再帰的アルゴリズムによって構築された解決策は少なくとも同じくらい良いです。最適な解決策、それ自体が最適であるでしょうか?言い換えれば、私たちのアルゴリズムの正当性引数の中にある場所を見つけることができません。すべての最適な解決策には、副問題に対する最適な解決策が必要です。

明確にするために:

最適な下部構造のCLRS定義は、「問題に対する最適解の場合、問題に最適な下部構造を示していると言います。

「問題に対するいくつかの最適解に最適な解決策の場合、問題に最適な下部構造を展示するのはなぜでしょうか」と言うのはなぜでしょうか。

役に立ちましたか?

解決

これは、ほぼ最適な解決策を見つけるダイナミックプログラムを含む近似アルゴリズムに関する私の研究によって少し悩まされています。動的プログラムの正確さについて考える正しい方法で、私は信じている(複雑さ理論の意味で)問題から副問題への縮小としてのものです。この減少はしばしば再帰的かつ思い出されに適用されますが、それらは現在詳細です。

問題を照らし、Bがサブアになりましょう。複数の独立したサブアミルを一般化されたデカルト製品を介して1つに組み合わせることができるので、サブ問題は1つだけです。この還元は、A-インスタンスからB-インスタンスへの2つの機能、およびA溶液へのB溶液からの2つの機能からなる。必要な正当性は、各B-インスタンスからのすべての関数Gから、対応する最適なBソリューション(Oracle)、組成Hの場合、そのことである。 g。 Fは各Aインスタンスから対応する最適なA解析までの関数です。 (hがAインスタンスにアクセスする必要がある場合は、そのインスタンスに対応するBソリューションに逐語的にコピーする必要があるAインスタンスが含まれているように、Bを拡張します。)

あなたのポイントを特定のAインスタンスと最適なA-ソリューションの場合、パイプラインhとなるようにOracle Gを存在する必要はありません。 g。 F与えられたインスタンスからその解決策を生成します。 (言い換えれば、Hは推測的である必要はない)もう一方、Hによって構築されたB-インスタンスについてGからのすべての可能な最適B溶液を扱うことができなければならない。

Hが正しいことを確認するための一般的な戦略の1つは、a溶液からB解の「部分構造」関数kを見つけること、および「スプライス」部分構造、すなわちA-Solutionを考えることが証明されることです。 XおよびB溶液Y K(X)よりも悪化しないように、K(X ')= YのようにXよりも悪化しないX'は存在する。その後、hはその入力のkの下の逆イメージ内のすべてのものを最適化できます。スプライシングがすべてのソリューションXに適用される必要はありません。

他のヒント

動的計画法では、問題を小さな副課題に分割し、いくつかの操作を行い、より大きな回答の答えを提供します - 再帰アプローチと非常に似ています(そして一致しません)。

今、このようなアルゴリズムの正式性を正式に証明するようになると、これは誘導によって行われます。私たちのbase句は正しい(通常は非常に簡単です)、それから現在のものよりも小さい問題も最適であると仮定します。それから私たちはこの仮説を使ってより大きな問題の正当性を証明します。

すべての解決策が最適であることを知らなかった場合 - 私たちは1つの追加のステップを使って最適な解決策をより大きな問題に対する最小の問題に対する最小の解決策を変更することができなかったことを証明することができませんでした - そうではないでしょうこの主張を証明するのに十分な情報。

私たちがサブアミスのいくつかが最適な解決策であることを知っていたのであれば、このサブ問題を使用して最適な解決策を持っていることを確実にするのに十分ではないでしょう - 実際には大きな問題に対する最適な解決策を得る必要があるものです。 。


は、例えばナップザックを見て、そのDPステップを見てみましょう。

f(x,i) = max(f(x-weight[i],i-1) +val[i], f(x,i-1))
.

それらのうちの1つだけが最適であることを知っていれば、私たちは最適な解決策を持っていない「他の」ケースを必要としているかもしれないので、アルゴリズムが正しいことを証明することができなかった。

f(x,i-1)max()を選択した場合 - 誤った選択肢があったかもしれません。すべてのサブ問題に対する最適な解決策を確実にすることで、これが起こることができないことを確認します。

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