마인드 맵 갤러리 데이터 구조 7장 - 검색
'데이터 구조' 7장 - 검색의 기본 개념, 순차 검색과 이진 검색, 트리 검색, 해시 테이블, B-트리, B-트리 등 검색 지식을 다룬다.
2022-11-23 16:07:51에 편집됨이것은 (III) 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제에 대한 마인드 맵이며, 주요 함량은 다음을 포함한다 : 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제 (HIF-PHI)는 신장 빈혈의 치료를위한 새로운 소형 분자 경구 약물이다. 1. HIF-PHI 복용량 선택 및 조정. Rosalasstat의 초기 용량, 2. HIF-PHI 사용 중 모니터링, 3. 부작용 및 예방 조치.
이것은 Kuka Industrial Robots의 개발 및 Kuka Industrial Robot의 모션 제어 지침에 대한 마인드 맵입니다. 주요 내용에는 쿠카 산업 로봇의 역사, 쿠카 산업 로봇의 특성, 쿠카 산업 로봇의 응용 분야, 2. 포장 프로세스에서 쿠카 로봇은 빠르고 일관된 포장 작업을 달성하고 포장 효율성을 높이며 인건비를 줄입니다. 2. 인건비 감소 : 자동화는 운영자에 대한 의존성을 줄입니다. 3. 조립 품질 향상 : 정확한 제어는 인간 오류를 줄입니다.
408 컴퓨터 네트워크가 너무 어렵습니까? 두려워하지 마세요! 나는 피를 구토하고 지식 맥락을 명확히하는 데 도움이되는 매우 실용적인 마인드 맵을 분류했습니다. 컨텐츠는 매우 완전합니다. 네트워크 아키텍처에서 응용 프로그램 계층, TCP/IP 프로토콜, 서브넷 디비전 및 기타 핵심 포인트에 이르기까지 원칙을 철저히 이해하는 데 도움이 될 수 있습니다. 📈 명확한 논리 : Mindmas 보물, 당신은 드문 기회가 있습니다. 서둘러! 이 마인드 맵을 사용하여 408 컴퓨터 네트워크의 학습 경로에서 바람과 파도를 타고 성공적으로 해변을 얻으십시오! 도움이 필요한 친구들과 공유해야합니다!
이것은 (III) 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제에 대한 마인드 맵이며, 주요 함량은 다음을 포함한다 : 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제 (HIF-PHI)는 신장 빈혈의 치료를위한 새로운 소형 분자 경구 약물이다. 1. HIF-PHI 복용량 선택 및 조정. Rosalasstat의 초기 용량, 2. HIF-PHI 사용 중 모니터링, 3. 부작용 및 예방 조치.
이것은 Kuka Industrial Robots의 개발 및 Kuka Industrial Robot의 모션 제어 지침에 대한 마인드 맵입니다. 주요 내용에는 쿠카 산업 로봇의 역사, 쿠카 산업 로봇의 특성, 쿠카 산업 로봇의 응용 분야, 2. 포장 프로세스에서 쿠카 로봇은 빠르고 일관된 포장 작업을 달성하고 포장 효율성을 높이며 인건비를 줄입니다. 2. 인건비 감소 : 자동화는 운영자에 대한 의존성을 줄입니다. 3. 조립 품질 향상 : 정확한 제어는 인간 오류를 줄입니다.
408 컴퓨터 네트워크가 너무 어렵습니까? 두려워하지 마세요! 나는 피를 구토하고 지식 맥락을 명확히하는 데 도움이되는 매우 실용적인 마인드 맵을 분류했습니다. 컨텐츠는 매우 완전합니다. 네트워크 아키텍처에서 응용 프로그램 계층, TCP/IP 프로토콜, 서브넷 디비전 및 기타 핵심 포인트에 이르기까지 원칙을 철저히 이해하는 데 도움이 될 수 있습니다. 📈 명확한 논리 : Mindmas 보물, 당신은 드문 기회가 있습니다. 서둘러! 이 마인드 맵을 사용하여 408 컴퓨터 네트워크의 학습 경로에서 바람과 파도를 타고 성공적으로 해변을 얻으십시오! 도움이 필요한 친구들과 공유해야합니다!
찾다
검색의 기본 개념
1) 찾기
데이터 수집에서 특정 조건을 만족하는 데이터 요소를 찾는 과정
2) 조회 테이블(조회 구조)
조회에 사용되는 데이터 수집
정적 조회 테이블
쿼리에만 사용됩니다.
동적 조회 테이블
동적 삽입 및 삭제 지원
3) 키워드
요소를 고유하게 식별하는 데이터 요소의 데이터 항목 값
4) 평균 검색 길이
n: 조회 테이블의 길이
Pi: i번째 요소를 찾을 확률(보통 1/n)
Ci : i번째 요소를 찾는 데 필요한 비교 횟수
순차 검색과 이진 검색
순차 검색
일반 선형 테이블의 순차 검색
평균 성공 길이 찾기: (n 1)/2
평균 검색 실패 기간: n 1
정렬된 목록에서 순차적 검색
평균 성공 길이 찾기: (n 1)/2
실패한 검색의 평균 길이: n/2 n/(n 1)
하프(2포인트)로 검색
기본 아이디어
정렬된 시퀀스 목록에만 적용 가능하며, 키를 중간 위치 요소와 비교한 다음 검색이 성공하거나 실패할 때까지 크기에 따라 중간 위치 요소의 전반부 또는 후반부를 재귀적으로 비교합니다.
코드 구현
결정 트리
반탐색 과정을 설명하는 데 사용됩니다.
최대 가지 높이
의사결정나무는 균형이진트리이므로 가지나무 사이의 최대 높이 차이는 1, 즉 최대 비교 횟수 - 최소 비교 횟수 = 1
의사결정 트리는 또한 이진 정렬 트리입니다(즉, 왼쪽 하위 트리 키워드 < 루트 노드 < 오른쪽 하위 트리 또는 그 반대).
시간 복잡도:
청크 단위로 검색
기본 아이디어
인덱스 시퀀스 검색이라고도 합니다. 조회 테이블을 여러 블록으로 나눕니다. 이전 블록의 키워드는 다음 블록의 키워드보다 작지만 블록의 요소는 무질서할 수 있습니다. 각 항목은 각 블록의 최대 키워드와 주소를 나타냅니다. 첫 번째 요소의 인덱스 테이블은 순서대로 키워드로 구성됩니다.
검색 시 인덱스 테이블에서 검색할 레코드가 위치한 블록을 먼저 확인한 후(순차 또는 반검색 인덱스 테이블 사용) 블록 내에서 순차적으로 검색합니다.
평균 검색 길이 = 블록 검색 내 인덱스 검색
순서대로 모두 검색
길이가 n인 조회 테이블을 b개의 블록으로 나누고, 각 블록에는 s개의 레코드가 있습니다.
인덱스 테이블은 블록 내에서 절반 검색과 순차 검색을 사용합니다.
트리 검색
이진 정렬 트리(BST)
정의
이진 정렬 트리(이진 검색 트리라고도 함)는 빈 트리이거나 다음 속성을 갖는 이진 트리입니다.
1) 왼쪽 하위 트리가 비어 있지 않으면 왼쪽 하위 트리에 있는 모든 노드의 값이 루트 노드의 값보다 작습니다.
2) 오른쪽 하위 트리가 비어 있지 않으면 오른쪽 하위 트리에 있는 모든 노드의 값이 루트 노드의 값보다 큽니다.
3) 왼쪽과 오른쪽 하위 트리도 각각 이진 정렬 트리입니다.
이진 정렬 트리에서 순차 순회를 수행하여 증가하는 순서의 시퀀스를 얻습니다.
찾다
끼워 넣다
1) 키워드 k가 루트 노드 값보다 작으면 왼쪽 하위 트리에 삽입하고, 그렇지 않으면 오른쪽 하위 트리에 삽입합니다.
2) 삽입된 노드는 새로 추가된 리프 노드여야 하며 검색 실패 시 검색 경로에서 방문한 마지막 노드의 왼쪽 또는 오른쪽 자식이어야 합니다.
3) 이진 정렬에서 동일한 노드를 삭제하고 삽입합니다. 노드가 원래 리프 노드인 경우 이전 및 후속 이진 트리는 변경되지 않고, 균형 잡힌 이진 트리의 경우 삭제된 원래 노드가 리프 노드인지 여부에 관계없이 유지됩니다. 리프 노드 여부, 노드, AVL 전후가 변경될 수 있습니다(또는 변경되지 않을 수 있음)
구조
건설 과정
연산
삭제
①삭제된 노드가 리프 노드인 경우에는 직접 삭제하면 됩니다.
②삭제된 노드 z에 왼쪽 하위 트리 또는 오른쪽 하위 트리가 하나만 있는 경우 해당 하위 트리를 z의 상위 노드의 하위 트리로 만듭니다.
③z가 왼쪽과 오른쪽 두 개의 하위 트리를 가지고 있는 경우, z의 직접 후속 노드(순서대로 계산) 또는 직접 선행 노드를 z로 대체한 후 후속 노드를 삭제하여 이전 상황으로 전환합니다.
효율성 분석
1) 왼쪽 서브트리와 오른쪽 서브트리의 높이 차이가 1을 초과하지 않는 것, 즉 균형 이진 트리
평균 검색 길이:
2) 오른쪽(왼쪽) 자식만 있는 단일 트리
평균 검색 길이:
이진 검색과 비교
1) 이진 정렬 트리의 검색 성능은 데이터의 입력 순서와 관련이 있으며 최상의 경우에만 검색 성능이 이진 검색과 동일합니다.
2) 테이블의 질서를 유지하는 측면에서 이진 트리는 노드를 이동할 필요가 없으며 삽입 및 삭제 작업을 완료하기 위해 포인터만 수정하면 되며 시간 복잡도는 O(log2n)입니다. O(n)이 있는 경우 시퀀스 테이블이 정적 조회 테이블인 경우 시퀀스 테이블과 이진 검색을 사용하는 것이 적합합니다. 동적인 경우 논리적 구조로 이진 정렬 트리를 사용하는 것이 적합합니다.
균형 이진 트리
정의
노드의 왼쪽과 오른쪽 하위 트리 사이의 높이 차이를 균형 인자(왼쪽 높음 - 오른쪽 높음)로 정의하면 균형 이진 트리 노드의 균형 인자는 0, 1, -1, 즉 높이만 될 수 있습니다. 모든 노드의 왼쪽 하위 트리와 오른쪽 하위 트리 간의 차이는 1 이하입니다.
끼워 넣다
1) 이진 정렬 트리와 유사한 노드 삽입
2) 삽입된 노드가 균형을 파괴하면 가장 작은 불균형 하위 트리를 찾아서 회전시킵니다.
①LL 균형 회전(오른쪽 단일 회전)
노드 A의 왼쪽 하위 트리에 새 노드를 삽입합니다. A의 왼쪽 하위 트리를 위쪽으로 회전하여 A가 B의 오른쪽 하위 트리의 루트 노드 역할을 합니다. B의 원래 오른쪽 자식 트리는 A의 왼쪽 하위 트리입니다.
②RR 균형 회전(왼쪽 단일 회전)
노드 A의 오른쪽 하위 트리에 새 노드를 삽입합니다. A의 오른쪽 하위 트리를 위쪽으로 회전하면 A가 B의 왼쪽 하위 트리의 루트 노드가 됩니다. A의 원래 왼쪽 하위 트리는 A의 오른쪽 하위 트리 역할을 합니다.
③LR 균형 회전(먼저 왼쪽, 그 다음 오른쪽으로 이중 회전)
A의 왼쪽 자식의 오른쪽 하위 트리에 새 노드를 삽입하려면 먼저 A의 왼쪽 자식 B의 오른쪽 하위 트리의 루트 노드 C를 왼쪽으로 B 위치까지 회전한 다음 C를 오른쪽으로 회전해야 합니다. 그리고 A의 위치까지
④RL 균형회전(좌회전 2회 연속)
삭제
1) 이진 정렬 트리 방법을 사용하여 노드 w에 대한 삭제 작업을 수행합니다.
2) 노드 w에서 시작하여 위쪽으로 추적하여 첫 번째 불균형 노드 z(즉, 가장 작은 불균형 하위 트리)를 찾습니다. y는 노드 z의 높이가 가장 높은 하위 노드입니다. x는 노드 y의 높이입니다.
3) 그런 다음 x, y 및 z의 가능한 4개 위치가 있는 루트로 z를 사용하여 하위 트리의 균형을 맞춥니다.
① y는 z의 왼쪽 자식이고, x는 y의 왼쪽 자식입니다(LL, 오른쪽 단일 회전).
②y는 z의 왼쪽 자식이고 x는 y의 오른쪽 자식입니다(LR, 먼저 왼쪽으로 이중 회전한 다음 오른쪽으로 이중 회전).
③y는 z의 오른쪽 자식이고, x는 y의 오른쪽 자식입니다(RR, 왼쪽 단일 회전).
④y는 z의 오른쪽 자식, x는 y의 왼쪽 자식(RL, 먼저 오른쪽으로 이중 회전한 다음 왼쪽으로 회전)
와
찾다
검색 과정은 이진 정렬 트리와 동일하며 평균 검색 길이는 O(log2n)입니다.
노드 수
nh는 높이가 h인 균형 이진 트리의 최소 노드 수입니다.
레드 블랙 트리
정의
레드-블랙 트리는 다음 레드-블랙 속성을 만족하는 이진 정렬 트리입니다.
①각 노드는 빨간색이거나 검은색입니다.
②루트 노드는 검은색이다.
③리프 노드(가상의 외부 노드, NULL 노드)는 모두 검은색입니다.
④ 인접한 두 개의 레드 노드가 없습니다(즉, 레드 노드의 부모 노드와 자식 노드가 모두 블랙입니다).
⑤ 각 노드에 대해 해당 노드에서 리프 노드까지의 단순 경로에는 동일한 수의 검정색 노드가 포함됩니다.
노드(이 노드 제외)에서 리프 노드까지의 단순 경로에 있는 블랙 노드의 총 수를 노드의 블랙 높이(bh로 기록)라고 합니다. 루트 노드의 블랙 높이는 레드-블랙 트리입니다. 검은 높이
자연
1. 루트 노드에서 리프 노드까지의 가장 긴 경로는 최단 경로의 두 배를 넘지 않습니다.
2. n개의 내부 노드가 있는 레드-블랙 트리의 높이
끼워 넣다
이진 검색 트리 삽입 방법을 사용하여 삽입하고 새 노드 z를 빨간색으로 색칠합니다.
z가 루트 노드이면 검은색으로 칠하고 끝냅니다.
z가 루트 노드가 아닌 경우
z의 상위 노드가 검은색이면 조정이 필요하지 않습니다.
z의 부모 노드가 빨간색인 경우
①z의 삼촌 노드 y는 검정색이고, z는 오른쪽 자식입니다.
LR(z.p가 오른쪽 자식이면 RL), 왼쪽으로 한 번 회전하면 ②가 됩니다.
②z의 삼촌 노드 y는 검정색이고, z는 왼쪽 자식입니다.
LL(또는 z.p가 올바른 자식인 경우 RR), 오른쪽으로 한 번 회전하고 z.p와 z.p.p 및 색상을 바꿉니다.
③x의 삼촌 노드 y가 빨간색인 경우
z.p와 y를 모두 검정색으로 지정하고 z.p.p를 빨간색으로 지정한 다음 z.p.p를 새 노드 z로 사용하여 ①, ② 또는 z가 루트 노드가 될 때까지 주기를 반복합니다.
삭제
1) 삭제 과정은 먼저 이진 탐색 트리의 삭제 방법을 실행하며, 삭제하려는 노드에 자식이 2개 있으면 순서대로(즉, 오른쪽 하위 트리에서 가장 작은 노드) 후속 노드와 교환한다. 그런 다음 삭제로 변환됩니다. 이 후속 노드에는 최대 하나의 자식이 있으므로 삭제되는 노드에는 자식이 없거나 하나만 있는 상황으로 변환됩니다.
2) 삭제할 노드가 오른쪽 자식 또는 왼쪽 자식만 있는 경우 해당 노드는 블랙 노드이고 자식은 레드 노드여야 함을 속성에서 알 수 있습니다.
3) 삭제하려는 노드에 자식이 없는 경우
①노드가 빨간색이면 직접 삭제
② 삭제할 노드가 자식이 없고 레드인 경우 y를 대체하는 데 사용되는 노드로 x를 기록합니다. (x는 블랙 널 노드입니다.) 블랙 높이를 변경하지 않고 유지하기 위해 x를 이중 블랙 노드로 배치합니다. 일반 노드로 되돌려야 합니다.
1. x의 형제 노드 w는 빨간색입니다.
이때 w는 검정색 왼쪽 및 오른쪽 자식 노드와 부모 노드를 가져야 하며, w와 x.p의 색상을 교환한 다음 x.p를 왼쪽으로 회전하여 상황 1을 2, 3, 4로 변환합니다.
2. x의 형제 노드 w는 검정색이고, w의 왼쪽 자식은 빨간색, 오른쪽 자식은 검정색입니다.
RL, 즉 빨간색 노드는 부모 노드 오른쪽 자식의 왼쪽 자식입니다. w와 왼쪽 자식의 색상을 바꾸고 w를 오른쪽으로 회전한 후 사례 3으로 변환합니다.
3. x의 형제 노드 w는 검정색이고, w의 오른쪽 자식은 빨간색입니다.
RR. w와 x.p의 색상을 바꾸고, w의 오른쪽 자식을 검정색으로 색칠하고, x.p를 왼쪽으로 회전하여 x를 다시 단일 검정색으로 변경하고 끝납니다.
4. x의 형제 노드 w는 검정색이고, w의 두 자식 노드는 모두 검정색입니다.
x와 w 모두에서 검정색 레이어를 제거합니다(즉, w가 빨간색이 됨). 보상으로 x.p에 검정색 레이어를 추가하여 로컬 검정색 높이를 유지합니다.
x.p가 원래 빨간색이었다면 검은색으로 변경하고 종료
x.p가 원래 검은색이면 이를 새 노드 x로 사용하여 루프에 들어갑니다.
해시 테이블
기본 사상
해시 함수(Hash function): 조회 테이블의 키워드를 키워드에 해당하는 주소에 매핑하는 함수로, Hash(key)=Addr(여기서의 주소는 배열 첨자, 인덱스, 메모리 주소 등이 될 수 있음)로 기록됩니다.
해시 함수는 두 개 이상의 서로 다른 키워드를 동일한 주소에 매핑할 수 있으며, 이를 충돌이라고 합니다. 이러한 서로 다른 키워드를 동의어라고 합니다. 한편으로, 잘 설계된 해시 함수는 그러한 충돌을 최소화해야 하는 반면, 그러한 충돌은 항상 불가피하므로 이를 처리하는 방법을 설계해야 합니다.
해시 테이블(Hash Table): 키워드를 기반으로 직접 접근하는 데이터 구조. 즉, 해시 테이블은 키워드와 저장 주소 간의 직접적인 매핑 관계를 설정합니다.
해시 함수를 구성하는 방법
필요하다
1) 해시 함수의 도메인에는 저장해야 하는 키워드가 모두 포함되어야 하며, 값 도메인의 범위는 해시 테이블의 크기나 주소 범위에 따라 달라집니다.
2) 해시 함수로 계산된 주소는 전체 주소 공간에 동일한 확률로 고르게 분포되어 충돌 발생을 줄여야 합니다.
3) 해시 함수는 최대한 단순해야 하며, 어떤 키워드에 해당하는 해시 주소를 짧은 시간 내에 계산할 수 있어야 합니다.
일반적으로 사용되는 해시 함수
직접 주소 지정 방법
기본 아이디어
키워드의 선형함수 값을 해시 주소로 직접 취함
해시 함수
H(키)=키 또는 H(키)=a×키b
특징
간단하고 충돌을 일으키지 않으며 키워드의 지속적인 배포에 적합합니다. 그렇지 않으면 저장 공간이 낭비됩니다.
나누기 남기기법
기본 아이디어
해시 테이블의 길이를 m으로 하고, m보다 작거나 가장 가깝거나 같은 소수 p를 취하고, 수식을 이용하여 키워드를 해시 주소로 변환합니다.
해시 함수
H(키)=키%p
특징
가장 일반적이고 간단한 방법
디지털 분석
기본 아이디어
r-base 숫자의 r 자리에 대해 상대적으로 균일한 자릿수 분포를 갖는 비트 수를 해시 주소로 선택합니다.
특징
알려진 키워드 세트에 적합합니다. 키워드가 변경되면 새로운 해시 함수를 재구성해야 합니다.
정사각형-중간 방법
기본 아이디어
키워드의 제곱값 중 가운데 숫자를 해시 주소로 사용
특징
키워드에만 사용되는 각 비트의 값은 균일하지 않거나 해시 주소에 필요한 비트 수보다 작습니다.
갈등을 처리하는 방법
개방형 주소 지정 방법
정의
새 항목이 저장될 수 있는 무료 주소는 동의어 항목과 동의어가 아닌 항목 모두에 열려 있습니다.
재귀 공식
Hi는 충돌 처리에서 i번째 검출로 얻은 해시 주소, m은 해시 테이블의 길이, di는 증분 순서를 나타낸다.
증분 순서
선형 검출 방법
기본 아이디어
di=0, 1,...,m-1, 즉 충돌이 발생하면 빈 단위를 찾거나 테이블 전체를 검색할 때까지 테이블의 다음 단위를 순차적으로 확인합니다.
특징
인접한 해시 주소에서 많은 수의 요소가 "집계"되기 쉽기 때문에 검색 효율성이 크게 저하됩니다.
선형 프로빙을 사용하면 동의어가 아니더라도 충돌이 발생할 수 있습니다.
제곱 검출 방법
기본 아이디어
di=0^2, 1^2, -1^2...,k^2,-k^2, 여기서 k≤m/2, 해시 테이블 길이 m은 4K로 표현될 수 있는 소수여야 합니다. 3, 2차 검출 방법이라고도 함
특징
"스택업" 문제를 방지하지만 해시 테이블의 모든 셀을 감지할 수는 없습니다(그러나 셀의 절반 이상은 감지할 수 있음).
이중 해싱
기본 아이디어
di=Hash2(key), 즉 두 개의 해시 함수가 사용됩니다. 첫 번째 해시 함수 H(key)에서 얻은 주소가 충돌하면 두 번째 해시 함수 Hash2(key)를 사용하여 키 주소 증가분을 계산합니다.
해시 함수
의사 난수 시퀀스 방법
di = 의사 난수 시퀀스
지퍼방식(체이닝)
삽입과 삭제가 빈번한 상황에 적합한 해시 주소로 고유하게 식별되는 선형 연결 목록에 모든 동의어를 저장합니다.
해시 조회 및 성능 분석
검색과정
① 조회 테이블의 Addr 주소에 레코드가 있는지 확인하고 레코드가 있으면 검색 실패를 반환하고, 키 값과 비교하여 반환합니다. 성공 플래그를 검색하고, 그렇지 않으면 ②단계로 진행합니다.
② 주어진 충돌 처리 방법을 사용하여 "다음 해시 주소"를 계산하고 이 주소에 Addr을 설정한 후 ①단계로 이동합니다.
평균 검색 길이 ASL=2.5
분류
검색 성공
알려진 각 요소의 길이 찾기
성공한 비교 횟수 = 충돌 횟수 1
검색 실패
해시 함수에 의해 결정된 각 검색 위치의 검색 길이
효율성에 영향을 미치는 요소 찾기
해시 함수
갈등을 처리하는 방법
채우기 요소 α = 테이블의 레코드 수 n/해시 테이블 길이 m
B-트리와 B-트리
B-트리와 기본 동작
정의
다중 방향 균형 검색 트리라고도 알려진 B-트리는 모든 노드의 최대 자식 수를 B-트리의 차수라고 하며 m으로 표시됩니다. 다음 속성을 만족하는 트리 m-ary 트리:
1) 트리의 각 노드에는 최대 m개의 하위 트리가 있습니다. 즉, 최대 m-1개의 키워드를 포함합니다.
2) 루트 노드가 터미널 노드가 아닌 경우 하위 트리가 2개 이상 존재
3) 루트 노드를 제외한 모든 비리프 노드에는 최소한 "m/2]개의 하위 트리가 있습니다. 즉, 최소한 "m/2]-1개의 키워드를 포함합니다.
4) 모든 리프가 아닌 노드의 구조는 다음과 같습니다.
Ki는 오름차순으로 정렬된 노드의 키워드입니다.
Pi는 하위 트리의 루트 노드에 대한 포인터입니다. Pi-1이 가리키는 하위 트리의 모든 노드의 키는 Ki보다 작습니다.
n은 키워드 수입니다.
5) 모든 리프 노드는 동일한 수준에 나타나며 정보를 전달하지 않습니다(즉, 외부 노드, 이러한 노드에 대한 포인터는 비어 있음).
속성(m=5로 가정)
1) 노드의 자식 수는 노드의 키워드 수에 1을 더한 것과 같습니다.
2) 루트 노드에 키워드가 없으면 하위 트리가 없으며 이때 B-트리는 비어 있습니다. 루트 노드에 키워드가 있으면 해당 하위 트리는 하위 트리의 수가 2보다 크거나 같아야 합니다. 는 키워드 수에 1을 더한 것과 같습니다.
3) 루트 노드를 제외한 모든 비종단 노드는 최소 "m/2]-1=3개의 하위 트리와 최대 5개의 하위 트리(즉, 최대 4개의 키워드)를 갖습니다.
4) 노드의 키워드는 왼쪽에서 오른쪽으로 증가하는 순서로 되어 있습니다. 키워드 양쪽에 하위 트리에 대한 포인터가 있습니다. 왼쪽 포인터가 가리키는 하위 트리의 키워드는 모두 키워드보다 작습니다. 오른쪽 포인터 기준은 키워드보다 작습니다. 모든 키워드는 이 키워드보다 큽니다.
5) 모든 리프 노드는 4번째 수준에 있으며 검색이 실패한 위치를 나타냅니다.
B-트리의 높이(디스크 액세스 횟수)
1) B-트리의 각 노드는 최대 m개의 하위 트리와 m-1개의 키워드를 갖습니다. 따라서 높이가 h인 m-차 B-트리의 키워드 수는 n≤(m-1)(1)을 만족해야 합니다. m m^2 … m^(h-1))=m^h-1
2) 루트 노드에는 최소한 2개의 하위 트리가 있고, 루트가 아닌 노드에는 최소한 "m/2]-1 키워드가 있으며, h 1단계에는 최소한 2("m/2])^(h-1) 노드는 포인트이고 리프 노드의 수는 n 1입니다.
B-트리 검색
①B-트리에서 노드 찾기
디스크에서 수행되며, 키워드 비교를 통해 해당 노드를 찾습니다.
리프 노드가 발견되면(해당 포인터가 널 포인터임) 트리에 해당 키워드가 없고 검색이 실패함을 의미합니다.
②노드에서 키워드 찾기
노드 내에서 순차 또는 이진 검색 방법을 사용하여 메모리에서 수행됩니다.
B-트리에 삽입
1) 삽입 후 노드 키워드 개수가 m개 미만인 경우 직접 삽입 가능
2) 그렇지 않은 경우에는 중간 위치("m/2])에 있는 노드를 가져와 원래 노드의 상위 노드에 삽입하면 원래 노드가 두 조각으로 분할됩니다. 상위 노드가 오버플로되면 루트 노드에 도달할 때까지 계속 분할하여 B-트리의 높이를 1만큼 증가시킵니다.
B-트리 삭제
1) 삭제된 키워드 k가 단말 노드(최하위 비리프 노드)에 없으면 k를 k의 선행자(또는 후임자) k'로 대체한 후, 해당 노드에서 k'를 삭제한다(k'는 반드시 떨어져야 한다). 터미널 노드에서)
2) 삭제된 키워드 k가 터미널 노드에 있는 경우
①키워드를 직접 삭제하세요. 조건은 노드의 키워드 수가 ≥ "m/2]입니다. 키워드를 삭제한 후에도 여전히 B-트리의 정의를 충족합니다.
②형제는 충분히 빌릴 수 있다. 노드의 키워드 개수 = "m/2]-1이고 형제 노드의 키워드 개수 ≥ "m/2]인 경우 노드, 오른쪽(왼쪽) 형제 노드 및 해당 부모 노드(아버지)를 조정합니다. -son 조옮김 방법) 새로운 균형을 이루기 위해
③빌려줄 형제가 부족하다. 노드와 왼쪽, 오른쪽 형제 노드의 키워드 개수가 모두 "m/2]-1인 경우 해당 키워드를 삭제하고 왼쪽(오른쪽) 형제 노드와 부모 노드의 키워드와 병합합니다.
B-트리의 기본 개념
B-트리는 다음 조건을 충족하는 B-트리의 변형 트리입니다.
1) 각 분기 노드에는 최대 m개의 하위 트리(자식 노드)가 있습니다.
2) 리프가 아닌 루트 노드는 적어도 2개의 하위 트리를 갖고, 다른 가지 노드는 적어도 "m/2]개의 하위 트리를 갖는다.
3) 노드의 하위 트리 수는 키워드 수와 같습니다.
4) 모든 리프 노드에는 모든 키워드와 해당 레코드에 대한 포인터가 포함됩니다. 키워드는 리프 노드에 크기 순서로 정렬되고 인접한 리프 노드는 크기 순서로 서로 연결됩니다.
5) 모든 가지 노드(인덱스로 간주될 수 있는 인덱스)에는 각 하위 노드(즉, 다음 레벨의 인덱스 블록)에 있는 키워드의 최대값과 해당 하위 노드에 대한 포인터만 포함됩니다.
B-트리와 B-트리의 차이점:
1) B-트리에서 n개의 키워드가 있는 노드는 n개의 하위 트리만 포함합니다. 즉, 각 키워드는 하나의 하위 트리에 해당하는 반면, B-트리에서 n개의 키워드가 있는 노드는 n 1개의 하위 트리를 포함합니다.
2) B 트리에서 각 노드(루트가 아닌 내부 노드)에 대한 키워드 개수 n의 범위는 "m/2]<n<m(루트 노드: 2<n<m)입니다. 트리에서 각 노드(루트가 아닌 내부 노드)에 대한 키워드 수 n의 범위는 "m/2]-1<n<m-1(루트 노드: 1≤n≤m-1)입니다.
3) B-트리에서 리프 노드는 정보를 포함하며, 리프가 아닌 모든 노드는 인덱스 역할만 합니다. 리프가 아닌 노드의 각 인덱스 항목에는 해당 하위 트리의 최대 키워드와 하위 트리에 대한 포인터만 포함됩니다. 이 키워드에 해당하는 레코드의 저장 주소는 포함되지 않습니다.
4) B-트리에서 리프 노드에는 모든 키워드가 포함됩니다. 즉, 리프가 아닌 노드에 나타나는 키워드는 B-트리의 리프 노드(가장 바깥쪽 내부 노드)와 리프 노드에 포함된 키워드에도 나타납니다. 다른 노드는 반복되지 않습니다.
찾다
① B 트리에는 두 개의 헤드 포인터가 있습니다. 하나는 루트 노드를 가리키고 다른 하나는 가장 작은 키워드가 있는 리프 노드를 가리킵니다. 따라서 B 트리에서는 두 가지 검색 작업을 수행할 수 있습니다. 하나는 순차적 검색 시작입니다. 가장 작은 키워드부터, 다른 하나는 첫 번째는 루트 노드부터 시작하는 다방향 검색입니다.
②B-트리에서 검색할 때 성공 여부에 관계없이 각 검색은 루트 노드에서 리프 노드까지의 경로입니다.