각 요소가


39

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

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

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

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


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

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(log2n)
Chao Xu

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

답변:


17

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

O(logn)O(1)

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


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

@someone은 Sergio Cabello입니다
누군가

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