ดูเหมือนว่าคุณกำลังพยายามที่จะคำนวณขวาง hypergraphขนาดkนั่นคือเป็นของคุณและคือ transversal ของคุณ การแปลมาตรฐานคือการแสดงข้อที่คุณมีแล้วแปลข้อ จำกัด ความยาวเป็นข้อ จำกัด cardinality{ T 1 , … , T m } Sk{ T1, ... , Tม.}S
ดังนั้นการใช้การเข้ารหัสที่มีอยู่เช่นของคุณแล้วเพิ่มคำสั่งการเข้ารหัสk∑ 1 ≤ ฉัน≤ n x i ≤ k⋀1 ≤ j ≤ m⋁ฉัน∈ TJxผมΣ1 ≤ ฉัน≤ nxผม≤ k
Σ1 ≤ ฉัน≤ nxผม≤ kเป็นข้อ จำกัด ของ cardinality มีการแปลข้อ จำกัด เชิงหัวใจที่แตกต่างหลากหลายใน SAT
การแปลข้อ จำกัด ด้าน cardinality ที่ง่ายที่สุด แต่ค่อนข้างใหญ่คือx_i ด้วยวิธีนี้การแยกกันแสดงถึงข้อ จำกัด - สำหรับเซตย่อยทั้งหมดของของขนาด k + 1 นั่นคือเรามั่นใจว่าไม่มีทางที่ตัวแปร k สามารถตั้งค่าได้ โปรดทราบว่านี่ไม่ใช่ขนาดพหุนามใน ¬ ⋀ ฉัน∈ X x ฉัน X { 1 , ... , n } k⋀X⊆ { 1 , … , n } , | X| =k+1⋁ฉัน∈ X¬ xผม¬ ⋀ฉัน∈ XxผมX{ 1 , … , n }k
บางลิงค์ไปยังเอกสารเกี่ยวกับการแปลข้อ จำกัด เชิงพื้นที่ที่มีประสิทธิภาพมากขึ้นซึ่งมีขนาดพหุนามในk :
หากคุณสนใจที่จะแก้ไขปัญหาดังกล่าวจริง ๆ อาจเป็นการดีกว่าหากคุณกำหนดปัญหาเป็นปัญหาหลอกแบบบูล (ดูบทความวิกิเกี่ยวกับปัญหาหลอกแบบบูล ) และใช้ตัวแก้ปัญหาหลอกหลอกแบบบูล (ดูการแข่งขันหลอกแบบบูล ) วิธีนี้จะทำให้ข้อ จำกัด ของ cardinality เป็นเพียงข้อ จำกัด หลอกและเป็นส่วนหนึ่งของภาษาหวังว่าตัวแก้ pseudo-boolean จะจัดการกับมันโดยตรงและมีประสิทธิภาพมากขึ้น