動的計画法を利用したプログラムとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 動的計画法を利用したプログラムの意味・解説 

動的計画法を利用したプログラム(ボトムアップ方式)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/02 16:40 UTC 版)

動的計画法」の記事における「動的計画法を利用したプログラム(ボトムアップ方式)」の解説

int fib(unsigned int n) { int memo[1000] = {0, 1}, i; for (i = 2; i <= n; i++) { memo[i] = memo[i - 1] + memo[i - 2]; } return memo[n];} fib(n - 1) と fib(n - 2) を先に計算しておいた上でfib(n) を計算している。この場合先ほど実装異なりループ部分計算量は O(n) の多項式時間である。このように指数関数時間行われる処理を、計算済み結果記録することにより多項式時間処理できるように改良でき、計算時間圧倒的に減らせる

※この「動的計画法を利用したプログラム(ボトムアップ方式)」の解説は、「動的計画法」の解説の一部です。
「動的計画法を利用したプログラム(ボトムアップ方式)」を含む「動的計画法」の記事については、「動的計画法」の概要を参照ください。


動的計画法を利用したプログラム(トップダウン方式)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/02 16:40 UTC 版)

動的計画法」の記事における「動的計画法を利用したプログラム(トップダウン方式)」の解説

トップダウンで、メモ化併用したやり方fib(n) を計算するのに、fib(n - 1) と fib(n - 2) が必要だが、計算結果配列 memo保存して再利用している。 #include int memo[1000] = {0, 1};bool in_memo[1000] = {true, true};int fib(unsigned int n) { if (!in_memo[n]) { memo[n] = fib(n - 1) + fib(n - 2); in_memo[n] = true; } return memo[n];} 近年色々なプログラミング言語メモ化言語レベルサポートしている。その機能利用した場合、より簡単に書け場合がある。例えGroovy場合、@Memoized を付けることでメモ化するが、下記のように、定義を直接実装したプログラムに @Memoized を付けると動的計画法になる。 import groovy.transform.Memoized@Memoizedint fib(int n) { switch (n) { case 0: return 0 case 1: return 1 default: return fib(n - 1) + fib(n - 2) }}

※この「動的計画法を利用したプログラム(トップダウン方式)」の解説は、「動的計画法」の解説の一部です。
「動的計画法を利用したプログラム(トップダウン方式)」を含む「動的計画法」の記事については、「動的計画法」の概要を参照ください。

ウィキペディア小見出し辞書の「動的計画法を利用したプログラム」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「動的計画法を利用したプログラム」の関連用語

動的計画法を利用したプログラムのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



動的計画法を利用したプログラムのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaの動的計画法 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS