반응형
SMALL

02. Splay 트리

이진 탐색 트리의 단점

- BS트리의 성능은 트리의 구조와 특정 노드에 접근할 확률에 영향을 받음

- 트리의 성능이 구조에 영향을 받기 때문에 어떤 노드의 탐색/삽입/삭제를 위한 접근 정보를 예측할 수 없는 상황에서는 최적의 BS트리구조를 결정하기 어려움

- 휴리스틱 알고리즘을 사용하여 구축한 BS트리의 성능이 최적에 가까움

 

이진 탐색 트리의 성능

: 좋은 성능의 BS트리를 구축하는 방법 (휴리스틱)

→ 자주 탐색하는 키를 가진 노드를 트리의 루트에 가깝게 놓는다.

 트리가 균형(balance)이 되도록 유지한다. 즉,각 노드에 대해 왼쪽과 오른쪽 서브 트리가 가능한 한 같은 수의 노드를 갖게 한다.

 

 

Splay트리

- 자주 탐색하는 키를 가진 노드를 루트에 가깝게 위치하도록 구성한 BS트리

- Splay연산 : 최근에 접근한 노드 x를 (곧 사용할 것으로 예상하여)루트에 위치시켜 트리를 재구성하는 연산

- Splay트리 : 가장 최근에 사용한 노드 x가 트리의 루트에 올 때까지 Splay연산을 반복하여 적용하여 생성된 이진트리

 

 

Splay트리의 연산

 

노드 x : 최근에 접근한 노드,

노드 p : x의 부모 노드,

노드 g: x의 조부모(부모의 부모) 노드 

 

 

① Zig : p가 트리의 루트면 p와 x의 간선 연결(edge joining)을 회전시킨다.

② Zig-Zig : p가 루트가 아니고 x와 p가 동일하게 왼쪽 자식들 또는 오른쪽 자식들이면 p와 조부모 g와의 간선 연결을 회전시키고 그다음에 x와 p의 간선 연결을 회전시킨다.

③ Zig-Zag : 만약 p가 루트가 아니고 x가 왼쪽 자식, p가 오른쪽 자식(또는 그 반대)이면 x와 p의 간선 연결을 회전시키고 그 다음에 x와 x의 새로운 부모 p와의 간선 연결을 회전시킨다.

 

 

Splay트리의 연산 (Zig회전(단일 회전))

Zig : p가 트리의 루트 노드이면 p와 x의 간선 연결(edgejoining)을 회전시킨다.

Splay트리의 연산(Zig-Zig회전(두 개의 단일 회전))

Zig-Zig : p가 루트가 아니고 x와 p가 동일하게 왼쪽 자식들 또는 오른쪽 자식들이면 p와 조부모 g와의 간선 연결을 회전시키고 그 다음에 x와 p의 간선 연결을 회전시킨다.

 

Splay트리의 연산의 적용

- 왼쪽 트리에 대해 7이 루트가 되도록 Splay연산을 적용

 

반응형
LIST

'방송통신대학 > 자료구조' 카테고리의 다른 글

12-1. 멀티웨이 탐색 트리  (0) 2021.01.07
11-3. AVL트리, BB트리  (0) 2021.01.06
11-1. 이진 탐색 트리(binary search tree) 응용  (0) 2021.01.04
10-3. 이진트리 개수  (0) 2021.01.03
10-2. 숲  (0) 2021.01.02

+ Recent posts