모든 Red-Black 나무가 균형을 이루지는 않습니까?


30

직관적으로 "균형 트리"는 각 노드의 왼쪽 및 오른쪽 하위 트리에 "거의 동일한"수의 노드가 있어야하는 트리 여야합니다.

물론, 우리가 적-검은 나무 * (끝의 정의 참조)에 대해 이야기 할 때, 우리는 실제로 그것들이 높이 균형이 잡히고 그런 의미에서 균형 이 잡힌다 는 것을 의미합니다.

위의 직관을 다음과 같이 공식화한다고 가정하십시오.

정의 : 모든 노드 에 대해 불평등 인 경우 이진 트리는 -balanced이고 .μ0≤μ≤12N

μ≤|NL|+1|N|+1≤1−μ

모든 에 대해 위의 명령문이 실패하는 노드가 있습니다. 및 의 왼쪽 하위 트리에있는 노드 수입니다. 을 루트 (루트 포함)로 사용 하는 트리 아래 노드 수입니다 .μ′>μ|NL|N|N|N

나는 이 주제에 대한 일부 문헌에서 이것을 무게 균형 트리 라고 부릅니다 .

노드를 가진 이진 트리 가 -balanced (상수 ) 트리의 높이가 인 경우 멋진 검색을 유지함을 알 수 있습니다 속성.nμμ>0O(log⁡n)

따라서 질문은 다음과 같습니다.

일부 거기에 모든 충분히 큰 빨강 - 검정 그런 나무는 -balanced?μ>0μ


우리가 사용하는 Red-Black 나무의 정의 (Cormen et al의 Introduction to Algorithms) :

각 노드가 빨간색 또는 검은 색으로 표시되고

  • 뿌리는 검은 색입니다
  • 모든 NULL 노드는 검은 색입니다
  • 노드가 빨간색이면 두 하위 노드가 모두 검은 색입니다.
  • 각 노드에 대해 해당 노드에서 하위 NULL 노드까지의 모든 경로에는 동일한 수의 검은 색 노드가 있습니다.

참고 : 위 의 -balanced 정의에서 NULL 노드는 계산하지 않습니다 . (그렇지만 우리가 중요하지 않다고 생각합니다).μ


@Aryabhata : 편집에서 고유성 ( )은 무엇입니까? 나는 사실과 괜찮아 -balanced이 의미하는 -balanced. 높이가 임을 증명하기 위해 정확한 를 찾아야한다고 생각하지 않습니다 . 뭔가 빠졌습니까? μ′>μ1314 μO(log⁡n)
— jmad

또한, 모든 대해 하나의 트리를 가진 반례 체인을 제공하려면 부정적인 진술이 필요합니다 . 노드 크기가 줄어들지 않는 무한 체인이면 충분하지 않습니까? n∈N
— Raphael

@jmad : 편집이 없으면 모든 트리의 균형 이 이되어 질문에 대한 답이 없습니다. 나는 그것을 피하고 싶었다. μ′0
— Aryabhata

@Raphael : 이해가 안 돼요. 트리 의 노드 크기 는 입니다. 대해 어떤 트리를 선택 하고 그 을 선택하는 것이 중요하지 않습니까? 나에게 명백하지 않은 것, 그리고 그것이 문제에 관한 것입니다! nthnRBnμn→0
— Aryabhata

1
이 질문의 이전 버전은 각 단계에서 선형 작업량을 수행하는 레드 블랙 트리에서 재귀 알고리즘의 런타임이 반드시 필요는 없다고 주장했습니다 . 이 주장은 틀렸다. 높이 균형은 노드 레드-블랙 트리 의 깊이 가 임을 의미합니다 . 따라서 트리의 각 레벨에서 작업 을 수행하는 경우 총 작업은 입니다. O(nlog⁡n)nO(log⁡n)O(n)O(nlog⁡n)
— JeffE

답변:


31

주장 : 레드 - 블랙 트리 임의로 명사에 붙여서의 뜻을 나타냄 할 수있다 -balanced.μ

증거 아이디어 : 모든 루트 리프 경로 에서 주어진 수 의 검은 노드에 대해 가능한 한 많은 노드로 오른쪽 하위 트리를 채우고 왼쪽에 가능한 한 적은 노드로 채 웁니다.k

증명 : 가 루트에서 (가상) 잎까지 모든 경로에 검은 색 노드 를 빨강-검정색 나무 의 시퀀스 를 정의합니다 . 과 같이 정의하십시오.TkTkkTk=B(Lk,Rk)

  • Rk 높이 의 전체 트리 ( 첫 번째, 세 번째, ... 레벨은 빨간색, 나머지는 검은 색)2k−1
  • Lk 모든 노드가 검은 전체 높이 트리 .k−1

모든 는 빨강-검정색 나무입니다.Tk

예를 들어, 이들은 각각 , 및 입니다.T1T2T3


T_1
[ 출처 ]


T_2
[ 출처 ]


T_3
[ 출처 ]


지금 우리가있는 오른쪽의 시각적 인상을 확인하자 거대한 왼쪽에 비해합니다. 나는 가상 잎을 세지 않을 것이다. 결과에 영향을 미치지 않습니다.

의 왼쪽 서브 트리는 완전하고 항상 높이 을 가지므로 노드를 포함합니다. 오른쪽 하위 트리, 다른 한편으로는, 완료되고 높이가 과 thusly 히 포함 노드를. 이제 루트에 대한 균형 값은Tkk−12k−12k−122k−1μ

2k2k+22k=11+2k→k→∞0

요청 된대로 이 없음을 증명합니다 .μ>0


14

아니요 . 다음과 같은 특수 구조의 적갈색 나무를 고려하십시오.

  • 왼쪽 서브 트리는 깊이 의 완전한 이진 트리이며 , 모든 노드는 검은 색입니다.d
  • 오른쪽 서브 트리는 깊이가 인 완전한 이진 트리이며 , 홀수 깊이의 모든 노드는 빨간색이고 짝수 깊이의 모든 노드는 검은 색입니다.2d

이것이 유효한 빨강 검정 나무인지 확인하는 것은 간단합니다. 그러나 오른쪽 서브 트리의 노드 수 ( )는 왼쪽 서브 트리의 노드 수 ( )의 대략 제곱 입니다 .2 d + 1 − 122d+1−12d+1−1


+1 : 감사합니다! 그러나 노드 수는 입니다. 우리는 아마도 주어진 크기 의 나무를 얻기 위해 이것들을 충분히 '채울'수 있습니까 ? (가능해야 할 것 같습니다). N22d+1+2d+1−1n
— Aryabhata

1
당신은 이미 무한히 많은 에 대한 반례를 가지고 있으므로 왜 귀찮게합니까?. 그러나 원하는 경우 왼쪽 하위 트리에 빨간색 노드를 더 추가하거나 오른쪽 하위 트리에서 빨간색 노드를 가져올 수 있다고 가정합니다. n
— JeffE

@JeffE : 기본적으로 반대 사례 체인은 '스파 스'서브셋이 아닌 '밀도'서브셋이됩니다. 아마도 질문의 형식을 바꿀 것입니다.
— Aryabhata
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.