第 14 章 データ構造とアルゴリズムの適用
1. 分割して征服する
サイズ n の問題の場合、問題が簡単に解決できる場合 (たとえば、サイズ n が小さい場合)、直接解決できますが、そうでない場合は、k 個の小さなサブ問題に分解する、これらのサブ問題は互いに独立しており、元の問題と同じ形式を持ち、これらのサブ問題を再帰的に解き、各サブ問題の解を組み合わせて元の問題の解を取得します。
- 問題のサイズは、サイズを小さくすることで簡単に解決できます。
- この問題はいくつかに分類できますより小規模な同じ問題
- この問題によって分解された部分問題の解決策は次のとおりです。問題の解決策に統合される
- この問題に分解されるサブ問題は次のとおりです。相互に独立した
1.1. 再帰的テクノロジー
再帰とは、プロセスの実行中に自分自身を呼び出すことです
フィボナッチ数列
int F(int n)
{
if(n=0) return 1;
if(n=1) return 1;
if(n>1) return F(n-1)+F(n-2);
}
1.2、二分探索
二分探索は二分探索(Binary Search)とも呼ばれ、より効率的な探索方法です。ただし、二分探索では、線形テーブルが逐次記憶構造を採用し、テーブル内の要素がキーに従って順番に配置されている必要があります。
function Binary_Search(L,a,b,x){
if(a>b) return -1;
else{
m=(a+b)/2;
if(x==L[m])return m;
else if(x>L[m])
return(Binary_Search(L,m+1,b,x));
else
return(Binary_Search(L,a,m-1,x));
}
}
2. バックトラッキング方法
バックトラッキング法は、最適探索法の一種であり、目的を達成するために最適な条件に従って前方に探索する。しかし、探索が一定の段階に達すると、次のことがわかります。当初の選択が良くない、または目標を達成できない,すぐに一歩下がって選択し直す。この、うまくいかなかったら戻って戻るという手法がバックトラック法です。
3. 貪欲な方法
常に流れを作る最善の選択全体として考慮せず、各ステップで行う選択は現在のステップのみです。局所最適, しかし、それが全体的に必ずしも最良の選択であるとは限りません。最適解を見つけるためにすべての可能な解を網羅する必要がないため、時間がかかりません。一般に、満足のいく解はすぐに得られますが、最適解は得られません。。
4. 動的計画法
問題を解決する際、各決定ステップごとに、考えられるローカル ソリューションをすべてリストアップするを決定し、一定の判定条件に従って、絶対に最適解が得られない局所解を破棄し、各ステップで大域解が最適解であるかどうかをステップ毎にスクリーニングする。最適なソリューション。