11.07.2015 Views

Toán 2 - lib - Đại học Thăng Long

Toán 2 - lib - Đại học Thăng Long

Toán 2 - lib - Đại học Thăng Long

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

1.1. Khái niệm Thuật toán theo nghĩa trực giácThuật toán 5 Sinh hoán vị kế tiếp.Đầu vào: Hoán vị hiện tại a 1 , a 2 , . . . , a n n, n 1, . . . , 2, 1.Đầu ra: Hoán vị liền sau theo thứ tự từ điển.1: j : n 1.2: Trong khi a j ¡ a j 1 Thực hiện3: j : j 1.4: Kết thúc Trong khi5: k : n.6: Trong khi a j ¡ a k Thực hiện7: k : k 1.8: Kết thúc Trong khi9: Đổi chỗ a j và a k .10: s : j 1, r : n.11: Trong khi r ¡ s Thực hiện12: Đổi chỗ a r và a s .13: r : r 1, s : s 1.14: Kết thúc Trong khi15: Hoán vị mới liền sau hoán vị đã cho theo thứ tự từ điển là a 1 , a 2 , . . . , a n .Các qui tắc trên được thể hiện thông qua thuật toán 5 dưới dạng giả mã.Ví dụ 1.1.8 Liệt kê tất cả các xâu nhị phân độ dài n theo thứ tự từ điển.looomooonLời giải: Xâu nhị phân đầu tiên là 00 . . . 0. Xâu nhị phân cuối cùng sẽ làlooomooonn bit11 . . . 1. Giả sử b 1 , b 2 , . . . , b n là xâu nhị phân hiện tại (không phải xâu nhịn bitphân cuối cùng). Qui tắc sau sẽ cho ta xâu nhị phân kế tiếp:B1 Tìm chỉ số i đầu tiên từ phải qua trái (i n, pn 1q, . . . , 1) thỏa mãnb i 0.B2 Gán lại b i 1 và b j 0 với tất cả j ¡ i.Việc chứng minh tính đúng đắn của qui tắc trên dành cho các bạn đọc như mộtbài tập đơn giản.Chẳng hạn với xâu 1101011111 ta có i 5 và xâu nhị phân kế tiếp sẽ là1101100000.Bài toán liệt kê tất cả các xâu nhị phân độ dài n theo thứ tự từ điển chính làbài toán liệt kê tất cả các tập con có thể của tập có n phần tử ta 1 , a 2 , . . . , a n u.Phần tử a i sẽ có mặt trong tập con đang xét nếu và chỉ nếu bit thứ i (các bitđược tính từ 1 từ trái qua phải) nhận giá trị 1.lThuật toán 6 là biểu diễn dạng giả mã của qui tắc sinh xâu nhị phân kế tiếp theothứ tự từ điển.Bộ môn Toán - ĐẠI HỌC THĂNG LONG 9

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!