再帰関数、推定式アルゴリズムリズム、P、NP.


大きな問題を繰り返し可能な小さな問題に分ける方法
すべての再帰関数は重複文で記述できます

長所


読みやすさがよい
ショートコード
各ステップの変数状態を自動的に保存(関数のスタックフレーム)
コードの検証が容易

短所


再帰的な問題を分析するのは容易ではなく,設計が直感的ではない.
欲しい結果が出ると盲目的に信じる必要がある.
スタックオーバーフロー発生
関数呼び出しオーバーロード
簡単な例ナチス数列(Fn=Fn-1+Fn-2,(n>1)
int fibonacciRecursive(int number) {
	if (number <= 1) {
    	return number;
    }
    
    return fibonacciRecursive(number - 2) + fibonacciRecursive(number - 1);
}

テールコール


関数の最後に別の関数を呼び出す
スタックフレームスタックフレーム:関数で使用される変数値を保持し、3番目の関数を呼び出して戻ったときにスタックに格納された値を返します.
末尾呼び出しの場合、より多くの演算を実行する他の関数の戻り値はありません.
この場合、スタックフレームが作成されていない末尾呼び出しを最適化することもできます.
次の例では、入力値からn<=1までの数値の積を表す末尾呼び出しを使用します.
int factorial(int n) {
	return factorialRecursive(n, 1);
}

int factorialRecursive(int n, int fac) {
	if (n <= 1) {
    	return fac;
    }
    
    return factorialRecursive(n - 1, n * fac);
}
Java仮想マシンでは、テールコールの最適化はサポートされていないため、スタックフレームでは
削除されないので、大量に使用すると再帰関数のようにスタックオーバーフローが発生します

大まかなアルゴリズムのリズム


可能な限り任意の数の効率を試みるアルゴリズム.
アルゴリズムの時間的複雑度はO(n)よりも高く,O(n 3)の複雑度はより高い.

P分類(Pクラス)


分類判定問題の方法の一つ(Yes/No)
決定論の調整機械において,多項式時間内に解くことができるすべての問題.

おんきょうちょうせいき


何かを計算する機械を表す仮想装置
一般的なアルゴリズムを実行できます

決定論調校正機


コマンドの実行後に実行する次のコマンドを決定します.
カーネル内でコマンドを順番に実行することのたとえ
一つのコア上で多項式時間アルゴリズムを実行する問題はPである

NP分類(NPClass)


ひけっていたこうしきじかん
非Not P
コマンドを実行した後、実行する次のコマンドが不明です.
複数の以下のコマンドを並列に実行するマシンと見なす

NP-完了


NP-問題の一部であり、最も難しい問題でもある.
すべてのNP-完全な問題をNP-完全な問題に復元できます
多項式時間内の検証

NP.難解


最小NP-完全な問題と同様に困難な問題
NP以外の問題は多項式時間内に答えを検証できず,NPより複雑度が高い

P,NP整理なら


P分類:決定論の調整機器で解法を探すのに要する時間が多い時のアルゴリズムを知っている
NP分類:決定論の調整機器での解法を複数時間で検証できる
元のNP問題の定義:非決定論機械上の多項式時間内に解法を見つける