문법 기반 이진 점멸 패턴 매칭 인덱스 구축

문법 기반 이진 점멸 패턴 매칭 인덱스 구축

초록

이 논문은 길이 $n$인 이진 문자열 $B$를 $g$개의 규칙으로 표현하는 직선형 프로그램(SLP)을 입력으로 받아, $O(g^{2/3}n^{4/3})$ 시간에 선형 공간 인덱스를 구축한다. 구축된 인덱스로는 길이 $m$과 1의 개수 $c$가 주어졌을 때 $O(1)$ 시간에 해당 조건을 만족하는 부분 문자열이 존재하는지를 판단할 수 있다. 또한 $O(n\log n)$ 공간을 사용하면 모든 일치 부분 문자열을 $O(m)$ 시간에 열거할 수 있다.

상세 분석

이 연구는 ‘점멸 패턴 매칭(jumbled pattern matching)’이라는 문제에 압축 문자열을 직접 적용하는 최초의 시도 중 하나이다. 기존에는 원본 문자열에 대해 prefix‑sum 배열을 이용해 $O(1)$ 쿼리를 구현하거나, $O(n\sqrt{n})$ 시간에 모든 길이에 대한 최소·최대 1의 개수를 전처리하는 방법이 알려져 있었다. 그러나 문자열이 SLP 형태로 압축된 경우, 직접적인 prefix‑sum 접근이 불가능하고, 압축 구조를 활용한 효율적인 전처리가 요구된다.

논문은 먼저 SLP의 파싱 트리를 이용해 각 비단말(non‑terminal) 기호 $X$에 대해 “길이 $ℓ$인 부분 문자열이 가질 수 있는 1의 개수 집합”을 계산한다. 이를 위해 $X$가 두 자식 $Y$와 $Z$를 연결하는 규칙 $X\to YZ$라면, $Y$와 $Z$ 각각에서 얻은 가능한 $(ℓ, c)$ 쌍을 ‘컨볼루션’ 연산으로 결합한다. 구체적으로, $Y$에서 길이 $ℓ_1$에 대해 가능한 1의 개수 $c_1$, $Z$에서 길이 $ℓ_2$에 대해 가능한 $c_2$가 존재하면 $X$는 $(ℓ_1+ℓ_2, c_1+c_2)$를 새로운 후보로 만든다. 이 과정에서 지배 관계(dominance)를 이용해 불필요한 후보를 제거한다. 즉, 같은 길이에 대해 더 작은 최소값과 더 큰 최대값만을 보존함으로써 후보 집합의 크기를 $O(n)$ 이하로 제한한다.

시간 복잡도 분석은 두 단계로 나뉜다. 첫 번째 단계는 ‘큰’ 비단말(규칙 길이가 $Θ(g^{1/3})$ 이상)들을 처리하는데, 이때는 각각에 대해 $O(n)$ 시간의 컨볼루션을 수행하므로 전체 $O(g^{2/3}n)$이 된다. 두 번째 단계는 ‘작은’ 비단말들을 병합하는 과정으로, FFT 기반의 다항식 곱셈을 활용해 $O(g^{2/3}n^{4/3})$ 시간 안에 모두 처리한다. 최종적으로 전체 전처리 시간은 $O(g^{2/3}n^{4/3})$이며, 인덱스 자체는 각 길이에 대한 최소·최대 1의 개수만을 저장하므로 $O(n)$ 공간을 차지한다.

쿼리 단계에서는 입력된 $m$과 $c$에 대해 사전 계산된 최소·최대 값 배열을 직접 조회한다. $c$가 해당 길이 $m$의 최소값 이상이고 최대값 이하이면 답은 ‘존재한다’, 그렇지 않으면 ‘존재하지 않는다’가 된다. 이 조회는 단순 배열 접근이므로 $O(1)$ 시간에 수행된다.

공간을 $O(n\log n)$ 로 늘리는 경우, 각 비단말에 대해 가능한 $(ℓ, c)$ 쌍 전체를 저장한다. 이렇게 하면 특정 길이 $m$에 대해 모든 가능한 $c$ 값을 역추적할 수 있게 되고, 실제 일치하는 부분 문자열을 찾는 과정에서 $O(m)$ 시간으로 각 결과를 열거할 수 있다. 이는 기존 압축 인덱스가 제공하지 못하던 ‘열거’ 기능을 효율적으로 구현한다는 점에서 의미가 크다.

전체적으로 이 논문은 압축 문자열에 대한 점멸 패턴 매칭을 가능하게 하는 새로운 알고리즘 프레임워크를 제시한다. SLP의 구조적 특성을 활용한 컨볼루션과 지배 관계 정리는 전처리 비용을 기존 방법보다 크게 낮추면서도 쿼리 응답 시간을 최적화한다는 점에서 학술적·실용적 기여가 크다.