Ülesanne täielikult lahendatud
-
"abracadabra" kuus elementi 16 tähemärgi pikkuse otsinguaknaga 5 sammu
Paneelil on pärast ühte tokenit näit 5,18×. Arvutage välja, mida see näitab pärast kõiki kuut. Sisend on "abracadabra", otsinguaken on 16 märki ja ettelugemispuhver on 8.
-
Token koosneb kolmest fikseeritud laiusega väljast, seega otsustavad selle maksumuse kaks seadistust, mitte andmed. Nihe peab adresseerima mis tahes positsiooni aknas, pikkus mis tahes väärtust kuni puhvri suuruseni ja literaal on töötlemata bait.
-
Kooder skaneerib vasakult paremale ja võtab pikima kattuvuse, mida aken pakub. Esimese kolme märgi taga ei asu midagi, seega 'a', 'b' ja 'r' maksumuseks on igaühel üks terve token, et neid üks kord öelda. Vaid viimane token tasub end ära, kopeerides sõne "abra" positsioonilt 0.
-
Paneelil olev suhe on jooksev näit ning jagab kogu sisendi seni toodetud väljundiga. Pärast ühte tokenit kaalub see ühteteist märki seitsmeteistküne biti vastu, mistõttu see algabki nii kõrgetelt väärtustelt.
-
Kuus tokenit, igaüks seitseteist bitti, teeb 102 bitti 88-bitise sisendi vastu. Kodeering on suurem kui asi, mida see kodeerib.
-
Tasuvuspiir on ühe jagamise kaugusel. Token maksab 17 bitti ja ostab mingi arvu märke, mille väärtus on igaühel 8 bitti, seega võidab skeem vaid siis, kui keskmine token liigub edasi rohkem kui 17/8 märki — ja nendest kuuest teeb seda vaid viimane.
Vastus
Paneel kuvab 5,18× pärast esimest tokenit ja 0,86× pärast kuuendat: sama sõne, sama kodeering, mõlemal pool arvu 1,0. Meeles pidamist vääriv näitaja on 2,125 märki tokeni kohta, mis on lihtsalt tokeni laius jagatud kaheksaga, ja see ongi kogu katse selle kohta, kas LZ77 aitab antud sisendit. Lisaks määravad need andmed hinna nupule, mis näib tasuta. Otsinguakna laiendamine 64-le lisab kaks bitti igale nihkeväljale ja selle sõne puhul ei leia see üldse pikemat kattuvust — liigendus on ikka samad kuus tokenit — seega langeb suhe väärtusele 0,77×. Iga haardeulatuse dubleerimine maksab ühe biti lisaks igal tokenil, olgu see kasutatud või mitte.
-
Õpitee
Käsitsi tihendamine
Allikad (1)
- The algorithm, and the offset-1 trick block 3 turns on: J. Ziv and A. Lempel, "A universal algorithm for sequential data compression." IEEE Transactions on Information Theory 23(3), 337–343, 1977.