고압축 이진 문자열 매칭 인덱스
초록
이 논문은 이진 문자열의 런‑길이 압축 형태를 직접 이용해 Jumbled String Matching 인덱스를 구축한다. 구축 시간은 O(n + ρ² log ρ)이며, ρ가 n/log n 이하일 때 기존 최첨단 알고리즘보다 빠르다. 인덱스 크기는 최악의 경우 O(min(n, ρ²))이지만 실험적으로는 ρ에 가깝게 작아진다. 쿼리 응답은 O(log ρ) 시간에 가능하고, 인덱스 구조는 prefix‑normal form과의 관계를 통해 이론적으로 설명한다.
상세 분석
Binary Jumbled String Matching 문제는 문자열 s (알파벳 {a,b})와 정수 쌍 (x,y) 가 주어졌을 때, s의 연속 부분 문자열 중 a가 정확히 x 개, b가 정확히 y 개인 것이 존재하는지를 판단하는 전형적인 문자열 질의이다. 기존 연구에서는 전체 문자열 길이 n 에 비례하는 O(n) 크기의 인덱스를 사전 구축하고, 이를 이용해 각 질의를 O(1) 시간에 처리한다. 인덱스 구축 알고리즘은 주로 동적 프로그래밍이나 비트마스크 기법을 활용했으며, 시간 복잡도는 O(n²/ log n) 혹은 워드‑RAM 모델에서 O(n²/ log² n) 수준이었다. 이러한 복잡도는 특히 n이 수백만에 달할 때 실용적이지 못했다.
본 논문은 문자열을 런‑길이 인코딩(RLE) 형태로 변환한 뒤, 그 압축된 구조만을 이용해 인덱스를 만들라는 새로운 접근법을 제시한다. RLE는 문자열을 연속된 동일 문자 블록들의 길이 시퀀스로 표현한다. 예를 들어 s = aaaa bb a bbb 는 ρ = 5 개의 런으로 압축된다. 여기서 ρ는 원본 문자열 길이 n 에 비해 훨씬 작을 수 있다(특히 고압축 가능 문자열). 논문은 RLE를 기반으로 “가능한 a‑b 쌍들의 경계값”을 효율적으로 계산한다. 핵심 아이디어는 각 런을 시작점으로 삼아 누적 a‑수와 b‑수를 구하고, 이를 2차원 격자 상에서 상향/하향 사다리꼴 형태의 영역으로 표현하는 것이다. 이러한 영역은 prefix‑normal form(앞부분에 가능한 최대 a‑수를 갖는 접두어)과 직접적인 연관성을 가지며, 인덱스 L은 각 사다리꼴의 꼭짓점(극값)만을 저장한다.
시간 복잡도 분석에서, RLE를 얻는 O(n) 단계와 ρ개의 런 사이에서 모든 쌍을 조합해 경계값을 계산하는 O(ρ² log ρ) 단계가 지배적이다. ρ가 n/ log n 이하이면 전체 복잡도는 기존 O(n²/ log n)보다 확연히 우수하다. 또한, 인덱스 크기는 최악의 경우 O(min(n, ρ²))이지만, 실제 데이터에서는 대부분 ρ에 비례하거나 그 이하로 유지된다. 이는 런‑길이 압축이 높은 문자열(예: DNA 서열, 압축된 로그 파일 등)에서 메모리 효율성을 크게 개선한다는 의미다.
쿼리 처리 단계에서는 이진 탐색을 이용해 L에 저장된 경계값을 O(log ρ) 시간에 찾는다. 구체적으로, 주어진 (x,y) 쌍에 대해 a‑수 x가 가능한 최소·최대값을 L에서 검색하고, 해당 범위 안에 y가 포함되는지를 확인한다. 이는 기존 O(1) 응답 시간보다 느리지만, ρ가 n에 비해 작을 경우 실제 응답 시간은 여전히 실용적인 수준이다. 또한, 구현이 단순해 코드 복잡도와 버그 위험이 크게 감소한다.
마지막으로, 논문은 인덱스 L을 prefix‑normal form과의 관계를 통해 이론적으로 정형화한다. prefix‑normal form은 문자열의 모든 접두어가 가능한 최대 a‑수를 갖도록 변환한 형태이며, L의 각 원소는 이 변환 과정에서 발생하는 “전환점”에 해당한다. 따라서 L은 prefix‑normal form의 파생 구조로 볼 수 있으며, 이는 인덱스 크기와 구조를 분석하는 새로운 도구를 제공한다. 전체적으로 이 연구는 고압축 문자열에 특화된 Jumbled Matching 인덱스를 제시함으로써, 시간·공간 효율성, 구현 난이도, 그리고 이론적 이해 측면에서 의미 있는 진전을 이룬다.