다중레벨 프리픽스 트리를 이용한 고성능 우선순위 큐 PT리
본 논문은 비트 패턴을 이용해 데이터를 다중 레벨 트리 구조에 매핑하고, 각 레벨마다 2^K개의 자식 노드를 갖는 트라이와 연결된 이중 연결 리스트·큐를 결합한 PT리(Priority Trie)를 제안한다. 삽입·삭제·검색·최소값 추출 연산의 최악 시간 복잡도를 O(M/K + K)로 보이며, K를 데이터 타입에 맞게 조정하면 실용적인 우선순위 큐로 활용할 수 있다. 메모리 사용량은 요소 수와 비트 길이에 선형적으로 증가한다.
저자: ** 논문에 명시된 저자는 **불명**이며, 참고문헌에만 “
본 논문은 “Priority Trie”(PT리)라는 새로운 자료구조를 제안한다. PT리는 전통적인 트라이(접두사 트리)의 구조를 확장하여, 입력 데이터를 K비트씩 잘라서 2^K개의 그룹으로 나누는 다중 레벨 프리픽스 트리를 만든다. 각 레벨은 고정된 크기의 인덱스 테이블을 가지고, 해당 인덱스가 가리키는 위치에 이중 연결 리스트의 노드가 존재한다. 리스트 노드 내부에는 동일한 키를 가진 원소들을 저장하는 큐가 배치되어 있어, 같은 값이 여러 번 삽입될 때도 안정성을 유지한다(스택이 아닌 큐 사용).
삽입 연산은 가장 상위 레벨부터 시작해 K비트씩 읽어가며 경로를 따라간다. 현재 레벨의 인덱스가 비어 있으면, 해당 레벨에 포함된 2^K 크기의 이진 탐색 트리(또는 다른 균형 트리·스킵리스트)에서 새 노드를 삽입한다. 새 노드가 오른쪽에 위치하면 리스트의 tail 쪽에, 왼쪽에 위치하면 head 쪽에 연결한다. 이 과정은 O(1) 시간에 포인터를 조정할 수 있다. 만약 현재 인덱스에 이미 다른 값이 존재하면, 해당 레벨을 하위 레벨로 “밀어내” 새로운 레이어를 생성하고, 다시 삽입 과정을 반복한다. 따라서 삽입의 최악 시간 복잡도는 Θ(log₂(2^K)·N + K) = O(M/K + K) 로, 여기서 M은 키의 전체 비트 수, K는 한 레벨당 처리하는 비트 수이다.
검색 연산은 삽입과 동일한 경로 탐색을 수행한다. 인덱스가 비어 있거나 큐의 내용이 검색 대상과 다르면 실패하고, 일치하면 성공한다. 검색의 시간 복잡도는 O(M/K)이다.
삭제 연산은 검색과 동일한 경로를 따라가며 목표 원소를 찾는다. 큐에서 원소를 제거하고, 큐가 비어 있으면 리스트 노드를 삭제한다. 이후 상위 레벨에 빈 레이어가 남아 있으면 이를 정리한다. 삭제의 최악 시간 복잡도는 Θ(2·log₂(2^K)·N + K) = O(M/K + K) 이다.
최소값·최대값 추출은 리스트의 head와 tail 포인터만 읽으면 되므로 O(1) 시간에 수행된다. 또한, 리스트가 이중 연결 구조이므로 next·prev 이터레이터도 O(1) 시간에 동작한다. 이러한 특성 때문에 PT리는 “stable”한 우선순위 큐로서, 동일한 키를 가진 원소들의 삽입 순서를 보존한다.
메모리 사용량은 각 레벨당 2^K개의 포인터와 2^K 크기의 테이블이 필요하므로, 전체 메모리 요구량은 Θ(log₂^K N·(2^K + 1)·K) 로 추정된다. K가 커질수록 메모리 요구량이 급격히 증가하므로, 실제 구현에서는 K를 데이터 타입에 맞게 작게 설정하는 것이 바람직하다. 예를 들어, 4바이트 정수에 K=4를 선택하면 연산당 약 12단계(32/4 + 4)만 필요하고, 메모리 사용도 적당하다. K=8로 늘리면 연산 단계는 동일하지만 메모리 사용이 256개의 인덱스 테이블로 급증한다.
논문은 또한 PT리를 음수와 양수를 각각 별도의 PT리 인스턴스로 관리함으로써 부호에 따른 정렬을 지원하고, 실수(IEEE‑754)도 지수와 가수 부분을 각각 별도 PT리로 저장해 확장 가능성을 제시한다. 그러나 이러한 설계는 구현 복잡성을 크게 증가시킨다.
수식 부분에서는 G₁…G_P 라는 그룹 분포와 레이어별 평균 노드 수에 대한 확률 모델을 제시하지만, 실제 데이터에 대한 실험이나 시뮬레이션 결과가 제공되지 않는다. 또한 기존의 힙, 피보나치 힙, 스킵리스트와 비교한 성능 평가가 없으며, 구현 세부 사항(예: 메모리 할당 전략, 캐시 친화성)도 부족하다.
결론적으로 PT리는 트라이와 이진 탐색 트리·큐를 결합해, 키를 비트 패턴으로 분할하고 레이어별로 관리함으로써 삽입·삭제·검색을 O(M/K + K) 시간에 수행할 수 있는 새로운 우선순위 큐 구조를 제안한다. K를 데이터 타입에 맞게 조정하면 이론적으로는 기존 힙 구조와 경쟁할 수 있지만, 실제 성능을 검증하기 위한 실험적 증거가 부족하고, 메모리 사용량이 K에 민감한 점이 실용성을 제한한다. 향후 연구에서는 다양한 K값에 대한 벤치마크, 캐시 효율성 분석, 그리고 동시성 지원 등을 통해 PT리의 실제 적용 가능성을 평가할 필요가 있다.
원본 논문
고화질 논문을 불러오는 중입니다...
댓글 및 학술 토론
Loading comments...
의견 남기기