lÝ thuyẾt tỔ hỢp

70
LÝ THUYẾT TỔ LÝ THUYẾT TỔ HỢP HỢP Chương 3:

Upload: washi

Post on 19-Jan-2016

50 views

Category:

Documents


0 download

DESCRIPTION

Chương 3:. LÝ THUYẾT TỔ HỢP. TỔ HỢP. 3. 1 BÀI TOÁN TỒN TẠI. 3.2 BÀI TOÁN ĐẾM. 3.3 BÀI TOÁN LIỆT KÊ. 3.4 BÀI TOÁN TỐI ƯU. BÀI TOÁN TỒN TẠI. MỞ ĐẦU. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: LÝ THUYẾT TỔ HỢP

LÝ THUYẾT TỔ LÝ THUYẾT TỔ HỢPHỢP

Chương 3:

Page 2: LÝ THUYẾT TỔ HỢP

3. 1 BÀI TOÁN TỒN TẠI

3.3 BÀI TOÁN LIỆT KÊ

3.4 BÀI TOÁN TỐI ƯU

TỔ HỢP3.2 BÀI TOÁN ĐẾM

Page 3: LÝ THUYẾT TỔ HỢP

BÀI TOÁN TỒN BÀI TOÁN TỒN TẠI TẠI

Page 4: LÝ THUYẾT TỔ HỢP

MỞ ĐẦU

Trong rất nhiều bài toán tổ hợp, việc chỉ ra sự tồn tại của một cấu hình tổ hợp thỏa mãn các tính chất cho trước có ý nghĩa quan trọng về mặt lí thuyết cũng như thực tế.

Trong tổ hợp xuất hiện một bài toán quan trọng là Bài toán tồn tại: Xét sự tồn tại của các cấu hình tổ hợp thỏa mãn các tính chất cho trước.

Page 5: LÝ THUYẾT TỔ HỢP

Một bài toán tồn tại tổ hợp xem là giải xong nếu hoặc chỉ ra một cách xây dựng cấu hình, hoặc chứng minh rằng chúng không có. Tuy nhiên cả hai khả năng trên đều không phải dễ. Để thấy rõ sự phức tạp của vấn đề, dưới đây ta sẽ xét một số bài toán tồn tại tổ hợp cổ điển nổi tiếng.

Page 6: LÝ THUYẾT TỔ HỢP

Bài toán 36 sĩ quan:

MỘT SỐ VÍ DỤ

Bài toán này do nhà toán học Euler đưa ra, nội dung như sau:

Người ta triệu tập từ 6 trung đoàn, mỗi trung đoàn 6 sĩ quan có 6 cấp bậc khác nhau: thiếu úy, trung úy, thượng úy, đại úy, thiếu tá, trung tá. Hỏi có thể sắp xếp 36 sĩ quan này thành hình vuông 66 sao cho mỗi hàng dọc cũng như hàng ngang đều có đại diện của 6 trung đoàn và cũng có 6 cấp bậc khác nhau.

Page 7: LÝ THUYẾT TỔ HỢP

Để đơn giản ta dùng các chữ cái in hoa A, B, C, D, E, F để chỉ 6 trung đoàn và các chữ cái thường a, b, c, d, e, f để chỉ 6 cấp bậc.

Bài toán có thể tổng quát hóa bằng cách thay số 6 bằng n.

Page 8: LÝ THUYẾT TỔ HỢP

Ab Dd Ba Cc

Bc Ca Ad Db

Cd Bb Dc Aa

Da Ac Cb Bd

Trong trường hợp n = 4, một lời giải của bài toán 16 sĩ quan:

Page 9: LÝ THUYẾT TỔ HỢP

Aa Bb Cc Dd Ee

Cd De Ea Ab Bc

Eb Ac Bd Ce Da

Be Ca Db Ec Ad

Dc Ed Ae Ba Cb

Một lời giải cho trường hợp n = 5 của bài toán 25 sĩ quan:

Page 10: LÝ THUYẾT TỔ HỢP

Do lời giải của bài toán có thể biểu diễn bởi hai hình vuông với các chữ cái hoa và thường xếp cạnh nhau nên bài toán tổng quát còn có tên gọi là bài toán hình vuông la tinh trực giao.

Sinh thời, nhà toán học Euler đã mất nhiều công sức đi tìm lời giải cho bài toán nhưng đã không thành công. Vì vậy, ông đã đưa ra giả thuyết rằng lời giải cho bài toán tổng quát là không tồn tại.

Page 11: LÝ THUYẾT TỔ HỢP

Giả thuyết này được nhà toán học Pháp Tarri chứng minh năm 1901 bằng cách duyệt tất cả các khả năng xếp. Dựa trên giả thuyết không tồn tại lời giải cho n = 2 và n = 6, Euler còn đưa ra giả thuyết tổng quát hơn là: Không tồn tại hình vuông la tinh trực giao cấp 4k + 2.

Page 12: LÝ THUYẾT TỔ HỢP

Giả thuyết này tồn tại suốt 2 thế kỷ. Mãi đến năm 1960 ba nhà toán học Mỹ là Boce, Parker, Sricanda mới chỉ ra một lời giải với n = 10 và sau đó đưa ra phương pháp xây dựng hình vuông la tinh trực giao cấp 4k + 2 với k > 1.

Page 13: LÝ THUYẾT TỔ HỢP

Bài toán 2n điểm trên lưới nn ô vuông

Cho một lưới gồm nn ô vuông. Hỏi có thể đặt 2n điểm trên lưới sao cho không có 3 điểm nào cùng nằm trên 1 hàng hay 1 cột?

Hiện nay người ta mới biết lời giải đối với n 15. Sau đây là lời giải với n = 12.

Page 14: LÝ THUYẾT TỔ HỢP
Page 15: LÝ THUYẾT TỔ HỢP

NGUYÊN LÝ DIRICHLET

Nguyên lý Dirichlet (nguyên lý chuồng chim):

Nếu xếp nhiều hơn n đối tượng vào n chiếc hộp thì tồn tại hộp chứa ít nhất 2 đối tượng.

Ví dụ:

1. Trong 367 người bao giờ cũng có ít nhất 2 người trùng ngày sinh nhật, bởi vì trong năm có nhiều nhất 366 ngày.

Page 16: LÝ THUYẾT TỔ HỢP

2. Trong một kì thi học sinh giỏi, điểm bài thi được dánh giá bởi một số nguyên trong khoảng từ 0 đến 100.

Hỏi rằng có ít nhất bao nhiêu thí sinh dự thi để chắc chắn tìm được hai học sinh có kết quả thi như nhau?

Page 17: LÝ THUYẾT TỔ HỢP

Nguyên lý Dirichlet tổng quát

Nếu xếp n đối tượng vào k chiếc hộp thì tồn tại hộp chứa không ít hơn n/k đối tượng.

Ví dụ:

1. Trong 100 người thì có ít nhất 9 người trùng tháng sinh.

Page 18: LÝ THUYẾT TỔ HỢP

2. Có 5 loại học bổng khác nhau. Hỏi rằng phải có ít nhất bao nhiêu sinh viên để chắc chắn rằng có ít nhất 6 người cùng nhận học bổng như nhau?

Ví dụ:

Chứng minh rằng: Trong hội nghị có n người bao giờ cũng có 2 người có số người quen trong số những người tham dự bằng nhau.

Page 19: LÝ THUYẾT TỔ HỢP

HD

Gọi ni là số người quen của người thứ i (i = 1, 2,...,n), ni {0, 1, …, n – 1}.

Nhưng không thể đồng thời xảy ra có người không quen ai cả và có người quen (n – 1) người còn lại.

Page 20: LÝ THUYẾT TỔ HỢP

Vậy xảy ra một trong hai trường hợp sau:

n,1i},1n...,,2,1{n

n,1i},2n...,,1,0{n

i

i

Theo nguyên lý Dirichlet thì có ít nhất 2 người cùng số người quen tức bao giờ cũng có 2 người có cùng số người quen.

Page 21: LÝ THUYẾT TỔ HỢP

Dẫn vào bài toán đếm:Một trong những vấn đề đầu tiên của việc nghiên cứu tổ hợp là đếm xem có bao nhiêu cấu hình tổ hợp có thể được tạo ra với những quy tắc đã nêu? Những bài toán như vậy gọi là bài toán đếm tổ hợp. Dưới đây là một số thí dụ đơn giản nhằm minh họa cho một số kĩ thuật đếm.

Page 22: LÝ THUYẾT TỔ HỢP

3.2.3 MỘT SỐ VÍ DỤ ỨNG DỤNG

3.2 BÀI TOÁN ĐẾM

3.2.1 CÁC NGUYÊN LÝ CƠ BẢN

3.2.2 CÁC CẤU HÌNH TỔ HỢP ĐƠN GiẢN

3.2.4 NGUYÊN LÝ BÙ TRỪ

Page 23: LÝ THUYẾT TỔ HỢP

3.2.1 MỘT SỐ NGUYÊN LÍ CƠ BẢN

a. Nguyên lí cộng:a. Nguyên lí cộng:

- Nếu A và B là hai tập rời nhau (AB = ) thì

BABA

- Nếu A1, A2, …Ak là k tập đôi một rời nhau thì

kk AAAAAA ...... 2121

Page 24: LÝ THUYẾT TỔ HỢP

+ Phương án 1: có m1 cách thực hiện

+ Phương án 2: có m2 cách thực hiện

……………………………………

+ Phương án k: có mk cách thực hiện

Tổng số cách thực hiện công việc là:

m1 + m2 + …+mk

Một công việc được thực hiện theo k phương án độc lập, trong đó:

Chú ý:Chú ý: Nguyên lí cộng còn được phát biểu như sau:

Page 25: LÝ THUYẾT TỔ HỢP

b. Nguyên lí nhân:b. Nguyên lí nhân:

Một công việc được chia làm k bước thực hiện, bước thứ i có ni cách thực hiện, i=1, 2, …, k

n1n2 …nk (cách)

Khi đó số cách thực hiện công việc:

Page 26: LÝ THUYẾT TỔ HỢP

Ví dụ 1:

Một nhà hàng có thực đơn sau:

Khai vị:

1. Salad 2. Súp

Món ăn chính:

1. Thịt bò 2. Thịt lợn 3. Cá

Đồ uống:

1. Trà 2. Sữa 3. Bia 4. Coca

Có bao nhiêu cách chọn bữa ăn gồm: 1 món khai vị, 1 món chính và 1 loại đồ uống?

Page 27: LÝ THUYẾT TỔ HỢP

Ví dụ 2:

Cho 5 kí tự A, B, C, D, E

(a) Có bao nhiêu xâu kí tự có độ dài 4 có thể lập được từ các kí tự đã cho nhưng không lặp kí tự.

(b) Có bao nhiêu xâu kí tự trong (a) bắt đầu từ B.

(c) Có bao nhiêu xâu kí tự trong (a) không bắt đầu từ B.

Page 28: LÝ THUYẾT TỔ HỢP

HD:

Gọi xâu s = abcd

a) a có 5 cách chọn, b có 4 cách, c có 3 cách, d có 2 cách

Theo nguyên lý nhân số xâu chữ là: 5.4.3.2 = 120

b) Số xâu chữ bắt đầu từ B: 4.3.2 = 24

c) Số xâu chữ không bắt đầu từ B: 120 – 24 = 96

Page 29: LÝ THUYẾT TỔ HỢP

Ví dụ 3:

a- Đếm các xâu nhị phân có kích thước 1 byte.

b-Đếm các xâu nhị phân có kích thước 1 byte có hai bit đầu 10 hoặc 01

Page 30: LÝ THUYẾT TỔ HỢP

HD:a- 1byte = 8 bit, mỗi bit có 2 cách chọn (0 hoặc 1).

Theo nguyên lí nhân có: 28 = 256 số 1 byte

b- Bắt đầu bằng 10 có 26 = 64 số

- Bắt đầu bằng 01 có 26 = 64 số

Vậy có 64 + 64 =128 số 1 byte bắt đầu bằng 10 hoặc 01

Page 31: LÝ THUYẾT TỔ HỢP

Dẫn dắt: Các khái niệm về Hoán vị, chỉnh hợp và chỉnh hợp lặp đã được học ở Cấp 3. Tuy nhiên như đã giới thiệu Lý thuyết tổ hợp ứng dụng rất nhiều trong các lĩnh vực và mỗi lĩnh vực có một đặc trưng riêng. Vì vậy ta tìm hiểu xem các ứng dụng của nó trong bài toán đếm của toán Rời rạc như thế nào

Phần các cấu hình tổ hợp đơn giản, tôi giới thiệu 4 cấu hình là: …

Page 32: LÝ THUYẾT TỔ HỢP

a. Hoán vịa. Hoán vị

3.2.2 CÁC CẤU HÌNH TỔ HỢP ĐƠN GIẢN

* Một hoán vị của n phần tử là một cách sắp xếp thứ tự n phần tử đó.

* Số các hoán vị của n phần tử: n!

Có bao nhiêu cách xếp 3 người Việt, 5 người Pháp và 6 người Mỹ ngồi một ghế dài sao cho người cùng quốc tịch ngồi cạnh nhau?

Ví dụ 4:

Page 33: LÝ THUYẾT TỔ HỢP

b. Chỉnh hợp lặpb. Chỉnh hợp lặp

* Một chỉnh hợp lặp chập k của n phần tử là một bộ có thứ tự gồm k phần tử lấy từ n phần tử đã cho, các phần tử có thể được lặp lại.

* Số các chỉnh hợp lặp chập k của n phần tử:

kkn nA

Ví dụ 5:

Có bao nhiêu số hàng trăm được thiết lập từ các chữ số: 1, 2, 3, 4, 5?

Page 34: LÝ THUYẾT TỔ HỢP

* Số các chỉnh hợp không lặp chập k của n phần tử:

)!kn(

!n)1kn)...(1n.(nAk

n

c. Chỉnh hợp (không lặp)c. Chỉnh hợp (không lặp)

* Một chỉnh hợp chập k của n phần tử là một bộ có thứ tự gồm k phần tử lấy từ n phần tử đã cho, các phần tử không được lặp lại.

Page 35: LÝ THUYẾT TỔ HỢP

Ví dụ 6:

Có bao nhiêu số hàng trăm với 3 chữ số khác nhau được thiết lập từ các chữ số: 1, 2, 3, 4, 5?

Page 36: LÝ THUYẾT TỔ HỢP

d. Tổ hợpd. Tổ hợp

* Một tổ hợp chập k của tập X gồm n phần tử là một tập con có k phần tử của X.

* Số các tổ hợp chập k của n phần tử:

)!(!

!

knk

nC k

n

Page 37: LÝ THUYẾT TỔ HỢP

Ví dụ 7:

a. Có n đội thi đấu vòng tròn. Hỏi phải tổ chức bao nhiêu trận đấu?

b. Có bao nhiêu xâu nhị phân độ dài 32 mà trong đó có đúng 6 số 1?

HD:

b. Số xâu nhị phân: 632C

a. Số trận đấu: 2nC

(*thi đấu vòng tròn: cư 2 đội gặp nhau 1 trận*)

Page 38: LÝ THUYẾT TỔ HỢP

Ví dụ 8:

a. Có bao nhiêu hoán vị của các chữ cái trong xâu ABCDEF mà trong đó có chứa xâu con DEF?

3.2.3 MỘT SỐ VÍ DỤ ỨNG DỤNG

a. Bài toán đếm cách xếp chỗ

b. Có bao nhiêu hoán vị của các chữ cái trong xâu ABCDEF mà trong đó 3 chữ các D, E, F đứng cạnh nhau?

Page 39: LÝ THUYẾT TỔ HỢP

HD:

a) Số các hoán vị: 4! = 120

b) Số các hoán vị: 4!3! = 144

(*a. Xem xâu con DEF là một vị trí*)

b. Có 3! Cách xếp D, E, F gần nhau, 4! Hoán vị

Page 40: LÝ THUYẾT TỔ HỢP

Ví dụ 9:

Một nhóm sinh viên có 7 nam và 5 nữ xếp thành hàng dọc. Hỏi có bao nhiêu cách sắp xếp hàng để không có 2 nữ nào đứng cạnh nhau?

(*Cho sv đề xuất cách giải, nếu ko được gọi 2 sinh lên ghi 2 cách xếp sau cho 2 nữ không đứng cạnh nhau*=> tổng quát cách giải.*)

Page 41: LÝ THUYẾT TỔ HỢP

HD

Mỗi cách xếp hàng tương ứng với một hoán vị của 7 (SV nam A1, A2, …, A7) và một chỉnh hợp chập 5 (SV nữ) của 8 (khoảng trống kí hiệu bằng dấu gạch ngang):

_A1_A2_A3_A4_A5_A6_A7_

Vậy số cách xếp hàng:

80086833A!7 58

Page 42: LÝ THUYẾT TỔ HỢP

Ví dụ 10:

Có bao nhiêu cách xếp k bít 0 và m bít 1 (k m) trên hàng ngang sao cho không có 2 bit 0 kề nhau?

(*Từ bài trên thay 7 sv nam bởi 7 bit 1 và 5 sv nữ bởi 5 bit 0=>đề xuất cách giải(bít 1 ko phân biệt thứ tự)*)

Page 43: LÝ THUYẾT TỔ HỢP

Ví dụ 11:

Cho lưới hình chữ nhật gồm mxn ô vuông (xem hình vẽ)

(0, 0)

(n, m)(0, m)

(n, 0)

b. Bài toán đếm số đường đi

Page 44: LÝ THUYẾT TỔ HỢP

Có bao nhiêu cách đi từ nút (0, 0) đến (n, m) nếu chỉ cho phép đi trên cạnh các ô vuông theo chiều sang phải hoặc lên trên?

HD:

Mỗi đường đi như thế gồm (m + n) cạnh (trong đó có m cạnh lên trên và n cạnh sang phải)

Mỗi đoạn đi lên ta mã là 1, sang phải ta mã là 0

Page 45: LÝ THUYẾT TỔ HỢP

Vậy số cách đi thỏa yêu cầu đề bài:

mmnC

Bài toán dẫn về việc đếm xem có bao nhiêu dãy nhị phân có độ dài m + n trong đó có đúng m thành phần bằng 1.

)C(hayC nmn

mmn

dãy như vậy.

Page 46: LÝ THUYẾT TỔ HỢP

3.2.4 NGUYÊN LÝ BÙ TRỪ3.2.4 NGUYÊN LÝ BÙ TRỪ

- Cho A và B là hai tập bất kì thì

BABABA

- A, B, C là 3 tập bất kì thì

CBACB

CABACBACBA

Page 47: LÝ THUYẾT TỔ HỢP

Ví dụ 12:

Có bao nhiêu xâu nhị phân có độ dài 10 hoặc bắt đầu bởi 00 hoặc kết thúc bởi 11?

Page 48: LÝ THUYẾT TỔ HỢP

HD:

Số xâu nhị phân có độ dài 10 bắt đầu bởi 00 là: 28 = 256, và kết thúc bởi 11 là 28 = 256.

Số xâu bắt đầu bằng 00 và kết thúc bởi 11 là:

26 = 64Vậy số xâu hoặc bắt đầu bởi 00 hoặc kết thúc bởi 11 là: 256 + 256 – 64 = 448

Page 49: LÝ THUYẾT TỔ HỢP

BÀI TẬP

1. Một hội đồng có 6 người: A, B, C, D, E, F. Cần chọn 1 chủ tịch, 1 thư kí và 1 thủ quỹ.

a. Có bao nhiêu cách chọn?

b. Có bao nhiêu cách chọn mà E giữ 1 trong các chức vụ trên?

c. Có bao nhiêu cách chọn mà cả D và E đều giữ chức vụ?

Page 50: LÝ THUYẾT TỔ HỢP

3. Có bao nhiêu xâu nhị phân độ dài 10 hoặc là bắt đầu bởi 3 số 1, hoặc kết thúc bởi 4 số 0?

2. Có bao nhiêu cách xếp các chữ cái A, B, C, D, E, F sao cho A, B không đứng kề nhau?

4. Cho tập X = {1; 2; …; 10000}. Hỏi trong tập X có bao nhiêu số không chia hết cho bất cứ số nào trong các số 3, 4, 7?

Page 51: LÝ THUYẾT TỔ HỢP

3.3.3 THUẬT TOÁN QUAY LUI

3.3 BÀI TOÁN LIỆT KÊ

3.3.1 GiỚI THIỆU BÀI TOÁN

3.3.2 PHƯƠNG PHÁP SINH

Page 52: LÝ THUYẾT TỔ HỢP

3.3.1 GiỚI THIỆU BÀI TOÁN

Ví dụ:

Một băng video có thể ghi được C giây. Ta có n phim video với lượng thời gian tương ứng là: t1, t2, …, tn. Ta phải chọn k phim i1, i2, …, ik sao cho tổng thời gian:

}i,...i,i{i

i

k21

t

lớn nhất và không vượt quá C.

Page 53: LÝ THUYẾT TỔ HỢP

Một cách chân phương là liệt kê tất cả các tập con {i1, i2, …, ik} của tập gồm n phim và chọn tập có tổng trên là lớn nhất và không vượt quá C.

Trong nhiều trường hợp, khi không có thuật toán để giải quyết những bài toán như trên thì phương pháp liệt kê với sự trợ giúp của máy tính vẫn là phương pháp khả dĩ.

Page 54: LÝ THUYẾT TỔ HỢP

* Bài toán liệt kê là bài toán đưa ra danh sách tất cả cấu hình tổ hợp có thể có.

* Bài toán liệt kê xác định thuật toán xây dựng lần lượt cấu hình quan tâm, thuật toán cần bảo đảm các yêu cầu sau:

- Không lặp lại cấu hình

- Không bỏ sót cấu hình

Page 55: LÝ THUYẾT TỔ HỢP

3.3.2 PHƯƠNG PHÁP SINH

a. Thứ tự từ điển

Cho s = s1, s2,..., sp và t = t1, t2,..., tq là hai dãy gồm các số hoặc ký tự.

i. p < q và si = ti với mọi i = 1, 2, ..., p

ii. Tồn tại k min{p, q} sao cho: si = ti với mọi i = 1, 2,...,k – 1 và sk < tk

Ta nói rằng s nhỏ hơn t (theo nghĩa từ điển), ký hiệu s < t, nếu thoả mãn 1 trong 2 điều kiện sau đây:

Page 56: LÝ THUYẾT TỔ HỢP

Ví dụ:

* 132 … 1324

* AN … ANH

* BANDIT … BANK

* 13246 … 1341

Page 57: LÝ THUYẾT TỔ HỢP

b. Thuật toán sinh tổng quát

+ B1: Khởi tạo, gán s so

Kí hiệu s là cấu hình hiện hành, so là cấu hình đầu tiên (theo thứ tự từ điển)

+ B2: Kết xuất s

+ B3: Kiểm tra tiêu chuẩn kết thúc:

Nếu s là cấu hình cuối thì kết thúc, ngược lại sang bước 4

+ B4: Tìm cấu hình t đứng sau s theo thứ tự từ điển.

Gán s t và quay lại bước 2

Page 58: LÝ THUYẾT TỔ HỢP

c. Liệt kê tất cả các dãy nhị phân có độ dài bằng n

Cho n N. Hãy liệt kê (theo nghĩa từ điển) tất cả các dãy nhị phân độ dài n, tức là dãy [b1, b2, ...,bn] với bi {0, 1}, i = 1, 2, …, n.

Số dãy nhị phân là 2n và dãy nhị phân đầu tiên: so = [0, 0, ..., 0]

* Phát biểu bài toán

Page 59: LÝ THUYẾT TỔ HỢP

Cho dãy nhị phân s = [s1, s2, …, sn], ta tìm dãy kế tiếp t = [t1, t2, …, tn].

- Từ dãy s, xuất phát từ sn đi từ phải sang trái tìm phần tử đầu tiên sm, 1 m n, thỏa sm = 0.

+ Nếu không tìm thấy thì s = [1, 1, ..., 1] là dãy cuối cùng kết thúc

Phương pháp tìm dãy kế tiếp

Page 60: LÝ THUYẾT TỔ HỢP

+ Nếu tìm thấy thì ta xây dựng dãy t = [t1, t2, ..., tn] như sau:

ti = si với i = 1, 2, ..., m – 1

tm = 1

ti = 0 với i = m + 1, m + 2, ...., n

Ví dụ:

Cho dãy nhị phân s = [010011], tìm dãy kế tiếp?

Page 61: LÝ THUYẾT TỔ HỢP

Thuật toán liệt kê dãy nhị phân

- Đầu ra: Danh sách tất cả các dãy nhị phân độ dài n theo thứ tự từ điển tăng dần.

+ B2: Kết xuất s.

+ B1: Khởi tạo: Gán si = 0 với mọi i = 1, 2, ...., n

- Đầu vào: nhập n

Page 62: LÝ THUYẾT TỔ HỢP

+ Bước 3: Tìm m thoả mãn m = max{i | si = 0}

Nếu không tìm thấy thì s = [1,1,...,1] là dãy cuối cùng kết thúc

Nếu tìm thấy ta đặt:

sm 1 và si 0 với mọi i = m + 1, m + 2, ..., n

Quay lại bước 2.

Page 63: LÝ THUYẾT TỔ HỢP

VÍ DỤ

Liệt kê các dãy nhị phân có độ dài 3

Page 64: LÝ THUYẾT TỔ HỢP

3.3.3 THUẬT TOÁN QUAY LUI

Nội dung chính của thuật toán này là xây dựng dần các thành phần của cấu hình bằng cách thử tất cả các khả năng.

Giả thiết cấu hình cần được mô bằng một dãy gồm n thành phần x1x2...xn

Giả sử đã xác định được i – 1 thành phần x1, x2, ..., xi-1.

Ta xác định thành phần thứ i là xi bằng cách duyệt tất cả các khả năng có thể có (đánh số các khả năng từ 1 đến ni).

Page 65: LÝ THUYẾT TỔ HỢP

Với mỗi khả năng j, kiểm tra xem khả năng j có chấp nhận được không. Có thể có 2 trường hợp sau:

- Nếu j được chấp nhận thì xác định được xi theo j, sau đó nếu i = n thì ta có được một cấu hình, còn nếu i < n thì tiến hành xác định xi+1

- Nếu thử tất cả các khả năng mà không có khả năng nào được chấp nhận thì quay lại bước trước để xác định lại xi-1

Page 66: LÝ THUYẾT TỔ HỢP

Bước xác định xi có thể được diễn tả qua thủ tục đệ quy sau:

Procedure try(i:integer) var j: integerbegin for j 1 to ni do if <chấp nhận j> then begin <xác định xi theo j> if i = n then <ghi nhận một cấu hình> else try(i + 1); end;End;

Page 67: LÝ THUYẾT TỔ HỢP

Đoạn chương trình chính của bài toán liệt kê có dạng:

Begin

Init; Try(1)

End.

Page 68: LÝ THUYẾT TỔ HỢP

Đoạn chương trình liệt kê các dãy nhị phân có độ dài n:

Var

n:integer

x: array[0..20] of 0..1

VÍ DỤ

Page 69: LÝ THUYẾT TỔ HỢP

Procedure Try(i:integer);

Var j: integer;

Begin

for j 0 to 1 do

begin

x[i] j;

if i = n then Result else Try(i+1)

end;

Page 70: LÝ THUYẾT TỔ HỢP

Begin

Init; Try(1);

End.