離散數學/遞迴
在本節中,我們將探討一些數學過程,這些過程的核心是遞迴的基本性質。
簡單來說,遞迴就是用自身來描述一個動作的過程。這可能聽起來有點奇怪,但一旦你理解了,它就是一種表達某些概念的極其強大的方法。
讓我們看一些例子,讓事情更清晰。
當我們計算一個指數,比如x3時,我們將x自乘三次。如果我們有x5,我們將x自乘五次。
然而,如果我們想要指數的遞迴定義,我們需要用自身來定義取指數的操作。因此我們注意到,例如x4與x3 × x相同。但什麼是x3?x3與x2 × 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)=u1,f(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可能是一個解。我們可以證明,如果(且僅當)它解出特徵方程,它就是一個解 ;
我們將γrn(r不等於零)代入遞推關係中,得到
- γrn-Aγrn-1-Bγrn-2=0
然後用最右邊的項γrn-2進行因式分解
- γrn-2(r2-Ar-B)=0
我們知道r不等於零,因此rn-2永遠不可能為零。因此,r2-Ar-B必須為零,因此,γrn(其中r是r2-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,這必須成立,因為r是x2 = A* x + B的解
為什麼 γ*rn 也滿足遞迴關係? 如果 F(n)=rn 是一個解,也就是說,rn-A*rn-1-B*rn-2=0,那麼 F(n)=γrn 當然也是一個解,因為 γrn-A*γrn-1-B*γrn-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。