문제

변수 $ v $ = $ \ {v_1, ..., v_m \} $ < / span>.

Total $ n $ at-one-one (AMO) 제약 조건 (주어진 세트의 대부분의 하나의 요소에서 true ) 변수 세트 $ V $ ,

$$ amo \, (v_1, v4, \nnev v_6, v_ {10}) \\ ... \\ amo \, (v_2, \ neg v3, v_7 ) $$

Problem: Find an assignment to $V$ that maximize
         the number of satisfiable AMO constraint set. 
.

i를 MAX-SAT 문제로 표현할 수 없습니다.

지금까지 시도한 (시도 1) : 가장 중요한 제약 조건 각각에 대해 하드 제한 조건을 사용합니다. 이것은 $ amo (v_i, ..., v_w) $ 의 인코딩으로 작동하지 않습니다. $ 은 각 $ amo $ 과 모든 이들 모두는 동일한 무게 (탑 무게)를 할당했습니다. 이 세트의 해결책은 최대 하나가 아닐 수도 있습니다.

시도 (2) : 위의 문제를 해결하려면 상대 절을 시도했습니다. I.E.E., 각 절에 대해 조항의 크기에 비례하는 중량을 할당합니다. 이렇게하면 만족스러운 더 짧은 절을 할당하는 것에 대한 선호가 있습니다. 그러나이 모든 절이 같은 길이가있는 것처럼 극단적 인 상황에서는 작동하지 않습니다.

나는 SAT 솔버에 대한 경험이 있지만 이는 제 첫 번째 최대 SAT 문제 시도입니다.

도움이 되었습니까?

해결책

MAXSAT에서 소프트 제약 조건을 만드는 표준 방법은 레이블 변수를 사용하는 것입니다.

$ amo_j $ 제약 조건, 새로운 변수 $ l_j $ 을 만듭니다.그런 다음 무게 $ 1 $ 을 사용하여 단위 절 $ (\ lnot l_j) $ 을 만듭니다. $ 1 $ 리터럴 $ L_J $ 표준 $ amo_j $ 인코딩 만 포함 된 $ amo_j $ 인코딩은 하드 (무한 무게) 조항 만 포함합니다.

레이블 변수 $ l_j $ $ l_j= true $ 을 설정합니다. $ amo_j $ 하드 제약 조건을 "끄십시오. $ (\ lnot l_j) $ .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top