압축 문자열의 q‑그램 빈도 효율적 계산

본 논문은 콜라주 시스템이라는 일반적인 압축 표현을 이용해 원본 문자열의 모든 q‑그램 빈도를 구하는 알고리즘을 제시한다. 기존 SLP(직선형 프로그램) 기반 방법을 확장하여 반복과 절단 연산을 지원하고, 크기 n·h·log n인 SLP로 변환하는 대신 O((q + h log n)·n) 시간·O(q n) 공간 복잡도를 달성한다.

저자: Keisuke Goto, Hideo Bannai, Shunsuke Inenaga

압축 문자열의 q‑그램 빈도 효율적 계산
본 논문은 콜라주 시스템이라는 포괄적인 압축 표현 모델을 이용해 문자열의 모든 q‑그램 빈도를 효율적으로 계산하는 새로운 알고리즘을 제시한다. 콜라주 시스템은 터미널 문자, 연결, 반복, 앞·뒤 절단 네 가지 연산을 통해 문자열을 재귀적으로 정의한다. 이 모델은 SLP(직선형 프로그램)와 달리 반복과 절단을 허용하므로, LZ77, LZ78, LZW 등 다양한 실제 압축 알고리즘의 출력 문자열을 자연스럽게 표현할 수 있다. 문제 정의는 다음과 같다. 주어진 콜라주 시스템 T(크기 n, 높이 h)로부터 파생되는 문자열 T = val(X_n) 에 대해, 모든 q‑그램 P ∈ Σ^q 의 등장 횟수 |Occ(T, P)| 를 구한다. 기존 연구에서는 SLP(즉, 절단·반복이 없는 콜라주 시스템)에서만 O(q n) 시간·O(q n) 공간으로 해결 가능한 알고리즘이 알려져 있었다. 그러나 일반 콜라주 시스템에서는 반복과 절단이 복합적으로 존재하기 때문에 직접 적용이 불가능했다. 저자들은 먼저 SLP에 대한 기존 알고리즘을 복습한다. 핵심 아이디어는 각 q‑그램 발생 위치를 가장 낮은 변수 X_i에 매핑하고, 해당 변수에 대해 접두·접미 길이 q‑1 만큼을 포함하는 짧은 문자열 t_i와 가중치 배열 w_i를 만든 뒤, 모든 t_i를 이어붙인 T′와 w를 이용해 가중치가 부여된 q‑그램 빈도 문제(Problem 2)를 해결하는 것이다. 이때 t_i의 길이는 q ≤ |t_i| ≤ 2(q‑1) 이며, 전체 길이는 O(q n) 이다. 다음으로 반복 연산을 처리한다. 변수 X_i = (X_s)^p 에 대해 두 경우를 구분한다. (1) q ≤ |X_s| 인 경우, t_i = suf(val(X_s), q‑1)·pre(val(X_s), q‑1) 로 정의하고, 경계 교차 q‑그램이 p‑1 번 발생함을 반영해 w_i

원본 논문

고화질 논문을 불러오는 중입니다...

댓글 및 학술 토론

Loading comments...

의견 남기기