일대일 정수 선형 프로그래밍 (ILP)에서 부울 논리 연산 표현


58

부울 값을 나타내는 일부 변수 가있는 정수 선형 프로그램 (ILP)이 있습니다. 의 정수가되도록 길게하도록 제한되는 0 또는 1 ( ).x i 0 x i1xixi0xi1

선형 제약 조건을 사용하여 이러한 0/1 값 변수에 대해 부울 연산을 표현하고 싶습니다. 어떻게해야합니까?

보다 구체적으로, (부울 AND), (부울 OR) 및 (부울 NOT)을 설정 하고 . 0/1의 명백한 해석을 부울 값으로 사용하고 있습니다 : 0 = false, 1 = true. 가 원하는대로 와 관련 되도록 ILP 제약 조건을 어떻게 작성 합니까?y 2 = x 1x 2 y 3 = ¬ x 1 y i x iy1=x1x2y2=x1x2y3=¬x1yixi

(이것은 CircuitSAT에서 ILP 로의 축소를 요구하거나 SAT를 ILP로 표현하는 방법을 요구하는 것으로 볼 수 있지만 여기서는 위에 표시된 논리 연산을 인코딩하는 명확한 방법을보고 싶습니다.)

답변:


66

논리 AND : 선형 제약 조건 , , , . 여기서 은 정수로 제한됩니다. 이것은 원하는 관계를 강화합니다. ( 선형 불평등 만으로도 할 수 있다는 것은 매우 깔끔합니다 .)y1x1+x21y1x1y1x20y11y1

논리 OR : 선형 제약 조건 , , , . 여기서 는 정수로 제한됩니다.y2x1+x2y2x1y2x20y21y2

논리 NOT : 사용하십시오 .y3=1x1

논리적 의미는 : 표현하려면 (즉, ), 우리는 논리적 OR의 구성을 적용 할 수 있습니다. 특히 선형 제약 조건 , , , . 여기서 는 정수로 제한됩니다.y4=(x1x2)y4=¬x1x2y41x1+x2y41x1y4x20y41y4

논리적 의미 : 가 유지해야 함을 나타내려면 및 가 이미 부울 값으로 제한되어 있다고 가정 할 때 선형 제약 조건 를 사용하면 됩니다.x1x2x1x2x1x2

XOR은 : 표현할 (배타적 논리합의 및 ) 사용 선형 부등식 , , , , 여기서 는 정수로 제한됩니다.y5=x1x2x1x2y5x1+x2y5x1x2y5x2x1y52x1x20y51y5


그리고 보너스로, 제로-원 (부울) 변수와 정수 변수가 혼합 된 문제를 공식화 할 때 도움이되는 기술이 하나 더 있습니다.

부울 (버전 1)에 출연 : 당신이 정수 변수가 있다고 가정하자 , 당신은 정의 할 되도록 의 경우 및 경우 . 추가로 알고 있다면 선형 부등식 , , . 그러나 이것은 의 상한과 하한을 알고있는 경우에만 작동합니다 . 또는상수 대해 (즉, )를 사용하면 여기에 설명 된 방법을 사용할 수 있습니다xyy=1x0y=0x=00xU0y1yxxUyx|x|UUxUU. 의 상한을 알고있는 경우에만 해당됩니다. .|x|

boolean으로 캐스트 (버전 2) : 같은 목표를 생각해 보자. 그러나 이제 우리는 의 상한을 모른다 . 그러나 알고 있다고 가정하십시오 . 다음은 선형 시스템에서 해당 제약 조건을 표현할 수있는 방법입니다. 먼저 새로운 정수 변수 도입하십시오 . 부등식 , , . 그런 다음 를 최소화하도록 목적 함수를 선택하십시오 . 목표 기능이없는 경우에만 작동합니다. 음수가 아닌 정수 변수 이 변수 를 부울로 캐스트하려는 경우 이면xx0t0y1yxt=xytnx1,,xnyi=1xi1 및 경우 , 다음을 도입 할 수 변수 불평등 , , 상기 목적 함수를 정의 을 최소화 합니다. 다시 말하지만 이것은 객관적인 함수를 정의 할 필요가 없습니다 (캐스트와 부울을 제외하고 결과 ILP의 타당성을 확인하고 변수의 일부 기능을 최소화 / 최대화하지 않으려는 경우).yi=0xi=0nt1,,tn0yi1yixiti=xiyit1++tn


몇 가지 훌륭한 연습 문제와 실제 예제를 보려면 Formulating Integer Linear Programs : A Rogues 'Gallery를 추천 합니다.


어떤 선형 프로그래밍 솔버가 이것을 해결할 수 있습니까? * .lp 또는 * .mps 형식의 제약 때문에 제약 조건의 한쪽은 변수가 아니라 고정 된 정수 여야합니다.
boxi

4
@boxi, * .lp 또는 * .mps 형식에 대해서는 아무것도 모르지만 모든 정수 선형 프로그래밍 솔버가이를 해결할 수 있어야합니다. 이 같은 경우 참고 ,이에 해당 당신이 원하는 형식으로 될 수있다. y x 0xyyx0
DW

다시 확인 했어 lp_solve로 해결할 수 있지만 예를 들어 qsopt는 해결할 수 없습니다. 이유를 모르겠습니다. 하지만 감사합니다 <3
boxi

@boxi, 방금 QSopt 온라인 애플릿 GUI를 확인했으며 를 변경하면 이러한 종류의 제약 조건을 처리 할 수 있으므로 무슨 일이 일어나고 있는지 잘 모르겠습니다. (* .lp 형식을 사용했습니다.) ILP 솔버가 이러한 시스템을 처리 할 수없는 경우 놀라게됩니다. QSopt에 대한 추가 질문이있는 경우 QSopt 지원 포럼으로 문의하십시오. x y 0xyxy0
DW

1
@ 프라 모드, 잘 잡아! 그 오류를 찾아 주셔서 감사합니다. 당신 말이 맞아요 해당 사례를 모델링하는 방법에 대한 새로운 질문 을했으며 해당 사례에 대한 답변을 받으면 이 답변을 업데이트하겠습니다.
DW

19

논리적 AND 관계는 다른 솔루션에서와 같이 세 가지 제약 조건 대신 범위 제약 조건 으로 모델링 할 수 있습니다 . 따라서 세 가지 제약 조건 단일 범위 제약 조건 사용하여 작성할 수 있습니다. 마찬가지로 논리 OR의 경우 :

y1x1+x21,y1x1,y1x2,
0x1+x22y11.
02y1x1x21.

NOT의 경우, 그러한 개선 사항이 없습니다.

일반적으로 ( way AND)의 제약 조건은 OR의 경우와 유사하게 : n 0 x in y n 1y=x1x2xnn0 n y x in 1

0xinyn1.
0nyxin1.

이 논문에는 매우 유사한
Abdelmonem Mahmoud Amer

3

XOR y = x1⊕x2에 대한 더 짧은 해결책을 찾았습니다 (x와 y는 이진 0, 1입니다)

한 줄만 : x1 + x2-2 * z = y (z는 정수임)


ILP에서 평등을 표현하려면 두 가지 불평등이 필요합니다. 또한 솔루션 를 피하려면 두 개의 부등식 합니다. 따라서이 답변에는 DW의 답변에서 6 개의 불평등과 비교할 때 4 개의 불평등과 추가 변수가 있습니다. 0 y 1x1=1,x2=0,z=200,y=1990y1
JiK

ILP에서 평등을 표현하기 위해서는 하나의 방정식 만 필요합니다. 이것은 LP 이론과 Gurobi 또는 CPLEX와 같은 소프트웨어 모두에 해당됩니다. @jIk, 당신이 "a "를 표현하는 것은 두 가지 불평등이 필요 하다는 것을 의미한다고 생각합니다 .b
whitegreen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.