크기가 하이퍼 그래프 횡단 을 계산하려는 것 같습니다 . 즉, 은 하이퍼 그래프이고 는 가로입니다. 표준 번역은 절을 그대로 표현한 다음 길이 제한을 카디널리티 제약 조건으로 변환하는 것입니다.{ T 1 , … , T m } Sk{T1,…,Tm}S
따라서 기존 인코딩 (예 : 을 사용한 다음 인코딩 절을 추가하십시오 .∑ 1 ≤ i ≤ n x i ≤ k⋀1≤j≤m⋁i∈Tjxi∑1≤i≤nxi≤k
∑1≤i≤nxi≤k 는 카디널리티 제한 조건입니다. SAT에는 다양한 카디널리티 제약 조건 변환이 있습니다.
가장 단순하지만 다소 큰 카디널리티 제한 조건 변환은 입니다. 이런 식으로 각 분리는 k + 1 크기 의 의 모든 부분 집합 에 대한 제약 조건 나타냅니다 . 즉, k 개 이상의 변수를 설정할 수있는 방법이 없도록합니다. 이것은 다항식 크기가 아닙니다. ¬ ⋀ i ∈ X x i X { 1 , … , n } k⋀X⊆{1,…,n},|X|=k+1⋁i∈X¬xi¬⋀i∈XxiX{1,…,n}k
공간적으로 효율적인 카디널리티 제약 조건 변환에 관한 논문의 일부 링크 는 다항식 크기 (k .
- 의사 부울 제약 조건을 SAT로 변환 -Niklas Eén 및 Niklas Sörensson, JSAT 2 권 (2006), 1-26 페이지 (좋은 조사).
- 부울 카디널리티 제약의 효율적인 CNF 인코딩 -올리비에 베일리와 야시네 부카 흐드, 원리 프로그래밍과 제약 조건 프로그래밍 실습 2003, LNCS vol 2833, pg 108-122 (좋은, 구현하기 매우 쉬운).
- 불리언 카디널리티 제약 조건의 최적의 CNF 인코딩을 향한 -Carsten Sinz-절차 및 제약 조건 프로그래밍 실습 2005, LNCS 3709, pg 827-831.
- 카디널리티 제약 조건의 강력한 CNF 인코딩으로 -Joao Marques-Silva 및 Inês Lynce, 원칙 및 절차 프로그래밍 실습 2007, LNCS 4741, pg 483-497.
실제로 그러한 문제를 해결하는 데 관심이 있다면, 의사-부울 문제 (pseudo-boolean 문제에 대한 위키 기사 참조)를 공식화하고 의사-부울 솔버를 사용하는 것이 좋습니다 ( 의사-부울 경쟁 참조 ). 그렇게하면 카디널리티 제약은 의사-부울 제약 조건이고 언어의 일부입니다. 의사-부울 솔버가 직접 및보다 효율적으로 처리합니다.