SAT 및 기타 결정 문제에 대한 근사 알고리즘이없는 이유는 무엇입니까?


18

NP 완료 결정 문제가 있습니다. 문제의 인스턴스가 주어지면 문제가 발생하면 YES를 출력하고 그렇지 않으면 NO를 출력하는 알고리즘을 설계하고 싶습니다. (물론 알고리즘이 최적이 아닌 경우 오류가 발생합니다.)

이러한 문제에 대한 근사 알고리즘을 찾을 수 없습니다. 나는 SAT를 구체적으로 찾고 있었고 근사 알고리즘 에 대한 Wikipedia 페이지 에서 다음을 발견했습니다 . 이 접근법의 또 다른 한계는 최적화 문제에만 적용되고 만족과 같은 결정 문제를 "순결"하지는 않지만 종종 가능하지만 .. .

예를 들어, 우리가 근사 비율을 알고리즘의 실수 횟수에 비례하는 것으로 정의하지 않는 이유는 무엇입니까? 우리는 어떻게 욕심과 차선책으로 결정 문제를 어떻게 해결합니까?


5
MAX-SAT에 대한 근사 알고리즘이 있습니다.
Yuval Filmus

2
MAX-SAT는 의사 결정 문제가 아닙니다.
Ribz

15
근사 알고리즘은 항상 최적화 문제를위한 것입니다.
Yuval Filmus

4
따라서 기본적으로 빠르게 끝나는 알고리즘을 원하지만 가끔 틀린 대답을 할 수 있습니다. 여기서는 "근사 알고리즘"및 "최적화"와 같이 잘 정의 된 용어를 사용하여 문제를 혼동하고 있다고 생각합니다. 그것들은 매우 특정한 의미를 가지고 있습니다. 휴리스틱을 찾고 있다고 생각합니다. 해당 용어로 질문을 업데이트하거나 더 많은 혼란을 피하기 위해 처음부터 새 질문으로 시작하면 더 나은 결과를 얻을 수 있습니다.
AnoE

이것은 완전한 대답은 아니지만 이유의 일부를 설명합니다. 낮은 비트의 잘못된 비트 만 갖는 것이 비트의 잘못된 비트보다 낫지 않은 중요한 SAT 문제가 있습니다.
Joshua

답변:


33

근사 알고리즘은 결정 문제가 아니라 최적화 문제에만 해당됩니다.

의사 결정 문제를 해결하려고 할 때 근사 비율을 알고리즘이 저지르는 실수의 일부로 정의하지 않는 이유는 무엇입니까? "근사 비율"은 잘 정의 된 표준 의미를 가진 용어이기 때문에 다른 의미를 지니고 있기 때문에 두 가지 다른 용어에 대해 동일한 용어를 사용하는 것이 혼란 스러울 수 있습니다.

자, 결정 문제에 대해 알고리즘이 저지르는 실수의 수를 정량화하는 다른 비율 (예 : "비율")을 정의 할 수 있습니까? 글쎄, 어떻게 해야할지 명확하지 않습니다. 그 분수의 분모는 무엇입니까? 또는 다른 방법으로 말하면 : 무한한 수의 문제 인스턴스가있을 것이며, 그중 일부에는 알고리즘이 올바른 대답을 제공하고 다른 일부는 잘못된 대답을 제공하므로 비율은 다음과 같습니다. "무한 도로 나눈 것", 그리고 그것은 무의미하거나 정의되지 않은 것으로 끝납니다.

또한, 우리는 정의 할 수 있습니다 크기의 문제의 경우에, 실수 알고리즘 실수의 비율로 N . 그런 다음 한계가 존재하는 경우 r n 의 한계 를 n 로 계산할 수 있습니다. 이 아르 자형아르 자형잘 정의되어 있어야합니다 (한계가있는 경우). 그러나 대부분의 경우 이것은별로 유용하지 않을 수 있습니다. 특히 문제 인스턴스에 대해 균일 한 분포를 암시 적으로 가정합니다. 그러나 실제 상황에서 문제 인스턴스에 대한 실제 분포는 균일하지 않을 수 있습니다. 종종 균일하지 않습니다. 결과적으로 이러한 방식으로 얻는 숫자는 원하는만큼 유용하지 않은 경우가 많습니다. 알고리즘의 우수성에 대한 오해의 소지가 있습니다.

사람들이 난치성 (NP- 경도)을 다루는 방법에 대해 자세히 알아 보려면 난치성 다루기 : NP- 완전 문제를 살펴보십시오 .


3
+1. 그러나 마지막 점은 확실하지 않으므로 n이 길이 n의 문자열 수에 대해 길이 n을 입력 할 때 프로그램이 실수의 수를 무한대로 진행함에 따라 근사 비율을 한계로 정의 할 수 있다고 주장 할 수 있습니다. 물론 "YES"(또는 "NO")를 출력하는 간단한 프로그램이 좋은 비율 (때로는 1!)을 달성하기 때문에이 방법은 유용하지 않습니다.
aelguindy

1
@det, 그것은 별도의 질문이며, 별도로 질문해야합니다 (표준 교과서 또는 온라인 리소스에서 읽은 후에). 게시물 당 하나의 질문 만하는 것이 좋습니다.
DW

1
@aelguindy, 좋은 지적. 이에 따라 답변을 업데이트했습니다.
DW

2
@det 왜 탐욕 스러운가? 의사 결정 문제를 "거의"해결한다는 것은 무엇을 의미합니까?
Raphael

2
@Mehrdad : 일반적으로 최악의 오류에 의해 근사 알고리즘을 평가합니다. 예를 들어, 주어진 근사 알고리즘이 항상 최적 결과의 5/6 이상인 결과를 찾는다고 말할 수 있습니다. 이를 의사 결정 문제로 해석하는 실제 방법은 없습니다. 알고리즘이 때때로 0.1을 방출하는 경우 (예를 들어) 항상 0.9만큼 꺼져 있거나 (이 경우 최악의 경우 항상 0.5를 방출하는 것이 더 나을 것입니다) 또는 "대략적인"강도는 가짜이며 "0.1"입니다 "는 실제로"0 "을 의미합니다.
ruakh

14

의사 결정 문제에서 근사 비율과 같은 것을 보지 못하는 이유는 일반적으로 의사 결정 문제에 대해 일반적으로 묻는 질문의 맥락에서 이해가되지 않기 때문입니다. 최적화 설정에서는 "가까운"것이 유용하므로 의미가 있습니다. 많은 환경에서 의미가 없습니다. 이산 대수 문제에서 얼마나 자주 "가까운"지 보는 것은 이치에 맞지 않습니다. 그래프 이성질체를 찾는 데 얼마나 자주 "가까운"지 이해하는 것은 의미가 없습니다. 마찬가지로, 대부분의 의사 결정 문제에서 올바른 결정에 "가까운"것은 합리적이지 않습니다.

실제 구현에서는 문제의 어느 부분이 "신속하게"결정될 수 있고 어떤 부분이 불가능한지를 아는 것이 도움이되는 경우가 많이 있습니다. 그러나 최적화와 달리이를 정량화하는 모든 방법은 없습니다. 제안한대로 통계적으로 수행 할 수 있지만 입력의 통계 분포를 알고있는 경우 에만 가능합니다. 대부분의 경우 의사 결정 문제에 관심이있는 사람들은 그러한 배포를하는 것이 운이 좋지 않습니다.

사례 연구로서 정지 문제를 고려하십시오. 정지 문제는 결정 불가능한 것으로 알려져 있습니다. 컴파일러를 만들 때 해결할 수있는 정말 유용한 문제이기 때문에 부끄러운 일입니다. 그러나 실제로 우리는 대부분의 프로그램이 정지 문제 관점에서 실제로 분석하기가 매우 쉽다는 것을 발견했습니다. 컴파일러는이를 활용하여 이러한 상황에서 최적의 코드를 생성합니다. 그러나 컴파일러는 특정 코드 블록을 결정할 수 없음을 인식해야합니다 . "결정 가능성이있는"코드에 의존하는 모든 프로그램은 문제를 일으킬 수 있습니다.

그러나 이러한 특정 중지 문제를 해결하는 데 얼마나 잘 수행하는지 결정하기 위해 컴파일러에서 사용하는 메트릭은 암호화 프로그램에서 특정 쌍의 프라임 쌍이 공격에 대해 허용 가능한 수준으로 강화되는지 테스트하는 데 사용되는 메트릭과 매우 다릅니다. 모든 솔루션에 맞는 크기는 없습니다. 이러한 메트릭을 원할 경우 특정 문제 공간 및 비즈니스 논리에 맞게 맞춤화 할 수 있습니다.


내가 아는 것처럼 의사 결정 문제를 해결하는 유일한 방법은 매우 비효율적 일 수있는 최적의 알고리즘을 설계하는 것입니까? 의사 결정 문제 (NP-complete)가 있고 해결책을 찾기 위해 욕심 많은 (빠른) 알고리즘을 생각해 보았습니다. 이 문제를 어떻게 해결할 수 있습니까? 이런 종류의 문제에 초점을 맞춘 논문이 있습니까?
Ribz

1
@det 뒤로 밀고 문제를 해결하십시오. NP-complete 문제가있는 경우 오히려 문제가 발생하지만 실제로 해결할 필요 는 없습니다 . 예를 들어 완벽한 답이 항상 필요한 것은 아닙니다. 아마도 가까이는 충분할 것입니다. 또는 쉬운 경우의 하위 집합에 대한 문제를 해결하고 어려운 경우에 대한 문제를 해결할 수 있습니다. 예로서, 패킹 알고리즘은 종종 NP- 완료이지만, 확률 론적 접근법을 사용하여 최적의 5 % 이내에 안정적으로 도달하는 알고리즘이 일반적이다.
Cort Ammon-복원 모니카

2
정직하게 말해서, NP- 완료 프로그램을 해결하기 위해 탐욕스러운 알고리즘을 생각해 낸다는 것은 문자 그대로 전체 컴퓨터 과학 / 수학 커뮤니티를 맡는 것과 동일합니다. P 시간에 NP-complete 프로그램에 대한 알고리즘을 찾으면 매우 적어도 당신은 P = NP를 해결하기위한 $ 100 만 점토 상을받을 것입니다. 실제로, 검색 결과에 따라 컴퓨팅의 모양이 바뀌고 전체 보안 / 암호화 산업이 밤새 완전히 개선 될 것입니다. 작업의 문구가 NP- 완전하지 않도록 조정하는 것이 좋습니다.
Cort Ammon-복원 모니카

NP-complete 문제에 대해 탐욕스러운 정확한 알고리즘을 사용했습니다. 작은 경우 만 해결하면되었고 주말에 64 프로세서 서버를 얻을 수있었습니다.
Patricia Shanahan

8

기존 답변 외에도 의사 결정 문제에 대한 대략적인 솔루션을 갖는 것이 합리적이지만 생각과는 다른 상황이 있음을 지적하겠습니다.

이 알고리즘을 사용하면 두 결과 중 하나만 확실하게 결정되고 다른 결과는 부정확 할 수 있습니다. 소수에 대해 Miller-Rabin 테스트를 수행 하십시오. 예를 들어, 테스트에서 숫자가 소수 가 아니라고 판단 되면 그 결과는 확실합니다. 그러나 다른 경우에는 숫자가 아마도 소수 임을 의미합니다 . 얼마나 많은 계산 시간을 투자 할 것인지에 따라 결과에 대한 신뢰도를 높일 수 있지만, 프라임이 아닌 경우와 마찬가지로 100 %는 아닙니다.

이는 결정 불가능한 문제를 해결할 때 특히 강력합니다. 특정 코드 조각에 대한 중지 문제를 해결하는 도구를 작성할 수 있습니다. 프로그램이 끝없이 반복되지 않는다는 증거를 발견하면 100 % 확실하게 주장 할 수 있습니다. 이러한 증명을 찾을 수없는 경우 프로그램 제어 흐름이 도구에서 분석하기에 너무 복잡 할 수 있지만 그것이 영원히 반복 될 것이라는 증거는 아닙니다. 제어 구조를 단순화하면 도구가 특정 작업을 중단 할 것임을 증명할 수있는 간단한 프로그램을 만들 수 있습니다.


확률 론적 (답변) 알고리즘과 근사법 (질문) 알고리즘에는 큰 차이가 있습니다. 특히, 두 가지 의 조합 은 매우 특별한 품종입니다.
Raphael

또한 이 문맥에서 용어의 합리적인 해석을 가정 할 때 정지 문제에 대한 확률 적 알고리즘이 존재하지 않는다는 것을 알고 있습니다.
Raphael

@Raphael 나는 대답이 확률 적 알고리즘에 특정되도록 의도하지 않았습니다. 밀러 라빈의 경우는 사실이지만, 당신이 언급했듯이, 이것은 더 이상 정지 문제의 예에서는 사실이 아니며,이 행동을하는 대부분의 경우에는 사실이 아니라고 생각합니다. 내가 만나고 싶은 요점은 단순히 하나의 결과에 대해서만 확신을 가지지 만 다른 결과에는 확신이 없다는 것입니다.
ComicSansMS

일부 문제가 반 계산 가능하다는 것 이상을 말하지 않으면 질문에 대답하지 않는다고 생각합니다.
Raphael

@Raphael 내 대답은 반 계산 문제에만 국한되지 않습니다. 사실, 내가 설명한 접근법은 반 계산 가능한 문제에도 적용되지 않는다고 생각합니다. 거기에서 함수의 정의되지 않은 브랜치에 도달했는지 확실하게 알 수 있으므로 결과가 없다고 확실히 주장 할 수 있습니다. 내가 설명 한 내용은 다음과 같습니다. 답변이있을 수 있지만 알고리즘은 그것을 넘어 질 정도로 충분히 열심히 보지 않았을 수 있습니다.
ComicSansMS
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.