タグ付けされた質問 「dynamic-programming」

10
動的プログラミングとは何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 10か月前に閉鎖。 この質問を改善する 動的プログラミングとは何ですか? 再帰、メモ化などとどう違うのですか? ウィキペディアの記事を読んだのですが、まだよくわかりません。



8
ボトムアップとトップダウンの違いは何ですか?
ボトムアップ(動的プログラミング)のアプローチは、「小さい」部分問題を見て最初に構成され、そしてより小さい問題に対する解決策を使用して、より大きな部分問題を解決します。 トップダウンはあなたが前部分問題の解を計算している場合は、「自然な形」とチェックで問題を解決することにあります。 私は少し混乱しています。これら2つの違いは何ですか?

9
窓から猫を投げる
猫がいる高層ビルにいるとします。猫は低い階の窓から落ちても生き残ることができますが、高床から投げられると死にます。最小限の試行回数で、猫が生き残ることができる最長の落下をどのようにして把握できますか? 明らかに、猫が1匹しかいない場合、直線的にしか検索できません。まず1階から猫を投げます。生き残った場合は2回目から投げます。やがて、f階から投げ出された猫は死ぬ。すると、f-1フロアが最大安全フロアであったことがわかります。 しかし、猫が複数いる場合はどうでしょうか。これで、ある種の対数検索を試すことができます。ビルドが100階建てで、猫が2匹いるとします。最初の猫を50階から投げ出して死んだ場合、50階を直線的に検索するだけで済みます。あなたが最初の試みのために低い階を選択した場合、あなたはさらに良いことができます。一度に20フロアの問題に取り組むことを選択し、最初の致命的なフロアが#50であるとします。その場合、最初の猫は20階と40階のフライトを生き延びてから60階で死亡します。41階から49階を個別に確認するだけです。これは合計12回の試行であり、バイナリ除去を使用しようとした場合に必要な50回よりもはるかに優れています。 一般的に、2匹の猫がいるn階建ての建物の場合、最善の戦略は何ですか?それは最悪の場合の複雑さですか?n階とm猫はどうですか? すべての猫が同等であると仮定します。それらはすべて、所定のウィンドウからの落下によって生き残るか、または死亡します。また、すべての試みは独立しています:猫が転倒を生き延びた場合、それは完全に無害です。 これは宿題ではありませんが、学校の課題のために一度解決したかもしれません。今日、気まぐれな問題が頭に浮かんだだけで、その解決策を思い出せません。この問題の名前またはソリューションアルゴリズムの名前を知っている人がいる場合は、ボーナスポイントになります。


5
動的プログラミングを理解したい人のための簡単な例[終了]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 5年前に閉鎖。 この質問を改善する ダイナミックプログラミングを学びたい人のために、扱いやすく理解できる例を探しています。動的プログラミングとは何かについて、ここで良い答えがあります。フィボナッチ数列は良い例ですが、表面を傷つけるには小さすぎます。アルゴリズムのクラスはまだ受講していませんが、春に向けて私のリストに載っていれば幸いです。

4
ナップサック問題が疑似多項式であるのはなぜですか?
KnapsackDPによって解決できる一方で、それはNP完全であることを私は知っています。彼らは、DPソリューションはpseudo-polynomial「入力の長さ」(つまり、入力をエンコードするために必要なビット数)で指数関数的であるため、であると言います。残念ながら、私はそれを取得できませんでした。誰かpseudo-polynomialが私にそのことをゆっくり説明できますか?

4
すべての島を結ぶための最低費用はいくらですか?
サイズのグリッドがあるN X Mは。一部のセルは「0」で示される島であり、他のセルは水です。各ウォーターセルには、そのセルに作成された橋のコストを示す番号が付いています。すべての島を接続できる最小コストを見つける必要があります。セルがエッジまたは頂点を共有している場合、そのセルは別のセルに接続されます。 この問題を解決するためにどのアルゴリズムを使用できますか?N、Mの値が非常に小さい場合、たとえばNxM <= 100の場合、ブルートフォースアプローチとして何を使用できますか? 例:指定された画像で、緑色のセルは島を示し、青色のセルは水を示し、水色のセルはブリッジを作成する必要があるセルを示します。したがって、次の画像の場合、答えは17になります。 最初は、すべての島をノードとしてマークし、島のすべてのペアを最短のブリッジで接続することを考えました。次に、問題を最小スパニングツリーに減らすことができますが、このアプローチでは、エッジがオーバーラップしている場合を見逃しました。たとえば、次の画像では、任意の2つの島の間の最短距離は7(黄色でマーク)であるため、最小スパニングツリーを使用すると答えは14になりますが、答えは11(水色でマーク)になります。

3
アイテムをスタック内の位置に移動するための最小移動数を見つける方法は?
Nがスタックの数、Pがスタックの容量であるNXPスタックのセットが与えられた場合、ロケーションAのノードから任意のロケーションBに移動するために必要なスワップの最小数を計算するにはどうすればよいですか?私はゲームを設計しています。最終的な目標は、すべてのスタックをすべて同じ色になるように並べ替えることです。 # Let "-" represent blank spaces, and assume the stacks are stacks = [ ['R', 'R', 'R', 'R'], ['Y', 'Y', 'Y', 'Y'], ['G', 'G', 'G', 'G'], ['-', '-', '-', 'B'], ['-', 'B', 'B', 'B'] ] stacks[1][1]そんな時に「B」を挿入したい場合stacks[1] = ["-", "B", "Y", "Y"]。そのために必要な移動の最小数を決定するにはどうすればよいですか? 私は複数のアプローチを見てきました。ある状態から可能なすべての動きを生成し、それらにスコアを付け、次に最良のスコアリングパスを継続する遺伝的アルゴリズムを試しました。また、問題をパスファインディングするためにDjikstraのアルゴリズムを実行しようとしました。イライラするほどシンプルに見えますが、指数時間以外で実行する方法を理解できません。ここで適用できる欠落しているアルゴリズムはありますか? 編集する 必要な移動の最小数を計算するためにこの関数を書きました:スタック:スタック内のピースを表すキャラクターのリストのリスト、スタック[0] [0]はスタックのトップです[0]スタック_インデックス:インデックスピースを追加するスタックneeds_piece:スタックに追加するピースneeds_index:ピースを配置するインデックス def calculate_min_moves(stacks, stack_ind, needs_piece, …

1
最長K順次増加サブシーケンス
重複したスレッドを作成した理由 Kの例外が許可された最長の増加するサブシーケンスを読んだ後、このスレッドを作成しました。質問をしている人は、「1つの変更を許可して最長のサブアレイを増やす」問題を解決するリンクを参照していたため、問題を本当に理解していないことに気付きました。したがって、彼が得た答えは実際にはLIS問題とは無関係でした。 問題の説明 配列Aが長さNで与えられていると仮定します。K例外を許可して、最も長く増加するサブシーケンスを見つけます。 例 1)N = 9、K = 1 A = [3,9,4,5,8,6,1,3,7] 正解:7 説明: 最も長いサブシーケンスの増加は、3、4、5、8(または6)、1(例外)、3、7->合計= 7です。 2)N = 11、K = 2 A = [5,6,4,7,3,9,2,5,1,8,7] 答え:8 これまでに行ったこと... K = 1の場合、許可される例外は1つだけです。O(NlogN)の最長増加サブシーケンスを計算するための既知のアルゴリズムを使用する場合(ここをクリックしてこのアルゴリズムを表示)、配列の各要素に対してA [0]からA [N-1]までのLISを計算できます。 A.結果をサイズNの新しい配列Lに保存します。例n.1を見ると、L配列は L = [1,2,2,3,4,4,4,4,5]になります。 逆のロジックを使用して、配列Rを計算します。各要素には、N-1から0までの現在の最長減少シーケンスが含まれています。 1つの例外を除き、LISはsol = max(sol、L [i] + R [i + 1])です。 ここで、solはsol = L [N-1]として初期化されます。したがって、LISを0からインデックスi(例外)まで計算し、次にN-1まで新しいLISを停止および開始します。 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.