[具体的な数学]再帰対クローズド

再帰

ハノイの塔(ハノイ)

提案

3極、大合計に対する小サイズの第一ルートが存在する\(N- \)プレートは、第一ポール上の第3の極に移動し、プレートの全ては、以下の3つのルールが必要となります。

  1. あなただけのプレートを移動することができます。
  2. あなただけの各極プレートの上部を移動することができます。
  3. 小さい上、下各大極にプレート。

ステップの最小数は、問題を必要としました。

例:

場合\(N = 3 \) 図に示すように移動する方法。

最小の動きの数(7 \)\、そう\(N = 3 \)場合提案溶液である\(7 \)

解きます

方法:ネーミングと解決

名前

  1. セット\(H(N)\)\(N- \)プレートハノイの塔の溶液。
  2. 三極の番号は(A、B、C \)\
  3. 最初の\(I \)層板として(H_I \)\

解決

明らかに、\(H(1)。1 = \)

利用可能な観察は、\(N- \)からプレート\(Aは\)に移動される\(B \)に対応する\(H_1、H_2 \ cdots H_ {N-1} \) に移動する\(B \)\(H_n \)移動\(C \) 次いで\(H_1、H_2 \ cdots H_ {N-1} \) 移動\(C \)

定義により、\(H_1、H_2 \ cdots H_ {N-1} \) から\(A \)に移動\(B \)のための\(H(N-1) \) ステップ。

\(\したがって、H(N)= 2H(N-1)+1 \ qquad H(1)= 1 \)

テスト

既知の(H(3)= 7 \ \)

\ [\ので、H(N)= 2H(N-1)+1 \]
\ [\したがって、H(3)= 2 \回H(2)+1 \]
\ [\したがって、H(3)= 2 \時間(2 \回H(1)+ 1)+ 1 \]
\ [\したがって、H(3)= 2 \回(2 \回1 + 1)+1 \]
\ [\したがって、H(3)= 2 \時間3 + 1 \]
\ [\したがって、H(3)= 7 \]

コード

# python
A = [3, 2, 1]
B = []
C = []

def move(n, source, target, auxiliary):
    if n > 0:
        # Move n - 1 disks from source to auxiliary, so they are out of the way
        move(n - 1, source, auxiliary, target)

        # Move the nth disk from source to target
        target.append(source.pop())

        # Display our progress
        print(A, B, C, '##############', sep='\n')

        # Move the n - 1 disks that we left on auxiliary onto target
        move(n - 1, auxiliary, target, source)

# Initiate call from source A to target C with auxiliary B
move(3, A, C, B)

リカーシブ

再帰的な解決方法は、計算で自分のを呼び出すことです。

再帰的構成条件は、持っている必要があります

  1. サブ問題は、元の問題は、同じ問題であり、かつ容易になります。

  2. 自分自身を呼び出して無制限にすることはできません、非再帰的な処理のために状況を簡素化、国境を持っている必要があります。

ハノイの塔は、再帰を解決するための代表的な式です。

囲いました

以前の漸化式で、容易表示するには、計算(\ H(N))\必要(N-1 \)\\(H(n)は、\)で置換されている\(2H(N-1) + 1 \)の操作。

したがって、再帰的な直感的なものの、しかし、便利な計算ではありません。

クローズは、直接再帰的である必要はない、関数の値を計算することができます。

私たちは、ハノイの塔が閉じて、再帰的に変換しようとします。

第1幕

解決

\ [\ので、H(N)= 2H(N-1)+1 \]
\ [\したがって、H(N)= 4H(N-2)+3 \]
\ [\したがって、H(N)= 8H(N -3)+7 \]
\ [\ vdots \]
\ [\したがって、H(N)= 2 ^ {N-1} H(1)+ 2 ^ {N-1} -1 \]
\ [\したがって、H (N)= ^ {N-1} 2 + 2 ^ {N-1} -1 \]
\ [\したがって、H(N)= 2 ^ N-1 \]

テスト

既知の(H(3)= 7 \ \)

\ [\ H(N)= 2 ^ N-1 \なぜなら]
[故にH(3)= ^ 3-1 2 \ \] \
\ [\したがって、H(3)= 7 \]

第2幕

解決

\ [\ので、H(N)
= 2H(N-1)\] 推測:
\ [H(N)1 = 2-N- ^ \。]
実証:
\ [n iははっきり\確立= 1、]

\ [IIは、次いで、K-1 = 2 ^と仮定N = K、すなわち、H(k)を設立:\]

\ [\ので、H(N)= 2H(N-1)+1 \]

\ [\したがって、H(N + 1)= 2H(N)+1 \]

\ [\ので、H(N)= 2 ^ K-1 \]

\ [\したがって、H(N + 1)= 2 \ CDOT(2 ^ K-1)-1 \]

\ [\したがって、H(N + 1)= 2 ^ {K + 1} -2 + 1 \]

\ [\したがって、H(N + 1)= 2 ^ {K + 1} -1 \]

QED。

おすすめ

転載: www.cnblogs.com/zhangtianli/p/12216131.html