실제로 반 직관적으로 해결할 수있는 문제?


21

최근 에는 알고리즘이나 복잡성에 대한 공식적인 과정을 밟지 않은 젊은 재능있는 자율 프로그래머에게 계산 복잡성의 개념을 비공식적으로 설명 하는 고통스러운 재미있는 경험을 겪었습니다. 놀랍게도 많은 개념이 처음에는 이상해 보였지만 일부 예 (PTIME, 난치도, 계산 불가능 성)에서는 의미가있는 반면, 다른 개념은 더 자연스럽게 보입니다 (감소, 시간과 공간을 자원으로하여 문제를 분류하는 것, 점근 분석) . 제가 실수로 SAT를 인정할 때까지 모든 것이 잘 진행되었습니다실제로 효율적으로 해결 될 수 있습니다 ... 그리고 그렇게 잃어 버렸습니다. 내가 설득력있게 이론을 주장하려고했던 것은 문제가되지 않았다. 아이는 그가 신경 쓰지 말아야 할 모든 인공적인 수학이라고 확신했다 . 잘...

¯ \ _ (ツ) _ / ¯

아니, 나는 마음이 아프지 않았고 그가 생각한 것에 관심이 없었습니다. 그것은이 질문의 요점이 아닙니다. 우리 대화는 다른 질문을 생각하게 했어

이론적으로 다루기 어려운 (초 다항식 시간 복잡성)이지만 실제로는 해결할 수있는 (휴리스틱, 근사, SAT 해답 등을 통해) 문제에 대해 얼마나 알고 있습니까?

나는별로 몰랐다. 엄청난 인스턴스를 효율적으로 해결하는 매우 효율적인 SAT 솔버가 있으며 Simplex가 실제로 훌륭하게 작동하며 몇 가지 문제 나 알고리즘이 있음을 알고 있습니다. 좀 더 완벽한 그림을 그릴 수 있습니까? 이 범주에 속하는 잘 알려진 문제 또는 문제 클래스는 무엇입니까?

TL; DR : 실제로 반 직관적으로 해결할 수있는 문제는 무엇입니까 ? 더 읽을 수있는 (업데이트 된) 리소스가 있습니까? 우리는 그들에게 특성이 있습니까? 그리고 마지막으로 일반적인 토론 질문으로 우리는 그렇지 않습니까?

편집 # 1 : 그러한 특성 분석 에 대한 마지막 토론 질문에 답하기 위해 Daniel Spielman과 Shang-Hua Teng이 [1]에 소개 한 개념 인 알고리즘 분석 에 대해 설명했습니다. 알고리즘의 평균 사례 분석. 위에서 설명한 특성은 아니지만 동일한 개념을 포착하여 흥미로 웠습니다.

[1] Spielman, Daniel A. 및 Shang-Hua Teng. "매끄러운 알고리즘 분석 : 왜 단순 알고리즘에 다항식 시간이 걸리는가?" ACM 저널 (JACM) 51, no. 3 (2004) : 385-463.


6
SAT가 실제로 효율적으로 해결 될 수 있다고 말함으로써 무슨 의미입니까? 친구가 인터넷 보안에 의존하는 이유는 무엇입니까? 실제로 어려운 문제가없는 것 같습니다. 견고성은 다중 시간 / 효율적인 용해도의 주요 장점 중 하나입니다.
찬드라 체 쿠리

6
그래프 동형은 자연스러운 후보입니다.
DW

2
@ChandraChekuri, 제가 의미 한 바는 실제로 SAT 해답자가 수백만 개의 변수와 절로 SAT 인스턴스에 응답 할 수 있다는 것입니다. 아니면 적어도 그것이 사실이라고 생각한 것입니다. "인터넷 보안"에 대한 귀하의 의견을 잘 모르겠습니다. 나는 형식주의에 반대하지 않고 이론적으로 다루기 어려운 문제에 관심이 있지만 모든 실제적인 목적 (아마도 근사치, 실제 사례의 특수 구조 등으로 인해)이 고려된다. 다루기 쉬운".
Konstantinos Koiliaris

1
요점은 모든 종류의 암호화 프로토콜의 보안이 (보통 훨씬 더 강한 것) 에 의존 하고 있으며, 따라서 SAT 솔버에게는 매우 어려운 일상적인 연습에서 발생하는 많은 문제의 예를 제공한다고 생각합니다. 또는 우리는 매우 희망합니다). PNP
Emil Jeřábek은 Monica를

2
이러한 맥락에서 일반적인 복잡성을 확인하는 것이 좋습니다. 실제로 정지 문제는 거의 항상 SAT와 같이 다항식 시간으로 해결할 수 있음이 밝혀졌습니다 (사실 SAT는 더 강력한 보증을합니다). "거의 항상"이란 의미는 입력의 길이가 증가함에 따라 알고리즘이 다항식 시간에 정지 (물론 정답을 출력)하는 입력의 비율이 1이되도록 알고리즘을 인정한다는 것입니다.
Guillermo Angeris

답변:


17
  • 고도로 구조화 된 SAT 인스턴스 (수백만 개의 변수에서도)는 종종 실제로 해결 될 수 있습니다. 그러나 수백 개의 변수가있는 만족도 임계 값 근처에있는 임의의 SAT 인스턴스는 여전히 열려 있습니다 (실제로 이러한 개체를 생성하는 경우 생성 한 개체가 만족 스러운지 여부는 우주의 수명에서 알 수 없음) 현재 SAT 솔버 사용). 이 관련 질문 및 답변에 관심 있을 수 있습니다 .

  • 도당 파인더는 "실제로"놀랍도록 훌륭합니다.

  • 정수 프로그래밍 및 혼합 정수 선형 프로그래밍 (일부 합리적인 정수 변수 포함)은 전체 운영 리서치 부서의 초점이며 실제로 (항상 그런 것은 아니지만) 실제로 해결할 수 있습니다.

  • 내가 이해 한 바에 따르면, 검증에서 발생 하는 많은 완전한 문제는 종종 실제로 해결 될 수 있지만, "실제적으로"는 "높은 구조화 된 사례"를 의미합니다. (반대로, 우리는 여전히 게임의 아주 작은 인스턴스에서 누가 이겼는지 알 수 없습니다. 이것은 또 다른 P S P A C E- 완전한 문제입니다.)PSPACEPSPACE

  • 계산 대수 기하학의 많은 문제는 Grobner베이스를 사용하는 작은 인스턴스에서 실제로 해결 될 수 있지만, 큰 인스턴스 또는 "복잡성"이 높은 작은 인스턴스 (Castelnuovo-Mumford 규칙성에 의해 측정 됨)에서는 비참하게 실패합니다. 그리고 이러한 문제는 심지어 완전합니다!EXPSPACE

  • DW의 의견에서 이미 지적했듯이 Graph Isomorphism은 실제로 거의 해결 될 수 있습니다. nauty, bliss, saucy 등과 같은 최신 GI 소프트웨어를 다루기가 매우 어렵습니다.


Joshua에게 감사합니다. 제안 된 가장 흥미롭고 광범위한 문제에 대해 알려 드리고자합니다.
Konstantinos Koiliaris

1
도당 파인더가 항상 실용적이지는 않습니다. 실제로 그래프에 따라 다릅니다. 그리고 귀하의 링크는 무작위 그래프에 대해서만 이야기하는 것 같습니다.
피터 쇼어

GI에 대한 확장 : 언급 된 것과 같은 AFAIK의 최첨단 GI 솔버는 최적화 된 개별화-정제 접근법을 사용합니다 (정련은 색상 정련인데, 이는 거의 모든 그래프에 대해 준 선형 GI 테스트로 이미 작동 함) 그러나 Neuen과 Schweitzer는 최근이 방법에 대해 지수 하한을 보였고 (실제적으로) 하드 인스턴스를 구성했습니다.
Watercrystal

1
@JoshuaGrochow : 예, 이것에 동의합니다. OP가 명시 적으로 지수 하한이 알려져 있지만 여기에서도 동일한 상황이 있지만 실제로 실제로 성능이 우수하다고 언급 했으므로 질문의 "반 직관적"부분을 확장하고 싶었습니다.
Watercrystal

1
나는 켈러의 추측에 대한 경험이 있습니다. (확실히 큰) 그래프가 많은 파벌 찾기 알고리즘을 방해했습니다.
피터 쇼어

14

힌들리 - 밀너의 형 시스템은 기능적인 프로그래밍 언어 (하스켈, SML, OCaml의)에 사용됩니다. 형식 유추 알고리즘은 실제로 거의 선형이며 놀랍도록 잘 작동하지만 DEXPTIME- 완전한 것으로 알려져 있습니다!

일반적인 의견 : 최악의 시간 복잡성이 알고리즘의 실제 성능을 측정하는 데 반드시 필요한 것은 아닙니다. 그러나 이론과 실제의 불일치가 복잡성 이론을 쓸모 없게 만든다는 것은 우리가 가능한 모든 수의 아주 작은 양만 사용하기 때문에 자연수는 낭비라고 말하는 것과 같습니다. 한 유명한 철학자는 "이론이없는 경험은 맹목적이지만 경험이없는 이론은 단순한 지적 놀이"라고 말했습니다.


FPL

6

주로 프로그래밍 언어의 추가 예제 :

  1. k-CFA (k-Control Flow Analysis)는 EXPTIME-complete (Van Horn & Mairson 2008)이지만 MLton과 같은 전체 프로그램 최적화 컴파일러가이를 수행합니다. 컴파일 시간은 길지만 거의 재앙이 아닙니다.
  2. (동적) 과부하 해결은 일반적으로 NP- 완료입니다 (Palsberg 2012). 그러나 현실 세계에서는 거의 문제가되지 않습니다.
  3. k 는 레지스터 수) , 이는 NP- 완료입니다. 그러나 다시 현실 세계에서는 거의 문제가되지 않습니다.
  4. SMT 해결은 일반적으로 NP- 완료이지만 상업용 SMT 솔버 (Z3 및 CVC4와 같은)는 일반적으로 성능이 뛰어납니다. SMT 솔버와 직접 작업하지는 않지만 Liquid Haskell과 Dafny에서 Z3을 간접적으로 사용했으며 확인 시간이 괜찮은 것처럼 보입니다.
  5. Presburger 산술의 결정 문제는 실제로 복잡하지만 (Fischer & Rabin 1974) Bill Pugh의 결정 알고리즘 인 Omega 테스트 (Pugh 1991)는 일반적으로 하위 다항식 시간 내에서 실행됩니다.

Onn


참고 문헌 :

[1] David Van Horn과 Harry G. Mairson. kCFA 결정이 EXPTIME에 완료되었습니다. 에서 기능적 프로그래밍에 13 ACM SIGPLAN 국제 학술 대회 (ICFP '08). ACM, 뉴욕, 뉴욕, 미국, 275-282.

[2] http://web.cs.ucla.edu/~palsberg/paper/dedicated-to-kozen12.pdf

[3] MJ 피셔와 MO 라빈. 1974. PRESBURGER ARITHMETIC의 수퍼 지수 적 복잡성. 기술 보고서. 매사추세츠 공과 대학, 케임브리지, MA, 미국.

윌리엄 퓨. 1991. 오메가 테스트 : 의존성 분석을위한 빠르고 실용적인 정수 프로그래밍 알고리즘. 에서 슈퍼 컴퓨팅에 1991 년 ACM / IEEE 학술 대회 (슈퍼 컴퓨팅 '91). ACM, 뉴욕, 뉴욕, 미국, 4-13.


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