Skip to main content
QUICK REVIEW

[논문 리뷰] Faster Average Case Low Memory Semi-External Construction of the Burrows-Wheeler Transform

German Tischler|arXiv (Cornell University)|2016. 04. 22.
Natural Language Processing Techniques인용 수 6
한 줄 요약

이 논문은 고정된 비율의 입력 텍스트가 내부 메모리에 들어갈 수 있을 때, 평균적으로 $O(n\log^2\log n)$의 시간 복잡도를 가지며 더 빠르고 메모리 소비가 적은 반외부 알고리즘을 제안한다. 이는 이전 방법보다 평균 실행 시간을 줄이면서도 $O(n)$의 외부 메모리 공간을 유지한다. 또한 $p$개의 프로세서를 사용할 때 평균적으로 $O(n/p \cdot \max\{\log^2\log n, \log p\})$의 시간 복잡도를 달성하는 병렬 버전을 도입한다.

ABSTRACT

The Burrows Wheeler transform has applications in data compression as well as full text indexing. Despite its important applications and various existing algorithmic approaches the construction of the transform for large data sets is still challenging. In this paper we present a new semi external memory algorithm for constructing the Burrows Wheeler transform. It is capable of constructing the transform for an input text of length $n$ over a finite alphabet in time $O(n\log^2\log n)$ on average, if sufficient internal memory is available to hold a fixed fraction of the input text. In the worst case the run-time is $O(n\log n \log\log n)$. The amount of space used by the algorithm in external memory is $O(n)$ bits. Based on the serial version we also present a shared memory parallel algorithm running in time $O(\frac{n}{p}\max\{\log^2\log n+\log p\})$ on average when $p$ processors are available.

연구 동기 및 목표

  • 제한된 내부 메모리로 대규모 텍스트에 대해 Burrows-Wheeler 변환(BWT)을 효율적으로 구축하는 데 도전한다.
  • 기존 반외부 알고리즘보다 평균 시간 복잡도를 낮추면서도 낮은 외부 메모리 사용을 유지한다.
  • 내부 메모리 사용을 1기호당 8비트 이하로 줄여 DNA 서열과 같은 압축된 데이터에 적합하게 한다.
  • 프로세서 수에 따라 효율적으로 확장 가능한 공유 메모리 병렬 버전을 설계한다.
  • 외부 메모리에서의 공간 오버헤드와 I/O 연산을 최소화하여 실용적인 성능을 향상시킨다.

제안 방법

  • 입력 텍스트를 블록으로 분할하고, 인접 블록의 BWT를 재귀적으로 병합하기 위해 균형 잡힌 머지 트리 구조를 사용한다.
  • 최소 주기와 반복 정보를 위한 압축 데이터 구조를 사용하여 블록 크기 $b$에 대해 $O(b)$ 시간 내에 접미사 순서를 계산한다.
  • 전처리 단계에서 반복 데이터를 $O(n)$ 시간과 $O(b\log b)$ 비트 내에서 수집하여 블록 정렬을 효율적으로 지원한다.
  • 왼쪽 블록의 랭크 사전을 사용하여 두 인접 블록의 BWT를 $O((b_l + b_r)\log\log(b_l + b_r))$ 시간 내에 병합한다.
  • 블록 접미사 배열에서의 정방향 검색에 기반한 간격 배열 생성 기법을 사용하여 올바른 정렬 위치를 결정한다.
  • 병렬 버전은 블록 정렬과 병합을 $p$개의 프로세서에 분배하여 평균적으로 $O(n/p \cdot \max\{\log^2\log n, \log p\})$의 시간 복잡도를 달성한다. 이는 높은 확률로 성립한다.

실험 결과

연구 질문

  • RQ1외부 메모리 사용이 $O(n)$ 비트에 국한되고 내부 메모리 사용이 고정 비율일 때, BWT 구축을 평균적으로 더 빠르게 수행할 수 있는가?
  • RQ2긴 공통 접두사(LCP) 값이 성능에 악영향을 미치는 것을 줄이기 위해 블록 기반 BWT 구축을 어떻게 최적화할 수 있는가?
  • RQ3프로세서 수에 따라 효율적으로 확장되면서도 낮은 메모리 사용을 유지하는 병렬 BWT 구축 알고리즘을 설계할 수 있는가?
  • RQ4DNA처럼 매우 압축된 알파벳(1기호당 2비트)에 대해서도 실용적인 알고리즘이 가능할 수 있는가?
  • RQ5외부 메모리에서의 I/O 복잡도와 실질적인 공간 사용은 어떻게 되며, 상수 요소들이 실제 성능에 어떤 영향을 미치는가?

주요 결과

  • 제안된 알고리즘은 평균적으로 $O(n\log^2\log n)$의 시간 복잡도를 달성하여, 이전 반외부 방법의 worst-case 시간 복잡도인 $O(n\log n\log\log n)$보다 빠르다.
  • 최악의 경우에도 알고리즘은 $O(n\log n\log\log n)$ 시간 내에 실행되며, 이는 평균 경우보다 $O(\log\log n)$ 빨라지지 않는 작은 페널티를 가지며, 드문 이상한 입력에 대한 비용이다.
  • 알고리즘은 $O(n)$ 비트의 외부 메모리를 사용하여 메모리가 제한된 대규모 데이터에 적합하다.
  • 병렬 버전은 높은 확률로 평균적으로 $O(n/p \cdot \max\{\log^2\log n, \log p\})$ 시간 내에 실행되며, 다중 코어 시스템에서 효율적인 확장이 가능하다.
  • 이 방법은 내부 메모리 사용을 1기호당 2비트(예: DNA에 대해)까지 낮출 수 있어, 이전 방법이 요구하는 8비트/기호보다 크게 감소시켰다.
  • 실험적 관찰 결과, I/O 복잡도가 낮으며, $gt$ 배열의 경우 $O(n\log\log n)$ 비트의 I/O가 발생하고, BWT 병합의 경우 $O(n\log\sigma\log\log n)$ 비트의 I/O가 발생한다. 실제로는 스트리밍 방식으로 처리된다.

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

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

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

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