Skip to main content
QUICK REVIEW

[논문 리뷰] Inducing the LCP-Array

Johannes Fischer|arXiv (Cornell University)|2011. 01. 18.
Algorithms and Data Compression참고 문헌 12인용 수 19
한 줄 요약

이 논문은 접미사 배열 구축에 사용되는 유도 정렬 기법을 확장하여 LCP-배열을 선형 시간에 구성하는 알고리즘을 제시한다. 접미사 배열 알고리즘에 LCP-값 유도를 통합함으로써, 기존의 최상위 수준의 LCP-배열 구성 알고리즘, 특히 버러스-윌리엄스 변환(Burrows-Wheeler Transform) 기반 알고리즘보다 뛰어난 실용적 성능을 달성한다.

ABSTRACT

We show how to modify the linear-time construction algorithm for suffix arrays based on induced sorting (Nong et al., DCC'09) such that it computes the array of longest common prefixes (LCP-array) as well. Practical tests show that this outperforms recent LCP-array construction algorithms (Gog and Ohlebusch, ALENEX'11).

연구 동기 및 목표

  • 빠른 접미사 배열 구축과 느린 LCP-배열 구축 간의 성능 격차를 해소하기 위해.
  • 유도 정렬과 자연스럽게 통합되는 실용적인 선형 시간 알고리즘으로 LCP-배열을 구성하기 위해.
  • 일부 이전 LCP 알고리즘에서 요구되는 버러스-윌리엄스 변환(Burrows-Wheeler Transform)에 대한 의존성을 제거하기 위해.
  • 접미사 배열 구축 과정 중에 LCP-값을 유도하면 별도의 LCP 알고리즘보다 실세계에서 더 나은 성능을 낼 수 있는지 입증하기 위해.
  • 유도 정렬의 효율성을 활용하여 접미사 배열과 LCP-배열을 동시에 빠르게 구성할 수 있는 통합 솔루션을 제공하기 위해.

제안 방법

  • 선형 시간 접미사 배열 구축에 사용되는 유도 정렬 알고리즘을 확장하여, 사전순으로 인접한 접미사들에 대한 LCP-값을 동시에 유도한다.
  • Φ-배열(역접미사 배열)을 사용하여 관계 $\mathsf{LCP}[i] = \mathsf{LCP}[\mathsf{SA}^{-1}(\mathsf{SA}[i]-1)] + 1$ 를 통해 LCP-값을 효율적으로 계산하며, $\mathsf{SA}[i-1]$ 과 $\mathsf{SA}[i]$ 가 공통 접두사를 공유할 경우에 적용된다.
  • 유도 과정을 안내하기 위해 접미사를 L-형 또는 S-형으로 분류하며, 접미사 배열 구축에서 사용된 동일한 유형 기반 정렬 전략을 유지한다.
  • 남 등(2009)의 선형 시간 접미사 배열 구축 알고리즘을 수정하여, 유도 단계 동안 LCP-값 전파를 포함하도록 한다.
  • 두 단계 접근 방식을 사용한다: 먼저 유도 정렬을 통해 접미사 배열을 유도하고, 그 다음에 유도된 SA의 순서와 구조를 활용하여 LCP-값을 계산한다.
  • sais-lite 알고리즘의 수정된 버전을 사용하여 SA와 LCP 구축을 한 번의 스캔으로 수행함으로써 메모리 접근과 캐시 미스를 최소화한다.

실험 결과

연구 질문

  • RQ1선형 시간 접미사 배열 구축에 사용되는 유도 정렬 기법을 확장하여 LCP-배열을 선형 시간에 계산할 수 있는가?
  • RQ2접미사 배열 구축 파이프라인에 LCP-값 유도를 통합하면 별도의 LCP 알고리즘보다 실용적인 성능 향상이 이루어지는가?
  • RQ3특히 BWT가 이용 가능한 환경이 아닌 곳에서는 버러스-윌리엄스 변환(Burrows-Wheeler Transform)에 의존하지 않고 LCP-배열을 구성할 수 있는가?
  • RQ4제안된 방법의 성능은 실행 시간과 확장성 측면에서 기존 최상위 수준의 LCP-배열 구성 알고리즘과 비교해 볼 때 어떻게 되는가?
  • RQ5LCP-배열 구축의 실용적 병목 현상은 무엇이며, SA 구축 과정 중에 LCP-값을 동시에 유도함으로써 이를 완화할 수 있는가?

주요 결과

  • 제안된 알고리즘은 버러스-윌리엄스 변환 기반 알고리즘을 포함한 이전 모든 LCP-배열 구성 알고리즘을 실용적 벤치마크에서 앞서간다.
  • 큰 입력에 대해서도 경쟁적인 성능를 보이며, 특히 100MB 및 200MB와 같은 더 큰 데이터셋에서 GO 알고리즘과 나이브 알고리즘보다 실행 시간이 일관되게 낮다.
  • 영어 텍스트 데이터셋의 경우, 긴 반복 서브스트링으로 인해 나이브 알고리즘이 경쟁적으로 작동하지만, 제안된 방법이 여전히 전체적으로 더 뛰어난 성능를 보인다.
  • 제안된 방법의 병합 실행 시간(유도 + sais-lite)은 대부분의 테스트 케이스에서 가장 빠르며, 때로는 divsufsort와 GO 알고리즘의 최고 조합조차도 앞선다.
  • BWT가 필요 없기 때문에, BWT 기반이 아닌 압축된 접미사 배열과 같은 응용 분야에 적합하며, 이러한 맥락에서 실용적 이점이 있다.
  • 성능 향상은 SA와 LCP-배열의 교차 저장으로 인한 메모리 접근 감소와 캐시 성능 향상 덕분으로 기인한다.

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

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

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

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