최악의 실행 시간이 기하 급수적 인 다른 알고리즘이 있습니까? 반면에 Simplex Algorithm 이외의 경우 실제로 잘 작동합니다.


9

실행 시간이 최악의 경우 다항식이면 일반적으로 알고리즘을 "좋은 알고리즘"이라고합니다. 그러나 경우에 따라 (예 : Simplex 알고리즘) 최악의 알고리즘이 기하 급수적이지만 실제로는 잘 작동 할 수 있습니다.

Simplex 알고리즘 이외의이 상황에 대한 (결정 론적) 예가 있습니까?


1
당신은 관련 질문에 관심이있을 수 있습니다 : cstheory.stackexchange.com/questions/305/…
Radu GRIGore

답변:


13

최신 SAT 해석 알고리즘 은 최악의 실행 시간은 물론 지수이지만 대부분의 인스턴스를 매우 빠르게 해결할 수 있습니다. 그러나이 경우 실제 속도는 하나의 우아한 알고리즘보다 수년간의 알고리즘 엔지니어링의 결과입니다. 충돌 기반 절 학습으로 인해 SAT 솔버의 성능이 크게 향상되었다는 것을 알고 있지만, 이후 알고리즘에서 다양한 휴리스틱을 영리하게 사용하여 개선이 이루어졌습니다.


13

클러스터링 -means 알고리즘라도 유용도면에서 지수되지만 실제로는 아주 잘 작동합니다.k


13

Hindley-Milner 타입 추론은 EXPTIME-complete이지만 사람들이 일반적으로 작성하는 프로그램은 선형에 가깝습니다.


1
그래도 조금 다르지 않습니까? 내 기억에 따르면 Hindley-Milner가 제대로 수행하지 못하는 데 필요한 조건을 특성화 할 수 있다는 사실이 기억됩니다. 따라서 HM이 실제로 좋은 이유는 실제로이 중첩이 상당히 낮기 때문입니다 (보통 우리가 갈수록 더 많이 들여 쓰기) 우리가 화면의 가장 오른쪽 가장자리로 향할 때 바인딩에 더 깊이 관여하고 긴장하게됩니다 ...) 물론, 나는 전에 메모리 에서이 주장을했으며 최근에 참조를 복구 할 수 없었습니다.
Rob Simmons

2
아니요, 필수 조건은 아닙니다. 시퀀스에 각 추가 항목이있는 유추 유형의 크기를 제곱 할 수 있도록 일련의 let-bindings (중첩 없음)를 제공 할 수 있습니다. 예는 cstheory.stackexchange.com/questions/2428/… 를 참조하십시오 .
Neel Krishnaswami

예제는 SML에 있으며 OCaml의 작업 방식에 더 익숙하지만 바인딩 시퀀스가 ​​"let"인 경우 중첩 될 것이라고 생각 합니다. 그것들은 전역 함수를 정의하지 않았기 때문에 여기에 묵시적 중첩이 있습니다. 주어진 정의는 그 위에있는 모든 정의에 액세스 할 수 있으며 아래의 정의에는 액세스 할 수 없습니다.
amnn

1
@amnn : 중첩이 참조 된 중첩은 형식이 바인딩 된 형태 (예 : let z = (let y = e in e') in e''보다) let y = e in let z = e' in e''입니다.
Neel Krishnaswami

9

Brendan McKay의 해상 (No AUTomorphisms, Yes?) 프로그램은 그래프의 표준 레이블링 문제를 해결하고 (그래프 동형화 및 그래프 자동 형성 문제를 동시에 해결) 기하 급수적으로 최악의 성능을 보입니다 (Miyazaki, 1996). 그러나 대부분의 그래프, 특히 몇 가지 변형이있는 그래프에서 매우 빠르게 작동합니다.

특히 알고리즘은 정점을 각도별로 분할 한 다음 각 부분 사이의 각도로 분할하여 시작합니다. 이 과정이 안정되면 사소하지 않은 부분에서 꼭짓점을 구별하도록 선택해야하며, 이는 지수 동작으로 이어집니다. 대부분의 그래프에서이 분기 절차의 깊이는 작습니다.


나는 해상도 개선을 돕기 위해 임의성을 사용했다고 생각 했습니까? 이 경우 이는 단순 알고리즘과 매우 유사 할 수 있습니다 (그래프 동형 분석에 대한 평활 분석 개념은 분명하지는 않지만).
Joshua Grochow

1
일관된 표준 레이블을 작성해야하므로 임의성을 사용하지 않습니다. 그러나 정점을 분할하는 데 도움이되도록 사용자 정의 빌드 정점 불변 절차를 사용할 수 있습니다. 때때로이 불변은 그것이 어떻게 만들어 지는지 무작위로 보이며 (주로 거리-도 시퀀스에서 복잡한 기능 임) 충돌을 줄이기 위해서입니다.
데릭 스토리

1
이 정점 불변은 심플 렉스 알고리즘의 사이클 방지 규칙과 비교할 수 있습니다.
데릭 스토리


1

LP의 단순 알고리즘과 유사한 혼합 내쉬 평형을 찾는 알고리즘이 있습니다. (이름을 잊어 버렸습니다.) 지수 최악의 복잡한 경우가 있지만 실제로 실제로 잘 작동하는 모호한 기억이 있습니다.


Lemke-Howson 알고리즘을 의미합니까?
Rahul Savani

1

빈 패킹 (많은 변형)은 복잡성이 NP-hard 인 것으로 알려진 문제입니다.

http://en.wikipedia.org/wiki/Bin_packing_problem

그러나 "실제"버전에 적용될 때 많은 휴리스틱이 매우 잘 작동합니다. 일차원 적 빈 포장의 경우 첫 번째 맞춤과 같은 일부 휴리스틱을 포장합니다. 일차 감소; 최고로 잘 맞는; 가장 적합한 감소는 학생들에게 보여주는 주제로 매우 매력적입니다. 학생들은 종종 기본적인 휴리스틱을 발견 할 수 있습니다.


문제가 NP-complete이고 간단한 알고리즘이 문제를 처리 할 수있는 경우에도 많은 예가 있습니다. 특히 근사 알고리즘을 사용합니다. 그러나 실제로 지수 시간 알고리즘을 찾고 있습니다. 예제는 간단한 알고리즘으로 쉽게 해결할 수있는 어려운 문제와 관련이 있습니다. Bin 패킹 (또는 다른 문제)을 정확하게 해결하기위한 지수 시간 알고리즘이있을 수 있습니다. 실제로 다항식 시간이 걸립니다.
Arman

0

지속성 알고리즘 (Edelsbrunner-Letscher-Zomorodian의 원본, 그 이후로 많은 변형이 있음)은 최악의 입방이지만 실험에서 일반적으로 선형 시간으로 실행되는 것으로 보입니다.

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