각 요소가


39

각 요소가 시간 과 비교되도록 정렬 네트워크로 줄이지 않는 알려진 비교 정렬 알고리즘이 있습니까?O(log⁡n)

내가 아는 한, 각 요소에서 비교 로 정렬하는 유일한 방법 은 n 개의 입력에 대해 AKS 정렬 네트워크를 구성하고 정렬 네트워크 에서 입력을 실행하는 것입니다.O(log⁡n)n

AKS는 구현하기 쉽지 않고 비현실적인 상수 요소가 있으므로 다른 알고리즘을 검색하려는 동기가 있습니다.

정렬 네트워크를 의미하지 않는 것으로 보이는 항목 당 비교 알고리즘이 여기 에 표시 됩니다 . (iirc, 이것은 Stony Brook의 알고리즘 세미나에서 Rob Johnson 이 처음 발표했습니다 ).O(log2⁡n)


2
질문을 이해하지 못합니다 : 많은 순차적 알고리즘이 귀하의 요청에 해당하는 것 같습니다. 예를 들어 병합 정렬은 고전적인 정렬 알고리즘이며 요소 당 이상 비교 하지 않습니다 . 병렬 정렬 알고리즘 에 대해 질문하고 있습니까? log⁡n
— 제레미

4
@Jeremy : 두 개의 목록, 병합 경우 와 ( b를 1 , . . . , B의 n은 ) , 당신은 비교 끝낼 수 1 의 각각에 대하여 B 1 , . . . , b n , 즉 한 요소 당 Ω ( n ) 비교. 그리고 이것은 단지 하나의 "병합"단계였습니다. 물론 평균(a1,...,an)(b1,...,bn)a1b1,...,bnΩ(n)비교 횟수는 반드시 작지만 문제는 최악의 복잡성에 관한 것입니다.
— Jukka Suomela

6
가능하다고 생각합니다. 정렬 네트워크는 데이터가 명확하지 않으며 미리 정해진 비교 방법이 있지만 정렬 알고리즘은 데이터에 따라 다른 작업 집합 중에서 선택할 수 있습니다. 병합 정렬 을 각 요소에 대해 비교를 사용 하여 알고리즘으로 수정할 수 있으며 정렬 네트워크를 의미하지는 않습니다. reddit.com/comments/9jqsi/…O(log2⁡n)
— Chao Xu

1
Jukka : 고마워요. 하지만 그건 순진한 병합을 사용하여 바로 그 때입니다 : 하나는 병합 할 수 있습니다 와 ( B 1 , ... , B의 N ) 여전히 각 요소, 배치 검색을 두 배로 사용하여 N 최악의 경우 총 비교, 그러나 요소 당 최대 lg n 비교는 Chao가 암시하는 병합 정렬 버전을 생성합니다. (a1,…,an)(b1,…,bn)nlg⁡n
— Jeremy

답변:


17

Michael T. Goodrich와이 문제를 논의 할 때 Cole이 EREW PRAM을위한 병렬 정렬 알고리즘이 그 역할을하는 것으로 보입니다. 보다

O(log⁡n)O(1)

병렬 포인터 머신을위한 알고리즘의 확장은


우리는 당신이 누구인지 알고 싶습니다! : D
— Tayfun Pay

@someone은 Sergio Cabello입니다
— 누군가

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