하위 용어가 실제 입력의 런타임을 지배하는 알고리즘의 예?


10

Big-O 표기법은 상수 요소를 숨기므로 항의 계수 가 너무 커서 합리적인 입력 크기에 적합하지 않은 일부 알고리즘이 존재합니다 .nO(n)n

런타임이 인 알려진 알고리즘이 있지만 합리적인 입력 크기의 경우 런타임을 완전히 지배 할 정도로 큰 하위 항이 있습니까? big-O 표기법이 결코 중요하지 않은 이유를 제공하기 때문에 알고리즘 과정에서 예제와 같은 알고리즘을 사용하고 싶습니다.o ( f ( n ) )O(f(n))o(f(n))

감사!


먼저 큰 테이블을 설정 한 다음 각 입력 항목에 대해 테이블에서 빠른 조회를 수행하는 알고리즘? 테이블이 충분히 크면 테이블을 생성하는 비용을 상쇄하기 위해 항목 수가 엄청나게 커야합니다. 검색 엔진은 이 쿼리 수인 경우의 예 입니다. n
András Salamon

선형 프로그래밍이 이와 같다고 들었습니다. 단순은 지수 적이지만 실제로 다항식 알고리즘보다 빠릅니다.
jmite

1
나는 당신의 요구에 맞는 알고리즘을 모르지만, 가장 선형적인 실행 시간을 가진 것을 찾고 싶습니다. 그 이상으로 작은 용어가 가장 합리적인 입력에 대한 주요 용어를 지배 할 수있을 것입니다. 그러나 빅 데이터를 정렬하는 데 사용되는 k-way mergesort는 귀하의 요구에 적합합니까? 문제는 많은 시간이 걸리기 때문에 보조 메모리 액세스를 최소화해야한다는 것입니다.하지만 이것이 입증하려는 것에 대한 적절한 예가 될지는 확실하지 않지만 실제로는 그것이 간단하다고 생각하지 않습니다. 예를 들어라.
G. 바흐

다소 유사 구현하기가 너무 복잡 강력한 알고리즘 도에 rjlipton 블로그를 참조 은하 알고리즘
vzn

답변:


2

암호화는 퇴화하는 경우의 예입니다. 예를 들어 AES 암호화를 깨는 것은 입니다. 키 크기에 따라 유한 숫자, 또는 또는 중에서 올바른 키를 찾기 ( 키를 명확하게 결정하기에 충분한 평문이 알려져 있다고 가정하십시오). 그러나 번의 작업조차 오늘날 우주의 수명 (약 10 억 초)보다 모든 컴퓨터 (각각 10 억 또는 그 정도의 속도, 약 10 억 번의 작업을 수행함)를 차지할 것입니다.2 128 2 192 2 256 2 128O(1)2128219222562128


big-O가 모든 것이 아닌 이유를 설명하는 약간 다른 방법은 때때로 작은 입력 크기에 대해 다른 알고리즘을 사용한다는 것입니다. 예를 들어, 퀵 정렬을 수행하십시오. 까다로운 사업 인 피벗을 올바르게 선택하면 입니다. Quicksort는 나누기와 정복으로 작동합니다. 모든 인스턴스에는 작은 배열을 많이 정렬해야합니다. 작은 배열의 경우 삽입 정렬과 같은 이차 법이 더 좋습니다. 따라서 최상의 성능을 위해 대형 어레이의 빠른 정렬에는 작은 크기의 삽입 삽입이 많이 포함됩니다.O(nlgn)


암호화를 깨는 것이 합리적인 예라고 생각하지 않습니다. 한 가지 그 점근 적으로 정확한 키를 찾는 문제를 분석하기 위해, 우리는 크기의 키에 대한 키 깨는 상수가 아닌 키의 크기, 즉와 Rijndael을의 이론적으로 가능한 버전 고려해야 할 것 . 그렇지 않으면 종료되는 알고리즘이 에서 고정 크기 입력에 대해 수행한다고 말할 수 있습니다 . O ( 1 )nO(1)
G. 바흐

@ G.Bach이 예제의 요점은 일정 시간이지만 (암호문의 크기 측면에서) 복잡성 이론은 복잡성이 높다는 것입니다.
Gilles 'SO- 악마 그만해

2
첫 번째 예제는 효과가 없다고 생각합니다. 확인할 옵션이 많지 않기 때문에 알고리즘의 런타임은 이므로 전체 런타임을 설명 하는 하위 항은 없습니다. o ( 1 )O(1)o(1)
templatetypedef

1
@templatetypedef AES 암호화 메시지의 암호화를 깨는 것은 메시지 길이 측면에서 입니다 . O(1)
Gilles 'SO- 악마 그만해

1

파라미터 화 된 복잡성 및 FPT 알고리즘 분야에서 두 가지 예가 떠 오릅니다 . 이것은 당신이 찾고있는 것이 아닐 수도 있지만 여기에 있습니다.

3-COLORING 또는 HAM-CYCLE과 같은 그래프 문제를 고려하십시오. 두 문제 모두 모나드 2 차 논리로 표현 될 수 있으므로, 제한된 트리 폭을 가진 그래프의 선형 시간으로 결정될 수 있습니다. 이것은 Bruno Courcelle 의 결과이지만 결과적인 알고리즘은 실용적이지 않습니다.

다른 예는 Lenstra의 깊은 결과이며, 일정한 수의 변수를 가진 정수 선형 프로그램 (ILP)을 선형 시간으로 해결할 수 있다고 말합니다. Ravi Kannan의 추가 작업을 통해 정수 프로그래밍 타당성 문제는 비트의 정수에서 산술 연산 으로 해결할 수 있습니다 . 는 ILP 변수의 수이고 은 입력의 비트 수입니다. 이것은 다시 아주 작은 인스턴스에만 실용적인 FPT 알고리즘을 발생시킵니다.O ( p 2 p L ) p LO(p9p/2)LO(p2pL)pL


2
Courcelle의 정리는 일부 항이 "작은"입력에서 우세 하기 때문에 항 에 대한 거대한 상수 때문에 비현실적 입니다. (상수는 1 차 공식에서 중첩 된 부정의 수와 수량화 교호에 따라 높이가 2의 타워로 증가합니다.)o ( n )O(n)o(n)
David Richerby

0

귀하의 질문과 다소 관련이있는 것은 이론적으로 우수한 성능을 가진 것으로 알려져 있지만 작은 인스턴스의 비 실용성으로 인해 실제 문제에는 사용되지 않는 알고리즘입니다. 다시 말해, 요청한 것처럼 "광고 성능"은 실제 응용에서는 볼 수없는 이론적으로 큰 입력에만 가능합니다. 이것은 때때로 Big-Oh 추정치에 반영되며, 그렇지 않은 경우도 있습니다. 일부 알고리즘은 이론적으로는 "성능"이 우수하지만 논리적으로 복잡하고 누구도 구현 한 적이 없으므로 실제 인스턴스 크기의 "성능"은 예를 들어 최대 흐름 문제 와 같이 알려져 있지 않습니다 .


그러나 저차 항이 우세하거나 고 차항 상수가 나쁘기 때문에 실용적이지 않습니까?
David Richerby

또는 조합하여, 각각의 경우에 분리하기가 어려울 것이다. 효과 / 실제적으로 동일한 효과.
vzn

-1

이것은 일종의 농담이지만 ​​심각한 측면이 있습니다 ...

O(nlogn)O(n2)


1
아니요, 다릅니다. Quicksort는 크기에 관계없이 일반적인 입력에 대한 2 차 항이 없기 때문에 실제로 유용합니다. 피벗 선택이 데이터 레이아웃에 좋지 않은 경우 퀵 정렬은 작은 입력에도 2 차 동작을 나타냅니다.
Gilles 'SO- 악마 그만해
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.