42
1 자료처리 자료처리 (Advanced Data Structures) (Advanced Data Structures) Multidimensional Index Structures Multidimensional Index Structures 2006 2006봄학기 봄학기 문양세 문양세 강원대학교 강원대학교 컴퓨터과학과 컴퓨터과학과 Page 2 Advanced Data Structures by Yang-Sae Moon 다차원 다차원 공간 공간 파일 파일 ( 다차원 다차원 색인 색인) (1/2) ) (1/2) 여러 개의 필드(애트리뷰트)를 동시에 키로 사용하는 색인 구조(파일) k-d 트리(’75) k-d-B 트리(’81) 격자 파일(Grid File) (’84) 사분 트리(Quadtree) (’84), MLGF (’85) R-트리(’84), R+-트리(’87), R*-트리(’90) 응용 분야: 단일 키 파일 구조로 처리가 어려운 위치 정보와 같은 다차원 데이터의 저장 및 검색에 활용 (x, y) 또는 (x, y, z)는 차원당 하나의 값 CAD (Computer Aided Design) GIS (Geographical Information System) (M)OLAP, Data Mining 등의 데이터베이스 응용 분야 Multidimensional Index Structures

07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

1

자료처리자료처리 (Advanced Data Structures)(Advanced Data Structures)

Multidimensional Index StructuresMultidimensional Index Structures

20062006년년 봄학기봄학기

문양세문양세

강원대학교강원대학교 컴퓨터과학과컴퓨터과학과

Page 2Advanced Data Structuresby Yang-Sae Moon

다차원다차원 공간공간 파일파일 ((다차원다차원 색인색인) (1/2)) (1/2)

여러 개의 필드(애트리뷰트)를 동시에 키로 사용하는 색인 구조(파일)

• k-d 트리(’75)

• k-d-B 트리(’81)

• 격자 파일(Grid File) (’84)

• 사분 트리(Quadtree) (’84), MLGF (’85)

• R-트리(’84), R+-트리(’87), R*-트리(’90)

응용 분야: 단일 키 파일 구조로 처리가 어려운 위치 정보와 같은 다차원

데이터의 저장 및 검색에 활용

• (x, y) 또는 (x, y, z)는 차원당 하나의 값

• CAD (Computer Aided Design)

• GIS (Geographical Information System)

• (M)OLAP, Data Mining 등의 데이터베이스 응용 분야

Multidimensional Index Structures

Page 2: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

2

Page 3Advanced Data Structuresby Yang-Sae Moon

다차원다차원 공간공간 파일파일 ((다차원다차원 색인색인) (2/2)) (2/2)

PAM (Point Access Method)

• 다차원의 점(point) 데이터를 저장 및 검색

• 예) k-d 트리, k-d-B 트리, Grid File, MLGF

SAM (Spatial Access Method)

• 선, 면 등과 같은 크기를 갖는 다차원 데이터를 저장 및 검색

• 예) R-tree, R+-트리, R*-트리

Multidimensional Index Structures

Page 4Advanced Data Structuresby Yang-Sae Moon

kk--dd 트리트리

k-d (k-dimensional) 트리

• Binary Search Tree를 다차원 공간으로 Straightforward하게 확장한 것

• 기본 구조와 알고리즘은 Binary Search Tree와 유사

• 트리의 레벨에 따라 차원을 번갈아 가며 비교

• 예) 2차원의 경우: x y x y ,,,

특징

• 주기억 장치 상에서 동작 (In-memory structure)

• 소규모의 다차원 점 데이터를 인덱싱할 때 적합(PAM)

• 균형 트리가 아님

Multidimensional Index Structures

Page 3: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

3

Page 5Advanced Data Structuresby Yang-Sae Moon

kk--dd 트리의트리의 삽입삽입 예예 (1/6)(1/6)

다음과 같은 10개의 2차원 점을 a부터 j까지 순서대로 k-d트리에 삽입하

는 경우

a

b

c

d

e

f

h

g

j

i

(0,0)

(10,10)

Multidimensional Index Structures

Page 6Advanced Data Structuresby Yang-Sae Moon

kk--dd 트리의트리의 삽입삽입 예예 (2/6)(2/6)

점 a 삽입

• 루트에 저장

a (5,4)

a

(0,0)

(10,10)

:x

Multidimensional Index Structures

Page 4: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

4

Page 7Advanced Data Structuresby Yang-Sae Moon

kk--dd 트리의트리의 삽입삽입 예예 (3/6)(3/6)

점 b 삽입

• 루트와 x 축의 값을 비교, b의 x 값이 a의 x 값보다 작으므로 왼쪽 자식 노드에 삽입

a

b

(0,0)

(10,10)

a (5,4)

b (2,7)

:x

:y

Multidimensional Index Structures

Page 8Advanced Data Structuresby Yang-Sae Moon

kk--dd 트리의트리의 삽입삽입 예예 (4/6)(4/6)

점 c 삽입

• 루트와 x 축의 값을 비교, c의 x 값이 a의 x 값보다 작으므로 오른쪽 자식 노드에 삽입

a (5,4)

b (2,7) c (9,5)a

b

c

(0,0)

(10,10)

:x

:y

Multidimensional Index Structures

Page 5: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

5

Page 9Advanced Data Structuresby Yang-Sae Moon

kk--dd 트리의트리의 삽입삽입 예예 (5/6)(5/6)

점 d 삽입

• 루트와 x 축의 값을 비교, d의 x 값이 a의 x 값보다 작으므로 왼쪽 자식 노드로 이동

• d의 y 값이 b의 y 값보다 작으므로 왼쪽 자식 노드에 삽입

a (5,4)

b (2,7) c (9,5)

d (3,1)

a

b

c

d

(10,10)

(0, 0)

:x

:y

:x

Multidimensional Index Structures

Page 10Advanced Data Structuresby Yang-Sae Moon

kk--dd 트리의트리의 삽입삽입 예예 (6/6)(6/6)

삽입에 의한 최종 k-d 트리

a (5,4)

b (2,7) c (9,5)

d (3,1) f (8,7)

h (4,3)g (1,4)

j (4,8)

i (8,2)

e (7,2)a

b

c

d

e

f

h

g

j

i

(0,0)

(10,10):x

:y

:x

:y

Multidimensional Index Structures

Page 6: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

6

Page 11Advanced Data Structuresby Yang-Sae Moon

kk--dd 트리의트리의 검색검색 예예

(4, 8)을 검색

• a(루트)와 x값 비교: 4 < 5이므로 왼쪽 서브 트리로 이동(traverse)

• b와 y값 비교: 7 < 8이므로 오른쪽 서브 트리로 이동

• j 발견: 검색 완료

a (5,4)

b (2,7) c (9,5)

d (3,1) f (8,7)

h (4,3)

j (4,8)

i (8,2)

e (7,2)a

b

c

d

e

f

h

g

j

i

(0,0)

(10,10):x

:y

:x

:yg (1,4)

Multidimensional Index Structures

Page 12Advanced Data Structuresby Yang-Sae Moon

kk--dd 트리의트리의 단점단점

균형 트리가 아님 데이터 입력 순서 및 분포에 따라 Skew 될 수 있음

• Skew가 발생할 경우, 검색 성능이 크게 떨어짐

• 예) g, d, b, e, h, a, f, c, i, j 의 순서로 입력된 예

a

b

c

d

e

f

h

g

j

i

(0,0)

(10,10)g (1,4)

f (8,7)

d (3,1)

c (9,5)

b (2,7)

i (8,2)

e (7,2)

h (4,3)

j (4,8) a (5,4)

:x

:y

:x

:y

:x

:y

:x

:y

Multidimensional Index Structures

Page 7: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

7

Page 13Advanced Data Structuresby Yang-Sae Moon

kk--dd--BB 트리트리

B-트리와 k-d 트리의 결합

• 디스크 기반: 디스크 페이지 크기의 노드들로 구성 B-트리 특성

• 다차원 점 데이터 저장, 검색 k-d 트리 특성

• 완전 균형 트리 B-트리 특성

Multidimensional Index Structures

Page 14Advanced Data Structuresby Yang-Sae Moon

kk--dd--BB 트리의트리의 구조구조

다중키 레코드 검색을 위한 인덱스 레코드: (key0, key1, …, keyK-1, 주소)

점: 도메인0×도메인1×…도메인K-1의 한 원소

영역

• 다차원 공간에서 크기를 가지는 객체

• 같은 성질을 가지고 있는 점들의 집합 (mini≤keyi≤maxi , 0≤i≤ k-1)

노드는 루트 페이지와 페이지의 집합

• 영역 페이지(region page) : <영역, 페이지 ID>, 내부 노드(internal node)

• 점 페이지(point page) : <점, (레코드) 주소>, 단말 노드(leaf node)

Multidimensional Index Structures

Page 8: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

8

Page 15Advanced Data Structuresby Yang-Sae Moon

kk--dd--BB 트리의트리의 특성특성

각 페이지를 노드로 갖고, 페이지 식별자(ID)를 노드 포인터로 갖는 다원

탐색 트리

모든 단말 페이지까지의 경로 길이는 동일

모든 영역은 분리/분할(disjoint) 서로 겹치는 영역이 없음을 의미함

루트 페이지가 영역 페이지이면, 이들 영역의 합은 전체 영역을 나타냄

Multidimensional Index Structures

Page 16Advanced Data Structuresby Yang-Sae Moon

22--dd--B B 트리의트리의 예예

--- 페이지에 포함된 영역(흰색)

--- 페이지에 포함되지 않은영역 (회색)

--- 점

Multidimensional Index Structures

Page 9: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

9

Page 17Advanced Data Structuresby Yang-Sae Moon

kk--dd--BB 트리의트리의 연산연산 ((검색검색))

영역은 각 차원들의 간격(interval)의 Cartesian Product (예: Ix × Iy)

• 부분 범위 질의(partial range query): 모든 차원이 범위로 제시된 질의 (범위 질의)

• 부분 일치 질의(partial match query): 일부는 범위로 일부는 점으로 제시된 질의

• 완전 일치 질의(exact match query): 모든 차원이 점으로 제시된 질의 (점 질의)

질의 처리 알고리즘

① Root-ID가 Null이면 종료, 그렇지 않으면 변수 page는 루트 페이지를 가리키게 한다.

② 변수 page가 점 페이지를 가리키면 질의 영역에 속하는 <점, 주소>에 대해 주소에 있는

레코드를 검색하여 출력한다.

③ 영역 페이지인 경우는 <영역, 자식>에 대해 변수 page가 자식 ID에 의해 참조되는 페이

지를 가리키게 하고 ②에서 반복한다.

Multidimensional Index Structures

Page 18Advanced Data Structuresby Yang-Sae Moon

kk--dd--BB 트리의트리의 질의질의 영역영역 검색의검색의 예예Multidimensional Index Structures

1

2

3

1.1 1.2

1.3 1.43.1

3.2

3.3

질의 영역

root-id

Page 10: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

10

Page 19Advanced Data Structuresby Yang-Sae Moon

kk--dd--BB 트리의트리의 연산연산 ((삽입삽입) (1/3)) (1/3)

노드에서 오버플로우가 발생할 경우, (적절한) 분할 축을 선택하여 두 개

의 노드로 분할

점 페이지의 분할

원래 페이지 내의 모든 <점, 주소>쌍을 분할 축의 X'의 값에 따라 좌우 페

이지로 이동한 후 원래 페이지는 삭제

Multidimensional Index Structures

분할 전

분할 원소

분할 후

왼쪽 페이지 오른쪽 페이지

Page 20Advanced Data Structuresby Yang-Sae Moon

kk--dd--BB 트리의트리의 연산연산 ((삽입삽입) (2/3)) (2/3)

영역 페이지의 분할

Multidimensional Index Structures

분할원소

분할전

*

*

* 표시된부분이분할된다

분할후

Page 11: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

11

Page 21Advanced Data Structuresby Yang-Sae Moon

<점, 주소>쌍을 삽입하는 알고리즘

① Root-ID가 Null이면, <점, 주소>를 포함하는 점 페이지 생성

② 점이 첨가될 페이지 탐색(완전 일치 질의)

③ 점 페이지에 삽입하고 종료, 오버플로우가 발생하면 분할을 수행

Multidimensional Index Structureskk--dd--BB 트리의트리의 연산연산 ((삽입삽입) (3/3)) (3/3)

Page 22Advanced Data Structuresby Yang-Sae Moon

완전 일치 질의로 탐색, 제거

공간 이용률을 높이기 위해 재구성

• 합병(merge): 두 영역의 정보가 한 페이지로 합병

• 언더플로우: 두 영역간에 재분배(redistribution)

두 영역의 합이 표현 가능한 영역(hyper-rectangle)이면 합병가능

합병이 불가능한 경우

Multidimensional Index Structureskk--dd--BB 트리의트리의 연산연산 ((삭제삭제))

A

B

C

Page 12: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

12

Page 23Advanced Data Structuresby Yang-Sae Moon

격자 파일

• 전체 공간을 하나 이상의 격자(grid)로 분할

• 데이터 추가에 따라 기존 격자를 분할하여 새로운 격자 구성

특징

• 디스크 기반 대용량 데이터 처리 가능

• 해시 기반 일반적으로 두 번의 디스크 접근으로 데이터 검색

Multidimensional Index Structures격자격자 파일파일 (Grid File)(Grid File)

Page 24Advanced Data Structuresby Yang-Sae Moon

d-차원의 격자 파일

• 격자 디렉터리(grid directory)

- d개의 선형 눈금자(liner scale)

· 격자 디렉토리를 구성하는 각 차원별 눈금 정보

· 주기억 장치에 유지

- d차원의 격자 배열(grid array)

· 선형 눈금자에 의해 분할된 격자로서, 하나의 이상의 격자 블록으로 구성

· 각 격자 블록은 해당 데이터 페이지 번호를 저장

· 디스크에 저장 (메모리에는 저장이 안되나???)

• 데이터 페이지

- 실제 데이터(다차원 레코드)가 저장되는 장소

- 디스크에 저장

Multidimensional Index Structures격자격자 파일의파일의 구성구성 (1/3)(1/3)

Page 13: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

13

Page 25Advanced Data Structuresby Yang-Sae Moon

격자 블록과 데이터 페이지

• 기본적으로 하나의 격자 블록당 하나의 데이터 페이지

• 두 개 이상의 격자 블록이 하나의 데이터 페이지에 대한 공유 가능

Multidimensional Index Structures격자격자 파일의파일의 구성구성 (2/3)(2/3)

Page 26Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures격자격자 파일의파일의 구성구성 (3/3)(3/3)

0 5 10 20

0

5

10b(4,6)

a

bg

i f

d

c

he

g(8,8)

c(16,2) e(18,8) h(13,9)

d(7,2) f(9,4) i(6,4)

a(2,4)

P1

P2

P3

P4

선형눈금자 격자 배열 데이터 페이지

Page 14: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

14

Page 27Advanced Data Structuresby Yang-Sae Moon

예제 데이터

Multidimensional Index Structures격자격자 파일의파일의 레코드레코드 삽입삽입 예예 (1/5)(1/5)

하나의 페이지가 최대 3개의 점 저장한다고 가정

a

bg

i f

d

c

he

(6, 4)i

(13, 9)h

(8, 8)g

(9, 4)f

(18, 8)e

(7, 2)d

(16, 2)c

(4, 6)b

(2, 4)a

위치데이터

Page 28Advanced Data Structuresby Yang-Sae Moon

a, b, c 삽입

Multidimensional Index Structures격자격자 파일의파일의 레코드레코드 삽입삽입 예예 (2/5)(2/5)

0 20

0

10a(2,4)

a

b

c

b(4,6) c(16,2)

P1

Page 15: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

15

Page 29Advanced Data Structuresby Yang-Sae Moon

d 삽입 (격자 분할)

Multidimensional Index Structures격자격자 파일의파일의 레코드레코드 삽입삽입 예예 (3/5)(3/5)

0 10 20

0

10b(2,4)

a

b

d

c

b(4,6) d(7,2)

c(16,2)

P1

P2

Page 30Advanced Data Structuresby Yang-Sae Moon

e, f 삽입 (f 삽입 시, 격자 분할)

Multidimensional Index Structures격자격자 파일의파일의 레코드레코드 삽입삽입 예예 (4/5)(4/5)

0 10 20

0

5

10b(4,6)

a

b

f

d

c

e

c(16,2) e(18,8)

a(2,4) d(7,2) f(9,4)

P1

P2

P3

Page 16: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

16

Page 31Advanced Data Structuresby Yang-Sae Moon

g, h, i 삽입 (i 삽입 시, 격자 분할)

Multidimensional Index Structures격자격자 파일의파일의 레코드레코드 삽입삽입 예예 (5/5)(5/5)

0 5 10 20

0

5

10b(4,6)

a

bg

i f

d

c

he

g(8,8)

c(16,2) e(18,8) h(13,9)

d(7,2) f(9,4) i(6,4)

a(2,4)

P1

P2

P3

P4

Page 32Advanced Data Structuresby Yang-Sae Moon

Find (7, 2), i.e., x=7 and y=2.• 선형 눈금자(SX, SY) 사용

- 주기억 장치 액세스

- x=7: 두 번째 범위(SX), y=2: 첫번째 범위(SY)

- 격자 배열 인덱스 = (2, 1)

• 격자 배열(G) 접근

- 디스크 액세스

- G(2, 1)

- 데이터 페이지 번호 = 3

• 데이터 페이지(P) 접근

- 디스크

- P3

- 데이터 d 검색

두 번의 디스크 접근

Multidimensional Index Structures격자격자 파일의파일의 질의질의 예예

(7, 2)

SY(0, 5, 10) SX(0, 5, 10, 20)

1 2 1 2 3

1

2

1 2 3G

i(6,4)f(9,4)d(7,2)P3

Page 17: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

17

Page 33Advanced Data Structuresby Yang-Sae Moon

점 i의 삭제

• P3, P4는 하나의 페이지 P3로 합병 가능

• P1은 두 개의 격자 블록이 공용 하다가 하나가 사용

• x=5 분할 제거

- 격자 블록 합병

- 선형 눈금자 수정

Multidimensional Index Structures격자격자 파일의파일의 레코드레코드 삭제삭제 예예

0 5 10 20

0

5

10b(4,6)

a

bg

f

d

c

he

g(8,8)

c(16,2) e(18,8) h(13,9)

d(7,2) f(9,4) a(2,4)

P1

P2

P3

SY

SX

Page 34Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures사분트리사분트리 ((QuadtreeQuadtree))

공간을 순환적으로 분해하는 계층적(hierarchical) 자료 구조

(Note: Quadtree는 객체가 나타내는 공간을 분해하여 표현한다.)

사분트리의 분류 기준

• 표현하고자 하는 자료의 유형 (점, 영역 등)

• 공간 분해 과정의 원칙 (예: x y x …)

• 해상도(resolution) – 분해 과정의 횟수를 고정 또는 가변 (얼마나 자세히 나타내나…)

사분트리로 표현하는 자료의 유형

• 점(point), 영역(region), 곡선(curve), 표면(surface), 볼륨(volume)

• 개체의 경계를 표현하는 경우: 곡선, 표면 데이터

• 개체의 내부를 표현하는 경우: 영역, 볼륨 데이터

Page 18: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

18

Page 35Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures영역영역 사분트리사분트리 (Region (Region QuadtreeQuadtree) (1/2)) (1/2)

이차원 영역 데이터 표현에 많이 사용

이미지를 표현하는 2진수의 배열을 연속적으로 동일한 크기의 사분면들

로 분할: 가변 해상도의 자료 구조

영역 사분트리의 예 (Refer the next page)

• 차수가 4인 트리

• 루트 노드는 전체 배열에 대응

• 자식 노드들은 각 영역의 사분면 표현

(NW, NE, SW, SE순)

• 단말 노드: 영역의 내부 표현(1, 흑색 노드) 또는 영역의 외부 표현(0, 백색 노드)

• 내부 노드(단말이 아닌 노드): 회색 노드(0과 1 모두 가짐)

Page 36Advanced Data Structuresby Yang-Sae Moon

1

13

4 5

6

2 3

7 89 10

14

1911 1215 1617 18

0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 1 1 1 10 0 0 0 1 1 1 10 0 0 1 1 1 1 10 0 1 1 1 1 1 10 0 1 1 1 1 0 00 0 1 1 1 0 0 0

A

D

B EC

F

1

2 3 4 5 6

7 8 9

11

10

12 13 14

15 16 17 18

19

레벨 3

레벨 2

레벨 1

레벨 0

NW NE SW SE

(a) (b) (c)

(d)

영역 사분트리의 예 (계속)

Multidimensional Index Structures영역영역 사분트리사분트리 (Region (Region QuadtreeQuadtree) (2/2)) (2/2)

Page 19: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

19

Page 37Advanced Data Structuresby Yang-Sae Moon

점 데이터를 표현

공간을 (크기가) 동일하지 않은 4개의 부속 공간으로 분할

이차원 점 데이터에 대한 인덱스로 활용

다차원 데이터를 위한 Binary Search Tree의 일반화

이차원 점 데이터를 나타내는 노드 표현

<데이터 필드, x 좌표, y 좌표, 네 개(NW, NE, SW, SE )의 포인터 필드>

Multidimensional Index Structures점점 사분트리사분트리 (Point (Point QuadtreeQuadtree))

NE Pointer SW Pointer SE PointerNW PointerY Cord.X Cord.Data Fields

Page 38Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures도시도시 데이터데이터 레코드레코드

590부산

1585경주

3525전주

455서울

6580강릉

7560속초

1050진주

4035대전

기타 정보YX도시명

Page 20: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

20

Page 39Advanced Data Structuresby Yang-Sae Moon

단말 노드가 버켓의 포인터를 가진다면 인덱스 역할 가능

(예) 버켓 1 : 0≤x<5와 45≤y<100의 값을 갖는 점 데이터들

Multidimensional Index Structures점점 사분트리의사분트리의 표현표현

대전

진주속초서울 전주

(8) (9) (10) (11) (17) (18) (19) (20) (22) (23) (24) (25)

강릉 경주 부산(1) (2) (3) (4) (5) (6) (7) (12) (13) (14) (15) (16) (21)

(35,40)대전

(5,45)서울

(60,75)속초

(25,35)전주

(50,10)진주

(85,15)경주

(90,5)부산

(80,65)강릉

(0,0)

(0,100)

(100,0)

(100,100)

Y

X

Page 40Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures

Binary Search Tree에 대한 삽입과 유사한 방법

• 삽입할 레코드의 위치를 x, y 좌표 값을 바탕으로 탐색

• 노드의 좌표 값과 삽입할 데이터의 좌표 값을 비교하여 Traverse

• 이 과정을 반복한 후, 도착한 단말 노드에 레코드 삽입

점 사분트리의 구축 비용 = 트리의 총 경로 길이

• 평균 삽입 비용(실험적): O(Nlog4N) ( Sorting의 복잡도와 유사)

• 한 노드의 탐색 비용: O(log4N)

점점 사분트리에서의사분트리에서의 삽입삽입 (1/2)(1/2)

Page 21: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

21

Page 41Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures

최적 점 사분트리 구성 방법 (a kind of bulk loading)

• 임의 노드의 어떤 서브트리도 전체 노드 수의 반 이상을 갖지 않는 트

리로 정의한다.

• 이를 위해, 모든 점 데이터들을 하나의 좌표축(x) 값으로 정렬하고 다

른 좌표축(y) 값은 보조 키로 사용한다.

• 루트는 정렬 파일의 중간 값을 갖고, 나머지는 4개 부속 그룹으로 나누

어 루트의 네 서브트리가 되도록 한다.

점점 사분트리에서의사분트리에서의 삽입삽입 (2/2)(2/2)

Page 42Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures점점 사분트리의사분트리의 삽입삽입 예예 (1/2)(1/2)

(35,40)대전

(0,0)

(0,100)

(100,0)

(100,100)

Y

X

(35,40)대전

(50,10)진주

(0,0)

(0,100)

(100,0)

(100,100)

Y

X

(a)

(b)

대전

진주

SE

대전

Page 22: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

22

Page 43Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures점점 사분트리의사분트리의 삽입삽입 예예 (2/2)(2/2)

대전

진주속초(35,40)대전

(60,75)속초

(50,10)진주

(0,0)

(0,100)

(100,0)

(100,100)

Y

X

대전

진주속초

강릉

(35,40)대전

(60,75)속초

(50,10)진주

(80,65)강릉

(0,0)

(0,100)

(100,0)

(100,100)

Y

X

(c)

(d)

Page 44Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures

탐색 공간을 좁혀 나가는 기법

• 한 레벨 아래로 갈수록 탐색 공간은 1/4로 감소

• 단말 노드가 가리키는 버킷에서 원하는 데이터(점 레코드) 검사

• 예) “(95, 8)에 위치한 도시를 검색하라”

• 대전(35, 40)의 SE 진주(85, 15)의 SE 부산(90, 5)의 NE에 속하므

로 버킷 23을 조사

점점 사분트리에서의사분트리에서의 검색검색 (1/2)(1/2)

Page 23: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

23

Page 45Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures

범위 탐색, 근접 탐색에도 적합

• 예) “좌표 값 (83, 10)에서 거리 8이내에 존재하는 모든 도시를 검색하라”

• 대전(35, 40)의 SE를 검색하고, 진주 (50, 10)의 NE와 SE만 검색하면 됨

점점 사분트리에서의사분트리에서의 검색검색 (2/2)(2/2)

대전

진주속초서울 전주

(8) (9)(10)(11) (17)(18)(19)(20) (22)(23)(24)(25)

강릉 경주 부산(1) (2) (3) (4) (5) (6) (7) (12) (13) (14) (15) (16) (21)

Page 46Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR--트리트리

R-트리란?

• B-트리를 다차원으로 확장시킨 완전 균형 트리

• 선, 면, 도형 등 다양한 다차원 공간 데이터의 저장이 가능(SAM)

특징

• 루트 노드가 아닌 노드는 최소 m, 최대 M개의 엔트리를 포함한다.(m ≤ M/2)

• 루트노드는 단말이 아닌 경우 최소 2개의 엔트리를 포함한다.

• 완전 균형트리(모든 단말 노드는 같은 레벨)이다.

Page 24: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

24

Page 47Advanced Data Structuresby Yang-Sae Moon

복잡한 형태의 공간 도형을 저장하기 위하여, 다차원 색인에서는 많은 경

우에 MBR(Minimum Bounding Rectangle) 개념을 이용

다차원 공간의 도형은 두 개의 점으로 표현되는 MBR에 포함됨

Multidimensional Index StructuresMBR (Minimum Bounding Rectangle)MBR (Minimum Bounding Rectangle)

(x1min, y1min)

(x1max, y1max)

(x2min, y2min)

(x2max, y2max)

Page 48Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresMBRMBR의의 예예 (2(2차원차원 공간공간))

r1

r13

r14r6

r4

r5

r8

r7

r12

r10

r11

r3

r9

r2

y

x

Page 25: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

25

Page 49Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR--트리에트리에 의한의한 공간공간 분할의분할의 예예

r1

r13

r14r6

r4

r5

r8

r7

r12

r10

r11

r3

r9

r2

R1

R2R3

R4

R5

R6

R7

Page 50Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR--트리트리 노드노드 구성구성

R1 R2

R3 R4 R5 R6 R7

r1 r13 r14 r4 r6 r2 r10 r12 r5 r7 r8 r3 r9 r11

노드 a

노드 b 노드 c

노드 e노드 d 노드 g노드 f 노드 h

내부 노드 = <(mbr1, pointer1), (mbr2, pointer2), …>

단말 노드 = <(mbr1, object1), (mbr2, object2), …>

R-트리 노드 구성의 예 (R-tree for the example in the previous slide)

Page 26: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

26

Page 51Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR--트리의트리의 연산연산

검색

• 영역 검색 질의 (Range Query)

• k-NN 질의 (k nearest neighbor query)

(객체) 삽입

(객체) 삭제

Page 52Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures영역영역 검색검색 알고리즘알고리즘

void Search(Node node, Region S)

{

if (node.level > 0) { // it is not a leaf node

for (i=0; i < node.NumOfEntry; i++) {

if (IsOverlap(node.entry[i].MBR, S)) {

Search(node.entry[i].child, S); // traverse to the sub-tree

}

}

} else { // it is a leaf node

for (i=0; i<node.NumOfEntry; i++) {

if (IsOverlap(node.entry[i].MBR, S)) {

PrintResult(node.entry[i].child); // find the result

}

}

}

}

Page 27: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

27

Page 53Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures영역영역 검색의검색의 예예 1 (1/2)1 (1/2)

r1

r13

r14r6

r4

r5

r8

r7

r12

r10

r11

r3

r9

r2

R1

R2R3

R4

R5

R6

R7

Q1

Page 54Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures영역영역 검색의검색의 예예 1 (2/2)1 (2/2)

R1 R2

R3 R4 R5 R6 R7

r1 r13 r14 r4 r6 r2 r10 r12 r5 r7 r8 r3 r9 r11

노드 a

노드 b 노드 c

노드 e노드 d 노드 g노드 f 노드 h

Page 28: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

28

Page 55Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures영역영역 검색의검색의 예예 2 (1/2)2 (1/2)

r1

r13

r14r6

r4

r5

r8

r7

r12

r10

r11

r3

r9

r2

R1

R2R3

R4

R5

R6

R7

Q2

Page 56Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures영역영역 검색의검색의 예예 2 (2/2)2 (2/2)

R1 R2

R3 R4 R5 R6 R7

r1 r13 r14 r4 r6 r2 r10 r12 r5 r7 r8 r3 r9 r11

노드 a

노드 b 노드 c

노드 e노드 d 노드 g노드 f 노드 h

Page 29: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

29

Page 57Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structureskk--NN NN 질의질의

주어진 점으로부터 가장 가까운 k개의 데이터를 검색

예) 3-NN 질의 예

r1

r13

r14r6

r4

r5

r8

r7

r12

r10

r11

r3

r9

r2

R1

R2R3

R4

R5

R6

R7

Q1

Page 58Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures삽입삽입 알고리즘알고리즘 (1/2)(1/2)

① 단말 노드 선택

• 데이터를 삽입할 단말 선택

• (하나 이상의 단말이 선택될 수 있으므로) ChooseLeaf 알고리즘 사용

② 단말 노드에 데이터를 저장

• 선택된 단말 노드에 빈 공간이 있으면 새로운 엔트리를 저장

• 빈 공간이 없는 경우 노드를 분할하여, 새로운 엔트리를 저장

Page 30: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

30

Page 59Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures삽입삽입 알고리즘알고리즘 (2/2)(2/2)

③ 트리 재조정

• 데이터가 삽입된 경로를 따라 새로운 데이터 삽입에 따라 변화된 MBR들

을 조정

• 새롭게 분할 된 노드 삽입이나 내부 노드의 분할이 일어날 수 있음

④ 트리 높이 증가

• 루트 노드가 분할되면, 분할 된 두 노드를 새로 루트 노드를 만들어 저장

• 이 경우 트리의 높이가 1증가함

Page 60Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures삽입삽입 알고리즘알고리즘 –– 단말단말 노드노드 선택선택

ChooseLeaf 알고리즘

① N은 루트 노드 T에서 시작

② N이 단말 노드이면 N을 반환

③ N이 단말 노드가 아니면, N의 엔트리 가운데 새로운 엔트리 E를 삽입하

였을 경우

• MBR의 크기가 가장 작게 증가하는 엔트리 F를 선택

(증가를 최소로 하는 엔트리 선택)

• 만일 증가하는 크기가 같으면 MBR의 크기가 더 작은 엔트리를 선택

④ 선택된 엔트리 F가 가리키는 노드를 N으로 설정한 후, 알고리즘 ②부터

반복 수행

Page 31: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

31

Page 61Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures삽입삽입 알고리즘알고리즘 –– 트리의트리의 분할분할 방법방법

분할 된 두 노드 MBR의 합을 최소가 되도록 분할을 선택

검색 시 불필요한 노드의 탐색을 줄일 수 있음

(a)를 2개의 노드에 2개씩 분할하는 3가지 방법 예

r2

r1

r3

r4

r2

r1

r3

r4

r2

r1

r3

r4

r2

r1

r3

r4

(a) (b) {r1,r2},{r3,r4} (c) {r1,r3},{r2,r4} (d) {r1,r4},{r2,r3}

Page 62Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR--트리트리 삽입의삽입의 예예 (1/6)(1/6)

r15를 새로 삽입하려는 경우

r1

r13

r14r6

r4

r5

r8

r7

r12

r10

r11

r3

r9

r2

R1

R2R3

R4

R5

R6

R7

r15

Page 32: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

32

Page 63Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR--트리트리 삽입의삽입의 예예 (2/6)(2/6)

삽입 전의 R-트리 구조

R1 R2

R3 R4 R5 R6 R7

r1 r13 r14 r4 r6 r2 r10 r12 r5 r7 r8 r3 r9 r11

노드 a

노드 b 노드 c

노드 e노드 d 노드 g노드 f 노드 h

Page 64Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR--트리트리 삽입의삽입의 예예 (3/6)(3/6)

①단말 노드 선택

• MBR R7에 추가할 때 MBR의 크기 증가가 가장 작음

• 따라서, 노드 h가 새로운 데이터를 삽입할 단말 노드로 선택됨

②단말 노드 h에 데이터 저장

• 노드 h를 노드 h(MBR R8)와 노드 i(MBR R9)로 분할함

• 새로운 데이터는 노드 i에 데이터를 저장함

Page 33: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

33

Page 65Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR--트리트리 삽입의삽입의 예예 (4/6)(4/6)

③ 트리 재조정

• 부모 노드에 저장된 노드 h의 MBR R7을 새로운 MBR R8로 변경하고 새로 삽

입된 노드 i에 관한 엔트리를 추가

• 노드 c역시 빈 공간이 없으므로 다시 분할, 그 결과 R5와 R6을 가진 노드 c와

R8과 R9를 가진 노드 j로 분할됨

• 다시 트리의 재조정을 하면 마지막으로 분할된 노드 c의 부모인 루트 노드

a에 노드 c의 MBR을 R10으로 변경하고, 빈 공간에 노드 j의 MBR인 R11을

저장하면 모든 트리의 조정이 종료됨

Page 66Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR--트리트리 삽입의삽입의 예예 (5/6)(5/6)

삽입 후의 영역 구조

r1

r13

r14r6

r4

r5

r8

r7

r12

r10

r11

r3

r9

r2

R1

R10R3

R4

R5

R6

R8

r15

R9

R11

Page 34: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

34

Page 67Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR--트리트리 삽입의삽입의 예예 (6/6)(6/6)

삽입 후의 R-트리 구조

R1 R10R11

R3 R4 R5 R6

r1 r13 r14 r4 r6 r2 r10 r12 r5 r7 r8

노드 a

노드 b 노드 c

노드 e노드 d 노드 g노드 f

R8 R9

r3 r9 r11 r15

노드 i노드 h

노드 j

Page 68Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR--트리의트리의 삭제삭제

단말 노드 탐색:삭제될 데이터를 가지는 엔트리를 가지는 단말 노드를 찾는다.

해당 엔트리 삭제: 단말 노드에서 해당 엔트리를 삭제한다.

언더플로우 처리: 단말 노드의 엔트리 개수가 m보다 작으면 언더플로우

가 발생하게 된다.

• 언더플로우가 발생한 노드 삭제 후, 노드의 모든 엔트리를 트리에 재삽입한다.

• 언더플로우는 트리의 루트 방향으로 전파될 수 있다.

• m개 이하의 엔트리를 가지는 중간 노드 역시 노드를 삭제하고 트리에 재삽입한다.

• MBR이 변하게 될 경우, 트리의 루트까지 경로를 따라 MBR을 조정한다.

• 트리가 모두 조정된 후에도 트리의 루트가 단지 하나의 자식만을 가질 경우 루트의 자식

노드를 새로운 로트 노드로 만들고 기존의 루트 노드를 삭제한다.이 경우 트리의 높이가 1 낮아진다.

Page 35: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

35

Page 69Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR--트리의트리의 분석분석

d 차원의 데이터를 처리하기 위한 B 트리의 확장으로서 중간(내부) 노드

와 단말 노드로 구성된 높이 균형 트리

• 단말 노드: 공간 데이터에 대한 인덱스 엔트리 저장

• 중간(내부) 노드: 하위 노드의 각 엔트리의 사각형을 포함하는 사각형 엔트리들로 구성

탐색: 포함(inclusion)과 겹침(overlap)의 최소화가 중요

N개의 인덱스를 갖는 R-트리의 높이는 최대 ⎡logmN ⎤-1(각 노드의 분기율이 적어도 m)

루트를 제외한 모든 노드에서 최악의 공간 활용도(worst case space utilization)는 m/M

• 트리의 높이를 감소시키면 공간 활용도는 증가

Page 70Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR--트리의트리의 변형변형 트리트리

R-트리의 성능 향상이나 다양한 응용의 지원을 위하여 여러 가지 R-트리

의 변형 트리가 발표되었음

대표적인 R-트리의 변형 트리

• R+-트리

- R-트리에서 노드 간의 겹치는 영역을 없앰

( 검색 속도의 향상이 주된 목적임)

- k-d-B 트리의 특징(영역은 disjoint함)이 접목

• R*-트리

- R-트리의 삽입, 삭제 알고리즘 개선

- 현재 학계에서는 대표적인 R-트리로 인식되고 있음

Page 36: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

36

Page 71Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR++--트리트리 (1/3)(1/3)

겹치는 데이터는 여러 노드에 중복하여 저장

중간 노드간의 겹침을 없앰

검색 시 불필요한 노드 탐색을 줄임

R+-트리와의 차이점

• R+-트리의 노드는 적어도 ½ 이상의 엔트리가 차있다는 보장을 해주지 않는다.

• R+-트리의 중간 노드의 엔트리들의 MBR은 겹치지 않는다.

• R+-트리의 데이터 객체는 하나 이상의 리프 노드에 저장될 수 있다.

Page 72Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR++--트리트리 (2/3)(2/3)

R+-트리의 예 (영역 표현 구조)

r1

r13

r14r6

r4

r5

r8

r7

r12

r10

r11

r3

r9

r2

R1

R2R3

R4

R7

R6

R8R5

Page 37: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

37

Page 73Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR++--트리트리 (3/3)(3/3)

R+-트리의 예 (노드 구조)

R1 R2

R3 R4 R5 R6 R7 R8

r1 r13 r4 r6 r14 r4 r7 r12 r2 r10 r11 r3 r9 r11

노드 a

노드 b 노드 c

노드 e노드 d 노드 g노드 f 노드 h

r4 r5 r8

노드 i

중복저장

Page 74Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR++--트리의트리의 검색검색 (1/4)(1/4)

R+-트리의 검색 예 1

r1

r13

r14r6

r4

r5

r8

r7

r12

r10

r11

r3

r9

r2

R1

R2R3

R4

R7

R6

R8R5

Page 38: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

38

Page 75Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures

R+-트리의 검색 예 1 (계속)

R1 R2

R3 R4 R5 R6 R7 R8

r1 r13 r4 r6 r14 r4 r7 r12 r2 r10 r11 r3 r9 r11

노드 a

노드 b 노드 c

노드 e노드 d 노드 g노드 f 노드 h

r4 r5 r8

노드 i

3개의 노드 방문

RR++--트리의트리의 검색검색 (2/4)(2/4)

Page 76Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures

R+-트리의 검색 예 2

r1

r13

r14r6

r4

r5

r8

r7

r12

r10

r11

r3

r9

r2

R1

R2R3

R4

R7

R6

R8R5

RR++--트리의트리의 검색검색 (3/4)(3/4)

Page 39: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

39

Page 77Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index Structures

R+-트리의 검색 예 2 (계속)

R1 R2

R3 R4 R5 R6 R7 R8

r1 r13 r4 r6 r14 r4 r7 r12 r2 r10 r11 r3 r9 r11

노드 a

노드 b 노드 c

노드 e노드 d 노드 g노드 f 노드 h

r4 r5 r8

노드 i

6개의 노드 방문

RR++--트리의트리의 검색검색 (4/4)(4/4)

Page 78Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR++--트리의트리의 삽입삽입 및및 삭제삭제 (1/2)(1/2)

일반적으로 R-트리보다 복잡

• 하나의 데이터가 여러 개의 단말 노드에 중복될 수 있기 때문

데이터 삽입

• 여러 패스를 따라 데이터를 삽입

• 노드를 분할하는 경우, 겹치는 영역이 없이 노드를 분할할 수 있는 축

을 찾아야 함

• 겹치는 영역이 없이 분할하는 것이 불가능할 경우, 하부 엔트리를 중

복하여 저장함

Page 40: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

40

Page 79Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR++--트리의트리의 삽입삽입 및및 삭제삭제 (2/2)(2/2)

데이터 삭제

• 해당 객체가 하나 이상의 단말 노드에 저장될 수 있으므로 해당하는

모든 단말 노드에서 해당 객체를 삭제하여야 함

• 삭제가 많이 발생한 뒤에는 공간 활용도가 매우 나빠지게 되는데, 이와 비슷한 현상은 k-d-B 트리에서도 발생함

• 이런 경우에는 성능을 고려하여 주기적으로 서브 트리들을 재구성해

야만 함

Page 80Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresRR++--트리의트리의 장단점장단점

장점

• MBR이 겹치는 문제점을 해결

• 불필요한 노드 탐색을 줄임

단점

• R+-트리의 경우 (겹침을 허용치 않기 때문에) 노드의 분할이 하위 노드로 파급

될 수 있음 (상위 노드의 분할이 다시 하위 노드의 분할을 야기할 수 있음)노드의 공간 활용도가 나쁨

• 단말 노드에 중복되어 저장되는 데이터의 수는 데이터의 분포나 데이터 개수

의 영향을 받으므로 데이터의 분포나 데이터의 개수에 따라 R+-트리의 성능이

저하될 수 있음

• 알고리즘의 구현이 매우 어려워, 정확도의 보장이 어려움

Page 41: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

41

Page 81Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresR*R*--트리트리

R-트리와 기본적인 구조 및 연산이 동일

삽입 및 삭제 시의 몇 가지 알고리즘 개선

(다양한 Heuristic 적용)

R-트리 질의 처리시 고려해야 할 사항 (적용 원칙)

• 면적(area) 최소화

• 겹침영역(overlap) 최소화

• 둘레 길이(margin) 최소화: 정사각형에 가까운 모양의 MBR이 좋음

• 저장장소 이용률(storage utilization) 최소화 : 트리의 노드 수를 줄일 수 있고, 트리의

높이를 낮은 상태로 유지할 수 있음

Page 82Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresR*R*--트리의트리의 개선개선 사항사항 (1/2)(1/2)

ChooseLeaf 알고리즘 변경

• 중간 노드의 선택: 면적 최소화 (MBR 크기 증가가 작은 노드 선택)

• 리프 노드 선택: 겹침 영역 최소화 (Overlap을 가장 작게 하는 노드 선택)

노드 분할 알고리즘 변경: 2단계 Heuristic 사용

• 분할 축 선택: 둘레 길이 최소화

(MBR의 둘레 길이를 가장 작게 하는 노드 선택)

• 분할 (값) 선택: 겹침 영역 최소화 (같을 경우 면적 최소화)

Page 42: 07. Multidimensional Index Structuresysmoon/courses/2006_1/ds/07.pdfMultidimensional Index Structures Page 8 Advanced Data Structures by Yang-Sae Moon k-d 트리의삽입예(4/6) 점c

42

Page 83Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresR*R*--트리의트리의 개선개선 사항사항 (2/2)(2/2)

강제적 재삽입 전략

• 오버플로우 발생시 노드의 M+1개의 데이터 중 트리의 중심에서 멀리 떨어진 p

개(보통 30%)를 강제로 트리에 재 삽입 (reorganization)

• 이점 (Advantages)

- 겹침 영역이 줄어듦

- 분할 비용을 줄일 수 있음

- MBR 모양이 정사각형에 가깝게 변함

Page 84Advanced Data Structuresby Yang-Sae Moon

Multidimensional Index StructuresR*R*--트리의트리의 장점장점

R-트리의 기본 구조와 연산을 유지하고 있으므로, 구현이 비교적 간단함

삽입, 삭제 알고리즘의 개선으로 질의 처리 성능이 우수함

일반적으로 R-트리라 하면, R*-트리를 의미하기도 함

(소스가 공개되어 있어, 많은 연구에서 널리 활용되고 있음)