Có vẻ như bạn đang cố gắng tính toán một siêu đồ thị có kích thước . Đó là, { T 1 , Mạnh , T m } là siêu dữ liệu của bạn và S là chuyển vị của bạn. Một bản dịch tiêu chuẩn là diễn đạt các mệnh đề như bạn có, và sau đó dịch giới hạn độ dài thành một ràng buộc về số lượng.k{T1,…,Tm}S
Vì vậy, sử dụng mã hóa hiện tại của bạn, ví dụ, và sau đó thêm mệnh đề mã hóa Σ 1 ≤ i ≤ n x i ≤ k .⋀1≤j≤m⋁i∈Tjxi∑1≤i≤nxi≤k
là một cardinality hạn chế. Có nhiều bản dịch ràng buộc cardinality khác nhau vào SAT.∑1≤i≤nxi≤k
Cách đơn giản nhất nhưng khá lớn dịch cardinality hạn chế là chỉ . Bằng cách này mỗi phân ly đại diện cho chế ¬ ⋀ i ∈ X x i - cho tất cả các tập con X của { 1 , ... , n }⋀X⊆{1,…,n},|X|=k+1⋁i∈X¬xi¬⋀i∈XxiX{1,…,n}có kích thước k + 1. Đó là, chúng tôi đảm bảo rằng không có cách nào có thể đặt nhiều hơn k biến. Lưu ý rằng đây không phải là kích thước đa thức tính bằng k
Một số liên kết đến các bài báo về các bản dịch ràng buộc cardinality hiệu quả hơn về không gian có kích thước đa thức tính bằng k :
- Dịch các ràng buộc Pseudo-Boolean sang SAT - Niklas Eén và Niklas Sörensson, JSAT vol 2 (2006), pg 1-26 (một khảo sát tốt).
- Mã hóa CNF hiệu quả về các hạn chế về số lượng thẻ Boolean - Olivier Bailleux và Yacine Boufkhad, Kỷ yếu nguyên tắc và thực hành lập trình ràng buộc 2003, LNCS vol 2833, pg 108-122 (một bản dịch khá hay, dễ thực hiện).
- Hướng tới mã hóa CNF tối ưu cho các ràng buộc về thẻ Boolean - Carsten Sinz - Thủ tục tố tụng và thực hành lập trình ràng buộc 2005, LNCS 3709, trg 827-831.
- Hướng tới các mã hóa mạnh mẽ của CNF về các ràng buộc về tim mạch - Joao Marques-Silva và Inês Lynce, Kỷ yếu nguyên tắc và thực hành lập trình ràng buộc 2007, LNCS 4741, trg 483-497.
Nếu bạn thực sự quan tâm đến việc giải quyết các vấn đề như vậy, có lẽ tốt hơn là xây dựng chúng thành các vấn đề giả-boolean (xem bài viết wiki về các vấn đề giả-boolean ) và sử dụng các bộ giải giả giả (xem cạnh tranh giả-boolean ). Bằng cách đó, các ràng buộc về cardinality chỉ là các ràng buộc giả-boolean và là một phần của ngôn ngữ - hy vọng người giải giả giả sau đó xử lý chúng trực tiếp và do đó hiệu quả hơn.