의견.png

스큐드 머클트리

위키원
eom9522 (토론 | 기여)님의 2019년 9월 5일 (목) 13:54 판 (리밸런싱 기법: 내용을 추가함)
이동: 둘러보기, 검색

스큐드 머클트리(skewed merkle)란 머클 트리 중에서 최소 개수의 노드를 가지면서, 왼쪽이나 오른쪽 서브 트리만 가지고 있는 트리이다. 머클트리(merkle tree)는 해시트리(hash tree), 이진트리(binary tree)라고도 불리기 때문에 스큐드 머클트리는 사향 이진트리(skewed binary tree), 편향 이진트리라고도 불리기도 한다.

개요

이진 탐색 트리의 탐색 연산은 O(log n)의 시간 복잡도를 갖는다. 트리의 높이를 하나씩 더해갈수록 추가할 수 있는 노드의 수가 두 배씩 증가하기 때문이다. 하지만 저장 순서에 따라 계속 한 쪽으로만 노드가 추가되는 경우가 발생할 수 있는데, 이러한 경우에 스큐드 머클트리가 된다. 이럴 경우 성능에 영향을 미치게 되며, 탐색의 Worst Case가 되고 시간 복잡도는 0(n)이 된다.

리밸런싱 기법

리밸런싱(Rebalancing) 기법이란 균형을 잡기 위한 트리 구조의 재조정을 말한다. 이 기법을 구현한 트리에는 AVL Tree, Red-Black Tree, B-tree 등이 있다.

Red-Black Tree

Red-Black Tree는 다음의 성질들을 만족하는 이진 탐색트리(BST; Binary Search Tree)이다.

  1. 각 노드는 'Red' or 'Black'이라는 색깔을 갖는다.
  2. Root node의 색깔은 'Black'이다.
  3. 각 leaf node는 'Black'이다.
  4. 어떤 노드의 색깔이 'red'라면 두 개의 Children의 색깔은 모두 Black이다.
  5. 각 노드에 대해서 노드로부터 descendant leaves까지의 단순 경로는 모두 같은 수의 blaack nodes들을 포함하고있다. 이를 해당 노드의 Black-Height라고 한다.(노드 x로부터 노드 x를 포함하지 않은 leaf node까지의 simple path 상에 있는 black nodes들의 개수)
  • 특징
  1. 이진 탐색트리이므로 BST의 특징을 모두 갖는다.
  2. Root node 부터 leaf node 까지의 모든 경로 중 최소 경로와 최대 경로의 크기 비율은 2보다 크지 않다. 이러한 상태를 balances 상태라고 한다.
  3. 노드의 child가 없을 경우 chile를 가리키는 포인터는 NIL 값을 저장한다. 이러한 NIL들을 leaf node로 간주한다.

RBT는 BST의 삽입, 삭제 연산 과정에서 발생할 수 있는 문제점을 해결하기 위해 만들어진 자료 구조이다.

각주

참고자료

같이보기

  의견.png 이 스큐드 머클트리 문서는 블록체인 기술에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.