Bài 2 · Tập tối đại
GenMax — tìm các tập tối đại
GenMax đi tìm các tập tối đại, tức là những tập phổ biến lớn nhất, không thể mở rộng thêm mà vẫn phổ biến. Nó dò theo lối quay lui, và để khỏi làm việc thừa, nó luôn kiểm tra trước xem một nhánh có nằm gọn trong một tập tối đại đã tìm được hay chưa; nếu rồi thì cắt bỏ cả nhánh.
1. Ý tưởng chung
Một tập gọi là tối đại khi nó phổ biến nhưng mọi cách thêm một mặt hàng vào đều khiến nó không còn phổ biến nữa. Đây là cách lưu gọn nhất, tuy không giữ lại độ phổ biến của từng tập con.
GenMax dò theo lối quay lui. Với một phần đầu đang xét, nó giữ một danh sách các mặt hàng có thể thêm vào mà vẫn phổ biến; ta tạm gọi đó là danh sách mở rộng. Nó chọn một mặt hàng trong danh sách, nối vào phần đầu để đi sâu hơn, rồi lại lập danh sách mở rộng mới cho phần đầu dài hơn đó.
Mẹo quan trọng để chạy nhanh, gọi là kiểm tra bao trùm: trước khi lao vào một nhánh, hãy thử ghép phần đầu hiện tại với toàn bộ các mặt hàng còn lại trong danh sách mở rộng. Nếu cái tập gộp đó đã nằm gọn trong một tập tối đại tìm được từ trước, thì chắc chắn nhánh này không cho ra tập tối đại nào mới, ta cắt bỏ luôn cho đỡ mất công.
2. Hai quy tắc cần nhớ
Để biết một mặt hàng có còn ghép được với phần đầu hay không, ta lấy phần chung của danh sách giao dịch giữa hai bên rồi đếm. Nếu số đó còn đạt ngưỡng phổ biến thì mặt hàng đó được giữ trong danh sách mở rộng.
Nếu phần đầu, sau khi nối thêm tất cả các mặt hàng còn lại của danh sách mở rộng, lại là tập con của một tập tối đại đã có, thì bỏ cả nhánh. Còn khi một phần đầu đi sâu mà danh sách mở rộng cạn sạch, thì chính phần đầu đó là một tập tối đại mới, miễn là nó chưa bị tập nào bao trùm.
3. Giải mẫu từng bước
Vẫn bảng dữ liệu quen thuộc, ngưỡng phổ biến bằng ba, thứ tự xét là A, D, T, W rồi C.
Bước một — lập danh sách mở rộng cho phần đầu A.
Bước hai — đi sâu theo AT, rồi ATW, rồi ATWC.
Bước ba — quay lui và cắt tỉa các nhánh con của A.
Bước bốn — nhánh D, rồi DW, rồi DWC.
Bước năm — các nhánh T, W, C đều bị cắt.
ACTW và CDW, cả hai cùng có độ phổ biến ba. Mọi tập phổ biến khác đều là con của một trong hai tập này.
4. Bài tập tự luyện
Dùng bảng P, ngưỡng phổ biến bằng hai. Năm giao dịch: giao dịch một có B, C, M; giao dịch hai có B, E; giao dịch ba có B, C, E, M; giao dịch bốn có C, E, O; giao dịch năm có B, C, E, M. Sau khi loại O, thứ tự xét là M, B, C, E.
Bài một. Danh sách mở rộng của phần đầu B gồm những gì?
Bài hai. Hãy tìm mọi tập tối đại của bảng P.