이진 힙 증명에는


16

나는 것을 증명하기 위해 노력하고있어 바이너리 힙 노드가 정확히이 N을n힙이 다음과 같은 방식으로 구축 된 경우 2 ⌉의잎 :n2

각 새 노드는 percolate up을 통해 삽입 됩니다 . 즉, 사용 가능한 다음 자식에서 각각의 새 노드를 만들어야합니다. 내가 의미하는 바는 아이들은 수평으로 채워지고 왼쪽에서 오른쪽으로 채워진다는 것입니다. 예를 들어 다음 힙은 다음과 같습니다.

    0
   / \
  1   2

이 순서에 내장 된 것으로 : 0, 1, 2 (숫자들은 해당 노드에서 개최 된 실제 데이터의 징후를주지 단지 인덱스입니다.)

여기에는 두 가지 중요한 의미가 있습니다.

  1. 레벨에는 노드가 존재하지 않을 수있는 레벨 않고 K가 완전히 채워지k+1k

  2. 하위는 왼쪽에서 오른쪽으로 빌드되므로 레벨의 노드 사이 또는 다음과 같은 상황 에 "빈 공간"이있을 수 없습니다 . k+1

        0
       / \
      1   2
     / \   \
    3  4    6
    

(이것은 내 정의에 의해 잘못된 힙 일 것입니다.) 따라서이 힙을 생각하는 좋은 방법은 힙의 배열 구현 입니다.

그래서, 유도가 아마도 이것을하기에 좋은 방법이라고 생각했습니다. 아마도 n에 대한 이상한 경우조차도 다루어야 할 것입니다. 예를 들어, 이러한 방식으로 빌드 된 힙조차도 짝수 n에 대해 하나의 자식이 있고 홀수 n에 대한 해당 노드가없는 내부 노드가 있어야한다는 사실을 사용한 일부 유도. 아이디어?


@DaveClarke :별로; 관련 질문은 편집을 위해 남은 편집자 부분에 대한 오해의 결과입니다.
Raphael

node number resp를 통해 유도 를 시도 했습니까? 삽입 횟수?
Raphael

@DaveClarke : 왜? 그 자체로는 유효한 질문입니다.
라파엘

BTW, 질문은 힙과 관련이 없습니다. 이진법
Ran G.

답변:


8

질문을 올바르게 받으면 얻은 힙은 순서가있는 이진 트리입니다. 순서대로 k - 1 레벨이 완전히 채워진 후에 만 번째 레벨을 점유 할 수 있으며 각 레벨은 왼쪽에서 점유됩니다 건너 뛰지 않고 오른쪽으로kk1

그런 다음 증거는 다음과 같습니다.

  1. 깊이의 완벽한 트리 정확히이 2 K + (1) - (1) 노드를.k2k+11
  2. 힙이 깊이 도달한다고 가정하십시오 . 그러므로 k
    1. 최대 레벨 까지 나무가 완벽합니다 (그리고 2 k - 1 노드가 있습니다)k12k1
    2. 마지막 레벨에는 정확히 노드가 있으며 모두 노드입니다.n2k+1
  3. 번째 수준 의 각 잎 에는 부모가 있습니다. 또한 두 개의 연속 된 각 잎에는 동일한 아버지가 있습니다 (아버지가 한 명의 자녀 만있는 마지막 노드는 제외).k
  4. 따라서, 중 레벨에서 노드K-1, N - 2 K + 12k1k1 는 부모이고 나머지는 2 k - 1n 2 k + 1입니다.n2k+12잎입니다.2k1n2k+12
  5. 잎의 총량은 필요한 것을 제공합니다.
    n2k+1+2k1n2k+12

1
참고 전체가 다릅니다 전체는 다르다 완벽한 이진 트리. 불행히도 모호하고 일관성이없는 단어 선택이 있지만 무엇을 할 수 있습니까? 나는 Wikipedia의 정의를 고수하는 것이 합리적이라고 생각합니다.
라파엘

와우, 나는이 용어조차 몰랐다. 이것을 지적 해 주셔서 감사합니다.
란 G.

"레벨 k-1까지는 나무가 완벽하고 (2 ^ k-1 개의 노드가 있습니다)"그리고 "따라서 k-1 레벨의 2 ^ (k-1) 노드 중"은 상충되는 문장으로 보입니다. 아니면 뭔가 빠졌습니까?
아드리안 h.

2k12k12k1+2k2+...

아, 당신은 완전히 옳았습니다. 설명을 주셔서 대단히 감사합니다!
아드리안 h.

11

더 간단한 논리적 증거가 있습니다.

nthn/2n/2+1)thn/2

(n/2)(n/2)


1
매우 직관적이고 명확한 설명. 감사.
whitehat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.