M-way Search Trees
- 다원 탐색 트리
- 메모리 접근 시간이 산술/논리 연산을 수행하는 것보다 훨씬 더 많은 시간을 소비함.
⇒ 프로세서 속도와 메모리 접근 시간 간의 큰 차이 때문에 메인메모리에서 캐시로 캐시 라인 크기 단위로 옮겨지고, 디스크에서 메인메모리로는 블록 단위로 옮겨짐.
- 참고 url : http://www.intelligence.tuc.gr/~petrakis/courses/datastructures/btrees.pdf
http://webdocs.cs.ualberta.ca/~holte/T26/m-way-trees.html
- AVL 트리, Red-Black 트리는 노드 크기가 몇 바이트 정도로 작기 때문에 느린 저장장치(디스크)에서 더 빠른 저장장치(캐시나 메인 메모리)로 데이터를 옮길 때 블록과 같은 큰 단위를 이용할 수 없다. 또한 이러한 트리들에서 특정원소를 찾는다 할 때, 탐색 시간의 대부분이 메모리 접근에 쓰일 수 있다. 메모리접근 횟수를 반으로 줄이면 비교횟수는 2배가 되지만 총 탐색시간은 감소한다.
탐색 트리의 높이와 메모리 접근횟수는 밀접한 상관관계가 있으므로 탐색 트리의 높이를 줄여야 한다. BST를 이용하면 트리 높이가 log(n+1)로 커지기 때문에, 이를 개선하기위해, 차수(degree)가 2보다 큰 탐색 트리를 이용해야 한다. (실제로, 트리 노드들이 하나의 캐시 라인이나 디스크 블록을 채울 수 있는 가장 큰 차수를 사용하고 있다.)
⇒ suitable for disk각 노드는 최대 m-1 개의 원소를 가질 수 있다.
B Trees
외부 노드 (externel node)
: 탐색 중에 트리에서 찾고자 하는 원소를 검색하지 못했을 때만 도달할 수 있는 노드
: Null 포인터가 있을때마다 외부노드가 추가되거나 검색실패가 된다
: 외부노드가 아닌 것은 내부노드(internal node)라고 한다.
차수가 m인 B tree는 공백이거나 다음 성질을 만족하는 m-way search tree이다
- 루트 노드는 적어도 2개의 자식을 갖는다
- 루트노드와 외부 노드를 제외한 모든 노드는 적어도 [m/2]개의 자식을 갖는다
- 모든 외부노드들은 같은 레벨에 있다.m-way search tree에서 모든 내부 노드는 차수가 [m/2] 이상 m 이하이다.
→ 차수가 3인 B tree는 2-3 Tree , 차수가 4인 B tree는 2-3-4 Tree 라고도 한다.
* 차수가 5인 B tree는 루트를 제외하면 차수가 2인 노드를 가질 수 없으므로 2-3-4-5 트리가 아니다.
* 차수가 2인 B tree는 포화 이진 트리 (full binary tree)이다. 이 트리는 어떤값 k에 대해서 키 값의 수가 2k-1일 때만 존재한다.
* 모든 n0, m>2에 대해서 키가 n개이고 차수가 m인 B-tree는 항상 존재한다.
[트리 예]외부노드는 컴퓨터 내에서 물리적으로 표현되지 않는다. 자식 포인터가 NULL로 설정.
삽입/삭제는 2-3, 2-3-4 트리 참고
B+ Trees
- 참고 URL
: http://ko.wikipedia.org/wiki/B%2B_%ED%8A%B8%EB%A6%AC
: http://en.wikipedia.org/wiki/B%2B_tree
: http://sweeper.egloos.com/899699특징
- 키(key) 값에 의하여 각각 식별되는 레코드의 효율적 삽입/삭제/검색을 통해 정렬된 데이터를 표현
- 모든 레코드들이 트리의 가장 하위레벨에 정렬. 키들만 내부 블록에 저장
- 블록-지향적인 storage context에서 효율적인 검색을 위해 데이터를 저장하는 것이 목표
- 블록 인덱싱을 위해 B+ Tree 타입을 사용하는 파일시스템
: ReiserFS filesystem (Unix and Linux)
XFS filesystem (IRIX, Linux)
JFS2 filesystem (AIX, OS/2, Linux)
NTFS filesystem (Microsoft Windows)
B Tree와의 차이점 ( 비슷한 계통이긴하지만… )
*** B+ Tree에는 2가지 종류의 노드가 존재함 ***
> 인덱스(index) 노드 :
- B tree의 내부노드와 상응
- 키(원소는 저장안함)와 포인터를 저장
> 데이터(data) 노드 :
- B tree의 외부노드와 상응
- 키와 함께 원소를 저장한다. (포인터는 저장안함)
- 왼->오 순으로 서로 링크 되어있고, 이중 연결 리스트를 형성탐색
- 2가지 종류의 탐색 지원정확히 일치하는 값에 대한 검색
범위 검색
삽입/삭제
Addition.
http://www.cis.temple.edu/~wangp/3223-DA/Lecture/04-BalancingTree-3.htm
이미지는 전부 직접 제작한 것입니다. 퍼가실 때에는 반드시 출처를 명시해주세요.
'Computers > Data Structure' 카테고리의 다른 글
Addition. 2-3-4 Trees (0) | 2013.10.10 |
---|---|
Addition. 2-3 Trees (0) | 2013.10.10 |
Chapter 10. Efficient Binary Search Trees (효율적 이원탐색 트리) (0) | 2013.10.10 |
Chapter 9. Priority Queue (우선순위 큐) (0) | 2013.10.10 |
Chapter 8. Hashing (0) | 2013.10.10 |