hồi
Phương pháp này còn đượng gọi là phương pháp quan hệ hồi quy hay phương pháp đệ quy. Cơ sở của phương pháp là đưa bài toán từ nđối tượng về bài toán với số lượng đối tượng ít hơn, cho đến khi dễ dàng giải chúng.
Dưới đây là cơ sở lý thuyết để vận dụng phương pháp này.
Định nghĩa 3.1.1. Quan hệ truy hồi bậc k là một công thức cho phép tính giá trị f(n+k) qua các giá trị f(n), f(n+ 1), ..., f(n+k −1).
Ví dụ 3.1.2. i) Quan hệ
f(n+ 1) =f(n) +f(n−1) (1)
là quan hệ truy hồi bậc 2. Nếu cho f(1) = f(2) = 1 thì ta nhận được dãy số Fibonacci, dãy này thường được áp dụng để giải nhiều bài toán đếm nâng cao.
ii) f(n+ 2) =f(n+ 1) +f(n)−nf(n−1) là quan hệ truy hồi bậc 3. Định nghĩa 3.1.3. Quan hệ truy hồi tuyến tính bậc 2
f(n+ 2) =a1f(n+ 1) +a2f(n) (2) trong đó a1, a2 là các hằng số nào đó (không phụ thuộc vào n).
Bổ đề 3.1.4. Nếu f1(n), f2(n) là các nghiệm của (2) thì với các số tùy ý A, B
dãy f(n) = Af1(n) +Bf2(n) cũng là nghiệm của (2).
Chứng minh. Theo giả thiết ta có
f1(n+ 2) =a1f1(n+ 1) +a2f1(n)
f2(n+ 2) = a1f2(n+ 1) +a2f2(n). Từ đó suy ra
Af1(n+ 2) +Bf2(n+ 2) =a1[Af1(n+ 1) +Bf2(n+ 1)] +a2[Af1(n) +Bf2(n)]. Như vậy Af1(n) +Bf2(n) cũng là nghiệm của (2).
Bổ đề 3.1.5. Giả sử r1 là nghiệm của phương trình
r2+a1r+a2. (3)
Khi đó dãy {rn} là nghiệm của quan hệ
f(n+ 2) =a1f(n+ 1) +a2f(n). (4)
Chứng minh. Ta cóf(n) = rn1, f(n+ 1) = rn1+1, f(n+ 2) = r1n+2. Thay vào (4) ta có
r1n+2 =a1r1n+1 +a2r1n. Đẳng thức này đúng vì r2 =a1r+a2.
Định lý 3.1.6. Giả sử cho quan hệ hồi quy
f(n+ 2) =a1f(n+ 1) +a2f(n). (5)
Giả sử phương trình đặc trưng
r2 =a1r+a2
có hai nghiệm phân biệt r1 và r2. Khi đó nghiệm tổng quát của (5) có dạng
f(n) = C1r1n−1+C2r2n−1.
Chứng minh. Theo Bổ đề 3.1.5, f1(n) = r1n−1, f2(n) = r2n−1 là các nghiệm của quan hệ đang xét. Theo Bổ đề 3.1.4, với mọi C1, C2 tùy ý, C1rn1 +C2r2n là nghiệm. Với mỗi nghiệm của hệ (5) được xác định duy nhất bởi các giá trị f(1), f(2), ta có hệ phương trình C1+C2 = a C1r1+C2r2 = b
có nghiệm với a, b tùy ý. Dễ thấy nghiệm đó là C1 = b−ar2
r1−r2, C2 =
ar1−b r1−r2. Định lý được chứng minh.
Sau đây là một số bài toán đếm vận dụng của phương pháp thiết lập quan hệ truy hồi để giải.
Bài toán 3.1.7. (Bài toán Fibonacci).
Một cặp thỏ mỗi tháng sinh một lần, cho một cặp thỏ con (một đực, một cái). Cặp thỏ mới sinh ra sau hai tháng lại bắt đầu sinh một cặp mới. Đếm xem sau n tháng có bao nhiêu cặp thỏ, nếu đầu năm có một cặp thỏ?
Giải. Ký hiệu qua F(n) số cặp thỏ sau tháng thứ n kể từ đầu năm. Ta thấy sau tháng (n+ 1) thì sẽ có F(n) cặp ban đầu, cộng thêm số cặp do các cặp đã có trong tháng thứ (n−1) sinh ra. Số này là F(n−1). Vậy
F(n+ 1) =F(n) +F(n−1) (6)
Theo giả thiết, F(0) = 1, F(1) = 2, nên theo (1) ta có F(3) = 3, F(4) = 5, ...
Ta có phương trình đặc trưng tương ứng của (6) là r2−r−1 = 0. Phương trình này có các nghiệm là r1 = 1 +
√
5
2 , r2 =
1−√5
2 . Vậy nghiệm tổng quát
của (6) có dạng F(n) = C1 1 + √ 5 2 !n +C2 1−√5 2 !n . (7)
Để thuận tiện, ta xét điều kiện ban đầu là F(0) = 0, F(1) = 1, F(2) = 1. Khi đó các hằng số C1, C2 được tính từ hệ phương trình
C1+C2 = 0 √ 5 2 (C1−C2) = 1. Giải ra ta đượcC1 = √1 5,C2 =−√1
5. Vậy với điều kiện ban đầu làF(0) = 0,
F(1) = 1, F(2) = 1 thì số cặp thỏ có được sau n tháng được xác định bởi công thức: F(n) = 1 +√ 5 2 !n − 1− √ 5 2 !n √ 5 . (8)
Bài toán 3.1.8. (Bài toán chia kẹo Euler).
Cho k, n là các số nguyên dương. Tìm số nghiệm nguyên không âm của phương trình
Nhận xét: Bài này giải được khi chứng minh định lý về số các tổ hợp có lặp. Dưới đây là phương pháp đưa ra công thức truy hồi để có thể vận dụng phương pháp quy nạp toán học để giải.
Hướng dẫn giải: Gọi số nghiệm nguyên không âm của phương trình (1) là S(n, k). Dễ thấy S(1, k) = 1. Ta có phương trình (1) có thể viết dưới dạng
x1+x2+...+xn−1 = k−xn. (10)
Suy ra với xn cố định thì số nghiệm của (10) là S(n−1, k−xn). Từ đó ta có được công thức
S(n, k) = S(n−1, k) +S(n−1, k−1) +...+S(n−1,0).
Tương tự ta có
S(n, k−1) = S(n−1, k−1) +S(n−1, k−2) +...+S(n−1,0).
Trừ vế với vế hai đẳng thức trên ta được
S(n, k)−S(n, k−1) = S(n−1, k)
hay
S(n, k) = S(n, k−1) +S(n−1, k).
Từ công thức này bằng quy nạp ta có thể chứng minh được rằng S(n, k) =
Ckn+−1n−1.
Bài toán 3.1.9. (IMO - 1979).
Giả sử A và E là hai đỉnh đối diện của một bát giác đều. Một con ếch bắt đầu nhảy từ đỉnh A. Tại mỗi đỉnh của bát giác (trừ đỉnh E), mỗi cú nhảy của con ếch chỉ có thể nhảy tới hai đỉnh kề của mỗi đỉnh đó. Khi con ếch nhảy vào đỉnh E nó sẽ bị kẹt vĩnh viễn ở đó. Cho trước số nguyên dương n. Hỏi với n cú nhảy, có bao nhiêu cách để con ếch nhảy vào đỉnh E.
Giải. Gọian là số cách để con ếch nhảy vào đỉnh E. Dễ thấy a1 = a2 = a3 = 0, a4 = 2. Giả sử từ đỉnh A theo chiều kim đồng hồ, các đỉnh lần lượt là A → B → C → D → E → F → G → H → A. Từ A, con ếch đến B phải qua một số lẻ bước. Từ B, con ếch đến C phải qua một số lẻ bước. Từ C, con ếch đến D phải qua một số lẻ bước. Từ D, con ếch đến E phải qua một số lẻ bước. Vậy
số bước đến E phải là số chẵn. Nói cách khác, nếu n lẻ thì không có cách nào nhảy vào E. Vậy a2k−1 = 0. Ta cần tính a2k với k ≥ 1.
Xuất phát từ A, với hai bước nhảy đầu tiên con ếch có thể có các cách sau: 1) A→B →A
2) A→H →A 3) A→B →C 4) A→H →G
Nếu theo cách 1) thì số cách tới E là a2k−2. Gọi cn, gn lần lượt là số cách để con ếch xuất phát tương ứng từ C, G nhảy vào đỉnh E với n cú nhảy. Vì lý do đối xứng, ta có cn = gn. Vậy nếu theo cách 3) thì số cách tới E là c2k−2; nếu theo cách 4) thì số cách tới E là g2k−2. Theo quy tắc cộng ta có
a2k =a2k−2 +a2k−2+c2k−2+g2k−2 = 2a2k−2+ 2c2k−2. (11) Xuất phát từ C, với hai bước nhảy đầu tiên, có thể có các cách sau:
1c) C →B →A 1c) C →B →C 1c) C →D →C 1c) C →B →E
Nếu theo cách 1c) thì số cách nhảy tới E là a2k−2. Nếu theo cách 2c) thì số cách nhảy tới E là c2k−2. Nếu theo cách 3c) thì số cách nhảy tới E là c2k−2. Nếu theo cách 4c) thì số cách nhảy tới E là 0. Theo quy tắc cộng ta có
c2k = a2k−2+ 2c2k−2. (12)
Từ (11) và (12) rút ra c2k = a2k −a2k−2, hay c2k−2 =a2k−2−a2k−4. Thay vào (12), ta được
Đặt uk = a2k, ta có uk = 4uk−1 − 2uk−2, u1 = a2 = 0, u2 = a4 = 2. Phương trình đặc trưng là r2−4r+ 2 = 0. Phương trình này có các nghiệm là
r1 = 2 + √ 2 2 , r2 = 2−√2 2 . Vậy uk = C1 2 + √ 2 2 !k +C2 2−√2 2 !k . (13) Từ u1 = 0, u2 = 2, thế vào (13) ta tìm được C1 = √1 2, C2 =−√1 2. Khi đó
theo (7) ta có nghiệm tổng quát là a2k =uk = (2 +
√
2)k−1−(2−√2)k−1
√
2 , k = 1,2, ...
Một số bài tập dưới đây có thể giải được bằng phương pháp truy hồi.
Bài toán 3.1.10. (VMO - 2003).
Với mối số nguyên n > 1, ký hiệu sn là số các hoán vị (a1, a2, ..., an) của n số nguyên dương đầu tiên, mà mỗi hoán vị (a1, a2, ..., an) đều có tính chất:
1 ≤ |ak−k| ≤2với mọik = 1,2, ..., n. Chứng minh rằng1,75sn−1 < sn <2sn−1. Hướng dẫn. Ta cần thiết lập và chứng minh công thức truy hồi sau:
sn+1 = sn+sn−1 +sn−2+sn−3−sn−4.
Bài toán 3.1.11. Trong mặt phẳng, cho n đường tròn đôi một cắt nhau. Hỏi chúng chia mặt phẳng thành bao nhiêu miền ?
Bài toán 3.1.12. (Bungari - 1995).
Cho số nguyên dương n ≥ 2. Hãy tìm số các hoán vị (a1, a2, ..., an) của
1,2, ..., n sao cho tồn tại duy nhất một chỉ số i ∈ {1,2, ..., n − 1} thỏa mãn ai > ai+1.
Bài toán 3.1.13. (Bài toán tháp Hà Nội).
Có ba chiếc cọc. Cọc thứ nhất xâu n cái đĩa khác nhau sao cho các cái đĩa có đường kính lớn hơn ở dưới. Chúng ta muốn chuyển tất cả các cái đĩa sang cọc thứ hai mà các đĩa vẫn xếp theo thứ tự từ lớn đến nhỏ. Trong quá trình chuyển qua các cọc không được đặt đĩa lớn lên trên đĩa nhỏ. Hỏi số lần ít nhất để chuyển toàn bộ đĩa ở cọc thứ nhất sang cọc thứ hai là bao nhiêu?