Chương 4: Bài toán liệt kê (4t)
4.1. Giới thiệu bài toán
-Bài toán liệt cần xác định một thuật toán để theo đó thể
lần lượt xây dựng được tất cả các cấu hình đang quan tâm.
-Chúng phải đảm bảo 2 nguyên tắc:
-Không được lặp lại một cấu hình.
-Không được bỏ sót một cấu hình.
-Khó khăn chính của phương pháp này sự bùng nổ tổ hợp
4.2. Thuật toán độ phức tạp
4.2.1 Khái niệm thuật toán
Định nghĩa.Ta hiểu thuật toán giải bài toán đặt ra một thủ
tục xác định bao gồm một dãy hữu hạn các bước cần thực hiện
để thu được lời giải của bài toán.
4.2.2. Độ phức tạp của thuật toán
Độ phức tạp tính toán của thuật toán lượng thời gian bộ
nhớ cần thiết để thực hiện thuật toán. Trong mục này ta quan
tâm đến việc đánh giá thời gian cần thiết để thực hiện thuật toán
(ta sẽ gọi thời gian tính của thuật toán).
4.3. Phương pháp sinh
Ý tưởng của phương pháp sinh là:
a. Xây dựng một cấu hình tổ hợp, một phương án ban đầu thỏa
mãn các điều kiện đã cho.
b. Đưa ra cấu hình đang có.
c. Từ các thông tin của cấu nh có, xây dựng cấu hình mới
cũng thỏa mãn các điều kiện đã cho, nếu sinh được cấu hình
mới ta tiếp tục lặp lại bước b, nếu không sinh được thì dừng
lại.
dụ: Liệt các dãy nhị phân độ dài 3
-Cấu hình ban đầu 000
-Đưa ra cấu hình đang
-Từ cấu hình đang ta sẽ duyệt từ phải sang.
Khi gặp phần tử “0” đầu tiền thì đổi thành “1” đổi các phần
tử bên phải của thành “0” quay lại bước 0.
Nếu không gặp phần tử “0thì dừng lại.
-Dãy kết quả:
000001 010 011 100 101 110 111
4.3.1. Sinh các hoán vị:
-Mọi phần tử của tập nphần tử bất kỳ đều thể tương ứng
một một với tập các số nguyên A = {1, 2, ,n}
-Để liệt các hoán vị của tập ta thể sinh ra các hoán vị
của tập A, sau đó thay thế các số nguyên bằng các phần tử của
chỉ số tương ứng.
-Phương pháp liệt các hoán vị của tập Ađược sử dụng
phương pháp sinh hoán vị theo thứ tự từ điển.