섀도우 힙

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개의 바이너리 결합합니다알고리즘은 다음과 같습니다.

  1. B의 끝에 A B 연결하여 C(\ C를 얻습니다.
  2. C C에서 A A 그림자를 확인합니다.즉, CC)에서 하는마지막 A(\ A 노드의 조상입니다.
  3. C{\ C에서 그림자의 다음 두 부분을 식별합니다.
    • P P C C의 깊이에 최대 2개의 노드가 있는 그림자 내의 노드 세트.
    • T {\ T : 그림자의 나머지 부분.
  4. 섀도에서 가장 P 노드(\ P)를 추출하여 배열 S(\displaystyle S S
  5. S S 다음과 같이 변환합니다.
    • ] [ C \ S [ C 의 경우 정렬된 배열의 최소 요소부터 순서대로 S\ S 요소를C \ C 에하여 C\ C의 최소 로 바꿉니다.
    • [ S \ \ C 의 경우 C{\ C에서 가장 작은P { P 요소를 및 정렬하여 이 정렬 목록을S { S}와 Marge합니다.
  6. S S C C의 원래 위치로 교체합니다.
  7. 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( 시간이 필요하므로 섀도 병합은 계속 효율적입니다.

레퍼런스

  1. ^ Kuszmaul, Christopher L. (2000). Efficient Merge and Insert Operations for Binary Heaps and Trees (PDF) (Technical report). NASA Advanced Supercomputing Division. 00-003.
  2. ^ 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
  3. ^ 를 클릭합니다Sack, Jörg-R.; Strothotte, Thomas (1985), "An Algorithm for Merging Heaps", Acta Informatica, Springer-Verlag, 22 (2): 171–186, doi:10.1007/BF00264229.
  4. ^ 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.