주어진 패턴으로 문자열의 숨은 반복을 찾아라: 온라인 아벨리안 런 탐지 알고리즘
초록
이 논문은 문자열에서 주어진 Parikh 벡터(문자 빈도수 벡터)를 주기로 갖는 ‘아벨리안 런(Abelian Run)‘을 효율적으로 탐지하는 새로운 알고리즘을 제안한다. 기존 O(n²) 오프라인 알고리즘과 달리, 이 알고리즘은 문자열을 한 번 훑으면서 O(n × |P|) 시간과 O(σ + |P|) 공간만 사용하여 모든 아벨리안 런을 실시간(온라인)으로 찾을 수 있다.
상세 분석
본 논문의 핵심 기술적 기여는 주어진 단일 Parikh 벡터 P에 특화된 온라인 알고리즘 설계에 있다. 기존 연구(Matsuda et al.)가 모든 가능한 주기에 대한 아벨리안 런을 O(n²) 시간에 오프라인으로 계산한 것과 대비된다. 제안된 알고리즘의 효율성은 두 가지 주요 통찰에 기반한다.
첫째, ‘확장의 단조성’ 원리를 활용한다. Proposition 8에 따르면, 가장 긴 꼬리(tail)를 가진 아벨리안 주기가 새로운 문자에 의해 확장될 수 있다면, 더 짧은 꼬리를 가진 모든 주기도 확장 가능하다. 이 성질은 후보 탐색 공간을 효과적으로 줄여준다. 둘째, Lemma 5와 7에 의해, 동일한 위치에서 시작하는 아벨리안 런은 최대 하나이며, 왼쪽-최대(left-maximal)인 발생들은 시작 위치가 단조 증가하는 성질을 가진다. 이는 후보들을 시작 위치 순으로 관리하며 불필요한 검사를 피할 수 있게 한다.
알고리즘은 원형 배열 B를 사용하여 현재 위치(i-1)에서 끝나는 다양한 꼬리 길이를 가진 아벨리안 부분 문자열들의 시작 위치를 관리한다. 각 문자 i를 처리할 때, 먼저 완전한 주기 블록이 나타나는지(P_w
댓글 및 학술 토론
Loading comments...
의견 남기기