집합을 나타내는 트리의 최대 높이가 크기 log(n) + 1
임을 이해하는 것이 중요하므로 주어진 노드에서 그 루트까지의 노드를 따라 가면 O(log(n))
단계가됩니다.
이제 disjoint set 포리스트의 각 트리가 높이 log(n) + 1
-이 트리의 노드 수인 n
인 것을 증명해야합니다. 우리는 유도에 의해 그것을 입증 할 것이고, 각각 union(x,y)
이후에 -이 자산은 변하지 않은 것을 보여줄 것입니다.
자료 : - : 우리는 두 가지를 결합 우리가 시작할 때, 우리는 n
다른 나무, 크기 1 log(1) + 1 = 1
의 모든이가 각각의 나무는 참으로 최대 높이의 log(n) + 1
연합 (x, y)에입니다 세트 x
은 n1
이고, 사이즈는 n2
이다. 보편성을 잃지 않고 n1<=n2
으로 지정하십시오. 유도 가설에서
이 x
를 나타내는 트리의 높이 (H1) 그래서 대부분의 log(n2)+1
이며, 노조 작업은의 루트 'y
를 가리 키도록의 루트'x
을 변경하여 수행됩니다. 이것은 x
에 있던 모든 노드의 최대 높이가 지금에서 가장
그래서, 우리가
x
에 공식적으로 있었다 모든 노드에 대해 루트 최대 거리가
log(n1+n2) + 1
것을 발견했다
h1+1 = log(n1)+1 + 1 = log(n1) + log(2) + 1 = log(2*n1) + 1 = log(n1 + n1) + 1 <= log(n1 + n2) + 1
것을 의미 새 트리 (x
및 y
)의 크기가 이제 n1+n2
이되므로 형식적으로 x
인 모든 노드에 대해 원하는 속성이 남아 있음이 입증되었습니다.
y
의 경우 - 루트까지의 거리는 유지되지만 트리의 크기는 축소되지 않으므로 속성도 유효합니다.
결론 - x
또는 y
에있는 모든 노드에 대해 새 루트의 최대 깊이는 필요에 따라 log(n1+n2)+1
입니다.
QED
말 -이 답변의 모든 log
은베이스 2.