跳轉到內容

離散數學/遞迴

來自華夏公益教科書,開放的書籍,開放的世界
離散數學
 ← 圖論 遞迴 半群 → 

在本節中,我們將探討一些數學過程,這些過程的核心是遞迴的基本性質。

什麼是遞迴?

[編輯 | 編輯原始碼]

簡單來說,遞迴就是用自身來描述一個動作的過程。這可能聽起來有點奇怪,但一旦你理解了,它就是一種表達某些概念的極其強大的方法。

讓我們看一些例子,讓事情更清晰。

當我們計算一個指數,比如x3時,我們將x自乘三次。如果我們有x5,我們將x自乘五次。

然而,如果我們想要指數的遞迴定義,我們需要用自身來定義取指數的操作。因此我們注意到,例如x4x3 × x相同。但什麼是x3x3x2 × x相同。我們可以繼續以這種方式進行,直到x0=1。那麼我們一般能說些什麼呢?遞迴地,

xn = x × (xn-1)

以及

x0=1

我們需要第二個事實,因為如果我們繼續使用負指數,定義將不再有意義,我們將無限地繼續下去!

遞迴定義

[編輯 | 編輯原始碼]

將問題簡化為相同問題,但輸入更小。例如

            a power n
            2 power 4
   the recursion(smaller inputs) of this function is = 2.2.2.2.1
   for this we declare some recursive definitions 
  a=2
  n=4
  f(0)=1
  f(1)=2
  f(2)=2
  f(3)=2
  f(4)=2
  for this recursion we form a formula f(n)= a.f(n-1)
  by putting these smaller values we get the same answer.

遞推關係

[編輯 | 編輯原始碼]

在數學中,我們可以建立遞迴函式,這些函式依賴於其先前的值來建立新的值。我們通常稱這些為遞推關係

例如,我們可以有函式 :f(x)=2f(x-1),其中f(1)=1。如果我們計算一些f的值,我們會得到

1, 2, 4, 8, 16, ...

然而,這個數字序列對你來說應該很熟悉!這些值與函式2x相同,其中x = 0、1,依此類推。

我們所做的是找到一個非遞迴函式,該函式與遞迴函式具有相同的數值。我們稱之為求解,也稱為x'to sup,其值為0,依此類推。

線性遞推關係

[編輯 | 編輯原始碼]

我們將特別關注一種被稱為線性的遞推關係。

這是一個線性遞推關係的例子

f(x)=3f(x-1)+12f(x-2),其中f(0)=1,f(1)=1

我們通常使用an表示a(n),而不是寫f(x),但這些表示法是完全可以互換的。

注意,線性遞推關係應該始終有終止情況,否則我們將無法計算f(2),例如,因為如果我們沒有定義f(1),它將是什麼呢?當我們談論線性遞推關係時,這些終止情況被稱為初始條件

一般來說,線性遞推關係的形式為

an=A1an-1 + A2an-2 + ... + Ajan-j
其中f(t1)=u1f(t2)=u2,...,f(tj)=uj作為初始條件。

數字j很重要,它被稱為線性遞推關係的。請注意,我們始終至少需要j個初始條件才能使遞推關係有意義。

回顧上一節,我們看到可以找到一個非遞迴函式(一個),它將取與遞推關係本身相同的數值。讓我們看看如何求解一些線性遞推關係 - 我們可以用一種非常系統的方法來做到這一點,但我們首先需要建立幾個定理。

求解線性遞推關係

[編輯 | 編輯原始碼]
解的和
[編輯 | 編輯原始碼]

這個定理說

如果f(n)和g(n)都是線性遞推關係an=Aan-1+Ban-2的解,那麼它們的和也是一個解。

這是真的,因為如果我們將遞推關係重新排列為an-Aan-1-Ban-2=0,並且我們知道f(n)和g(n)是解,因此,在代入遞推關係後,我們有

f(n)-Af(n-1)-Bf(n-2)=0
g(n)-Ag(n-1)-Bg(n-2)=0

如果我們將和f(n)+g(n)代入遞推關係,我們將得到

(f(n)+g(n))-A(f(n-1)+g(n-1))-B((f(n-2)+g(n-2))=0

展開後,我們有

f(n)-Af(n-1)-Bf(n-2)+g(n)-Ag(n-1)-Bg(n-2)

但使用我們首先建立的兩個事實,這與

0+0=0

因此,f(n)+g(n)確實是遞推關係的解。

下一個定理指出

假設我們有一個二階線性遞推關係,an-Aan-1-Ban-2=0,並給出初始條件。


那麼γrn是遞推關係的解,其中r是二次方程

x2-Ax-B=0

的解,我們稱之為特徵方程
我們猜測(為什麼並不重要,現在就接受它)γrn可能是一個解。我們可以證明,如果(且僅當)它解出特徵方程,它就是一個解 ;

我們將γrnr不等於零)代入遞推關係中,得到

γrn-Aγrn-1-Bγrn-2=0

然後用最右邊的項γrn-2進行因式分解

γrn-2(r2-Ar-B)=0

我們知道r不等於零,因此rn-2永遠不可能為零。因此,r2-Ar-B必須為零,因此,γrn(其中rr2-Ar-B=0的解)確實是線性遞推關係的解。請注意,我們可以輕鬆地將這個事實推廣到更高階的線性遞推關係。


這是從哪裡來的?為什麼它有效(除了死板的證明)?這裡有一個更直觀的(但數學上不那麼嚴謹)的解釋。
求解特徵方程找到一個滿足線性遞推關係的函式,並且方便地不需要對所有n項進行求和來找到第n項。
我們需要 : 一個函式F(n),使得F(n) = A * F(n-1) + B * F(n-2)
我們求解 : x2 = A* x + B,並將其解稱為r。可能有多個r值,如下面的例子所示!
我們得到 : 一個函式F(n) = rn,它滿足F(n) = A * F(n-1) + B * F(n-2)
讓我們檢查一下:rn = A*rn-1 + B*rn-2 是否成立?將兩邊都除以rn-2,我們會得到r2 = A*r + B,這必須成立,因為rx2 = A* x + B的解

為什麼 γ*rn 也滿足遞迴關係? 如果 F(n)=rn 是一個解,也就是說,rn-A*rn-1-B*rn-2=0,那麼 F(n)=γrn 當然也是一個解,因為 γrn-Arn-1-Brn-2=γ(rn-A*rn-1-B*rn-2)=0。



因為我們有一個二階遞迴關係,所以通解是兩個解的和,這兩個解對應特徵方程的兩個根。假設這兩個根是 r 和 s。通解是 C(rn)+D(sn),其中 C 和 D 是常數。我們可以透過關係的兩個初始值(必須有兩個才能找到 C 和 D)來求出它們。將這些值代入通解,將得到兩個方程,我們可以(希望)解出它們。

讓我們透過一個例子來了解如何使用上述定理來解決線性遞迴關係。考察這裡給出的函式 a(n)

a(n)=a(n-1)+2a(n-2)

這個遞迴關係的特徵方程是

r2-r-2 = 0,如上所示,因為 A=1 且 B=2

即 (r-2)(r+1)=0,它的根為 2,-1。

所以通解是 C(2n)+D(-1)n


為了找到這個特定情況下的 C 和 D,我們需要兩個初始值,假設 a(1) = 0 且 a(2) = 2。這些值會得到一個由兩個方程組成的系統
0 = C(21)+D(-1)1
2 = C(22)+D(-1)2
解這兩個方程得到:C = 1/3,D = 2/3,所以解是 1/3*(2n)+2/3*(-1)n

離散數學
 ← 圖論 遞迴 半群 → 
華夏公益教科書