원하는 특정 속성을 모두 갖춘 정렬 알고리즘이 없습니까?


22

정렬 알고리즘 웹 사이트 , 다음과 같은 주장한다 :

이상적인 정렬 알고리즘은 다음과 같은 속성을 갖습니다.

  • 안정 : 동일한 키가 재정렬되지 않습니다.
  • 추가 공간이 필요한 제자리에서 작동 합니다.O(1)
  • 최악의 경우 키 비교.O(nlg(n))
  • 최악의 경우 스왑.O(n)
  • 적응 형 : 데이터가 거의 정렬되거나 고유 키가 거의없는 경우 최대 까지 가속화 합니다.O(n)

이러한 속성이 모두있는 알고리즘은 없으므로 정렬 알고리즘의 선택은 응용 프로그램에 따라 다릅니다.

내 질문은 사실입니까?

이러한 모든 속성을 가진 [정렬] 알고리즘이 없습니다

그렇다면 왜 그렇습니까? 이 속성들에 대해 동시에 충족시킬 수없는 것은 무엇입니까?


4
아마도 알려진 정렬 알고리즘이 이러한 속성을 모두 가지고 있지 않음을 의미합니다 .
유발 Filmus

3
비교 기반 정렬 회의 3 & 4가 하나 있습니까?
greybeard

4
@JohnFeminella 적어도 비교 가 필요하지만 스왑 수에 대해 어떻게 알 수 있습니까? Ω(nlog(n))
Tom van der Zanden

2
@JohnFeminella Nitpick : " 보다 낫다 "는 빈 문장입니다. 하한에 대해 이야기 하려면 또는 사용해야합니다. Ω ΘO(_)ΩΘ
Raphael

1
원래 요소 위치를 보조 키로 추가하여 정렬 알고리즘을 안정적으로 만들 수 있습니다. 그러나 O (n) 추가 메모리가 필요하기 때문에 제자리에 있지 않습니다.
Giovanni Botta

답변:


6

WikiSortGrailSort 는 안정적이고 최악의 경우 키 비교 를 수행하는 상당히 최근의 알고리즘입니다 . 불행히도 나는 그들이 스왑에 접근 하거나 적응력이 있는지 알기에 충분히 이해하지 못 하므로 그들이 네 번째와 다섯 번째 조건을 위반하는지 여부를 알 수 없습니다.O ( N )O(n lg(n))O(n)

김포 선과 Arne Kutzner 가 WikiSort GitHub 페이지와 연결된 논문 "비율 기반의 안정적인 내부 병합"을 살펴보면 Kim과 Kutzner는 (WikiSort는 Mergesort의 변형입니다) 그러나 이것이 스왑이있는 WikiSort로 변환되는지 확실하지 않습니다 . GrailSort는 WikiSort GitHub 페이지에서 더 빠르다고 주장하므로 최악의 스왑이 있고 적응력 이 있다고 생각할 수 있습니다.O(n)O(n)O(m(nm+1))O(n)O(n)

누군가 WikiSort 및 / 또는 GrailSort를 이해한다면 그것에 대해 공개 질문에 대답 해 주셔서 감사합니다.



3

알려진 모든 알고리즘이 이러한 속성을 모두 만족하지 않습니다. 우리가 더 많은 정렬 알고리즘을 개발함에 따라 이러한 속성이 필요해졌습니다. 예를 들어, 버블 정렬 (아마도 가장 원시적 인 정렬 알고리즘)은 첫 번째 구현에서 안정적이지 않았지만 컴퓨터 과학자가 이후 구현에서 더 효율적으로 만들려고 할 때 안정적으로 설계되었습니다. 따라서 컴퓨터 과학자들은 최고의 알고리즘에서 최고의 특성을 선택했을 가능성이 높으므로 결과적으로 이러한 모든 바람직한 특성 목록을 가져 왔습니다. 실제로 모든 세상에서 최고를 얻는 것은 어렵습니다. 현재 아키텍처에서는 불가능하지는 않지만 불가능합니다.

OΩΘ


1
환영! 이것은 좋지만 효율성과 어떤 안정성이 관련이 있는지 알지 못합니다. 동일한 키가있는 목록의 섹션이 알고리즘에 의해 "무작위로"순환되어서는 안되는 것이 선호됩니다.
David Richerby

네,하지만 그 것이다 라도 유용 가능 또는 불가능?
James Faulcon

1

(이것은 오래된 질문이지만, 나는 그것을 우연히 발견했으며 다른 사람들도 마찬가지였습니다.)

실제로 (1)-(4) 및 (5)의 후반을 충족시키는 알고리즘이 있으므로 위 요구 사항에 매우 가깝습니다. [1]에 설명되어 있으며 지난 수십 년 동안 발명 된 몇 가지 트릭을 결합합니다.

[1] : Franceschini, G. Theory Comput Syst (2007) 40 : 327. https://doi.org/10.1007/s00224-006-1311-1

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