Skip to main content

動的プログラミングとは何ですか?

computerコンピューターサイエンスの分野を参照するときの動的プログラミングは、問題をより小さな問題のセットに分解することにより、複雑な問題を解決するための同様のコンピューターアルゴリズムのグループを説明します。1950年代にリチャードベルマンによって最初に作成された動的プログラミングは、サブ問題または最適な下部構造の重複のいずれかである問題を伴います。動的プログラミングの仕組みを理解するために、これら2つの用語の背後にある概念を理解するのが最善です。たとえば、数値のセットを使用してすべての可能な結果を計算するように指示された数学的方程式は、他の結果を1回だけ計算しながら、同じ結果を何度も計算することができます。動的プログラミングは、結果を計算した後、その結果を最初に保存し、回答を後でそれを再度計算する代わりに式に差し込むことになることをこの問題に伝えます。長い複雑なプロセスと方程式を扱う場合、これにより時間を節約し、はるかに少ないステップを使用してより高速なソリューションを作成します。複雑な問題をより小さな問題に分解した後、コンピューターは数学システムを使用して、各問題の最良の答えが何であるかを判断します。小さい回答から元の問題に対する答えを計算します。このプロセスには欠陥があります。最良の数学的に機能するソリューションを提供しますが、問題の種類とそれが現実の世界にどのように関連するかに応じて、実生活で最良の解決策である場合とそうでない場合があります。アルゴリズムは、ソリューションへの最短パスを見つけようとします。これを行うには、2つのアプローチのいずれかが必要です。トップダウンアプローチは、方程式をより小さな方程式に分割し、必要に応じてこれらの方程式の答えを再利用します。ボトムアップアプローチは、方程式を破った後、最小数学的値を解決しようとし、そこから最大のものに向かって進みます。どちらのアプローチも時間を節約しますが、動的プログラミングは、元の問題がある時点で式を解くために再利用される小さな方程式に分解できる場合にのみ機能します。