섀도우 힙
Shadow heap컴퓨터 과학에서 섀도 힙은 상각된 의미에서 효율적인 힙 병합을 지원하는 병합 가능한 힙 데이터 구조입니다.구체적으로는 섀도 힙은 섀도 머지 알고리즘을 이용하여 O(f(n)상환시간에 삽입하고 O((log n log n)/[1]f(n)상환시간에 삭제한다.
이 문서에서는 A와 B는 A와 B를 가진 이진 힙이라고 가정합니다.
섀도 머지
섀도 머지는 2개의 이진 힙을 어레이로 구현한 경우 효율적으로 머지하기 위한 알고리즘입니다.구체적으로는 2개의 A A와 B B의 섀도우 머지 실행시간은 O+min { log log B\ O+ \ \ )입니다.B \ , \A \ B
알고리즘.
2개의 바이너리 와결합합니다알고리즘은 다음과 같습니다.
- B의 끝에 A B를 연결하여 C(\ C를 얻습니다.
- C C에서 A A의 그림자를 확인합니다.즉, CC)에서힙 을 하는마지막 A(\ A 노드의 조상입니다.
- C{\ C에서 그림자의 다음 두 부분을 식별합니다.
- P P C C의 깊이에 최대 2개의 노드가 있는 그림자 내의 노드 세트.
- T {\ T : 그림자의 나머지 부분.
- 섀도에서 가장 P 노드(\ P)를 추출하여 배열 S(\displaystyle S S
- S S를 다음과 같이 변환합니다.
- ] [ C \ S [ C 의 경우 정렬된 배열의 최소 요소부터 순서대로 S\ S의 요소를C \ C 에하여 C\ C의 최소 로 바꿉니다.
- [ S \ \ C 의 경우 C{\ C에서 가장 작은P { P 요소를 및 정렬하여 이 정렬 목록을S { S}와 Marge합니다.
- S S 를 C C의 원래 위치로 교체합니다.
- T{\ T로 힙을 만듭니다.
실행 시간
다시 P P는 경로를 T(\ T는 연결된 C C의 서브트리를 .PP의 노드 수는 최대O(displayB인 C(\ C의 2배입니다.또 D D의 T(\displaystyle T)의 노드 수는 의 이므로 서브트리의 는O (A) { O ( )。P{ P level on on on nodes nodes nodes2 노드까지 존재하므로 섀도우의 P { P 요소를 정렬된 로 읽으면 O( B) style O 가 회
만약 S>C{\displaystyle S>C}, 5단계에서 P{P\displaystyle}, C{C\displaystyle}을 결합하는 위 O(로그 통나무 B){O(A\log B\log)\displaystyle}시간이 걸린다. 그렇지 않으면, 시간 이 단계에서 찍은 사진이다 O(+로그 B로그 로그 B ) {\ OB \ B 마지막으로 힙을 만들려면 O {\ O 시간이 이는의 섀도 머지(+ { A logB , logB 의 실행시간에 O ( A + \ ) A B B \B
구조.
섀도 H(\ H는 임계값 f f와 일반적인 어레이 구현 바이너리 힙 속성이 첫 번째 엔트리에서 유지되고 다른 엔트리에서 반드시 유지되지 않는 배열로 구성됩니다.따라서 섀도 힙은 기본적으로 에 인접한 바이너리 힙({A입니다.섀도 힙에 요소를 추가하려면 A({displaystyleA에 배치합니다.어레이가 지정된 임계값에 따라 너무 커지면 먼저 를 사용하여 AA})로 힙을 만듭니다.Floyd의 힙 [2]구축 알고리즘은 섀도 머지를 사용하여 이 힙을 B B와 병합합니다.마지막으로 상기 삽입 절차를 사용하여 한쪽 힙을 다른 쪽 힙에 순차적으로 삽입함으로써 섀도 힙의 병합을 간단히 할 수 있다.
분석.
섀도우 H ( , H = ( , ) 의 임계값 는H ) q log logH { f ( )\ \ H \ log H입니다.임계값 함수가 BB의 변경이 f의 변경보다 큰 변경을 유발하지 않는 경우라고 가정합니다.상각된 분석의 잠재적 방법을 사용하여 병합 가능한 힙 동작에 대해 원하는 실행 시간 범위를 도출합니다.히프의 는 다음과 같이 선택됩니다.
이 가능성을 이용하여 원하는 상각 실행 시간을 얻을 수 있습니다.
create(H): 새로운 빈 섀도우 힙 H를 초기화합니다.
- 여기서 잠재적 is는 변경되지 않으므로 상각된 제작비용은 비용인O ( )\)
insert(x, H): x{ x를 섀도우 H {\ H에 합니다.
- 두 가지 경우가 있습니다.
- Marge를 채용하고 있는 경우, 전위함수의 강하는 정확히B(\B)와A(\A의 Marge의 실제 비용입니다.따라서 상각된 비용은O(1O(1입니다.
- Marge가 이루어지지 않은 경우 상각된 은 O + { B loglog log log B A / () \ O ( + \ \ )
- 따라서 임계값 함수를 선택함으로써 상각된 삽입 비용은 다음과 같습니다.
delete_min(H): 최소 priority 요소를{ H).
- 최소 검색 및 삭제에는 시간 O( + B) { O ( + \ B) 。또, 이 삭제 에 f(H) { f H ) }의 이 감소하는 경우에만 잠재적인 함수가 증가할 수 있습니다.f{\f}를 으로써 이 작업에 대한 상각비용은 실제 비용과 동일합니다.
관련 알고리즘 및 데이터 구조
단순한 바이너리 힙 머지 알고리즘은 두 을 연결하고 Floyd의 힙 구성 알고리즘을 사용하여 결과 어레이에서 힙을 만드는 것으로 시간 에 두 힙 A A와 B를 병합합니다.또는 A A의 각 요소를 B B에 순차적으로 삽입하여 O logB)(\ O B를 표시함으로써 힙을 병합할 수 있습니다.
Sack과 Strothotte는 O[3]+ log A B)(\ OA \ B)) 시간 에 바이너리 힙을 병합하는 알고리즘을 제안했습니다.이러한 알고리즘은 A> B { A > \ B섀도 머지는 최악의 경우에도 알고리즘보다 점근적으로 뛰어난 성능을 한다고 알려져 있습니다.
더 빠른 병합 시간을 지원하는 다른 여러 힙이 있습니다.예를 들어, 피보나치 힙은O (O(1시간 에 병합할 수 있습니다.바이너리 힙은 병합에[4]Omega( 시간이 필요하므로 섀도 병합은 계속 효율적입니다.
레퍼런스
- ^ Kuszmaul, Christopher L. (2000). Efficient Merge and Insert Operations for Binary Heaps and Trees (PDF) (Technical report). NASA Advanced Supercomputing Division. 00-003.
- ^ Suchenek, Marek A. (2012), "Elementary Yet Precise Worst-Case Analysis of Floyd's Heap-Construction Program", Fundamenta Informaticae, IOS Press, 120 (1): 75–92, doi:10.3233/FI-2012-751
- ^ 를 클릭합니다Sack, Jörg-R.; Strothotte, Thomas (1985), "An Algorithm for Merging Heaps", Acta Informatica, Springer-Verlag, 22 (2): 171–186, doi:10.1007/BF00264229.
- ^ Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. (1990). Introduction to Algorithms (1st ed.). MIT Press and McGraw-Hill. ISBN 0-262-03141-8.