Перейти до вмісту

Перетворення Берроуза-Вілера

Матеріал з Вікіпедії — вільної енциклопедії.
Версія від 13:30, 5 грудня 2021, створена Andriy.vBot (обговорення | внесок) (виправлення дат)

Перетворення Берроуза-Вілера (англ. Burrows-Wheeler Transform, BWT) — метод перестановки символів у стрічці в іншу стрічку , таким чином, що із можна отримати початкову послідовність, але в той же час вона краще надається до стиснення.

Щоб знайти від стрічки довжиною слід згенерувати циклічних ротацій цієї стрічки, відсортувати їх у лексикографічному порядку і отримати нову стрічку з останніх символів цих ротацій. Якщо вихідна стрічка містить багато повторів (як, наприклад, природна мова або геноми живих організмів), то трансформована міститиме багато серій (послідовностей, в яких один і той же символ зустрічається кілька разів поспіль).

Перетворення Берроуза-Вілера використовують для стиснення даних без втрат, зокрема воно є частиною алгоритму bzip2[1], а також для індексування. Наприклад, у біоінформатиці воно дозволяє скоротити витрати пам'яті під час картування фрагментів, отриманих шляхом секвенування ДНК, стосовно референсних геномів. Цей метод перетворення послідовностей запропонували у 1994 році Майкл Берроуз і Девід Вілер[2].

Отримання

Перетворення Берроуза-Вілера можна отримати, використавши однойменну матрицю. Нехай вихідна стрічка буде "тамтам$", вона повинна містити символ-термінатор ($), який не трапляється ніде в інших позиціях цієї стрічки і лексикографічно передує всім іншим символам. Спершу слід згенерувати усі циклічні ротації цієї стрічки, записавши їх одна під одною, ми отримуємо квадратну матрицю. Далі відсортовуємо рядки матриці у лексикографічному порядку, тепер останній її стовпець прочитаний згори вниз утворює , у нашому випадку "мттаам$".

Ротації Відсортовані
ротації
тамтам$
амтам$т
мтам$та
там$там
ам$тамт
м$тамта
$тамтам
$тамтам
ам$тамт
амтам$т
м$тамта
мтам$та
там$там
тамтам$

Примітки

  1. Julian Seward. bzip2 manual. Архів оригіналу за 16 квітня 2015. Процитовано 9 квітня 2015.
  2. Burrows, Michael; Wheeler, David J. (1994), A block sorting lossless data compression algorithm, Technical Report 124, Digital Equipment Corporation