선택 알고리즘을위한 공간이 부족합니까?


11

정수 배열에서 k 번째로 큰 원소 를 찾는 잘 알려진 최악의 경우 선택 알고리즘 이 있습니다. 그것은 중간 값 접근법을 사용하여 충분한 피벗을 찾고 입력 배열을 제자리에 놓은 다음 재귀 적으로 k 번째로 큰 요소 검색을 계속합니다 .O(n) kk

입력 배열을 건드리지 않으면 O ( n ) 시간 에서 번째로 큰 원소 를 찾기 위해 얼마나 많은 공간이 필요 합니까? O ( 1 )의 추가 공간 에서 k 번째로 큰 요소를 찾고 런타임 O ( n )를 계속 유지할 수 있습니까? 예를 들어, 최대 또는 최소 요소를 찾으려면 O ( n ) 시간과 O ( 1 ) 공간이 필요합니다. kO(n)kO(1)O(n)O(n)O(1)

직관적으로, 나는 우리가 공간 보다 더 잘 할 수 있다고 상상할 수 없지만 이것에 대한 증거가 있습니까?O(n)

누군가 포인트는 참조 할 수 또는 인수 이유를 가지고 올 '필요 번째 요소 O ( N ) 공간에서 찾을 수 O ( N ) 시간은?n/2O(n)O(n)


2
나는 전문가가 아니지만 아마도이 논문들이 도움이 될 것이다. 선택시공간 트레이드 오프를
Vor

답변:


13

입력을 변경하지 않고 시간 및 O ( 1 ) 추가 메모리 셀로 선택을 수행 할 수 있으면 개방형 문제입니다 ( 여기 참조 ). 그러나 당신은 이것에 꽤 가까이 올 수 있습니다.O(n)O(1)

O(n1+ε)O(1/ε)ε>0

O(n)pp

pA(k)ε=1/kA(k)A(k1)A(1)연산. 올바른 블록 크기 (및 수학)는 위에서 설명한대로 실행 시간과 공간 요구 사항을 제공합니다.

찾고있는 알고리즘 인 Btw는 최근에 상수 작업 공간 알고리즘으로 명명되었습니다 .

나는 하한을 모른다.

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