Ülesanne täielikult lahendatud
-
"banana$" Burrowsi-Wheeleri teisendus kõigi seitsme sorteeritud pöördega 5 sammu
Leidke sõne "banana$" Burrowsi–Wheeleri teisendus ja otsustage seejärel, kas midagi on kokku pakitud. See on samm BWT väljund: lõpumärk lisatud, kõik seitse rotatsiooni sorteeritud, viimane veerg välja loetud.
-
Lõpumärk lisatakse enne kõike muud. Kuna $ sorteeritakse ettepoole igast tähest ja see esineb täpselt ühe korra, ei saa ükski kaks rotatsiooni osutuda võrdseks, seega on sorteerimisel üksainus ühene tulemus.
-
Rotatsioonide leksikograafiline sorteerimine on ainus töö, mida teisendus teeb. Seitset rida ülalt alla lugedes märkate, et sorteerimine on rühmitanud sõne selle järgi, mis tuleb iga positsiooni järel.
-
Rotatsiooni viimane märk on märk, mis seisab algses sõnes vahetult enne selle esimest märki. Seetõttu tekitabki sorteerimine sarju: read 1 ja 2 algavad mõlemad tähega 'a' ja lõpevad mõlemad tähega 'n', sest mõlemale nendest a-dest eelneb sõnas banana n. Võti on algse sõne reanumber ja ilma selleta ei saa teisendust tagasi pöörata.
-
Veel ei ole midagi kokku pakitud ja ei saanukski olla — väljund on sisendi permutatsioon, samad seitse märki teises järjekorras. Muutus vaid sarjade struktuur ja see ongi ainus asi, mis muutus.
-
RLE arvestab kaks baiti sarja kohta, seega viis sarja maksavad kümme baiti seitsmebaidise sisendi vastu. Selle tasuvuspiir ei muutu kunagi: sarjade arv peab olema alla poole pikkusest, mis siin tähendab kolme või vähemat.
Vastus
Paneel kuvab annb$aa võtmega key = 4, keskmise sarja pikkusega 1,4 märki, 10 baiti RLE-d ja skooriga 0,70×. Teisendus tegi täpselt seda, mida lubab — see kasvatas keskmise sarja pikkust 40% ilma ühtegi märki puutumata — ja toru jäi ikka kahjumisse, sest seitse märki ei ole piisavalt tekstimahtu, et see võit kataks kaks baiti sarja kohta. Dubleerige sõna ja arvepidamine pöördub vastupidiseks. "bananabanana$" on kolmteist märki ja selle teisendus on annnnbba$aaaa: viie sarja asemel kuus sarja, samal ajal kui pikkus peaaegu dubleeriti, andes 12 baiti 13 vastu ja skoori 1,08×. See ongi kogu BWT mõte — sarjade arvu määrab see, kui palju erinevaid kontekste tekstis on, mitte selle pikkus, seega mida pikem on plokk, seda paremini see ära tasub, mis tõttu bzip2 teisendab kuni 900 kB pikkusi plokke, mitte sõnu.
-
Õpitee
Käsitsi tihendamine
Allikad (3)
- Insight blocks 1 and 2 — the transform itself: M. Burrows and D. J. Wheeler, "A Block-sorting Lossless Data Compression Algorithm." Digital Systems Research Center, Research Report 124, 1994.
- Insight block 3 — the aligners it turned into: B. Langmead, C. Trapnell, M. Pop and S. L. Salzberg, "Ultrafast and memory-efficient alignment of short DNA sequences to the human genome." Genome Biology 10, R25, 2009.
- And the one the block names outright: H. Li and R. Durbin, "Fast and accurate short read alignment with Burrows–Wheeler transform." Bioinformatics 25(14), 1754–1760, 2009.