Tải bản đầy đủ (.doc) (8 trang)

Ôn thi cao học Học viện Bưu chính Viễn Thông Lý thuyết tổ hợp

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (135.55 KB, 8 trang )

BÀI TẬP ÔN THI CAO HỌC - 2012
-----------------------------------------------------------------------------------------------------------------------------------*** PHẦN 1: LÝ THUYẾT TỔ HỢP ***
------------------------------------------------------------------------------------------------------------------------------------* Vấn đề 1: Công thức cộng/nhân/bù
------------------------------------------------------------------------------------------------------------------------------------1.1 Công thức cộng
a) |X1 ∪ X2|= |X1|+|X2| – |X1 ∩ X2|
b) |X1 ∪ X2 ∪ X3| = |X1|+|X2|+|X3| – |X1 ∩ X2|– |X1 ∩ X3|– |X2 ∩ X3| +|X1 ∩ X2 ∩ X3|
c) |X1 ∪ X2 ∪ …Xm|= N1 – N2 +…+(-1)m-1Nm; với Nk là tổng các phần tử của các giao k tập lấy từ n tập
1.2 Công thức nhân
a) |X1 x X2|=|X1| x |X2|
b) |X1 x X2 x ... x Xn|=|X1| x |X2|x ...x |Xn|
c) Xét bộ có thứ tự (x1,...,xn); nếu xi có ki khả năng thì số bộ khác nhau là k1.k2....kn
1.3 Công thức bù
A ⊂ X; A là phần bù của A trong X => |A|=|X| \| A |
-----------------------------------------------------------------------------------------------------------------------------------Bài 1.
Giả sử tất cả các số điện thoại trên thế giới đều đánh số theo qui tắc sau: bắt đầu bằng mã quốc gia dài từ 1 đến
3 chữ số, tức là có dạng X hoặc XX hoặc XXX; tiếp theo là 10 chữ số dạng NNX-NXX-XXXX, trong đó N có
thể nhận các giá trị từ 5 đến 9, X biểu thị một chữ số từ 0 đến 9. Theo cách đánh số này sẽ có tối đa bao nhiêu
số điện thoại khác nhau?
Bài 2:
Có bao nhiêu biển số xe bắt đầu bằng 2 hoặc 3 chữ cái in hoa và kết thúc là 3 hoặc 4 chữ số, biết rằng có 26 chữ
cái trong bảng chữ cái tiếng Anh?
Bài 3:
Có bao nhiêu số nguyên trong phạm vi 1 đến 999 chia hết cho 6 hoặc 9?
Bài 4:
Có bao nhiêu số nguyên trong phạm vi 1000 đến 5000 chia hết cho 6 hoặc 9?
Bài 5:
Có bao nhiêu số nguyên trong phạm vi 5000 đến 10000 chia hết cho 8 hoặc 12?
ĐS=835
Bài 6:
Có bao nhiêu số nguyên từ 1 đến 10000 không chia hết cho bất cứ số nào trong 3 số 3,4,7
Bài 7:


Có bao nhiêu xâu nhị phân độ dài 10 không bắt đầu bởi 3 số 1 và không kết thúc bởi 4 số 0.
Bài 8:
Có bao nhiêu số có 10 chữ số với các chữ số chỉ là 1,2,3 mà trong đó mỗi chữ số 1,2,3 có mặt ít nhất 1 lần?
Bài 9:
Lớp học có 55 bạn nam và 35 bạn nữ. Hãy cho biết có bao nhiêu cách chọn đội văn nghệ của lớp sao cho số
bạn nam bằng số bạn nữ, biết rằng đội văn nghệ cần ít nhất 6 thành viên và nhiều nhất 10 thành viên.
Bài 10:
Lớp học có 60 bạn nam và 25 bạn nữ. Hãy cho biết có bao nhiêu cách chọn đội văn nghệ của lớp sao cho số
bạn nam bằng hai lần số bạn nữ, biết rằng đội văn nghệ cần ít nhất 3 thành viên và nhiều nhất 9 thành viên.
1


----------------------------------------------------------------------------------------------------------------------------------* Vấn đề 2: Tổ hợp lặp, hoán vị lặp
a) Chỉnh hợp
n!
k
- số chỉnh hợp không lặp chặp k của n phần tử = An =
(n − k )!
k
- số chỉnh hợp lặp chặp k của n phần tử = n
b) Tổ hợp
n!
k
- Số tổ hợp không lặp chặp k của n phần tử = C n =
k!(n − k )!
k
- Số tổ hợp lặp chặp k của n phần tử = Cn+k −1
c) Hoán vị
- Số hoán vị không lặp của n phần tử = n!
- Số hoán vị lặp của n phần tử, trong đó có n1 phần tử thuộc loại 1,..., nk phần tử thuộc loại k

n!
=
n1! n2 !...nk !
d) Số nghiệm nguyên không âm của phương trình x1 +...+xn = k
k
= Cn+k −1
e) Số cách cất n vật khác nhau vào k hộp sao cho cất ni vật vào hộp thứ i (i=1,..,k)
n!
=
n1! n2 !...nk !
---------------------------------------------------------------------------------------------------------------------------------Bài 1:(tổ hợp lặp)
a) Một học sinh đến cửa hàng mua k cây viết trong n màu khác nhau, hỏi có bao nhiêu cách mua?
b) Tính số nghiệm nguyên không âm của pt sau: x1+...+xn = k.
Bài 2:
Phương trình x1 + x2 + x3 + x4 + x5 = 21 có bao nhiêu nghiệm nguyên không âm sao cho
a) x1 ≥ 1?
b) xi ≥ 2 với i = 1, 2, 3, 4, 5?
c) 0 ≤ x1 ≤ 10?
d) 0 ≤ x1 ≤ 3 và 1 ≤ x2 ≤ 4, và x3 ≥15 ?
Bài 3:
Phương trình x1 + x2 + x3 + x4 + x5 = 21 có bao nhiêu nghiệm nguyên không âm sao cho
a) x1 ≥ 1, x3 ≥ 3
b) 5≤ x3 ≤ 10?
c) 0 ≤ x1 ≤ 3 và 1 ≤ x2 ≤ 4, và 2 ≤ x3 ≤ 6, và 0 ≤ x5 ≤ 9
Bài 4:
Có 3 giỏ đựng các quả táo, cam, lê và mỗi giỏ chứa ít ra là 5 qủa.
a) Có bao nhiêu cách chọn 5 qủa?
b) Có bao nhiêu cách chọn 5 qủa mà trong đó có ít nhất một quả táo, một quả cam, một quả lê?
Bài 5:
Bất đẳng thức x1+x2+x3<=11 có bao nhiêu nghiệm nguyên không âm?

Bài 6:
Có bao nhiêu số nguyên dương nhỏ hơn 1.000.000 có tổng các chữ số bằng 19
Bài 7:
Có bao nhiêu số nguyên dương nhỏ hơn 1.000.000 có đúng 1 chữ số bằng 9 và có tổng các chữ số bằng
13?
Bài 8:
2


Số điện thoại di động của một hãng viễn thông là một số có 10 chữ số dạng 09.M.N.XXX.XXX. Miền xác định
của các chữ số M, N. X được xác định như sau:
M là số có giá trị từ 1 đến 7.
N là số có giá trị từ 2 đến 9.
X là số có giá trị từ 0 đến 9.
Hãy cho biết hãng viễn thông có thể phát hành được bao nhiêu số điện thoại thuộc mỗi loại a, b, c dưới đây?
a) Số các số di động có sáu số cuối cùng XXX.XXX tạo thành một số thuận nghịch sáu chữ số? Ví dụ số: 0913.
103301 có sáu số cuối cùng là 103301 là số thuận nghịch.
b) Số các số di động có sáu số cuối cùng XXX.XXX tạo thành một số thuận nghịch sáu chữ số và tất cả các chữ
số này đều khác 0? Ví dụ số: 091.2.122221 có sáu số cuối cùng 122221 là một số thuận nghịch và không chứa
số 0 nào.
c) Số các số di động có sáu số cuối cùng XXX.XXX là một số thuận nghịch có sáu chữ số và tổng sáu chữ số
cuối cùng là 20? Ví dụ số: 0913.505505.
Bài 9:(hoán vị lặp)
Có bao nhiêu xâu khác nhau bằng cách sắp xếp lại các chữ cái của từ SUCCESS
Bài 10:
Có bao nhiêu xâu gồm 10 chữ số của hệ tam phân chứa đúng 2 chữ số 0, 3 chữ số 1, 5 chữ số 2.
Bài 11:
Một gia đình có 14 đứa con, trong đó có 2 nhóm sinh ba, ba cặp sinh đôi, 2 trẻ sinh một. Những đứa trẻ cùng
sinh đôi hoặc sinh ba giống nhau như đúc. Hỏi có bao nhiêu cách xếp bọn trẻ ngồi thành một dãy?
Bài 12:

Có bao nhiêu xâu nhị phân khác nhau nếu chúng bắt đầu bằng bít 1 và chứa thêm ba bít 1 nữa, nó còn chứa tất
cả 12 bít 0 và sau mỗi bít 1 có ít nhất 2 bít 0?
Bài 13:
Có bao nhiêu xâu khác nhau có thể lập được từ các chữ cái trong từ AABDBADC, yêu cầu phải dùng tất cả các
chữ và 3 chữ A phải đứng liền nhau?
Bài 14:
Có bao nhiêu xâu khác nhau có thể lập được từ các chữ cái trong từ ORONO, nếu dùng một vài hoặc tất cả các
chữ ?
Bài 15:
Có bao nhiêu xâu khác nhau có 7 hoặc nhiều hơn các ký tự, có thể lập được từ các ký tự trong từ
EVERGREEN?
Bài 16:(số cách cất vật vào hộp)
Có bao nhiêu cách chia cỗ bài 52 lá cho 4 người chơi, mỗi người 5 lá?
---------------------------------------------------------------------------------------------------------------------------------* Vấn đề 3: Nguyên lý Dirichlet
a) Xếp vật vào hộp: nếu số vật nhiều hơn số hộp thì sẽ có hộp chứa ít nhất 2 vật.
b) Xếp n vật vào k hộp: thì sẽ có hộp chứa ít nhất [n/k] vật. ([n] là trần của n)
--------------------------------------------------------------------------------------------------------------------------------Bài 1: (Dirichlet)
Chứng tỏ rằng trong một lớp có 30 sinh viên thì ít nhất có 2 sinh viên có tên bắt đầu bằng cùng một chữ cái.
Bài 2:
3


Cho d là số nguyên dương. Chứng tỏ rằng trong một nhóm tùy ý gồm d+1 số nguyên dương có ít nhất 2 số khi
chia cho d có cùng số dư.
Bài 3:
a) Chứng tỏ trong 5 số chọn từ 8 số nguyên dương đầu tiên chắc chắn có một cặp có tổng bằng 9.
b) Câu a còn đúng không nếu chọn 4 số?
Bài 4:
Cần có ít nhất bao nhiêu bộ có thứ tự gồm 2 số nguyên sao cho chắc chắn tìm được trong số đó hai bộ (c,d) và
(e,f) sao cho c-e và d-f là các số có chữ số tận cùng bằng 0?

Bài 5:
Cần có bao nhiêu cặp số nguyên có thứ tự để chắc chắn có hai cặp (a 1 ,b1) và (a2 ,b2) sao cho (a1 mod 5 = a2 mod
5) và (b1 mod 5= b2 mod 5 ).
Bài 6:
Chứng minh rằng trong số 10 người bất kỳ luôn tìm được hai người có tổng số tuổi chia hết cho 16, hoặc tìm
được hai người có hiệu số tuổi chia hết cho 16.
Bài 7:
Cho 5 điểm khác nhau có tọa độ nguyên trên mặt phẳng xy. Chứng tỏ rằng có ít nhất 1 đoạn thẳng nối 2 điểm
mà điểm giữa của đoạn thẳng này có tọa độ nguyên.
Bài 8:
Cho 9 điểm khác nhau có tọa độ nguyên trên không gian xyz. Chứng tỏ rằng có ít nhất 1 đoạn thẳng nối 2 điểm
mà điểm giữa của 1 đoạn thẳng này có tọa độ nguyên.
Bài 9: (2008)
Giả sử A là một tập con có 6 phần tử của tập {1,2,…,14}. Chứng minh rằng trong số các tập con khác rỗng và
có tối đa 5 phần tử của tập A sẽ có ít nhất hai tập con mà tổng của các phần tử là bằng nhau.
Bài 10: (Dirichlet tổng quát)
Số mã vùng cần thiết nhỏ nhất phải là bao nhiêu để đảm bảo 25 triệu máy điện thoại trong cả nước có số điện
thoại khác nhau? Giả sử số điện thoại có dạng NXX-NXX-XXXX, trong đó ba chữ số đầu tiên là mã vùng, N
nhận các giá trị từ 2 đến 9, X nhận bất kỳ chữ số nào.
Bài 11:
Mỗi sinh viên đều có quê ở 1 trong 50 tỉnh/tp. Cần phải tuyển tối thiểu bao nhiêu sinh viên để đảm bảo có ít
nhất 100 người cùng quê?
Bài 12:
Trong kỳ thi tuyển sinh đại học khối A, các thí sinh thi trắc nghiệm môn Lý và Hóa, mỗi môn thi có 50 câu hỏi.
Mỗi câu hỏi có 4 phương án trả lời và chỉ được chọn tối đa 1 phương án. Mỗi câu trả lời đúng được 0.2 điểm,
câu trả lời sai hoặc không trả lời thì không được điểm.
a) Hãy cho biết một thí sinh có bao nhiêu cách điền phiếu trắc nghiệm môn Lý
b) Cần có ít nhất bao nhiêu thí sinh tham gia để có ít nhất 10 thí sinh có tổng điểm Lý và Hóa bằng nhau, biết
rằng điểm thi không làm tròn.
Bài 13:

Một bài thi trắc nghiệm có 30 câu hỏi, mỗi câu hỏi có 5 phương án trả lời và chỉ có một phương án đúng. Mỗi
câu trả lời đúng được 3 điểm, trả lời sai bị trừ 1 điểm, nếu không trả lời thì câu đó nhận 0 điểm. Biết rằng tổng
điểm thấp nhất là 0. Hãy cho biết:
a) Có bao nhiêu cách điền phiếu trắc nghiệm (mỗi câu chỉ được chọn tối đa 1 phương án).
4


b) Cấn ít nhất bao nhiêu thí sinh để đảm bảo có ít nhất 2 thí sinh cùng điểm thi.
Bài 14:
17 nhà bác học đôi một viết thư trao đổi với nhau về 3 chủ đề, mỗi cặp chỉ trao đổi với nhau về một chủ đề.
Chứng minh rằng luôn tìm được 3 nhà bác học đôi một viết thư trao đổi với nhau về cùng một chủ đề.
Bài 15:
Giả sử một nhóm có 6 người, trong đó 2 người bất kỳ là quen nhau hoặc không quen nhau. Chứng tỏ rằng trong
nhóm sẽ có 3 người là quen nhau hoặc có 3 người không quen nhau.
-------------------------------------------------------------------------------------------------------------------------------------* Vấn đề 4: Tìm công thức truy hồi của dãy an
Nếu công thức tính số hạng thứ n (an) được tính theo một số số hạng phía trước a n (a0,…,an-1) thì gọi là công
thức truy hồi. Trong công thức truy hồi cần phải biết trước một số số hạng đầu (a 0,a1,…). Dựa vào các số hạng
đầu và dựa vào công thức truy hồi, ta sẽ tính được các số hạng khác.
-------------------------------------------------------------------------------------------------------------------------------------Bài 1:
a) Tìm công thức truy hồi để tính số xâu nhị phân độ dài n và không có hai số 0 liên tiếp. Có bao nhiêu xâu như
thế với độ dài bằng 5?
b) Tìm công thức truy hồi để tính số xâu nhị phân độ dài n và có hai số 0 liên tiếp. Có bao nhiêu xâu như thế
với độ dài bằng 5?
Bài 2:
a) Tìm công thức truy hồi để tính số xâu nhị phân độ dài n và không có ba số 0 liên tiếp. Có bao nhiêu xâu như
thế với độ dài bằng 5?
b) Tìm công thức truy hồi để tính số xâu nhị phân độ dài n và có ba số 0 liên tiếp. Có bao nhiêu xâu như thế với
độ dài bằng 5?
Bài 3:
a) Tìm công thức truy hồi để tính số xâu tam phân độ dài n và không có hai số 0 liên tiếp. Có bao nhiêu xâu

như thế với độ dài bằng 4?
b) Tìm công thức truy hồi để tính số xâu tam phân độ dài n và có hai số 0 liên tiếp. Có bao nhiêu xâu như thế
với độ dài bằng 4?
Bài 4:
Một xâu các chữ số hệ thập phân là một xâu hợp lệ nếu nó chứa một số chẵn chữ số 0. Tìm công thức truy hồi
để tính số xâu hợp lệ độ dài n. Có bao nhiêu xâu hợp lệ với độ dài bằng 4?
-------------------------------------------------------------------------------------------------------------------------------------* Vấn đề 5: Giải công thức truy hồi, tìm công thức trực tiếp (cttt)
Công thức truy hồi tuyến tính thuần nhất hệ số hằng bậc k : an = c1an-1 + c2an-2 + …+ ckan-k (n ≥ k) (1)
Với a0= C0, …, ak-1=Ck-1 (c1, c2, …, ck, C0,…, Ck-1 là các hằng số và ck ≠ 0)
Phương trình đặc trưng của (1) là: rk - c1rk-1- c2rk-2-…- ck = 0 (2)
Xét k=2: an = c1an-1 + c2an-2 (3), phương trình đặc trưng của (3) là: r2 - c1r- c2 = 0 (4)
n
n
ĐL 1: Nếu (4) có hai nghiệm phân biệt r1, r2 thì cttt của (3) có dạng: an = α1 r1 + α 2 r2
n
n
ĐL 2: Nếu (4) có nghiệm kép r0 thì cttt của (3) có dạng: an = α1 r0 + α 2 n r0

ĐL 3: Nếu (2) có k nghiệm phân biệt r1, r2 , ..., rk thì cttt của (1) có dạng: an = α1 r1 +…+ α k rk
-------------------------------------------------------------------------------------------------------------------------------------Bài 1:
Cho công thức truy hồi sau: an=an-1 + 2an-2; a0=2, a1=7
a) Giải công thức truy hồi để tìm công thức trực tiếp.
b) Viết chương trình tính số hạng thứ n bằng cách sử dụng công thức truy hồi và sử dụng công thức trực tiếp.
n

5

n



Hãy kiểm tra việc tính số hạng thứ 5 bằng hai cách trên và cho biết a5=?
Bài 2:
Giải hệ thức truy hồi sau: an=6an-1- 9an-2; a0=1, a1=6
Bài 3:
Giải hệ thức truy hồi sau: an = 6 an-1 – 11 an-2 + 6 an-3 với a0=2, a1=5, a2=15
---------------------------------------------------------------------------------------------------------------------------------* Vấn đề 6: Thuật toán quay lui
G/s đáp số của bài toán là một bộ có n thành phần (x 1, x2, …,xn) và g/s đã xác định được i-1 thành phần x 1, x2,
…,xi-1 . Để xác định xi , ta xét tất cả các khả năng có thể của x i. Với mỗi khả năng j của x i ta kiểm tra xem khả
năng j có chấp nhận được hay không. Nếu chấp nhận khả năng j thì xác định x i theo j, sau đó xét: nếu i=n thì ta
được một đáp số ngược lại tiếp tục xác định x i+1 . Khi đã xét tất cả các khả năng có thể của x i , ta lần ngược lại
bước trước để xác định một khả năng kế tiếp của xi-1 .
Dạng tổng quát của thuật toán
void Try(int i){ //xac dinh xi
for (j=kn1 ; jif (chấp nhận knj ) {//nếu chấp nhận khả năng j
ghi nhận việc đã chọn knj // lệnh này có thể không có (*)
xác định xi theo j;
if (i==n) { //đã xác định đủ n thành phần
ghi nhận 1 đáp số;
}else{
Try(i+1); // xác định xi+1
}
ghi nhận việc bỏ chọn knj (**) // nếu lệnh (*) không có thì lệnh (**) cũng không có
}
}
}
void main(){
Try(1); //tim x1
}
---------------------------------------------------------------------------------------------------------------------------------Bài 1: Liệt kê các hoán vị của {1,2,…,n}

Bài 2: Liệt kê các tổ hợp chặp m của {1,2,…,n} (moi to hop la mot tap con)
Bài 3:Liệt kê tất cả các phần tử của tập D (tìm tất cả các nghiệm nguyên của pt )
n

D = x = ( x1 , x2 ,..., xn ) : ∑ai xi = b, ai ∈Ν,
i =1



xi ∈Ζ+ , i =1,2,..., n 


ví dụ:
pt: x1+2x2+3x3=20 (n=3,b=20, a1=1, a2=2, a3=3) se co 44 nghiem la: x=(0,1,6),.., x=(2,2,4),...,x=(20,0,0)
Bài 4:Cho số nguyên dương N. Hãy liệt kê tất cả các cách biểu diễn N dưới dạng tổng của một số số nguyên
dương.
ví dụ: N=5, tach N thanh 1 so, 2 so, 3 so, 4 so, 5 so: 5, 1+4, 2+3, 1+1+3, 1+2+2, 1+1+1+2, 1+1+1+1+1
---------------------------------------------------------------------------------------------------------------------------------* Vấn đề 7: Bài toán tối ưu – thuật toán nhánh cận
Tìm giá trị nhỏ nhất (hay lớn nhất) của hàm f(x); với x ∈ D (D là tập hữu hạn)
Hàm f(x) gọi là hàm mục tiêu, mỗi phần tử x ∈ D gọi là một phương án, tập D gọi là tập các phương án.
Phương án x* ∈ D sao cho f(x*) nhỏ nhất (hay lớn nhất) gọi là phương án tối ưu, khi đó giá trị f *=f(x*) gọi là
giá trị tối ưu.
- Xét phương án x =(x1,…,xk,…xn) thì a=(a1,…,ak) với ai=xi, gọi là phương án bộ phận cấp k (k ≤ n).
6


- G/s đã xây dựng được hàm g (hàm tính cận dưới) như sau: với mọi phương án bộ phận (a 1,…,ak) và với mọi
k=1,…,n; g(a1, …,ak) ≤ min {f(x): x ∈ D, x1 = a1, …,xk = ak}
Gọi x là phương án tốt nhất hiện có và f = f( x ) gọi là kỷ lục hiện tại . Nếu phương án bộ phận a=(a 1,…,ak) có
g(a1, …,ak) > f ⇒ f < g(a1, …,ak) ≤ min {f(x): x ∈ D, x1 = a1, …,xk = ak}

⇒ các phương án hoàn chỉnh x=(x1,…,xn) phát triển từ phương án bộ phận a=(a 1, …,ak) đều có hàm mục tiêu
f(x) > kỷ lục f , nên ta loại tất cả các phương án hoàn chỉnh x phát triển từ phương án bộ phận a.
Nếu bài toán tối ưu là tìm max {f(x): x ∈ D} thì cần xây dựng được hàm g (hàm tính cận trên) sao cho:
g(a1, …,ak) ≥ max {f(x): x ∈ D, x1 = a1, …,xk = ak}
và nếu phương án bộ phận a=(a1,…,ak) có g(a1, …,ak) < f
⇒ f > g(a1, …,ak) ≥ max {f(x): x ∈ D, x1 = a1, …,xk = ak}
⇒ các phương án hoàn chỉnh x=(x1,…,xn) phát triển từ phương án bộ phận a=(a 1, …,ak) đều có hàm mục tiêu
f(x) < kỷ lục f , nên ta loại tất cả các phương án hoàn chỉnh x phát triển từ phương án bộ phận a.
* Cài đặt: (tìm min)
void Try(int i) //xac dinh xi
{
for (xét tất cả các knj của xi)
{
if (chấp nhận knj) //nếu chấp nhận khả năng j
{
ghi nhận việc đã chọn knj // (*) :lệnh này có thể không có
xi = knj; //lưu kn j vào xi
if (i==n) //đã xác định đủ n thành phần
cập nhật kỷ lục nếu kỷ lục mới nhỏ hơn;
else
if ( g(a1, …,ak) ≤ f ) //tim max thi g(a1, …,ak) ≥ f
Try(i+1); // xác định xi+1
ghi nhận việc bỏ chọn knj // lệnh này không có nếu (*) không có
}
}
}
void nhanhcan(){
f = + ∞ ; //nếu biết một phương án x nào đó thì có thể đặt f = f( x ).Nếu tìm max thì f = - ∞
Try(1); //tim x1
}

---------------------------------------------------------------------------------------------------------------------------------Bài 1: (Bài toán cái túi)
Có n loại đồ vật, loại đồ vật thứ i có trọng lượng a i và giá trị sử dụng ci . Cần bỏ các đồ vật này vào một cái túi
có trọng lượng là b, sao cho tổng giá trị sử dụng của các đồ vật chất trong túi là lớn nhất.
n

D là tập các phương án, D={x =(x1,…,xn):

∑a x
i =1

i i

≤ b, xi ∈ Z+, i=1,…,n}

n

Hàm mục tiêu f(x) =

∑c x
i =1

i i

Bài toán cái túi có dạng: Tìm max {f(x) :x ∈ D} (1)
Không giảm tính tổng quát, ta giả thiết các loại đồ vật được đánh số sao cho thoả mãn:
c1/a1 ≥ c2/a2 ≥ … ≥ cn/an
Mệnh đề:
7



Phương án tối ưu của (1) với biến liên tục (xi ∈ R+) là x =(x1,x2,…,xn)=(b/a1,0,…,0) và giá trị tối ưu là (c1/a1)b.
Chứng minh:
n

n

n

i =1

i =1

i =1

ci/ai ≤ c1/a1 , i=1,…,n ⇒ cixi ≤ (c1/a1)aixi ⇒ f(x) = ∑ ci xi ≤ ∑ (c1 / a1 )ai xi =(c1/a1) ∑ ai xi = (c1/a1)b
Bây giờ giả sử đã có phương án bộ phận cấp k: (u1, …,uk). Khi đó gía trị sử dụng trong túi là:
σ k =c1u1+…+ckuk
và trọng lượng còn lại của cái túi là
bk= b – a1u1 – a2u2 – … – akuk.
Ta có:
n

max {f(x)= ∑ ci xi : x ∈ D, xi = ui, i = 1,…,k} = max { σ k +
i =1

≤ σ k + max {

n




i = k +1

ci xi :

n

∑ ax

i = k +1

i i

n

n

∑cx : ∑ ax

i = k +1

i i

i = k +1

i i

≤ bk, xi ∈ Z+}

≤ bk, xi ≥ 0}


= σ k + (ck+1/ak+1)bk
⇒ chọn hàm tính cận trên là g(x)= σ k + (ck+1/ak+1)bk
Nhận xét:
ak+1 xk+1 +….+ an xn ≤ bk ⇒ xk+1 +(ak+2 xk+2….+ an xn)/ak+1 ≤ bk / ak+1 ⇒ xk+1 ≤ bk / ak+1
⇒ các khả năng có thể chọn cho xk+1 là 0,…, bk / ak+1
⇒ các khả năng có thể chọn cho xk là 0,…, bk-1 / ak
Do mệnh đề đã cm, ta chọn các khả năng theo thứ tự giảm dần.
* Giải bài toán cái túi sau:
Tìm max của : f(x)=10x1+5x2+3x3+6x4
Thoả điều kiện: 5x1+3x2+2x3+4x4 ≤ 8; xi ∈ Z+
Bài 2: (Bài toán người du lịch)
Cố định thành phố xuất phát là T1. Bài toán người du lịch trở thành bài toán :
Tìm min { f(x2,…,xn)=c[1,x2]+c[x2,x3]+…+c[xn-1,xn]+c[xn,1] | (x2,…,xn) là hoán vị của {2,…,n} }
G/s đã đi qua k thành phố: T1 --> T(a1) -->… -->T(ak) ứng với phương án bộ phận (a1, a2,…, ak)
và chi phí cho hành trình bộ phận này là σ =c[1,a2]+c[a2,a3]+…+c[ak-1,ak]. Để phát triển thành hành trình đầy
đủ, còn phải đi qua n-k+1 đoạn đường nữa.
Ta có:
σ +(n-k+1)cmin ≤ min {f(x): x1 = a1, …,xk = ak}
nên có thể chọn g(a1,…,ak)= σ +(n-k+1)cmin
* Giải bài toán người du lịch với ma trận chi phí sau:
0
3
17
6
9

3
0
9

2
15

14
4
0
7
11

18
22
16
0
5

15
20
4
12
0

8



×