[解決済み] バックトラッキングとダイナミックプログラミングの違い
2022-02-08 07:29:33
質問
動的計画法とバックトラッキングの違いは、DPではサブ問題のオーバーラップが可能なことくらいだと聞きました。
fib(n) = fib(n-1) + fib (n-2)
正しいですか?他に違いはありますか?
また、これらの技術を使って解決した一般的な問題も教えてほしい。
解決方法は?
動的計画法の代表的な実装は2つあります。 下から上へ と 上から下へ .
上から下への動的プログラミング は、普通の 再帰 中間的な小問題の解を記憶しておくことで、さらに強化される。ある小問題が2回目(3回目、4回目...)に発生したとき、ゼロから解くのではなく、前に記憶していた解法をすぐに使うのです。この手法は、以下のような名前で知られている。 メモ化 (iの前にrをつけない)。
フィボナッチ数列の例は、実はこれを説明するためのものなのです。フィボナッチ数列の再帰的な公式を使うだけですが、そのテーブルを作るために
fib(i)
を計算する必要がある場合、この問題に対するTop-to-bottom DPアルゴリズムが得られます(これにより、例えば
fib(5)
2度目は、再度計算するのではなく、表から取得します)。
で ボトム・トゥ・トップ動的計画法 このアプローチも、部分解をメモリに保存することに基づいていますが、それらは異なる順序(小さいものから大きいものへ)で解かれ、結果としてアルゴリズムの一般構造は再帰的ではありません。 LCSアルゴリズム は、Bottom-to-top DPの典型的な例である。
なぜなら、元の問題全体を解くためにどの原始的な小問題が必要になるのか、また、小さな小問題からどの経路を通れば最も効率的に最終解に到達できるのかを予測することは、必ずしも容易ではないからです。
関連
-
[解決済み】Dijkstraのアルゴリズムが負の重みのエッジに対して機能しないのはなぜですか?
-
[解決済み】クイックソートとヒープソートの比較
-
[解決済み] DFS-Forest Componentとは?
-
[解決済み] 素朴な」アルゴリズムとは何か、「閉じた」解とは何か?
-
[解決済み] Octave : ロジスティック回帰 : fmincg と fminunc の違い
-
[解決済み] アルゴリズムの教科書では、ソートされた配列について「増加」ではなく「非減少」を使っているのはなぜですか?
-
[解決済み] ラジアンを度数に変換する方法は?
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 簡単な面接問題が難しくなった:1~100の数字が与えられたとき、ちょうどk個の数字が欠けていることを見つけなさい。
-
[解決済み] 木の深さと高さはどう違うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】クイックソートとヒープソートの比較
-
[解決済み] 構造的再帰と生成的再帰はどのように違うのですか?
-
[解決済み] グラフにおいて最小容量が最大となる経路の探索
-
[解決済み] ビッグシータ記法の証明
-
[解決済み] 2つのNFAの交点の求め方
-
[解決済み] Bogosort (a.k.a Monkey Sort)よりも悪いソートアルゴリズムはあるのか?[クローズド]
-
[解決済み] 2進数が3で割れているかどうかを知るには?
-
[解決済み] CLRSの相対的漸近成長に関する問題(表)の解き方について教えてください。
-
[解決済み] アルゴリズムの教科書では、ソートされた配列について「増加」ではなく「非減少」を使っているのはなぜですか?
-
[解決済み] クイックソートとマージソートの比較 [重複]。