왜 P에서 선형 프로그래밍이지만 정수 프로그래밍 NP-hard입니까?


35

선형 프로그래밍 (LP)은 P에 있고 정수 프로그래밍 (IP)은 NP- 하드입니다. 그러나 컴퓨터는 유한 한 정밀도로만 숫자를 조작 할 수 있기 때문에 실제로 컴퓨터는 선형 프로그래밍에 정수를 사용하고 있습니다. 이 때문에 LP와 IP가 동일한 복잡성 클래스에 있지 않아야합니까?


7
jmite의 답변에 약간의 추가 : 무결성 제약으로 인해 문제가 훨씬 더 어려워지는 경우가 많이 있습니다. 예를 들어, 정수 배낭 문제는 NP-Hard이지만 분수 배낭 문제는 다항식 시간으로 해결할 수 있습니다. 따라서 이것은 LP 및 IP에 해당되는 것이 아닙니다.
user340082710

7
컴퓨터가 정수로 작업을 수행한다고 생각하더라도 반환 된 솔루션이 정수라는 의미는 아닙니다. 합리적, 두 정수의 비율 일 수 있습니다 . 그리고 그것은 훨씬 더 많은 유연성을 제공합니다. 물론 합리적인 솔루션을 항상 IP에 적합한 솔루션으로 변환 할 수는 없습니다 . 일반적으로 IP는 통합 솔루션을 요구하는 것보다 변수에 더 많은 제약이 있습니다. 0,1 정수 프로그램을 생각해보십시오 .
megas

1
원하는 경우, 특히 합리적 인 경우 무한 정밀도로 숫자를 조작하는 것은 어렵지 않습니다. 유한 정밀도는 단순히 런타임을 줄이기위한 최적화입니다.

2
@Hurkyl "원하는 경우, 특히 합리적 일 때 무한 정밀도로 숫자를 조작하는 것은 그리 어렵지 않습니다." sqrt (2) 등과 같은 유리수 + 숫자를 포함하는 계산 가능한 숫자라는 실수의 엄격한 하위 집합이 있으며 튜링 머신에서 계산 가능한 숫자 세트로 정의됩니다. 여기에 포함되지 않은 컴퓨터는 정의에 의해 컴퓨터로 조작 할 수 없습니다.
Sasha the Noob

1
@SashatheNoob 당신이 말하는 것은 실제로 Hurkyl의 말과 모순되지 않습니다. 계산 가능한 수에는 정확도에 대한 사전 정의 된 최대 제한이 없습니다 (튜링 머신의 메모리가 충분하면 무한정의 정밀도로 임의로 설정할 수 있음). 계산 가능한 숫자의 부분 집합에 모든 합리적인 숫자가 포함되어 있다고 가정하면 컴퓨터가 무한정의 숫자를 조작 할 수 있음을 인정합니다. (Hurkyl의 진술은 절대적으로 사실입니다. 특정 데이터 유형에 대해 정밀도가 제한된다는 사실은 단지 최적화 일뿐입니다.)
BrainSlugs83

답변:


9

50 명의 담당자가 필요하기 때문에 의견을 말할 수 없지만 라파엘의 의견에 대해 몇 가지 오해가 퍼져있다.

이것은 절대적으로 거짓입니다. 요점은 실제로 볼록 함입니다. 일부 기술적 제약 조건을 제한하고, 볼록 세트에 대한 볼록 함수를 최소화 (또는 오목 함수를 최대화)하는 것은 다항식 시간 수렴의 의미에서 본질적으로 사소한 것입니다.

느슨하게 말해서, "수학적"최적화 문제의 볼록성과 "컴퓨터 과학"최적화에서 욕심 많은 알고리즘의 실행 가능성 사이에 대응이 있다고 말할 수 있습니다. 이는 로컬 검색 방법을 모두 사용할 수 있다는 의미입니다. 욕심 많은 알고리즘을 역 추적 할 필요가없고 볼록 최적화 문제에서 하강 방향을 후회할 필요가 없습니다. 목표 함수에 대한 로컬 개선은 항상 세계 최적에 가깝습니다.

볼록하지 않은 경우에는 그렇지 않습니다. 여기에는 전역 최소값이있을 수 있지만 NP 문제에 적용될 때 욕심 알고리즘이하는 것과 같은 방식으로 로컬 하강 알고리즘이 항상 그려지는 여러 개의 로컬 최소값이 있습니다. 때때로 그들은 대부분의 경우에 맞지 않는 진정한 최적을 찾습니다.


23

짧은 대답 : 정수를 사용하여 SAT대한 부울을 시뮬레이션 할 수 있기 때문에 자신을 제한하지 않으면 실제로 SAT를 시뮬레이션 할 수 없습니다. 가능한 대답을 얻을 수 있지만 시뮬레이션하려는 SAT 인스턴스와 관련하여 더 이상 의미가 없습니다.

이것에 대한 답은 그들이 같은 복잡성 클래스에 속하지 않는다는 것입니다. 라는 증거는 아무도 없습니다 . 문제가 왜 다른지에 대한 더 깊은 이유를 이해한다면 복잡성 클래스가 왜 다른지 이해해야합니다.PNP


21

선형 프로그래밍이 "효율적인"이유는 솔루션 공간이 단일 볼록 다면체로 표현 될 수 있기 때문입니다. 해당 다면체에서 "가장 높은"정점을 찾으려고하면 ( "높이"를 최대화 할 수량에 맞추기 위해 선형 프로그래밍 문제에 선형 변환을 적용 할 수 있음) 모든 정점에서 모서리를 따라 이동할 수 있습니다. "내리막"을 가지 않아도 가장 높은 지점. 정수 프로그래밍을 "고난"하게 만드는 이유는 지속적인 솔루션 공간이 없지만 많은 분리 된 솔루션 공간이 있으며 최적의 솔루션을 향해 점진적으로 작업 할 수있는 방법이 없다는 것입니다.


2
여기서 키워드는 "볼록 함"
cody

1
이 언덕은 단순한 방법을 사용하지 않습니까? 최악의 경우 다항식으로 알려진 변형이 있습니까?
jbapple

1
연속 공간보다 이산 공간 (이산 검색 가능)에서 해결하기 쉬운 많은 문제가 있습니다.
Raphael

@Raphael : 그러한 문제의 예를 들어 줄 수 있습니까? 나는 이것에 대해 생각하고 있었고 많은 것을 생각해 낼 수 없었다.
코디

@cody 예를 들어 (1 차원) 함수의 최대 / 최소값 찾기. 유한 검색 공간을 유한 검색 공간으로 줄일 수 있다는 점만 주목할만한 귀여운 예를 보려면 여기 를 참조 하십시오 . LP는 그런 방식으로 특별합니다. 다면체의 모서리 만 고려하면된다는 점에 주목하면 유한 한 검색 공간을 얻게됩니다. 일반적으로 연속 영역은 무차별적인 힘이 없으며 속도를 높이는 영리한 휴리스틱 이 없음을 의미 합니다.
Raphael

3

다른 답변은 정확하지만 약간 기술적입니다. 행렬을 스윕 (제거)하고 해결책을 찾고 있다고 가정하면 행렬은 다음과 같습니다.

column x1 x2 x3 x4 x5 x6 | solution
-----------------------------------
       1           1  1  | 3
          1              | 1
             1     1     | 2
                2  1  1  | 1  

Lineair 프로그래밍에서 이제 비 피벗 열 (x5, x6)을 0으로 설정하고 x4를 0.5로 설정하고 사소한 솔루션을 찾을 수 있습니다. 정수 프로그래밍에서는 피벗이 아닌 열을 0으로 설정할 수 없습니다. 해결책을 찾기가 더 어렵습니다 (NP-hard). 또한 해는 에 있으므로 유한 / 무한 정밀도와 직접 관련이 없습니다.Q

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.