Transdichotomous 모델의 O (n)에서 정수 정렬이 가능합니까?


9

내 지식으로는 존재하지 않습니다 O(n) 다음 문제를 해결하는 최악의 알고리즘 :

주어진 길이의 시퀀스 n 유한 정수로 구성되면 모든 요소가 후속 요소보다 작거나 같은 순열을 찾습니다.

그러나 전이 선택적 계산 모델 에는 존재하지 않는다는 증거가 있는가?


정수의 범위를 제한하지 않습니다. 나는 또한 솔루션을 비교 정렬로 제한하지 않습니다.


내가 아는 한 O(n)SAT를위한 시간 알고리즘! 답은 '아니요'입니다.
Lembik

5
AFAIK, 이것은 여전히 ​​개방적인 문제입니다.
Juho

2
컴퓨터를 비교 및 ​​스왑으로 제한하지 않는 한 사용중인 계산 모델을 지정하기 전에는 의미있는 대답이 있는지 알 수 없습니다. RAM과 두 ​​개의 숫자 만 비교하면 엔트로피의 인수는Ω(nlog(n))경이 한 컴퓨터에서도 시간 제한이 있습니다. 스왑과 비교 대신 정렬이 기본 작업 인 경우Θ(1). 올바른 위치에 정수를 삽입하는 것이 기본 연산 인 경우,Θ(n). 비교할 수없는 특정 스왑 모델을 염두에 두셨습니까?
Lieuwe Vinkhuijzen

2
@LieuweVinkhuijzen 내 질문은 이분법적인 계산 모델을 지정합니다. 일반 영어 : 기계의 단어 크기가 문제의 정수를 수용하기에 충분히 큰 계산 모델. 따라서 두 정수를 비교하는 것은 O (1)이지만 더하기, 곱하기 등입니다. 이 계산 모델에서 엔트로피 경계가 이미 초과 되었습니다. Han, Yijie (2004), "O (n log log n) 시간 및 선형 공간의 결정 정렬"을 참조하십시오 .
orlp

@orlp 나는 본다; 정수의 구조를 활용하면 엔트로피 경계를 이길 수 있습니다. 정수 정렬에 대해 몰랐습니다. 나는 그 주제에 대해 읽을 것이다!
Lieuwe Vinkhuijzen

답변:


4

정수는 안정적으로 정렬 될 수 있습니다 O(n) ~와 시간 O(1)추가 공간. 더 정확하게는n 범위의 정수 [1,nc], O (n) 시간으로 정렬 할 수 있습니다.

이것은 Mihai Pătrașcu 후기를 포함한 팀에 의해서만 2 년 전에 나타났습니다. 정수 정렬 문제가 (이론적으로) 해결되었다는 것을 의미하기 때문에 더 많은 사람들이 알지 못하는 것에 놀랍게도 놀라운 결과입니다.

키를 수정할 수 있다면 실제 알고리즘 (위의 논문에서 제공)이 있습니다. 기본적으로 정렬되지 않은 정수를 압축 할 수있는 것보다 정렬 된 정수를 더 많이 압축 할 수 있으며 얻은 추가 공간은 기수 정렬을 수행하는 데 필요한 추가 메모리와 정확히 동일합니다. 또한 읽기 전용 키를 지원하는 비현실적인 알고리즘도 제공합니다.


1
내가 초록에서 이해할 수있는 것에서 이것은 일반적이 아닙니다-단어를 정렬 할 수 있습니다. logn 크기 O(n). 내 질문에는 무제한 정수가 명시 적으로 언급되어 있습니다.
orlp

@orlp 논문의 세 번째 알고리즘은 무한 길이 정수에 대해 설명합니다.
가명

1
어쩌면 나는 그것을 잘못 읽고 있지만 무제한 정수 정렬 알고리즘 의 메모리 사용량 을 줄이는 방법에 대한 설명 만 볼 수 있습니다 . 초록 (강조 광산)에서 인용 : "또 다른 흥미로운 질문은 임의의 경우입니다c. 여기에서는 모든 RAM 정렬 알고리즘에서 O (1) 여분의 공간 만 사용 하고 동일한 실행 시간 을 갖는 정렬 알고리즘으로의 블랙 박스 변환을 제시합니다 . "
orlp

3
나를 용서하지만 현재 상태에서는이 답변 이 질문에 전혀 대답 하지 않습니다 . 나는 명시 적으로 정수가되는 것을 언급 경계하지 . 이 답변은 완전히 다른 문제를 해결합니다.
orlp

1
마지막 포인트는 더 이상 작은 글꼴로 표시되지 않습니다 :)
orlp

-1

정수의 경우 기수 정렬을 사용할 수 있습니다 . 버킷을 만든 다음 숫자 목록을 정렬합니다.O(bn) 어디 b 정수의 비트 단위 크기의 상한입니다. n 정렬 할 요소 수

정수의 크기에 상한이 없으면 알려진 선형 시간 정렬 알고리즘이 없다고 생각합니다.


5
어서 오십시오! 당신이 말하는 것은 완전히 사실이지만 나는 그것이 질문에 대한 대답이라고 생각하지 않습니다. 이 질문은 필요한 알고리즘이 특정 계산 모델에 존재하지 않는다는 증거를 구체적으로 요구합니다. 그러한 알고리즘이 알려져 있지 않다고 말하는 것만으로는 존재하는 것이 없다는 것을 증명하지 않습니다.
David Richerby

실제로, b는 우리 문제에서 상수
이므로이

2
질문은 아무것도 말하지 않는다 b상수입니다. 그것은 단지 우리가 가지고 있다고 말합니다n번호. 그 숫자는 임의로 클 수 있습니다. (또한 댓글에 오타 일 수도 있지만O(n)o(n)
David Richerby

예, 확실히 오타가 있습니다.) 그의 질문에 길이 b의 단어에 숫자가 적합하다고 가정하면 상수가됩니다.
RFC 2549

1
그것은 단어 길이를 일정하게 만들지 않습니다. . (그렇지 않으면, 명시 적으로 "하나의 단어에 대한 작업이 작업 당 일정한 시간이 걸릴 것으로"가정에 이유가 없을 것
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.