간단하고 실용적인 결정 알고리즘, 복잡한 실행 시간


18

종종 알고리즘의 실행 시간이 복잡한 표현 인 경우 알고리즘 자체도 복잡하고 실용적이지 않습니다. 점근 적 실행 시간의 각 큐브 루트 및 요인은 알고리즘에 복잡성을 더하고 실행 시간에 상수 요인을 숨기는 경향이 있습니다.loglogn

이 경험 법칙이 실패한 놀라운 예가 있습니까?

물론 아주 간단한 최악의 실행 시간이 있더라도 구현하기 어려운 알고리즘의 를 쉽게 찾을 수 있습니다. 그러나 대화는 어떻습니까?

구현하기 쉽지만 최악의 경우 점근 적 실행 시간으로 표현이 매우 복잡한 매우 단순하고 실용적인 결정 론적 알고리즘의 예가 있습니까?

"결정적"및 "최악의 경우"라는 키워드에 유의하십시오. 단순한 무작위 알고리즘 의 분석은 상당히 쉽게 복잡한 표현으로 이어집니다.

물론 "복잡한"것은 맛의 문제입니다. 어쨌든, 나는 당신의 논문 제목에 너무 못생긴 표현을보고 싶습니다. 그리고 하나의 자연 매개 변수 (입력 크기, 노드 수 등) 의 복잡한 기능을 선호합니다 .


추신. 내가 것이라고 생각 하지 CW를이 "큰 목록 질문"확인하지. 하나의 훌륭한 예를 찾고 싶습니다 (존재하는 경우). 따라서 지금까지 답변보다 "더 나은"것으로 생각되는 경우에만 다른 답변을 게시하십시오.


2
AKS 우선 순위 테스트 알고리즘이 답으로 인정됩니까? 달리기 시간의 "복잡성"이 어떤면에서 소수 분포의 의사 난수 (pseudorandomness)의 결과이기 때문에 망설이고 있습니다.
arnab

제 생각에는 최악의 경우가 "모든 것을 뛰어 넘는"원인이되고 모든 것이 런타임을 측정하는 것입니다. 따라서 자연스럽게, 쉬운 알고리즘은 쉬운 WC 런타임을 갖습니다. 약간의 트릭으로 작은 비트를 면도하려고하면 복잡한 런타임이 나타납니다. 그러나 당신의 질문은 흥미 롭습니다. 내 감정이 옳은지 궁금합니다.
Raphael

@arnab : 감사합니다. AKS는 좋은 생각입니다. 그러나 우리가 그것을 "실제"라고 부를 수 있는지 확실하지 않습니까?
Jukka Suomela

설문 조사 전파, 제약 전파 또는 순차적 TRW와 같은 메시지 전달 체계가 "알고리즘"으로 간주됩니까? 쉽게 런타임 예측하기 어려운, 구현
야로 슬라브 Bulatov

죄송합니다. 저는 항상 Pollard의 rho 방법을 좋아합니다. 간단하고 실용적이며 분석이 매우 어렵지만 알고리즘의 임의성으로 인해 게시물에 대한 답변으로 자격이 없습니다 ...
Hsien-Chih Chang 張顯 之

답변:


20

내가 생각할 수있는 가장 좋은 예 는 평면에서 줄 의 배열로 레벨 을 계산하는 알고리즘 (아래에 설명 됨)입니다 . 즉, 수직으로 정확히 줄 을 가진 점으로 형성된 다각형 선 입니다. 이것은 문제로 알려진 가장 효율적인 알고리즘이 아닙니다. 더 간단한 복잡도를 가진보다 효율적인 알고리즘이 있지만,이 알고리즘이 대부분이 아니라면 대부분 실용적이라고 생각합니다. 수준의 복잡성을 사용하기 때문에 분석이 빡빡하지 않을 것입니다 . 이는 유명한 공개 문제입니다 (분석의 다른 모든 용어는 빡빡합니다). 그럼에도 불구하고 레벨에 대한 향상된 경계 가 실행 시간을 훨씬 간단하게 만들지 의심 합니다. 라고 가정하겠습니다N K K K K = N / 2 , N을knkkkk=n/2복잡성을 의 함수로 작성합니다 .n

이 알고리즘은 라인 스윕 패러다임을 기반으로하며 두 개의 운동 운동 토너먼트를 운동 우선 순위 대기열로 사용합니다. 라인이 레벨 위 또는 아래로 내려 가서 한 운동 토너먼트에서 다른 토너먼트로 라인을 이동하면 삽입 및 삭제가 수행됩니다 . 따라서 삽입 및 삭제가 있습니다 ( 수준 복잡성에 대해 Dey의 경계 사용 ). 각 이벤트는 시간 내에 처리되며 이벤트가 있습니다 ( 은 은 선분 배열의 상단 엔벨로프의 복잡성이며K O ( N 4 / 3 ) K O ( 로그 없음 ) O ( N 4 / 3 α ( N ) 로그 N / 로그 로그 N ) α ( N ) 로그 N / 로그 로그 N ( 로그 없음을 )(logn)kO(n4/3)kO(logn)O(n4/3α(n)logn/loglogn)α(n)logn/loglogn(logn) -ary 트리). 총 실행 시간은

O(n4/3α(n)log2n/loglogn).

자세한 내용과 참조는 Timothy Chan의 원고 http://www.cs.uwaterloo.ca/~tmchan/lev2d_7_7_99.ps.gz 를 확인하십시오. 계수는 이진 (의 intead 사용하여 제거 할 수있다 -ary) 운동 시합하지만 실제로 I이 수행 된 시험에서 운동 우선 순위 큐를 가속화. 키네틱 토너먼트 대신 키네틱 힙을 사용하면 복잡성이 조금 더 나 빠지고 악화됩니다 (알고리즘은 여전히 ​​실용적 임) ( 제곱근 안의 가 표시되어야 함).( log n ) 로그1/loglogn(logn)log


훌륭한 예, 감사합니다! 이기는 것은 쉽지 않습니다. :)
Jukka Suomela

1
이 알고리즘은 구현하기 매우 쉬운 무작위 알고리즘보다 실제로 느리다 (이 알고리즘 중 하나를 구현 한 누군가로서 (내 논문 "평면 배열로 걷기"참조).
Sariel Har-Peled

이 답변은 내가 생각했던 것과 가장 가까운 것 같습니다. 그러나 신선한 아이디어가 있다면 누구나 기뻐할 것입니다!
Jukka Suomela

24

조합 찾기 데이터 구조 작업은 다음 기준을 충족하는 것으로 보입니다.

http://en.wikipedia.org/wiki/Disjoint-set_data_structure


2
실제로, 나는 같은 대답을 게시했지만 당신이 나를 이길 것을 알게 된 후에 그것을 삭제했습니다. :) 비 이론가도 발견 할 수있는 단순하고 우아한 알고리즘이지만 역 행성 Ackermann은 복잡성을 상각했습니다.
워렌 슈디

음, 당신이 그것을 비교한다면 그 "복잡"보이지 않는 시간 O ( n은 4 / 3 α ( N ) 로그 2 N / 로그 로그 N ) Guilherme의 대답을. :)O(α(n))O(n4/3α(n)log2n/loglogn)
Jukka Suomela 08

Union-find의 복잡성을 증명하기위한 알고리즘 길이의 비율은 아마도 타의 추종을 불허합니다. 세 가지 작업 모두 9 줄의 코드입니까?
닐 크리슈나 스와미

1
나는 복잡한 분석을 가진 단순하고 실용적인 알고리즘에 관한 질문이 아니라고 생각합니다 . 문제는 복잡한 실행 시간을 가진 간단하고 실용적인 알고리즘 , 즉 상한에 대해 얻은 실제 표현에 관한 것입니다.
Guilherme D. da Fonseca

6

심플 렉스 알고리즘. 구현하기 쉽고 실제로 훌륭하게 작동하지만 이론적으로 분석하기가 엉망입니다.


예, 분석 하기는 어렵지만 Simplex의 실행 시간이 복잡한 특정 함수에 의해 결정된다는 결론을 내린 분석이 있습니까? n
Jukka Suomela 8

실제로 심플 렉스는 Klee-Minty 구성을 통해 최악의 경우 지수 시간이 걸리는 것으로 알려져 있습니다. Jukka가 묻는 것의 예가 아니라고 생각합니다
Suresh Venkat

1
어쩌면 나는 단순한 알고리즘보다는 단순한 방법을 말했을 것입니다. Klee-Minty 큐브와 그 변형은 일부 바닐라 피봇 규칙에 적용됩니다. 그러나, 예를 들어, 랜덤 패싯 피봇 규칙은 미친 상한과 (최근) 하한을 갖는다. Gil Kalai는 최근 결과에 대한 멋진 블로그 항목을 가지고있었습니다. gilkalai.wordpress.com/2010/11/09/…
Mohit Singh

좋은 지적입니다. 나도 혼란 스러웠다.
Suresh Venkat

2

이 "실제"를 고려하는지 확실하지 않지만 유명한 공개 문제입니다. 폴 에르 도스는 콜라 츠의 추측에 대해 말했다 :“수학은 아직 그러한 문제에 대한 준비가되어 있지 않았다”

x=1


그리고이 알고리즘으로 해결 된 문제는 무엇입니까?
Jukka Suomela

새로운 런타임 분석 기법을 찾는 것이 좋습니다.
Mohammad Al-Turkistany

2
Collatz 추측의 증거에 대한 무차별 대입 검색도 "새로운 런타임 분석 기법"에 동기를 부여한다고 말할 수 있습니다. 두 경우 모두 알고리즘은 무의식적으로 digraph를 탐색합니다. Collatz 추측은 재미 있지만 이것이 "알고리즘"의 흥미로운 예라고 생각하지 않습니다.
Niel de Beaudrap

2

이 예는 귀하의 요청 서한을 충족시키지 않으면 서 영적 친화력이 있기 때문에 관심이있을 수 있습니다. 구체적으로, 팬케이크의 스택과 번제 팬케이크를 역 분개로 정렬하는 문제.

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

한 가지 적용 분야는 다양한 규칙에 따라 순열 조각의 역 분개를 사용하여 순열 사이의 거리와 관련하여 게놈 재배 열에 대한 질문을 계산할 수있는 전산 생물학 (유전학)에 적용됩니다.

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