무손실 압축은 방법이 얼마나 많은 중복성을 볼 수 있는지에 의해 제한된다. LZ 계열과 허프만 코딩은 각각 일반 텍스트에서 한계에 도달한다.

Burrows와 Wheeler의 1994년 DEC 보고서는 블록 정렬 변환을 설명했다: 블록의 모든 회전을 나열하고, 정렬한 뒤, 마지막 열을 출력한다. 회전들이 접미사를 공유하기 때문에 동일한 문자들이 군집되고, 짧은 런 길이 및 이동-전면(move-to-front) 처리가 이를 매우 적은 심볼로 바꾼다.

이 변환은 가역적이므로 손실이 아니라 재배열이다. 그 결과는 bzip2에 공급되었고, bzip2는 동시대 도구들보다 텍스트를 더 효과적으로 압축하여 이 기법을 느리지만 빈틈없는 압축의 표준으로 만들었다.

블록의 회전들을 정렬하여 비슷한 것들이 이웃하도록 한다

회전들을 정렬하면 문맥이 같은 곳에서 동일한 심볼들이 함께 모인다.

그런 다음 런 길이 및 이동-전면 코딩이 길고 저렴한 런들을 찾아낸다.

이 변환은 순열이므로 압축 해제는 정확하다.

어떤 반복 구조에서도 작동하므로 특정 파일 유형에 맞춰 조정되지 않는다.

압축하기 전에 동일한 심볼들이 서로 옆에 오도록 데이터를 재정렬하라. 예측 가능한 부분들을 군집시키는 변환은 평범한 압축기를 극적으로 강화할 수 있다.

Burrows-Wheeler 변환은 bzip2의 엔진이 되었고, 나중에는 부분 문자열을 찾고 게놈을 매핑하는 FM-인덱스의 기초가 되었다. 같은 아이디어는 오늘날 고처리량 생물정보학 정렬 도구들을 구동한다.

근거 확인하기

출처

  1. A block-sorting lossless data compression algorithm DEC Systems Research Center Research Report 124 · web.stanford.edu
  2. Burrows-Wheeler transform Wikipedia · en.wikipedia.org