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


30

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

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

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

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

μ|NL|+1|N|+11μ

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

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

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

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

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


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

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

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

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


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

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

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

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

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

답변:


31

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

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

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

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

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

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


T_1
[ 출처 ]


T_2
[ 출처 ]


T_3
[ 출처 ]


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

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

2k2k+22k=11+2kk0

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


14

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

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

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


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

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

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