動的計画法入門
動的計画法は、異なるアルゴリズムパラダイムの1つです。このアプローチでは、問題をいくつかのサブ問題に分割し、以前のサブ問題の出力を保存して、将来それらを使用することができます。タスクの計算時間を短縮するのに役立ちます。
動的計画法には2つのタイプがあります-
- 重複するサブ問題
- 最適な下部構造
このセクションでは、-
について説明します。- ボックススタッキングの問題
- 2つのトラバーサルを使用してグリッド内の最大ポイントを収集します
- 1からnまでのすべての数値の桁の合計を計算します
- 連続する1なしでバイナリ文字列をカウントする
- ゲームで特定のスコアに到達する方法の数を数えます
- 建物を建設するための可能な方法を数えます
- n番目の階段に到達する方法を数える
- 距離の編集
- エッグドロップパズル
- 桁の合計が値に等しい数値を検索します
- 目的地に到達するための最小費用
- フロイド-ウォーシャルアルゴリズム
- フィボナッチ数列を生成する
- 4つのキーを持つ「A」の最大数
- 最大の独立集合の問題
- 最大合計の連続サブアレイ
- 最長のBitonicサブシーケンス
- 最長共通部分列
- 指定された開始文字からの最長の連続パス
- 最長増加部分列
- 最長のパリンドロームサブシーケンスの長さ
- 最長の回文部分文字列
- 行列の連鎖乗積
- ペアチェーンの最大長
- 株式を2回売買した後の最大利益
- すべて1の最大サイズの正方形の部分行列
- 最大合計増加部分列
- マトリックス内の長方形の最大合計
- マトリックスから最小コストパスを見つける
- ポリゴンの三角形分割の最小コスト
- 宛先に到達するための最小トークン
- 最小コイン交換問題
- 可能なジャンプの最小数
- 値に達するための最小の完全な正方形の合計
- モバイルテンキーの問題
- 数を3回壊して合計を最大にする
- 最適なBSTのコスト
- 友達のペアリングの問題
- ワイルドカードパターンマッチングの問題
- 回文分割アルゴリズム
- 等しい合計の集合の分割の可能性を確認します
- ロッドカットの問題
- 最も短い一般的なスーパーシーケンス
- 部分和問題
- N桁の値で減少しない合計数
- 醜い数字
- 頂点被覆問題
- 加重ジョブスケジューリング問題
- ワードラップの問題
-
バックトラッキングの概要
バックトラック 問題を解決するためのアルゴリズムに基づく手法です。再帰呼び出しを使用して、時間の経過とともに値を段階的に増やしながらソリューションを構築することにより、ソリューションを見つけます。問題を解決するために与えられた制約に基づいて、問題の解決をもたらさない解決策を削除します。 バックトラッキングアルゴリズムは、特定の種類の問題に適用されます。 問題の実行可能な解決策を見つけるために使用される決定問題。 適用できる最良の解決策を見つけるために使用される最適化問題。 問題のすべての実行可能な解決策のセットを見つけるために使用される列挙問題。 バックトラッキング問
-
Javaでの暗記(1D、2D、3D)動的計画法
暗記は動的計画法に基づく手法であり、提供された入力の結果を記録することにより、メソッドが同じ入力セットに対して複数回実行されないようにすることで、再帰的アルゴリズムのパフォーマンスを向上させるために使用されます(配列)。再帰的方法のトップダウンアプローチを実装することにより、暗記を実現できます。 基本的なフィボナッチの例を参考にして、このシナリオを理解しましょう 1-D暗記 非定数パラメーターが1つだけ(1つのパラメーターだけが値を変更する)の再帰的アルゴリズムを検討するため、この方法は1次元記憶と呼ばれます。次のコードは、フィボナッチ数列のN番目(Nまでのすべての項)を見つけるためのもの