Bài toán
- Xét tập
- Gọi
là một tính chất trên , ta cần liệt kê tất cả các thỏa mãn tính chất có dạng với
Thuật toán
- Xét lời giải bộ phận cấp k có dạng
với - Khi
ta có lời giải rỗng - Khi
ta có lời giải đầy đủ
- Khi
- Xét từ lời giải rỗng, ta xác định những phần tử, gọi là tập ứng cử viên
của có thể chọn vào vị trí để đảm bảo . - Từ lời giải cấp
, ta xác định tập ứng củ viên có thể chọn vào vị trí - Nếu
, quay lại lời giải cấp , tìm ứng cử viên khác thay vào - Nếu
, bổ sung một phần tử vào lời giải. - Nếu
, kết thúc, trả về vời giải - Nếu
, tiếp tục thay lần lượt các giá trị trong vào và tiếp tục
- Nếu
- Nếu
Mã giả
Xét hàm Try(k)
Try(k):
Xây dựng S_k;
Với x_k trong S_k:
Chọn x_k;
Nếu k == n:
Lưu cấu hình;
Nếu k < n:
Try(k+1);
Bỏ chọn x_k;
Để bắt đầu thuật toán sinh, ta gọi Try(1)