You are on page 1of 65

Chương 3: Phép quy nạp và đệ quy

Giảng viên: Hoàng Thị Điệp


Khoa CNTT – Đại học Công Nghệ

Toán học rời rạc Học kì II, 2023-2024


Nội dung chính
 Dãy số và xâu kí tự
 Phép quy nạp toán học
 Định nghĩa đệ quy
 Các thuật toán đệ quy

2
Dãy (sequence)
 Một dãy là một ánh xạ từ một tập con của một tập các số nguyên
(thường là tập {0, 1, 2,…} hoặc tập {1, 2, 3,…}) đến một tập S.
 Ta dùng an để kí hiệu ảnh của số nguyên n.
 an là một số hạng (term) của dãy.
 {an} được dùng để biểu diễn một dãy a1, a2, a3,…
 Chú ý: “{}” giống với kí hiệu dùng trong tập hợp.

3
Dãy
Ví dụ:
 an = n2, với n = 1, 2, 3, …
 Các phần tử của dãy là gì?
 1, 4, 9, 16, 25, …

 an = (-1)n, với n = 0, 1, 2, 3, …
 Các phần tử của dãy là gì?
 1, -1, 1, -1, 1, …

 an = 2n, với n = 0, 1, 2, 3, …
 Các phần tử của dãy là gì?
 1, 2, 4, 8, 16, 32, …

4
Dãy
Ví dụ:
 an = n2, với n = 1, 2, 3, …
 Các phần tử của dãy là gì?
 1, 4, 9, 16, 25, …

 an = (-1)n, với n = 0, 1, 2, 3, …
 Các phần tử của dãy là gì?
 1, -1, 1, -1, 1, …

 an = 2n, với n = 0, 1, 2, 3, …
 Các phần tử của dãy là gì?
 1, 2, 4, 8, 16, 32, …

5
Dãy: Cấp số cộng
 Một cấp số cộng (arithmetic progression) là một dãy số ở dạng:
a, a+d, a+2d, …, a+nd, …
Với a là số hạng khởi đầu và d là công sai; a, d ∈ ℝ.

 Ví dụ:
 sn = -1 + 4n với n = 0, 1, 2, 3, …
 Các phần tử: -1, 3, 7, 11, …

6
Dãy: Cấp số nhân
 Một cấp số nhân (geometric progression) là một dãy số ở dạng:
a, ar, ar2, …, ark, …
Với a là số hạng khởi đầu và r là công bội; a, r ∈ R.

 Ví dụ:
 an = (1/2)n với n = 0, 1, 2, 3, …
 Các phần tử: 1, ½, ¼, 1/8, …

7
Dãy: tìm luật sinh
 Việc tìm ra luật (hàm) để sinh ra một dãy cho trước là không đơn
giản.

 Ví dụ:
 Giả sử dãy: 1, 3, 5, 7, 9, …
 Công thức của dãy số là gì?
 Từng số hạng được tạo ra nhờ cộng 2 vào số hạng trước
nó.
1, 1+2=3, 3+2=5, 5+2=7
 Một cấp số cộng: a + nd, với a = 1 và d = 2: an = 1+2n

8
Dãy: tìm luật sinh
 Việc tìm ra luật (hàm) để sinh ra một dãy cho trước là không đơn
giản.

 Ví dụ:
 Giả sử dãy: 1, 1/3, 1/9, 1/27, …
 Công thức của dãy số là gì?
 Các mẫu số đều là bội của 3.
1, 1/3=1/3, (1/3)/3=1/(3*3)=1/9, (1/9)/3=1/27
 Một cấp số nhân: ark, với a=1 và r=1/3: (1/3)n

9
Dãy: Quan hệ truy hồi (recurrence
relation)
 Phần tử thứ n của dãy {an} được định nghĩa truy hồi dựa trên
các phần tử trước đó của dãy và phần tử khởi đầu của dãy.
 Ví dụ:
 an = an-1 + 2 giả sử a0 = 1;
 a0 = 1;
 a1 = 3;
 a2 = 5;
 a3 = 7;
 Viết an dưới dạng tường minh?
 an = 1 + 2n

10
Dãy Fibonacci
 Là một dãy được định nghĩa truy hồi, với
 f0 = 0, f1 = 1;
 fn = fn-1 + fn-2 với n = 2, 3, …

 Các giá trị


 f2 = 1;
 f3 = 2;
 f4 = 3;
 f5 = 5;

11
Dãy: ví dụ
 Lãi suất cộng dồn: Giả sử một người gửi $10,000 vào tài
khoản tiết kiệm tại một ngân hàng với lãi suất cộng dồn là
11%/năm. Hỏi sau 30 năm thì số tiền trong tài khoản ngân hàng
của người này là bao nhiêu?
 Lời giải:
 Gọi Pn là số tiền trong tài khoản tiết kiệm sau n năm.
 Dãy {Pn} sẽ có định nghĩa truy hồi như sau
Pn = Pn-1 + 0.11 Pn-1 = (1.11) Pn-1.
 Do đó, P30 = $228,922.97.

12
Tổng (summation)
 Tổng của các số hạng của một dãy:
𝑛

෍ 𝑎𝑗 = 𝑎𝑚 + 𝑎𝑚+1 + ⋯ + 𝑎𝑛
𝑗=𝑚
Biến j được gọi là chỉ số (index) lấy tổng.
 m là giới hạn dưới và
 n là giới hạn trên của biến đếm

13
Tổng
 Ví dụ:
 Tính tổng 7 số hạng đầu của {n2} với n = 1, 2, 3, …
 σ7𝑗=1 𝑎𝑗 = σ7𝑗=1 𝑗 2 = 1 + 4 + 9 + 16 + 25 + 36 + 49 = 140

 Giá trị của σ8𝑘=4(−1)𝑘


 σ8𝑘=4(−1)𝑗 = 1 + −1 + 1 + −1 + 1 = 1

14
Chuỗi cấp số cộng
 Tổng của các phần tử của một cấp số cộng a, a+d, a+2d, …,
a+nd được gọi là một chuỗi cấp số cộng (arithmetic series).
 Định lý: Tổng của các phần tử của một cấp số cộng a, a+d,
a+2d, …, a+nd là
𝑆 = σ𝑛𝑗=0 𝑎 + 𝑗𝑑
𝑛
𝑛(𝑛 + 1)
= (𝑛 + 1)𝑎 + 𝑑 ෍ 𝑗 = (𝑛 + 1)𝑎 + 𝑑
2
𝑗=0
 Tính như thế nào?

15
Chuỗi cấp số cộng
 Định lý: Tổng của các số hạng của một cấp số cộng a, a+d,
a+2d, …, a+nd là
𝑆 = σ𝑛𝑗=0 𝑎 + 𝑗𝑑
𝑛(𝑛+1)
= (𝑛 + 1)𝑎 + 𝑑 σ𝑛𝑗=0 𝑗 = (𝑛 + 1)𝑎 + 𝑑
2
 Chứng minh:
𝑆 = σ𝑛𝑗=0 𝑎 + 𝑗𝑑
𝑛 𝑛 𝑛

= ෍ 𝑎 + ෍ 𝑗𝑑 = (𝑛 + 1)𝑎 + 𝑑 ෍ 𝑗
𝑗=0 𝑗=0 𝑗=0
σ𝑛𝑗=0 𝑗 = 1 + 2 + 3 + 4 + ⋯ + 𝑛 − 2 + 𝑛 − 1 + 𝑛

16
Chuỗi cấp số cộng
Ví dụ:
 S = σ5𝑗=1 2 + 𝑗3 =
= σ5𝑗=1 2 + σ5𝑗=1 𝑗3 =
= 2 σ5𝑗=1 1 + 3 σ5𝑗=1 𝑗 =
= 2 ∗ 5 + 3 σ5𝑗=1 𝑗 =
(5+1)
= 10 + 3 ∗5 =
2
= 10 + 45 = 55

17
Chuỗi cấp số cộng
Ví dụ:
 𝑆 = σ4𝑖=1 σ2𝑗=1 2𝑖 − 𝑗 =

= σ4𝑖=1 σ2𝑗=1 2𝑖 − σ2𝑗=1 𝑗 =


= σ4𝑖=1 2𝑖 σ2𝑗=1 1 − σ2𝑗=1 𝑗 =
= σ4𝑖=1 2𝑖 ∗ 2 − σ2𝑗=1 𝑗 =
= σ4𝑖=1 2𝑖 ∗ 2 − 3 =
= σ4𝑖=1 4𝑖 − σ4𝑖=1 3 =
= 4 σ4𝑖=1 𝑖 − 3 σ4𝑖=1 1 = 4 ∗ 10 − 3 ∗ 4 = 28

18
Chuỗi cấp số cộng
Ví dụ:
 𝑆 = σ4𝑖=1 σ2𝑗=1 2𝑖 − 𝑗 =

= σ4𝑖=1 σ2𝑗=1 2𝑖 − σ2𝑗=1 𝑗 =


= σ4𝑖=1 2𝑖 σ2𝑗=1 1 − σ2𝑗=1 𝑗 =
= σ4𝑖=1 2𝑖 ∗ 2 − σ2𝑗=1 𝑗 =
= σ4𝑖=1 2𝑖 ∗ 2 − 3 =
= σ4𝑖=1 4𝑖 − σ4𝑖=1 3 =
= 4 σ4𝑖=1 𝑖 − 3 σ4𝑖=1 1 = 4 ∗ 10 − 3 ∗ 4 = 28

19
Chuỗi cấp số cộng
Ví dụ:
 𝑆 = σ4𝑖=1 σ2𝑗=1 2𝑖 − 𝑗 =

= σ4𝑖=1 σ2𝑗=1 2𝑖 − σ2𝑗=1 𝑗 =


= σ4𝑖=1 2𝑖 σ2𝑗=1 1 − σ2𝑗=1 𝑗 =
= σ4𝑖=1 2𝑖 ∗ 2 − σ2𝑗=1 𝑗 =
= σ4𝑖=1 2𝑖 ∗ 2 − 3 =
= σ4𝑖=1 4𝑖 − σ4𝑖=1 3 = S=0;
= 4 σ4𝑖=1 𝑖 − 3 σ4𝑖=1 1 =for(i=1,
4 ∗ 10j=1;
− 3i<4,j<2;
∗ 4 = 28i++, j++) S+=(2*i-j);

S=0;
for(i=1; i<4; i++)
for(j=1; j<2; j++)
S+=(2*i-j);
20
40 20

𝑆 = ෍ ෍ 2𝑖 − 𝑗
𝑖=1 𝑗=1

21
Chuỗi cấp số nhân
 Tổng của các số hạng của một cấp số nhân a, ar, ar2,…,ark
được gọi là một chuỗi cấp số nhân (Geometric series).

 Định lý: Tổng của các số hạng của một cấp số nhân a, ar,
ar2,…,arn là
𝑛 𝑛 𝑛+1
𝑗 𝑗
𝑟 −1
𝑆 = ෍(𝑎𝑟 ) = 𝑎 ෍ 𝑟 = 𝑎
𝑟−1
𝑗=0 𝑗=0

22
Chuỗi cấp số nhân
 Định lý: Tổng của các số hạng của một cấp số nhân a, ar, ar2,…,arn là
𝑛 𝑛 𝑛+1
𝑟 −1
𝑆 = ෍(𝑎𝑟 𝑗 ) = 𝑎 ෍ 𝑟 𝑗 = 𝑎
𝑟−1
𝑗=0 𝑗=0
 Chứng minh:
𝑛

𝑆 = ෍ 𝑎𝑟 𝑗 = 𝑎 + 𝑎𝑟 + 𝑎𝑟 2 + 𝑎𝑟 3 + ⋯ + 𝑎𝑟 𝑛
𝑗=0
 Nhân S với r
𝑛

𝑟𝑆 = 𝑟 ෍ 𝑎𝑟 𝑗 = 𝑎𝑟 + 𝑎𝑟 2 + 𝑎𝑟 3 + ⋯ + 𝑎𝑟 𝑛+1
𝑗=0
 Trừ 𝑟𝑆 − 𝑆 = 𝑎𝑟 + 𝑎𝑟 2 + 𝑎𝑟 3 + ⋯ + 𝑎𝑟 𝑛+1 − ሾ𝑎 + 𝑎𝑟 + 𝑎𝑟 2 + ⋯ +

23
Chuỗi cấp số nhân
 Ví dụ:
3

𝑆 = ෍ 2(5)𝑗 =
𝑗=0
 Công thức tổng quát:
𝑛 𝑛
𝑟 𝑛+1 − 1
𝑆 = ෍(𝑎𝑟 𝑗 ) = 𝑎 ෍ 𝑟 𝑗 = 𝑎
𝑟−1
𝑗=0 𝑗=0
3
54−1
𝑆 = ෍ 2(5)𝑗 = 2 ∗ =
5−1
𝑗=0
625 − 1 624
=2∗ =2∗ = 2 ∗ 156 = 312
4 4

24
8

𝑆 = ෍(2. 3𝑗 + 3. 2𝑗 )
𝑗=0

25
Chuỗi cấp số nhân vô hạn
 Chuỗi cấp số nhân vô hạn (Infinite geometric series) có thể được
tính dưới dạng đóng với x < 1
 Bằng cách nào?
∞ 𝑘
𝑥 𝑘+1 − 1 1 1
𝑛 𝑛
෍ 𝑥 = lim ෍ 𝑥 = lim =− =
𝑘→∞ 𝑘→∞ 𝑥 − 1 𝑥−1 1−𝑥
𝑛=0 𝑛=0
 Do đó:

1
෍ 𝑥𝑛 =
1−𝑥
𝑛=0

26
Dãy: ví dụ
 Một số dãy hữu ích cùng công thức

Tổng Dạng đóng


 Ví dụ:
 σ100 2
𝑘=50 𝑘 =?

27
Nội dung chính
 Dãy số và xâu kí tự
 Phép quy nạp toán học
 Định nghĩa đệ quy
 Các thuật toán đệ quy

28
Quy nạp toán học (Induction)
 Được sử dụng để chứng minh các mệnh đề dạng
∀x P(x), x ∈ ℤ+
 Gồm 2 bước:
 Cơ bản: Chứng minh P(1) đúng
 Bước quy nạp: Chứng minh P(n)  P(n+1) đúng với mọi số
dương n.
 Kết luận ∀n P(n)

29
Quy nạp toán học
 Tiên đề: Tính được sắp tốt (Well-ordering property)
 Mọi tập con không rỗng của tập số nguyên dương có một
phần tử nhỏ nhất.
 Tính đúng đắn của quy nạp toán học
 Giả sử tồn tại ít nhất một số n để P(n) sai.

30
Quy nạp toán học
 Tiên đề: Tính được sắp tốt (Well-ordering property)
 Mọi tập con không rỗng của tập số nguyên dương có một phần tử
nhỏ nhất.
 Tính đúng đắn của quy nạp toán học
 Giả sử tồn tại ít nhất một số n để P(n) sai.
 Gọi S là một tập các số nguyên dương sao cho P(n) sai.
 Thế thì, S ≠ ∅.
 Dựa vào tính được sắp tốt, S có phần tử nhỏ nhất, giả sử là k
 Do P(1) đúng nên k không thể bằng 1, hay k > 1,
 k – 1 > 0 và P(k-1) đúng (vì k là số nguyên nhỏ nhất mà P(k) sai)
 Mà: P(k-1)  P(k) đúng
 Do đó, P(k) đúng (phản chứng)
 Vì vậy, ∀n P(n).

31
Quy nạp toán học
 Ví dụ: Chứng minh tổng của n số nguyên dương lẻ đầu tiên là
n2, với mọi số nguyên dương. P(n): 1 + 3 + 5 + 7 + … + (2n-1) =
n2 .
 Chứng minh:

32
Quy nạp toán học
 Ví dụ: Chứng minh tổng của n số nguyên lẻ đầu tiên là n2, với
mọi số nguyên dương. P(n): 1 + 3 + 5 + 7 + … + (2n-1) = n2.
 Chứng minh:
 Bước cơ bản: P(1) đúng, vì 1 = 12.
 Bước quy nạp:
 Giả sử P(n) đúng, 1 + 3 + 5 + 7 + … + (2n-1) = n2
 Khi đó P(n+1) đúng, vì

33
Quy nạp toán học
 Ví dụ: Chứng minh n < 2n với mọi số nguyên dương n.
P(n): n < 2n.
 Chứng minh

34
Quy nạp toán học
 Ví dụ: Chứng minh n < 2n với mọi số nguyên dương n.
P(n): n < 2n.
 Chứng minh
 Bước cơ bản: 1 < 21 (luôn đúng)
 Bước quy nạp: Nếu P(n) đúng thì P(n+1) cũng đúng với mọi
n.
 Giả sử P(n): n < 2n đúng
 P(n+1): n+1 < 2n+1 đúng, vì
n+1 < 2n + 1 < 2n + 2n = 2n(1+1) = 2n(2) = 2n+1

35
Quy nạp toán học
 Ví dụ: Chứng minh n3 – n chia hết cho 3 với mọi số nguyên
dương. P(n): n3-n chia hết cho 3.
 Chứng minh

36
Quy nạp toán học
 Ví dụ: Chứng minh n3 – n chia hết cho 3 với mọi số nguyên
dương. P(n): n3-n chia hết cho 3.
 Chứng minh
 Bước cơ bản: P(1): 13 – 1 = 0 chia hết cho 3 (luôn đúng)
 Bước quy nạp: Nếu P(n) đúng thì P(n+1) đúng với mọi số
nguyên dương.
 Giả sử P(n): n3-n chia hết cho 3
 Chứng minh P(n+1): (n+1)3 – (n+1) chia hết cho 3

37
Quy nạp toán học
 Ví dụ: (Bài toán ném bánh) Một số lẻ người đứng trong sân sao
cho khoảng cách giữa 2 người bất kỳ nào đều không giống
nhau. Cùng một lúc, mỗi người sẽ ném 1 chiếc bánh về phía
người gần nhất với mình. Chứng minh rằng có ít nhất một người
không bị ai ném cả.

38
Quy nạp toán học
Lỗi mắc phải khi chứng minh bằng quy nạp
 “Định lý:” Với mọi số nguyên dương n, nếu x và y là 2 số
nguyên dương thỏa mãn max(x, y) = n, thì x = y.
 Chứng minh
 Bước cơ bản: Với n = 1. Nếu max(x, y) = 1 và x, y đều
nguyên dương, ta có x = 1 và y = 1. P(1) đúng.
 Bước quy nạp: Với k là một số nguyên dương, giả sử rằng
bất kể khi nào max(x, y) = k và x, y đều nguyên dương thì x=y.
Nếu để max(x, y) = k + 1, thì max(x − 1, y − 1) = k, do đó theo
giả thuyết quy nạp ta có x − 1 = y − 1.
 Có nghĩa là x = y [đpcm]

39
Quy nạp mạnh (Strong induction)
 Quy nạp thông thường:
 Dùng bước cơ bản: 𝑃(1)
 Bước quy nạp: 𝑃(𝑘)  𝑃(𝑘 + 1) với mọi k nguyên dương

 Quy nạp mạnh:


 Dùng bước cơ bản: 𝑃(1)
 Bước quy nạp: 𝑃(1) ∧ 𝑃(2) ∧ ⋯ ∧ 𝑃(𝑘)  𝑃(𝑘 + 1) với mọi k
nguyên dương

40
Quy nạp mạnh
 Ví dụ: Chứng minh một số nguyên dương lớn hơn 1 có thể
được biểu diễn dưới dạng 1 số nguyên tố hoặc tích của các số
nguyên tố.
 Chứng minh:
 Bước cơ bản: P(2) đúng
 Bước quy nạp: Giả sử P(2), P(3),…P(n) đúng. Chứng minh
P(n+1) cũng đúng. Có 2 trường hợp:
 Nếu n+1 là số nguyên tố thì P(n+1) đương nhiên đúng
 Nếu n+1 là hợp số thì nó có thể được biểu diễn là tích của
2 số nguyên (n+1) = a*b sao cho 1<a,b<n+1
 Từ giả sử P(a) và P(b) đúng, ta có P(n+1) đúng.

41
Quy nạp mạnh
 Ví dụ: Một trò chơi trong đó 2 người chơi lần lượt lấy ra một số
k>0 bất kỳ các que diêm (mà họ muốn) từ 1 trong 2 đống diêm.
Người chơi nào lấy được 1 que diêm cuối cùng sẽ thắng.
Chứng minh rằng nếu ban đầu 2 đống diêm chứa số que diêm
bằng nhau thì người chơi thứ 2 luôn có cách thắng.

42
Nội dung chính
 Dãy số và xâu kí tự
 Phép quy nạp toán học
 Định nghĩa đệ quy
 Các thuật toán đệ quy

43
Định nghĩa đệ quy (Recursive definition)
 Một đối tượng (hàm, dãy, thuật toán, cấu trúc) trong một số
trường hợp có thể được định nghĩa bằng chính nó. Quy trình
này được gọi là đệ quy (recursion).

Ví dụ:
 Định nghĩa đệ quy của một cấp số cộng:
an = a + nd
an = an-1 + d, a0 = a
 Định nghĩa đệ quy của một cấp số nhân:
xn = arn
xn = rxn-1, x0 = a

44
Định nghĩa đệ quy
 Trong một số trường hợp, các đối tượng sẽ được định nghĩa một
cách dễ dàng và dễ hiểu hơn khi sử dụng định nghĩa đệ quy.
Ví dụ:
 Thuật toán tính ước chung lớn nhất gcd:
 gcd(79,35) = gcd(35,9)
 Tổng quát hơn: gcd(a,b) = gcd(b, a mod b)
 Hàm giai thừa
 n! = n(n-1)! và 0! = 1
 Các bộ sinh số giả ngẫu nhiên:
 xn+1=(axn+c) mod m

45
Định nghĩa đệ quy cho hàm
 Để định nghĩa đệ quy một hàm trên tập các số nguyên không âm
 Xác định giá trị của hàm tại 0
 Đưa ra một quy tắc để tìm giá trị của hàm tại n+1 theo giá trị
của hàm đó tại các số nguyên i <= n.

 Ví dụ: định nghĩa hàm giai thừa


 0! = 1
 n! = n(n-1)!

46
Định nghĩa đệ quy cho hàm
Ví dụ:
Giả sử một hàm đệ quy trên tập các số nguyên dương:
 f(0) = 3
 f(n+1) = 2f(n) + 3
 Giá trị của f(0) là gì? 3
 f(1) = 2f(0) + 3 = 2(3) + 3 = 6 + 3 = 9
 f(2) = f(1+1) = 2f(1) + 3 = 2(9) + 3 = 18 + 3 = 21
 f(3) = f(2+1) = 2f(2) + 3 = 2(21) + 3 = 42 + 3 = 45
 f(4) = f(3+1) = 2f(3) + 3 = 2(45) + 3 = 90 + 3 = 93

47
Định nghĩa đệ quy cho hàm
Ví dụ:
 Hàm f(n) = 2n + 1 với n = 0,1,2,… được định nghĩa đệ quy như
sau:
 f(0) = 1
 f(n+1) = f(n) +2
 Dãy: an = n2 với n = 1,2,3,… được định nghĩa đệ quy như sau:
 a1 = 1
 an+1 = an + (2n+1), n >= 1

48
Định nghĩa đệ quy cho hàm
Ví dụ:
 Định nghĩa đệ quy của tổng n số nguyên dương đầu tiên
F(n) = σ𝑛𝑖=1 𝑖

 F(1) = 1
 F(n+1) = F(n) + (n+1), n >= 1

49
Định nghĩa đệ quy: xâu ký tự
 Cho trước tập các chữ cái ∑
 Ví dụ: ∑ = {a,b}
 ∑*
 Một tập gồm tất cả các xâu chỉ chứa những kí tự trong ∑
 Ví dụ: ∑* = {“”,a,aa,aaa,aaa…,ab,…b,bb,bbb,…}
 Định nghĩa đệ quy của ∑*
 Xâu rỗng 𝞴 ∈ ∑*
 Nếu w ∈ ∑* và x ∈ ∑ thì wx ∈ ∑*

50
Định nghĩa đệ quy: xâu ký tự
Ví dụ:
 Tìm một định nghĩa đệ quy của 𝑙(w), là độ dài của xâu w.
 Giải pháp:
 𝑙(“”) = 0; (độ dài của xâu rỗng)
 𝑙(wx) = 𝑙(w) + 1 nếu w ∈ σ* và x ∈ σ.

51
Định nghĩa đệ quy
 Các cấu trúc dữ liệu

 Ví dụ: Cây có gốc (rooted tree)


 Bước cơ bản:
 Một nút đơn (đỉnh) là một cây có gốc
 Bước đệ quy:
 Giả sử T1, T2, … Tk là các cây có gốc lần lượt tại r1, r2, … rk
 Thế thì đồ thị tạo bởi một đỉnh gốc r nằm ngoài tất cả các
cây T1, T2, … Tk và bổ sung các cạnh từ r tới mỗi gốc r1, r2,
… rk cũng là một cây có gốc.

52
Nội dung chính
 Dãy số và xâu kí tự
 Phép quy nạp toán học
 Định nghĩa đệ quy
 Các thuật toán đệ quy

53
Thuật toán đệ quy
 Một thuật toán được gọi là “đệ quy” nếu nó giải quyết một vấn
đề bằng cách giải quyết vấn đề tương tự nhưng với kích thước
đầu vào nhỏ hơn.
 Dễ cài đặt
 Ví dụ:

54
Thuật toán đệ quy
 Thuật toán đệ quy tính an.

1.Thiết kế thuật toán binaryPower(a, n)


tính a^n đệ quy theo phương pháp chia
đôi.
2.n=1000000 thì hàm binaryPower được
gọi bao nhiêu lần?
55
Thuật toán đệ quy
 Thuật toán đệ quy tính ước chung lớn nhất.

56
Thuật toán đệ quy
 Thuật toán đệ quy tính ước chung lớn nhất.

procedure gcd(a, b: số nguyên


dương)
x := a
y := b
while y ≠ 0
r := x mod y
x := y
y := r
return x {gcd(a, b) là x}
57
Thuật toán đệ quy
 Thuật toán đệ quy tính lũy thừa modulo: bn mod m.

58
Thuật toán đệ quy
 Thuật toán đệ quy tìm kiếm tuyến tính

59
Thuật toán đệ quy
 Thuật toán đệ quy tìm kiếm nhị phân

60
Bài 1: Cài đệ quy thuật
toán tìm kiếm tuyến
tính nhưng dịch j

Bài 2: Cài đệ quy thuật


toán tìm kiếm nhị phân
cho dãy giảm

61
Thuật toán đệ quy
 Thuật toán sắp xếp trộn (merge sort)
 Ví dụ: 8, 2, 4, 6, 9, 7, 10, 1, 5, 3

62
Thuật toán đệ quy
 Thuật toán sắp xếp trộn (merge sort)
 Độ phức tạp O(n log n)

Hai danh sách đã được sắp xếp


gồm m và n phần tử có thể
được trộn vào thành 1 danh
sách được sắp xếp bằng cách
sử dụng không nhiều hơn m +
n − 1 phép so sánh.

63
Thuật toán đệ quy
 Tính đúng đắn của thuật toán đệ quy được chứng minh bằng
phương pháp quy nạp [mạnh] toán học
 Ví dụ thuật toán an
 Bước cơ bản: Nếu n = 0, bước đầu tiên của thuật toán cho
chúng ta biết power(a, 0) = 1. Điều này đúng vì a0 =1 với mọi a
≠ 0.
 Bước đệ quy: Giả sử thuật toán tính chính xác được ak, cần
phải chứng minh rằng nó cũng tính chính xác được ak+1
 power(a, k+1) = a * power(a, k) = a * ak = ak+1

64
Nội dung chính
 Dãy số và xâu kí tự
 Phép quy nạp toán học
 Định nghĩa đệ quy
 Các thuật toán đệ quy

66

You might also like