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.