Archiwum
czyli czego się możecie ode mnie nauczyć
Kompresor idealny 2007-03-18 12:44
 Oceń wpis
   
_-¯ W ramach treningu umysłu postanowiłem dziś opracować wydajny algorytm kompresji danych. Zacząłem oczywiście od przyjrzenia się istniejącym rozwiązaniom, a raczej od odświeżenia sobie wiedzy o nich, gdyż jako wytrawny chakier znam 'na pamięć' siedemdziesiąt osiem najpopularniejszych formatów i potrafię zarówno kompresować jak i dekompresować - korzystając jedynie z kartki i ołówka - z prędkością do 640Kbit/s. Co najmniej raz na miesiąc sprawdzam swoje umiejętności kompresując i dekompresując "w pamięci" całą Wikipedię, na czas. Mój rekord wynosi 7 minut i 13 sekund, a byłby poniżej siedmiu minut - jednak gdy już sprawdzałem sumę kontrolną zadzwonił telefon. Oczywiście - pomyłka, ale straciłem przez to cenne 15 sekund.

_-¯ Czytałem sobie właśnie o formacie 7z gdy w oko wpadł mi następujący zapis:
Maksymalna wielkość archiwum jest określona na poziomie 16 000 000 000 GB. Zastanowiło mnie mianowicie, czemu autor pisze o 16 000 000 000 gigabajtach, a nie o 16 000 000 tarabajtach, 16 000 petabajtach czy po prostu o 16 eksabajtach. I w tym momencie mnie olśniło - szybciutko zapisałem sobie to co Państwo widzą powyżej na karteczce. Z ciągu '16 000 000 000 GB' otrzymałem '16 EB'. siedemnastobajtową informację skompresowałem właśnie do pięciu bajtów. Redukcja o ponad 70% - nieźle!
Myślałem dalej - z ciągu bajtów usunąłem dziewięć zer, a mimo to zachowana informacja pozostała ta sama. Ergo - zera nie niosą informacji!

_-¯ Proste to odkrycie było jednocześnie porażające. Dlaczego nikt wcześniej na to nie wpadł!? Przecież zero, to NIC! NIC nie może nieść informacji, bo go (owego 'nica') nie ma!
No dobrze, ale np. w tekstach rzadko kiedy występują zera do usunięcia - zapyta ktoś z Państwa. Oczywiście. Ale przecież słowa zakodowane są za pomocą bajtów, bajty zaś - za pomocą bitów. Bity natomiast przyjmują jedynie dwie wartości - jedynkę oraz zero. Wystarczy zatem z każdego ciągu bitów powyrzucać te, które nie niosą informacji (mają wartość 'zero'), a zostawić jedynie te które informację zawierają (mają wartość 'jeden'). Statystycznie da nam to redukcję o 50%...

_-¯ Gdy doszedłem do tej konstatacji algorytm idealnego kompresora już był gotowy w mojej głowie. Prosty i skuteczny. Dokonane przeze mnie odkrycie wystarczyło tylko elegancko zakończyć podając wyjście bloku kompresora ponownie na jego wejście. Ktoś mógłby zapytać 'po co?', skoro na wyjściu otrzymaliśmy już same jedynki, bez zer. Otóż, po co zapisywać np. sto dwadzieścia siedem jedynek, skoro można jedynie zapamiętać informację, że jedynek jest sto dwadzieścia siedem? A liczba jedynek również jest informacją którą można skompresować! Wspomniane 127 bitowo zapisujemy jako 01111111, co po kompresji daje 7 (siedem jedynek), czyli 00000111, co po kompresji daje 3 (trzy jedynki), czyli 00000011, co po kompresji daje 2 (dwie jedynki), czyli 00000010, co po kompresji daje 1. Koniec. Informacja została właśnie skompresowana do rozmiaru jednego bitu!

_-¯ Aktualnie przeprowadzam szereg testów algorytmu, już teraz jednak mogę poinformować Państwa że wyniki są znakomite. W zależności od założonego stopnia rekursji algorytmu każda informacja daje się skompresować do objętości od kilku bajtów do kilku bitów. Po opracowaniu gotowego kompresora można go będzie oczywiście pobrać za darmo, wraz z kodem źródłowym, z mojej strony.

_-¯ Teraz zostało mi tylko opracowanie dekompresora. Ale to już powinna być tylko formalność...
 
 


Najnowsze komentarze
 
2016-03-27 11:01
loan offer do wpisu:
Jak się włamać na konto pocztowe
Dobry dzień, Jestem MR larryt, prywatnej pożyczki Pożyczkodawca oraz współpracy finansowej[...]
 
2016-03-12 03:02
Pani Tamara Tita do wpisu:
Jak się włamać na konto pocztowe
Cześć, Nadchodzi Affordable kredytu, która zmieni twoje życie na zawsze, jestem Pani Tamara[...]
 
2016-03-11 18:49
Josephine Halalilo do wpisu:
Jak się włamać na konto pocztowe
Cześć wszystkim, Gorąco polecam to wspaniałe świadectwo, że w moim życiu trzymałem miłości[...]
 
2016-02-23 21:39
pharoah do wpisu:
Wybory coraz bliżej...
Charyzjuszu! Na święte Kontinuum i Infundybułę Chronosynklastyczną - powiadam Ci: Wróć!
 
2016-02-23 18:03
janrski do wpisu:
Jak się włamać na konto pocztowe
HEJ POMOZESZ MI SIE WŁAMAC NA KONTO MOJEJ ZONY??MA TROJE DZIECI OD 10LAT DO 4 LAT MOGE JEJ[...]
 
2016-02-09 00:03
vektra es a do wpisu:
Jak się włamać na konto pocztowe
Drodzy Użytkownicy, chcielibyśmy odnieść się do poruszanych na tej stronie kwestii jak i[...]
 
2016-02-04 02:07
Pani maris smith do wpisu:
Jak się włamać na konto pocztowe
Zeznania w sprawie jak mam pożyczkę zmienić życie mojej rodziny Nazywam się Babara Curtney.[...]
 
2016-01-18 21:36
jolasia do wpisu:
Jak się włamać na konto pocztowe
Witam czy ktoś by mógł włamać mi się na konto?
 



 
Chakier, Charyzjusz. Q2hhcnl6anVzeiBDaGFraWVyCg== chakier[at]vp.pl