B 트리와 R 트리 비교-링크 된리스트 만 묶여 있지 않습니까?


10

저는 B Tree에 익숙합니다. 주로 데이터베이스에 전기, 에어컨 및 하드 드라이브 공간을 제대로 공급해야합니다. 이중 (doubl [ie, ey]?) 링크 목록과 연결합니다.

오늘 점심 시간에 개발자 중 한 명이 R 트리를 언급했습니다.

나는 Wikipedia에 뛰어 올라 독서를 시작했다. 키가 큰 B 나무처럼 끔찍하게 들렸습니다. 안타깝게도, 수학 배경이 깊지 않으면 일부 동료의 의견을 이해하기가 어렵습니다.

누군가가 B 트리와 R 트리의 몇 가지 차이점을 명확히 할 수 있기를 바랐습니다. 어쨌든 그 남자들에게 물어볼 수도 있지만, 그들이 내 질문에 대답 할 것이라는 보장은 없습니다. 그들이 하나님에 대해 무엇을 알고 있을지 모를 것입니다. . .


BTree는 이중 연결리스트와는 다릅니다. 트리는 목록에서와 같이 n에 비례하는 대신 log (n) 연산의 액세스를 허용합니다.
— Javier

@Javier : b-tree 인덱스의 리프 노드는 일반적으로 인덱스 노드를 신속하게 검색 할 수 있도록 이중 연결 목록입니다.
— 요르단

1
순수한 기술적 인 질문이므로 이것은 StackOverflow에 속합니다 (다시 게시하지 마십시오. 충분한 사람들이 투표를 마치면 자동 마이그레이션됩니다).
— Péter Török

1
Programmers.SE는 프로그래밍에 대한 개념 질문입니다. 스택 오버플로는 실제로 도움이 필요한 코드가있는 경우를위한 것입니다.

2
@Peter Torok : 오래된 시스템에서이 문제는 너무나 심오했습니다. 그러나 이제이 사이트가 존재합니다.
— surfasb

답변:


7

R 트리는 b- 트리의 일반화로 생각할 수 있습니다. b- 트리가 포함 된 키의 "바운드 범위"를 통해 O (log n) 액세스를 제공하는 경우 R 트리는 포함 된 키의 "K 차원 영역"을 통해 O (log n) 액세스를 제공합니다.

우편 번호를 카운티 이름에 매핑하려는 경우 B- 트리를 사용할 수 있습니다. "60000에서 61000 사이의 우편 번호를 가진 모든 카운티는 무엇입니까?" 그러나 B-Tree는 키를 단일 차원으로 만 주문하기 때문에 GPS 좌표를 "시카고에서 100 마일 이내에있는 모든 카운티는 무엇입니까?"와 같은 쿼리의 카운티 이름에 매핑하기에는 적합하지 않습니다. R-Tree는 겹치는 경계 상자에 따라 키를 분할하므로 여러 차원에서 쿼리해야 할 때 키를 저장하는 자연스러운 방법입니다.


나는 유추를 좋아한다.
— surfasb

1
유추보다 더 구체적인 예는이 인덱스 알고리즘이 사용되는 방식입니다.
— SingleNegationElimination

6

목록이 구성되는 방식 (특히 요소가 추가 및 제거되는 방법, 해당되는 경우 노드의 균형이 조정되는 방식)을 무시하는 한 대부분의 트리 구조는 링크 된 목록 형태로 축소 될 수 있습니다. 본질적으로 한 데이터 구조를 다른 데이터 구조와 구별하는 삽입 / 삭제 / 검색 알고리즘입니다.

R-Tree의 노드에는 일반적으로 경계 상자가 포함되어있어 특정 위치에서 "가까운"레코드를 검색하려는 경우 필요할 수 있으므로 위치를 효율적으로 색인화 할 수 있습니다. B- 트리의 요소는 순서가 간단합니다. 어떤 것이 다른 요소보다 크거나 같은지 직접 비교할 수 있습니다. R-Tree에서 각 항목의 목적은 경계 상자에 포함 된 요소를 결정하는 것입니다.

B-Tree를 사용하면 하드 디스크와 같은 보조 메모리에서 주문 가능한 항목을 효율적으로 검색 할 수 있으며 R-Tree를 사용하면 특정 지점 또는 경계 상자에서 "가까운"또는 "가까운"요소를 효율적으로 검색 할 수 있습니다. 보조 메모리에서.


R 트리가 요소의 수가 증가함에 따라 구별을 나타 내기 시작하는 것처럼 들립니다. 맞습니까? 아니면 너무 단순화 되었습니까?
— surfasb

비슷한 수의 노드가 주어지면 리프가 아닌 노드에서 바운딩 박스 데이터의 선형 비용을 제외하고는 공간 사용량에 특별한 차이가 나타나지 않을 것이라고 생각합니다. 그러나 B-Tree의 기존 정의에서 경계 상자를 효율적으로 나타낼 수는 없으므로 B-Tree에서 공간 정보를 나타내려고하면 더 많은 공간을 사용해야합니다. R- 트리는 공간 관계를위한 것이며 B- 트리는 단일 차원 순서 만 지원합니다.
— JasonTrue

2
@JasonTrue은 : 사실, B- 트리 색인에 대한 경계 상자를 선형화하는 효율적인 방법이있다 en.wikipedia.org/wiki/Geohash을 . 해시는 "효율적"이지만 특히 편리하지는 않습니다. 임의의 경계 상자 쿼리는 2 차원 공간에 대해 9 개의 개별 쿼리를 수행 할 가능성이 높으며, 상자가 주 축과 겹치는 경우 (예 : 국제 날짜 표시 줄) 쿼리 수가 두 배 또는 네 배가되어 사용하기가 매우 번거로워집니다. 그럼에도 불구하고 선형 인덱스 만 사용할 수있는 경우 여전히 옵션입니다.
— SingleNegationElimination
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.