PHẦN 1. BÀI TOÁN LIỆT KÊ
Có một số bài toán trên thực tế yêu cầu chỉ rõ: trong một tập các đối
tượng cho trước có bao nhiêu đối tượng thoả mãn những điều kiện nhất
định. Bài toán đó gọi là bài toán đếm
.
Trong lớp các bài toán đếm, có những bài toán còn yêu cầu chỉ rõ những
cấu hình tìm được thoả mãn điều kiện đã cho là những cấu hình nào. Bài
toán yêu cầu đưa ra danh sách các cấu hình có thể có gọi là bài toán liệt kê
.
Để giải bài toán liệt kê, cần phải xác định được một thuật toán
để có thể
theo đó lần lượt xây dựng được tất cả các cấu hình đang quan tâm. Có
nhiều phương pháp liệt kê, nhưng chúng cần phải đáp ứng được hai yêu
cầu dưới đây:
- 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
Có thể nói rằng, phương pháp liệt kê là phương kế cuối cùng để giải
được một số bài toán tổ hợp hiện nay. Khó khăn chính của phương pháp
này chính là sự bùng nổ tổ hợp dẫn tới sự đòi hỏi lớn về không gian và
thời gian thực hiện chương trình. Tuy nhiên cùng với sự phát triển của
máy tính điện tử, bằng phương pháp liệt kê, nhiều bài toán tổ hợp đã tìm
thấy lời giải. Qua đó, ta cũng nên biết rằng chỉ nên dùng phương pháp liệt kê khi không còn một phương pháp nào khác
tìm ra lời giải.
Chính những nỗ lực giải quyết các bài toán thực tế không dùng phương pháp liệt kê đã thúc đẩy sự phát triển của nhiều ngành toán học.