Bölüm 5 · Simülasyon

Dizgi Dönüşümü: Burrows–Wheeler Dönüşümü

← Bölüm 5
1. Döndürmeleri Üret
2. Döndürmeleri Sırala
3. Son Sütunu Oku

Döndürme Tablosu

BWT Sonucu

–

Henüz oluşturulmadı.

Adım

Hazır.

Burrows–Wheeler Dönüşümü

Tüm dairesel döndürmeler üretilir, sözlüksel sıraya dizilir ve son sütun okunarak BWT elde edilir.

Kullanım

  • En çok 12 karakterlik bir dizgi yazın ve Girdiyi Yükle düğmesine basın (aynı girdiyle baştan başlamak için Sıfırla).
  • $ ekle, her harf ve rakamdan önce sıralanan $ bitiş işaretini ekler. İşaret olmadan da dönüşüm hesaplanır; ancak özgün dizgi yalnız satır indisi de saklanırsa geri elde edilebilir.
  • Adım İlerle bir adım yapar: önce her adımda bir döndürme, sonra sıralama, sonra son sütunun okunması. Otomatik Oynat kalan adımları oynatır (duraklatmak için yeniden basın).
  • Tabloda ilk sütun (F) bağlantı renginde, son sütun (L) kırmızı gösterilir; en yeni döndürme vurgulanır. Sıralamadan sonra çerçeveli satır özgün dizgidir; Kayma döndürme miktarıdır ($ varken bu sütun sonek dizisidir).

Neden işe yarar?

Döndürmeleri sıralamak, benzer bağlamlardan önce gelen karakterleri bir araya toplar; bu yüzden son sütunda aynı karakterlerin uzun tekrar grupları oluşur (örneğin BANANA$ → ANNB$AA). Çalışma uzunluğu kodlaması (RLE) ve öne taşıma (move-to-front) kodlaması bunu iyi sıkıştırır; bzip2'nin özü budur.

Dönüşümü tersine çevirme

İlk sütun F, son sütun L'nin sıralanmış hâlidir. LF eşlemesi bir karakterin L'deki i'nci geçişini F'deki i'nci geçişine bağlar; böylece özgün dizgi, onu tutan satırdan başlanarak geriye doğru yeniden kurulur.

Karmaşıklık

Bu kaba kuvvet yöntem n uzunluğunda n döndürme kurar ve sıralar: O(n² log n) zaman ve O(n²) bellek. Pratik uygulamalar BWT'yi bir sonek dizisinden O(n) ya da O(n log n) zamanda türetir.