힙과 우선 순위 큐의 차이점


36

나는 항상 힙 및 우선 순위 큐는 동의어라고 생각 - 추상 데이터 구조가 지원 insert, findMindeleteMin작업.

예를 들어 Chris Okasaki의 순전히 기능적인 데이터 구조 (3 장)와 같은 일부 문헌은 저에게 동의하는 것 같습니다.

반면, Wikipedia의 페이지는이를 트리 기반 데이터 구조로 정의하고 힙이 우선 순위 큐의 구체적인 구현임을 나타냅니다.

나는 좌파 힙, 이항 힙, 스플레이 힙 ...

힙이 다른 데이터 구조로 구현 될 수 있다는 단순한 사실은 정의상 추상 데이터 구조라는 의미가 아닙니까? 그리고 그렇다면 우선 순위 대기열과 실제로 다른 점이 있습니까?


11
우선 순위 대기열 ( en.wikipedia.org/wiki/Priority_queue ) 에서 Wikipedia 페이지를 읽고 우선 순위 대기열은 힙 또는 정렬되지 않은 배열과 같은 다양한 다른 방법으로 구현할 수 있습니다. 당신의 질문.
Doc Brown

2
글쎄, 실제로는-힙이 구체적인 데이터 구조인지 추상적인지 이해하는 데 도움이되지 않습니다. 힙에 대한 구체적인 구현이 많기 때문에 추상적 인 말을하는 경향이 있습니다. 이 경우 우선 순위 목록과 힙이 모두 동일한 속성을 가진 추상 데이터 구조 인 경우 차이점을 이해하는 데 도움이 필요합니다. 하나가 다른 구현의 가능한 구현이라고 말하는 것이 실제로 도움이되지 않으면 크게 도움이되지 않습니다. 구체적인 구현.
Nicolas Rinaudo

더 나쁜 것은 바이너리 힙을 배열 또는 바이너리 트리로 구현할 수 있다는 것입니다. 다행히도 아직 다른 것으로 구현 된 배열에 대해 들어 보지 못했습니다.
Alexey

답변:


25

우선 순위 대기열에는 팝업 할 때 선형으로 검색하는 배열과 같은 모든 구현이있을 수 있습니다. 그것은 당신이 팝업 할 때 최소 또는 최대에 따라 값을 얻는다는 것을 의미합니다.

일반적으로 참조되는 클래식 힙은 일반적으로 최소 힙입니다. O(log n)푸시 및 팝시 시간 복잡성이 우수 하고 메모리 오버 헤드가없는 구현입니다 .


4
당신은 차이가 동일한 작업 (공유하면서이다 말을 의미합니까 findMin, deleteMin, insert그들을 위해), 힙이 보장 한 "좋은"복잡성을 우선 순위 큐가 안 어디?
Nicolas Rinaudo

힙은 시간 복잡도가 다른 일반적인 구현 (예 : 일반적인 링크 된 이진 트리)을 가질 수 없습니까? 또한 시간 복잡도는 사용되는 메모리에 따라 다릅니다. 그것이 자기 테이프라면 O(log(n))밀고 튀는 것이 없을 것이라고 생각합니다.
Alexey

6

이 웹 사이트는 정말 명확한 설명을 제공합니다. http://pages.cs.wisc.edu/~vernon/cs367/notes/11.PRIORITY-Q.html

간단히 말해 우선 순위 큐는 이미 연구 한 많은 데이터 구조 (배열, 링크 된 목록 또는 이진 검색 트리)를 사용하여 구현할 수 있습니다. 그러나 이러한 데이터 구조는 가장 효율적인 작업을 제공하지 않습니다. 모든 작업을 매우 효율적으로 수행하기 위해 힙이라는 새로운 데이터 구조를 사용합니다.


1
링크 한 페이지 요약에서 우선 순위 큐 자체를 데이터 구조 라고합니다 .
Alexey

2

구체적인 대 추상에 대해 쓴 내용이 맞다고 생각합니다. splay heaps, binomial heaps은 힙을 다르게 구현한다고 말하지만, 다른 유형의 힙이라고 말하는 것이 더 정확하다고 생각합니다. 힙 나는 일반적으로 동일한 인터페이스뿐만 아니라 동일한 액세스 시간을 보장하는 구현 범주로 생각합니다.

연관 맵, 해시 테이블 및 이진 검색 트리에서도이를 확인할 수 있습니다. Bst 및 해시 테이블은 모두 연관 맵 추상 인터페이스를 제공하는 구체적인 데이터 구조입니다. 빨간 검은 나무와 avl 나무는 균형 잡힌 bst이며, 동일한 큰 O 보장과 동일한 추가 인터페이스 (순서대로)입니다. 그것들은 다른 유형의 나무입니다. 다른 나무의 구현보다 더 말할 것입니다. 그것들은 서로 다르지만 연관지도의 밀접한 관련 구현입니다.

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