Skip to main content
QUICK REVIEW

[논문 리뷰] Fingerprints in Compressed Strings

Philip Bille, Patrick Hagge Cording|arXiv (Cornell University)|2013. 05. 13.
Algorithms and Data Compression참고 문헌 18인용 수 5
한 줄 요약

이 논문은 문자를 압축하지 않고도 Karp-Rabin 해시값 쿼리를 수행할 수 있는 최초의 선형공간 데이터 구조를 제안한다. 직선 프로그램(SLP)의 경우 O(log N)의 쿼리 시간을 달성하고, LZ78 방식 압축에 사용되는 선형 SLP의 경우 쿼리 시간을 O(log log N)으로 줄여, 이러한 압축 표현에서의 랜덤 액세스와 동일한 효율성을 달성한다.

ABSTRACT

The Karp-Rabin fingerprint of a string is a type of hash value that due to its strong properties has been used in many string algorithms. In this paper we show how to construct a data structure for a string $S$ of size $N$ compressed by a context-free grammar of size $n$ that answers fingerprint queries. That is, given indices $i$ and $j$, the answer to a query is the fingerprint of the substring $S[i,j]$. We present the first O(n) space data structures that answer fingerprint queries without decompressing any characters. For Straight Line Programs (SLP) we get $O(\log N)$ query time, and for Linear SLPs (an SLP derivative that captures LZ78 compression and its variations) we get $O(\log \log N)$ query time. Hence, our data structures has the same time and space complexity as for random access in SLPs. We utilize the fingerprint data structures to solve the longest common extension problem in query time $O(\log N \log \lce)$ and $O(\log \lce \log\log \lce + \log\log N)$ for SLPs and Linear SLPs, respectively. Here, $\lce$ denotes the length of the LCE.

연구 동기 및 목표

  • 압축된 문자열에서 해시값 쿼리를 압축 해제 없이 효율적으로 처리할 수 있는 데이터 구조를 설계한다.
  • SLP 및 선형 SLP에 대해 최적의 공간 복잡도 O(n)을 확보하면서도 쿼리 시간을 최소화한다.
  • SLP에서의 랜덤 액세스와 동일한 시간 복잡도를 달성하여, 이전의 압축 해제 기반 방법보다 향상된 성능을 확보한다.
  • 해시값 데이터 구조를 활용하여 압축된 문자열에서 가장 긴 공통 확장(LCE) 문제를 효율적으로 해결한다.
  • 기존의 모든 선형 전행자 데이터 구조를 블랙박스로 사용할 수 있는 간단한 새로운 환원 기법을 제안한다.

제안 방법

  • 부분문자열의 해시값이 접두사 해시값으로부터 상수 시간에 계산될 수 있다는 성질을 활용하여, SLP 분석 트리의 경로를 따라 효율적으로 해시값을 조합할 수 있다.
  • Bille 등 [8]의 빠른 랜덤 액세스 데이터 구조를 SLP의 기초로 삼고, 사전 계산된 노드 해시값과 결합하여 O(log N) 시간에 해시값 쿼리를 처리한다.
  • 선형 SLP의 경우, 생성 규칙의 트리 구조를 활용하고, 레벨 조상 데이터 구조를 사용하여 분석 트리에서 상수 시간에 큰 점프를 수행한다.
  • 선형 SLP에서의 위치 찾기 단계를 전행자 문제로 모델링하고, 손가락 기반 검색 기법을 활용해 효율적으로 해결한다.
  • 특정 위치를 생성하는 루트 자식을 가리키는 손가락을 사용하는 쿼리 메커니즘을 도입하여, D = |i - j|일 때 O(log log D)의 쿼리 시간을 달성한다.
  • 기존의 모든 전행자 데이터 구조를 블랙박스로 사용할 수 있는 손가락 기반의 전행자 문제 환원 기법을 개발하여, 유연성과 효율성을 향상시킨다.

실험 결과

연구 질문

  • RQ1압축된 문자열에서 해시값 쿼리를 압축 해제 없이 부분선형 시간 내에 처리할 수 있는가?
  • RQ2선형 SLP에서의 해시값 쿼리 시간을 O(log log N)으로 향상시켜, 해당 표현에서의 랜덤 액세스 효율성과 동일하게 만들 수 있는가?
  • RQ3어떻게 하면 해시값 데이터 구조를 활용하여 압축된 문자열에서 가장 긴 공통 확장(LCE) 문제를 효율적으로 해결할 수 있는가?
  • RQ4기존의 모든 전행자 데이터 구조를 블랙박스로 사용할 수 있는 새로운 단순한 환원 기법을 어떻게 도입할 수 있는가?
  • RQ5압축된 문자열에서 Karp-Rabin 해시 함수가 충돌 없음을 검증하기 위한 최소 공간 및 시간 복잡도는 얼마인가?

주요 결과

  • 이 논문은 문자를 압축 해제하지 않고도 SLP로 압축된 문자열에서 O(log N) 시간에 해시값 쿼리를 처리할 수 있는 최초의 O(n) 공간 데이터 구조를 제시한다.
  • 선형 SLP의 경우 쿼리 시간이 O(log log N)으로 줄어들어, 이러한 표현에서의 랜덤 액세스와 동일한 시간 복잡도를 달성한다.
  • 해시값 데이터 구조를 활용하여 SLP의 경우 O(log N log ℓ) 시간, 선형 SLP의 경우 O(log ℓ log log ℓ + log log N) 시간에 LCE 문제를 해결할 수 있다. 여기서 ℓ는 LCE 길이이다.
  • 새로운 손가락 기반 전행자 환원 기법을 도입하여, 선형 SLP에서 손가락 기반 액세스를 통해 효율적인 위치 쿼리를 수행할 수 있고, D = |i - j|일 때 O(log log D)의 쿼리 시간을 달성한다.
  • 해시값 검증 알고리즘은 O(N log N) 시간에 O(n) 공간으로 실행되며, 동일한 공간 복잡도로 O(N²/n log N) 시간에 실행될 수 있어, 충돌 없는 해시 함수 검증을 효율적으로 수행할 수 있다.
  • 선형 SLP의 경우, 루트 부분문자열의 구조를 활용하고 효율적인 슬라이딩 윈도우 기법을 적용하여, O(N log N log log N) 시간에 O(n) 공간으로 해시값 검증 시간을 추가로 단축시킬 수 있다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.