Deap은 루트 노드에 요소나 키 값이 없는 데이터 구조로 정의됩니다. 다음 규칙을 구현하여 구성됩니다. - 루트 노드가 비어 있음을 나타내는 요소가 루트 노드에 없습니다. deap의 왼쪽 하위 트리는 최소 힙을 나타냅니다. deap의 오른쪽 하위 트리는 최대 힙을 나타냅니다. 따라서 다음 문장에 대한 정확성은 깊은 구조에 의해 수학적으로 제공될 수 있습니다 - 특정 노드의 왼쪽 하위 트리와 오른쪽 하위 트리가 비어 있지 않고 해당 노드를 각각 a와 b로 나타낼 수 있는 경우 - a.KeyValue <=b.KeyValu
최소-최대 힙은 최소(또는 짝수) 및 최대(또는 홀수) 수준을 교대로 포함하는 완전한 이진 트리로 정의됩니다. 짝수 레벨은 예를 들어 0, 2, 4 등으로 표시되고 홀수 레벨은 1, 3, 5 등으로 표시됩니다. 다음 지점에서 루트 요소가 첫 번째 수준, 즉 0에 있다고 생각합니다. 최소-최대 힙의 예 최소-최대 힙의 기능 최소-최대 힙의 각 노드는 최소-최대 힙의 노드 순서를 계산하기 위해 값이 구현되는 데이터 멤버(보통 키라고 함)와 연결됩니다. 루트 요소는 최소-최대 힙의 최소 요소입니다. 최대(또는 홀수) 수준인 두
딥 데이터 구조에 요소를 삽입하려면 아래와 같이 최소값과 최대값을 계산하는 절차가 필요할 수 있습니다. - 절차 min_value(m)://deap에서 최소값을 계산합니다. 반환 m-2로그 2 ((m-1); 프로시저 max_value(m)://deap에서 최대값을 계산합니다. m+2로그 반환 2 (m-1); 딥 데이터 구조의 삽입 작업은 다음과 같은 방식으로 수행할 수 있습니다. - 힙 b[]에 대해 m이 deap의 최대 힙 내 위치인지 확인해야 합니다. 최소값과 최대값을 deap에서 계산합니다. 이제 왼쪽 하위 트리와 오른
이제 딥 데이터 구조에서 최소 요소를 제거하는 기술을 설명합니다. 삭제하는 동안 deap에서 최소값을 삭제하는 것이 주요 목표입니다. 트리의 높이는 항상 log n이므로 log n 정도의 시간을 소비합니다. 다음과 같이 삭제 작업에 대해 논의할 수 있습니다. − Procedure deap_deletion(b[],m): if(m<2) return; //There are no elements. min=b[2]; //Minimum value is saved for (i=2;2*i<=m;b[i]=b[k],
이중 힙 remove(aNode) 작업의 효율적인 구현을 제공하는 단일 종단형 우선 순위 대기열(PQ) 데이터 구조에서 효율적인 DEPQ(Double Ended Priority Queue) 데이터 구조에 도달하는 일반적인 방법의 존재(이 작업은 노드 aNode를 제거합니다. PQ). 이러한 방법 중 가장 간단한 이중 구조 방법은 동일한 요소를 구성하는 최소 PQ와 최대 PQ의 노드 간의 대응 포인터와 관련된 모든 DEPQ 요소의 최소 PQ와 최대 PQ를 모두 추적합니다. 그림 A는 요소 7, 8, 3, 6, 5에 대한 이중 힙
remove(bNode) 작업의 효율적인 구현을 제공하는 단일 종단형 우선 순위 대기열(PQ) 데이터 구조에서 효율적인 DEPQ(Double Ended Priority Queue) 데이터 구조에 도달하는 일반적인 방법의 존재(이 작업은 노드 bNode를 제거합니다. PQ). 이러한 방법 중 가장 간단한 이중 구조 방법은 동일한 요소를 구성하는 최소 PQ와 최대 PQ의 노드 간의 대응 포인터와 관련된 모든 DEPQ 요소의 최소 PQ와 최대 PQ를 모두 유지합니다. 그림 D는 요소 7, 8, 3, 6, 5에 대한 이중 힙 구조를 표시
전체 및 리프 대응은 보다 정교한 대응 기술입니다. 이 두 기술 모두에서 요소의 절반은 최소 PQ에 있고 나머지 절반은 최대 PQ에 있습니다. 요소의 개수가 홀수이면 하나의 요소가 버퍼에 저장됩니다. 이 버퍼링된 요소는 PQ의 구성원이 아닙니다. 전체 대응 기술에서 최소 PQ의 각 요소 x는 최대 PQ의 고유한 요소 y와 쌍을 이룹니다. (x, y)는 우선순위(x) <=우선순위(y)와 같은 해당 요소 쌍입니다. 그림 E는 11개의 요소 3, 4, 5, 5, 6, 6, 7, 8, 9, 10, 11에 대한 총 대응 힙을 표시합니다.
결합 가능한 DEPQ(MDEPQ)는 위에 나열된 DEPQ 작업 외에도 meld(p, q) ... DEPQ p 및 q를 다음으로 결합하는 작업을 포함하는 DEPQ(이중 종료 우선 순위 대기열)로 정의됩니다. 단일 DEPQ. 양방향 우선순위 큐 p와 q를 결합한 결과는 p와 q의 모든 요소를 포함하는 단일 양방향 우선순위 큐입니다. 혼합 작업은 혼합 후 p와 q가 독립적인 DEPQ로 유지되지 않는다는 점에서 파괴적입니다. 선형 시간보다 짧은 시간에 두 개의 DEPQ를 결합하려면 DEPQ가 명시적 포인터(힙의 배열 표현에서와 같이 암
완벽한 해싱의 정의 완벽한 해싱은 n개의 요소 집합이 동일한 크기의 해시 테이블에 저장될 수 있고 일정한 시간에 조회가 수행될 수 있는 해싱 모델로 정의됩니다. 이것은 Fredman, Komlos 및 Szemeredi(1984)에 의해 특별히 발명되고 논의되었기 때문에 FKS 해싱으로 별명을 붙였습니다. 정적 해싱의 정의 정적 해싱은 사용자가 최종 사전 세트에 대한 조회를 수행할 수 있도록 하는 또 다른 형태의 해싱 문제를 정의합니다(즉, 사전의 모든 개체가 최종적이며 변경되지 않음을 의미합니다). 응용 프로그램 정적 해싱은
정의 동적 완전 해싱은 해시 테이블 데이터 구조에서 충돌을 해결하기 위한 프로그래밍 방법으로 정의됩니다. 응용 프로그램 해시 테이블에 비해 메모리 집약적이지만 이 방법은 많은 요소 집합에서 빠른 쿼리, 삽입 및 삭제를 수행해야 하는 상황에 이상적입니다. 구현 Dietzfelbinger et al. 동적 사전 알고리즘을 설명하십시오. m개의 항목 집합이 사전에 증분적으로 추가될 때 구성원 쿼리는 항상 일정한 시간을 소비하므로 O(1) 최악의 경우 시간이 필요하며 필요한 총 스토리지는 O(m)(선형), 그리고 O(1) 예상 상각
객관식 해싱은 다중 해시 함수의 구현을 사용하기 때문에 명명되었습니다. 높은 수준에서 여러 해시 함수가 있는 경우 각 항목은 여러 버킷에 매핑되므로 Algorithmdesigner는 항목이 상주할 항목을 자유롭게 선택할 수 있습니다. 이 자유는 단일 해시 함수를 구현함으로써 얻을 수 있는 것보다 훨씬 더 균형 잡힌 할당을 얻는 알고리즘을 허용합니다. 우리는 이러한 알고리즘이 생성하는 할당의 한계를 증명하기 위해 구현된 주요 알고리즘 아이디어와 주요 수학적 도구를 제시할 것입니다. 분석이 실제 적용에서 이러한 알고리즘의 효율성을 설명
블룸 필터는 빠르고 메모리 효율적인 방식으로 집합에서 요소의 존재를 식별하도록 설계된 데이터 구조로 정의됩니다. 확률적 데이터 구조라는 특정 데이터 구조 블룸 필터로 구현됩니다. 이 데이터 구조는 요소가 집합에 있는지 여부를 식별하는 데 도움이 됩니다. 비트 벡터는 기본 데이터 구조로 구현됩니다. 다음은 설명하는 데 사용할 작은 것입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 해당 테이블의 각 빈 셀은 비트와 그 아래의 숫자를 인덱스 또는 위치로 지정합니다. 블룸 필터에 요소를 추가하려면 간단
절충할 수 있는 블룸 필터에 대한 세 가지 성능 메트릭이 있습니다. 계산 또는 실행 시간(해시 함수 수 k에 해당), 필터 크기(비트 수 m에 해당), 오류 확률(해시 함수 수에 해당) 위양성 비율 f =(1 − p)k ) 블룸 필터(BF)는 조회 성능과 공간 효율성을 향상시키기 위해 오류 허용치를 도입합니다. Bloom 필터는 true 또는 false를 반환합니다. 따라서 Bloom 필터의 결과는 참양성, 거짓양성, 참음성, 거짓음성 중 하나에 속합니다. 블룸 필터에 거짓 긍정이 포함된 최대 수입니다. 거짓 긍정과 거짓 부정은
기본 개념 카운팅 블룸 필터는 요소 시퀀스가 주어졌을 때 주어진 요소의 카운트 수가 주어진 임계값보다 작은지 여부를 테스트하기 위해 구현되는 블룸 필터의 일반화된 데이터 구조로 정의됩니다. 일반화된 형태로 블룸 필터의 경우 위양성 일치 가능성이 있지만 위음성 가능성은 없습니다. 즉, 쿼리가 임계값보다 높거나 같음 또는 임계값보다 확실히 작음을 반환합니다. 알고리즘 설명 블룸 필터를 카운팅하는 데 사용되는 대부분의 매개변수는 n, k와 같이 블룸 필터와 동일하게 정의됩니다. m은 Counting Bloom 필터의 카운터 수로
카운터 크기 오버플로를 방지할 수 있을 만큼 충분히 큰 카운터를 선택해야 합니다. 크기는 푸아송 근사치에서 제안한 카운터당 4비트입니다. k =(ln 2)m/n 카운터를 구현하는 평균 로드는 ln 2입니다. 카운터에 로드가 최소 16일 확률:≈e-ln2 (ln 2)16 /16!≈6.78E-17 비교를 위해 카운터당 4비트를 고려합니다. 카운터 오버플로 카운터가 오버플로되면 최대값에 도달할 수 있습니다. 이 상황은 나중에 카운터가 0이 아닌 값으로 유지되어야 하는 0으로 내려가는 경우에만 나중에 거짓 부정을 유발할 수 있습니다.
먼저 메모리 블록을 선택합니다. 그런 다음 각 블록 내에서 로컬 블룸 필터를 선택합니다. 메모리 블록 간의 불균형을 일으킬 수 있음 이 필터는 효율적이지만 FPR(오탐지율)이 낮습니다. 처음에 차단된 블룸 필터는 동일한 크기의 표준 블룸 필터와 동일한 FPR(False Positive Rate)을 가져야 합니다. 차단된 블룸 필터는 각각 하나의 캐시 라인에 맞는 표준 블룸 필터(블룸 필터 블록)보다 비교적 적은 블록 b의 시퀀스로 구성됩니다. Blocked Bloom 필터 체계는 각 비트가 다른 블록에 삽입되는 파티션 체계와 구별됩
재조정 알고리즘은 다음과 같은 방식으로 수행할 수 있습니다. - 데이-스타우트-워렌 알고리즘 Day-Stout-Warren 알고리즘을 사용하여 실제로 재조정 방법을 구현할 수 있습니다. 노드 수에서 선형입니다. 다음은 기본 DSW 알고리즘을 의사 코드로 표현한 것입니다. 의사 루트라고 하는 노드가 할당되고 트리의 실제 루트를 가상 루트의 오른쪽 자식으로 만듭니다. 트리를 인수로 의사 루트를 사용하여 정렬된 연결 목록으로 트리를 변환하기 위해 트리 대 덩굴 함수를 호출합니다. 의사 루트와 트리의 크기(요소 수)를 인수로 사용하여
기본 개념 다차원 이진 탐색 트리(약칭 k-d 트리)는 다중 키 레코드를 저장하기 위한 데이터 구조로 정의됩니다. 이 구조는 통계 및 데이터 분석에서 여러 기하학적 문제를 해결하기 위해 구현되었습니다. k-d 트리(k-차원 트리의 약어)는 k-차원 공간에서 점을 구성하기 위한 공간 분할 데이터 구조로 정의됩니다. 데이터 구조 k-d 트리는 다차원 검색 키를 포함하는 검색(예:범위 검색 및 최근접 이웃 검색)과 같은 여러 응용 프로그램에 대해 구현됩니다. k-d 트리는 이진 공간 분할 트리의 특수한 경우로 취급됩니다. 비공식적인
다중 방법 트리는 두 개 이상의 자식을 가질 수 있는 트리로 정의됩니다. multiway tree가 최대 m개의 자식을 가질 수 있다면 이 트리를 m차의 multiway tree(또는 m-way tree)라고 합니다. 연구된 다른 트리와 마찬가지로 m-way 트리의 노드는 m-1 키 필드와 자식에 대한 포인터로 구성됩니다. 5차 다원 트리 m-way 트리의 처리를 더 쉽게 하기 위해 어떤 유형의 제약 또는 순서가 각 노드 내의 키에 부과되어 m 차(또는 m-way 탐색 트리)의 다중 탐색 트리가 생성됩니다. 정의에 따르면
데이터 구조에 대한 손가락 검색은 구조가 지원하는 검색 작업의 확장으로 정의되며, 쿼리와 함께 데이터 구조의 요소에 대한 참조(손가락)가 제공됩니다. 요소에 대한 검색 시간은 데이터 구조에서 요소 수의 함수로 가장 자주 표시되는 반면, 손가락 검색 시간은 요소와 손가락 사이의 거리의 함수로 처리됩니다. √n일 때 손가락 검색이 느려집니다. 따라서 대상이 실제로 손가락에 가깝다고 합리적으로 예상할 수 있는 경우에만 손가락 검색을 구현해야 합니다. 구현 일부 인기 있는 데이터 구조는 실제 구조에 대한 추가 변경 없이 손가락 검색을