You are on page 1of 42

BÀI 5

KỶ THUẬT ĐẾM
NÂNG CAO
Giáo viên: TS. Nguyễn Văn Hiệu
Email: nvhieuqt@dut.udn.vn

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
1
Nhắc lại!
Quy tắc nhân

Quy tắc cộng

HV, CH, TH

Chỉnh hợp lặp

Tổ hợp lặp

Nguyên lý bù trừ

CuuDuongThanCong.com https://fb.com/tailieudientucntt
2
Nội dung

5.1. Giới thiệu


5.2. Một số khái niệm
5.5. Mô hình hóa
5.4.Định nghĩa
5.5. Phương pháp
§ Phương pháp thế
§ Phương trình đặc trưng
5.6. Bài tập
CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics
https://fb.com/tailieudientucntt
3
5.1. Giới thiệu

§ Khó định nghĩa đối tượng một cách tường minh


§ Có thể định nghĩa đối tượng qua chính nó
§ Kỷ thuật = đệ quy.

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
4
5.1. Giới thiệu
• Ví dụ 5.1

• Ví dụ 5.2 10 000$

Một ông 11 % tính gộp


già

30 năm

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
5
5.2. Các khái niệm

Xác định một hay


nhiều số hạng đầu tiên

a0 = 5
Đệ quy dãy số {a n}

an = 2 an-1
Xác định số hạng
tiếp theo từ số hạng
đi trước

Hệ thức truy hồi


CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics
https://fb.com/tailieudientucntt
6
5.2. Các khái niệm

Có thể Có thể Có thể


Đưa ra phiên bản phiên bản
vấn đề đơn giản có đơn giản có
phức tạp giải nếu thể được giải nếu giải nếu thể được giải
giải

an = 2an-1 an-1 = 2an-2, a1 = 2a0, a0=5

CuuDuongThanCong.com https://fb.com/tailieudientucntt
5.2. Các khái niệm

• Hệ thức truy hồi của {an} là công thức biểu diễn


an qua một hay nhiều số hạng đi trước của dãy.

• Nghiệm htth là dãy {bn} nếu các số hạng thỏa


mản hệ thức truy hồi.

• Giải htth là đi tìm công thức biểu diễn các số


hạng của dãy mà không thông qua các số hạng
phía trước

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
8
5.2. Các khái niệm
§ an = 3n với mọi n nguyên không âm, có là lời giải của hệ
thức truy hồi an = 2 an-1 – an-2 với n = 2, 3, 4, …hay không?
§ HD:
Giả sử an = 3n với mọi n, n ≥ 2;
2an-1 – an-2 = ___________________

§ a = 5 với mọi n nguyên không âm, có là lời giải của hệ


n

thức truy hồi a = 2a – a với n = 2, 3, 4, …hay không?


n n-1 n-2

§ HD
2an-1 – an-2 = ___________________

CuuDuongThanCong.com https://fb.com/tailieudientucntt
5.3. Mô hình hóa hệ thức truy hồi

5.3.1. Tổ hợp C(n,k), k ≤ n,


5.3.2. Bài toán tháp Hà nội,
5.3.3. Bài toán họ nhà thỏ

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
10
5.3. Mô hình hóa hệ thức truy hồi
5.3.1. Tính C(n,k)
• C(n,k) = ?

• Xây dưng

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
11
5.3. Mô hình hóa hệ thức truy hồi
5.3.1. Tính C(n,k)
§ Cố định a trong n phần tử
§ Chia số cách chọn tập con k pt của tập n pt thành 2
lớp:
– Lớp chứa a: C(n-1,k-1)
– Lớp không chứa a: C(n-1,k)
§ Nguyên lý cộng
C(n,k) = C(n-1,k-1) + C(n-1,k)
C(n,0) = C(n,n) =1

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
12
5.3. Mô hình hóa hệ thức truy hồi
5.3.1. Tính C(n,k)
§ int c(int m,int n)
{
if(m==0) return 1;
else if(m==n) return 1;
else return (c(m-1,n-1)+c(m,n-1));
}

§ Nhược điểm đệ quy

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
13
5.3. Mô hình hóa hệ thức truy hồi
5.3.2. Bài toán tháp Hà nội
• Mô tả bài toán toán:
• Cho 3 cái cọc A, B, C và tập n đĩa có kích cỡ khác
nhau;
• Đĩa được bố trí theo thứ tự đường kính giảm dần từ
dưới lên trên
• Số đĩa ban đầu được đặt trên cọc A;
• Mục đích: xếp được tất cả đĩa lên cọc C

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
14
5.3. Mô hình hóa hệ thức truy hồi
5.3.2. Bài toán tháp Hà nội
• Quy tắc chơi
− Mỗi lần chuyển chỉ được chuyển 1 đĩa và chỉ được xếp
đĩa có đường kính nhỏ lên trên đĩa có đường kính lớn
hơn.
− Mỗi đĩa có thể chuyển từ cọc này sang cọc khác;
− Trong quá trình chuyển được phép sử dụng cọc B làm
trung gian.
• Bài toán đặt là: Tìm số lần dịch chuyển đĩa ít nhất cần
thực hiện để thực hiện xong nhiệm vụ đặt ra trong trò chơi
tháp Hà Nôi

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
15
5.3. Mô hình hóa hệ thức truy hồi
MINH HỌA NGHIỆM

Gọi Hn :
n đĩa Số lần
chuyển n đĩa

A B C
Vị trí bắt đầu trên tháp Hà Nội

n-1 đĩa Chuyển n-1 đĩa


ở phần trên sang cọc B

A B C
Vị trí trung gian trên tháp Hà Nội

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
16
5.3. Mô hình hóa hệ thức truy hồi
MINH HỌA NGHIỆM
Chuyễn đĩa lớn nhất
sang cọc C
1 đĩa
1 lần chuyển

A B C
Vị trí trung gian trên Tháp Hà Nội

n đĩa
Chuyển phần trên
n-1 đĩa sang cọc C

A B C Hn-1 lần chuyển


Vị trí cuối cùng trên Tháp Hà Nội

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
17
5.3. Mô hình hóa hệ thức truy hồi

H n = 2H n-1 + 1, n ³ 2; H1 = 1

Chuyển n-1 đĩa phần Chuyển đĩa lớn nhất Chuyển n-1 đĩa phần
trên sang cọc B sang cọc C trên sang cọc C

Hn-1 1 Hn-1
CuuDuongThanCong.com
Nguyễn Văn Hiệu, 2012, Discrete Mathematics
https://fb.com/tailieudientucntt
18
Towers of Hanoi Problem
void THN(int n,char a, char b,
• Nhập số nguyên n char c){
• Xuất ra chuổi cách if(n==1) Move(a,b);
chuyển n-đĩa else {
THN(n-1,a,c,b);
Move(a,b);
THN(n-1,c,b,a);}
}

void Move(char a, char b){


printf("\t%c ---> %c\n",a,b);
}

CuuDuongThanCong.com https://fb.com/tailieudientucntt
5.3. Mô hình hóa hệ thức truy hồi
5.3.3. Bài toán họ nhà thỏ (population of rabbits)
Th Đôi
Đôi tái tạo Đôi thỏ con Đôi Tổ
án thỏ
(từ hai tháng tuổi) (dưới hai tháng tuổi) g tái tạo ng
con

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
20
5.3. Mô hình hóa hệ thức truy hồi
5.3.3. Bài toán họ nhà thỏ
f n = f n-1 + fn-2 , n≥ 3
Số đôi thỏ sau n-1
tháng

Số đôi thỏ trên


đảo sau n tháng

số đôi thỏ mới


sinh

số đôi thỏ sau n-2 tháng


CuuDuongThanCong.com
Nguyễn Văn Hiệu, 2012, Discrete Mathematics
https://fb.com/tailieudientucntt
21
Fibonacci Problem

• Nhập số nguyên n
• Xuất ra số Fibonacci
thứ n

CuuDuongThanCong.com https://fb.com/tailieudientucntt
5.4. Định nghĩa
• Hệ thức truy hồi tuyến tính thuần nhất bậc k hệ số
hằng có dạng:
an = c1 an-1 + c2 an-2 +…+ ck an-k
c1, c2,…,ck - hằng số, ck ≠ 0 .
• Hệ thức truy hồi bậc k với k giá đầu:
a0=I0, a1,= I1 ,…,ak-1 = I k-1
sẽ xác định duy nhất một dãy {an}

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
23
5.4. Định nghĩa
• Hệ thức truy hồi tuyến tính thuần nhất có hệ số hằng
Pn = (1.11) Pn-1 bậc một 1. Thường xuyên tồn tại
trong các mô hình hóa
các bài toán
fn = fn-1 + fn-2 bậc hai
2. Có thể giải một cách
có hệ thống
an = an-5 bậc năm
• Hệ thưc truy hồi không tuyến tính, không thuần nhất, không hệ
số hằng
Hn = 2Hn-1 + 1 Không thuần nhất

Bn = nBn-1 Không có hệ sô hằng

an = an-1 + a²n-2 Không tuyến tính

CuuDuongThanCong.com https://fb.com/tailieudientucntt
24
5.5. Phương pháp giải hệ thức truy hồi

• Giải hệ thức truy hồi


– Tìm công thức tổng quát cho số hạng an
– Số hạng an không phải tính qua k phần tử trước nó.
• Phương pháp giải:
– Phương pháp thế
– Phương pháp phương trình đặc trưng

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
25
5.5. Phương pháp giải hệ thức truy hồi
5. 5.1 Phương pháp thế:
• Dùng để giải hệ thức truy hồi bậc 1
• Các bược giải:
ØThay an bởi an-1
ØThay an-1 bởi an-2
Ø---
ØThay a0 bởi I0
• Thu được công thức trực tiếp cho an
• Chứng minh tính đúng đắn

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
26
5.5. Phương pháp giải hệ thức truy hồi
5.5.1. Phương pháp thế:
– Gọi Hn là số lần chuyển đĩa ít nhất của bài toán
tháp Hà nội.
– Hn = 2Hn-1 + 1, n ≥1,với H1 = 1
– H n = 2 H n -1 + 1
= 2 ( 2 H n - 2 + 1) + 1 = 2 2 H n - 2 + 2 + 1
= 22 ( 2 H n -3 + 1) + 2 + 1 = 23 H n -3 + 22 + 2 + 1
K
= 2n -1 H1 + 2n - 2 + 2n -3 + K + 2 + 1
= 2n -1 + 2n - 2 + 2n -3 + K + 2 + 1
Chứng minh
= 2n - 1
CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics
https://fb.com/tailieudientucntt
27
5.5. Phương pháp giải hệ thức truy hồi
5.5.2. Phương pháp phương trình đặc trưng
– Dùng giải hệ thức truy hồi bậc 2 tuyến tính thuần
nhất hệ số hằng.
an = c1 an-1 + c2 an-2 , n ≥2 (1)
c1, c2- hằng số, c2 ≠ 0 .
– Có phương trình đặc trưng:
r2 = c1 r + c2 (2)
r - hằng số.

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
28
5.5. Phương pháp giải hệ thức truy hồi
5.5.2. Phương pháp phương trình đặc trưng
v Nếu (2) có hai nghiệm thực phân biệt r1, r2 và có
a0 = I0 ,a1 = I1, thì tồn tại duy nhất hằng số d1 , d2:
an = d1 rn1 + d2 rn2
là nghiệm của (1)
v Nếu (2) có nghiệm thực kép r1, có a1 = I0 ,a1 = I1
thì tồn tại duy nhất hằng số d1 , d2:
an = (d1 + d2 n )rn1
là nghiệm của (1)

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
29
5.5. Phương pháp giải hệ thức truy hồi
5.5.2. Phương pháp phương trình đặc trưng
• Cần chứng minh:
• an = d1 rn1 + d2 rn2 là nghiệm của (1)
• tồn tại d1 d2 duy nhất không ?
• chứng minh:
• c1 an-1 + c2 an-2 = d1 rn1 + d2 rn2 với mọi n≥2
• I 0 = d1 + d2
• I 1 = d1 r 1 + d2 r 2 Suy ra d1 d2 duy nhất

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
30
5.5. Phương pháp giải hệ thức truy hồi
• Bài toán họ nhà thỏ có hệ thức truy hồi
an = an-1 + an-2 , n≥2; a0 = 1, a1 = 1

Giải:
Bước 1: Tìm nghiệm tổng quát
Bước 2: Tìm hệ số hằng
Bước 3: Nghiệm của hệ thức truy hồi

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
31
5.5. Phương pháp giải hệ thức truy hồi

Bước 1: Tìm nghiệm tổng quát


– Phương trình đặc trưng: r2 = r +1
– Nghiệm của pt đặc trưng: r1 = (1+√5)/2 , r2 = (1-√5)/2
– Nghiệm tổng quát: an = d1((1+√5)/2)n + d2 ((1+√5)/2)n
Bước 2: Tìm hằng số d1 và d2 :
– Sử dụng điều kiện đầu:
1 = d 1 + d2
1 = d1 (1+√5)/2 + d2 (1+√5)/2

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
32
5.5. Phương pháp giải hệ thức truy hồi
Bước 2 (t.):
d1 = (1+√5) / 2√5
d2 = -(1-√5) / 2√5
Bước 3: Nghiệm của hệ thức truy hồi
n +1 n +1
1 æ 1+ 5 ö 1 æ 1- 5 ö
an = × çç ÷÷ - × çç ÷÷ ,n ³ 0
5 è 2 ø 5 è 2 ø

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
33
5.5. Phương pháp giải hệ thức truy hồi
Vi dụ 5.1
Giải hệ thức truy hồi sau:
an = 6an-1 - 9an-2 , a0= 1, a1= 6.

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
34
5.5. Phương pháp giải hệ thức truy hồi
• Vi dụ 5.1
– Bước 1: Tìm nghiệm tổng quát
• Phương trình đặc trưng: r2 = 6r -9
• pt đặc trưng có nghiệm kép: r1 = r2 = 3
• Nghiệm tổng quát: an = (d1 + d2 n ) 3n
– Bước 2: Tìm hằng số d1 và d2
• Sử dụng điều kiện đầu:
1 = d1 d1 = 1
6= (d1 + d2) 3 d2 = 1
– Bước 3: Nghiệm của hệ thức truy hồi
an = (1 + n ) 3n , n≥0

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
35
5.5. Giải hệ thức truy hồi bậc k ≥ 3
v Hệ thức truy hồi tuyến tính thuần nhất bậc k:
an = c1 an-1 + c2 an-2 +…+ ck an-k (*)
trong đó, c1, c2,…,ck - hằng số, ck ≠ 0 .
v Phương trình đặc trưng:
rk = c1 rk-1 + c2 rk-2 +…+ ck (**)

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
36
5.5. Phương pháp giải hệ thức truy hồi bậc ≥ 3
v Người ta chứng minh đươc kết quả sau:
v Nếu (*) có nghiệm thực phân biệt r1 ,r2 ,…,rk , thì
(**) có nghiệm tổng quát sau:

an = d1 × r + d 2 × r2 + ... + d k × rk
1
n n n

v Nếu (*) có t nghiệm thực phân biệt r1 ,r2 ,…,rt


tương ứng với các tính bội m1, m2 ,…, mt , thì (**)
có nghiệm tổng quát:
m1 -1
an = (d10 + d11n + ... + d1m1 -1n ) × r1n + ...
mt -1
+ (dt 0 + dt1n + ... + dtmt -1n ) × rt n

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
37
5.5. Giải hệ thức truy hồi bậc k ≥ 5

• Ví dụ 5.2
Giải hệ thức truy hồi sau:
an = -3an-1- 3an-2 - an-3,
a0 = 1,
a1 = -2,
a2 = -1.

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
38
5.5. Phương pháp giải hệ thức truy hồi bậc ≥ 3
• Ví dụ 5.2
Bước 1: Tìm nghiệm tổng quát
• Phương trình đặc trưng: r3 = - 3r2 - 3r - 1
• Nghiệm của pt đặc trưng: r1 = r2 = r3 = - 1
• Nghiệm tổng quát: an = (d10 + d11 n + d12 n2 )(-1)n
Bước 2: Tìm hằng số d10, d11 và d12
• Sử dụng điều kiện đầu:
1 = d10 ,
-2 = (d10 + d11 + d12)(-1) ,
-1 = d10 + d112 + d12 4

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
39
5.5. Phương pháp giải hệ thức truy hồi bậc ≥ 3
Ví dụ 5.2
Bước 2 (t.):
d10 = 1
d11 = 3
d12 = -2
Bước 3: Nghiệm của hệ thức truy hồi
an = (1 + 3 n - 2 n2 ) (-1)n , n ≥ 0

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
40
5. 6. Bài tập

1. an = 6an-1 - 11an-2 + 6an-3 ,


a0 =2, a1 = 5 , a2 = 15.

• ĐS: an = 1 - 2n + 2.3n.

CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics


https://fb.com/tailieudientucntt
41
THAT’S ALL; THANK YOU

• WHAT NEXT?
BÀI TOÁN TỒN TẠI
CuuDuongThanCong.com https://fb.com/tailieudientucntt

You might also like