Ovaj put cu biti malo oprezniji pa cu reci da je random-like podatke mozda moguce kompresovati na sledeci nacin: ako imamo fajl (koji hocemo da kompresujemo) duzine n bita I ako napravimo brojac takodje duzine n, koji broji od 0 do 2^n -1 nas fajl bi se nasao na tom brojacu na poziciji m (obzirom da su iste duzine fajl I brojac). Zapis (n,m) bi bio nas kompresovani fajl.
Dekompresija bi se vrsila na sledeci nacin: iz kompresovanog fajla bi procitali n I napravili brojac duzine n. Zatim bi procitali m, pustili brojac u rad I zaustavili kod m-tog fajla po redu. Stanje na brojacu u tom trenutku bi bio nas originalni fajl.
Da bi postojala kompresija m bi moralo biti izrazeno (I zapisano) kao a^b +x tj. a^b + c^d – e^f + .. +x^y + z tj. zbirom koeficijenata (faktora) I drugih brojeva osim 2, na najoptimalniji (najkraci) nacin. Tacna vrednost tog izraza bi se izracunavala tek prilikom dekompresije.
Prilikom kompresije ne bi bilo neophodno (a ni pozeljno) pravljenje brojaca. M se da izracunati na osnovu “tezinskih” koeficijenata direktno iz originalnog fajla. Na primer za fajl 0101 m je : 0*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 5.
Posto je ovo sajt za pomoc potrebna mi je pomoc I to vrlo specificna: naime potreban mi je neko da implementira ovaj nazovi algoritam I da uz pomoc programa u praksi proveri mogucnost/nemogucnost ovakve vrste kompresije. Sve ostale vrste pomoci su nepozeljne.
I posto sam na ovom sajtu imao I nekih neprijatnih iskustava npr. da ljudi prenebegavaju konkretna I precizna uputstva I pisu o samo njima interesantnim stvarima ovde cu navesti nekoliko vrsta pomoci koje sam svojevremeno dobijao na ovom sajtu a koje ovom prigodom smatram za veoma nepozeljne. Usput cu naravno iskoristiti priliku da jos jednom osvetlim neke momente u vezi sa ovom idejom:
1) Pomoc u vidu skretanja paznje na to da bi ovakav model kompresije bio u suprotnosti sa teorijom informacija od Kloda Shanona. A kako konkretnih dokaza da je teorija informacija pogresna za sada nema I ispravnost mog modela se dovodi u sumnju. Na ovaj argument odgovorili su sami ucesnici foruma skretanjem paznje na postojanje comp.compress fenomena gde se gomila ljudi bavila ovom istom tematikom kojom se I ja bavim do duse za sada bez rezultata, a koji su takodje bili upoznati sa postojanjem teorije informacija. Zagovornici teorije informacija naime kao da ne dozvoljavaju ni mikroskopsku mogucnost da je Shanon na pogresio vec recimo propustio da opise neki modus koji jednostavno nije bio tako ocigledan kao neki koje je opisao I mogucnost da bi razmisljanje u comp.compress stilu moglo konacno posle mnogobrojnih pokusaja da dovede do rezultata. Inace zahvaljuci prepisci koja je vodjena na ovom forumu a koja sada na zalost nije dostupna utvrdili smo da moj pristup problemu 100% nije obradjen na comp.compress stranicama te smatram da je samim tim vredan provere. Meni naravno nece biti zao ako I moj model zavrsi na comp.compress groblju tupavih ideja ali hocu da bude sahranjen dostojanstveno uz implementaciju a ne sa nekim frfljivim dokazom-pretpostavkom da model verovatno ne bi radio.
2) Pomoc u vidu dokaza da model nece raditi ono za sta je namenjen tj. da nece kompresovati podatke. Ovaj dokaz se uglavnom sastojao u besomucnom I na vise nacina dokazivanju da nizovi bita krace duzine od n mogu da daju mnogo manje razlicitih kombinacija od 2^n koliko je potrebno. Kako je imao jako malo veze sa mojim algoritmom ovo je trebao biti neki univerzalan dokaz da je ono sto pokusavam nemoguce izvesti u samoj osnovi I da su svi takvi pokusaji osudjeni na propast, zanemarujuci pri tom cinjenicu da je zapisivanjem uz pomoc koeficijenata (faktora) obezbedjeno visestruko citanje delova nizova bita I samim tim “produzavanje” kracih nizova bita na mozda I duze od n, te takodje cinjenicu da kraci nizovi bita mogu da daju veci broj kombinacija razlicitim nacinom citanja. Koliko god cvrst bio dokaz da je ovo sto pokusavam nemoguce cvrsto stoji I cinjenica da koeficijenti potrebni za opisivanje rednog broja inkrementacije fajla sa povecanjem duzine fajla zauzimaju procentualno sve manje od velicine istog a da sa povecanjem tih rednih brojeva ne raste potreba za vecim brojem koeficijenata jer brojevi postaju samo veci ali ne I slozeniji po bilo kom osnovu te da ih vrednosti koeficijenti takodje prate u pogledu velicine. Te na kraju u cilju skidanja sa vrata onih koji mi dokazuju da n bita tvori 2^n razlicitih kombinacija predlozio sam brojac koji bi malo drugacije radio u njemu bi se kombinacije bita ponavljale ali bi bile razlicito tumacene u zavisnosti od prethodne vrednosti na brojacu. Pocetak brojaca bi izgledao ovako:
0 .. 0
1 .. 1
2 .. 0
3 .. 00
4 .. 0
5 .. 01
6 .. 0
7 .. 10
8 .. 0
9 .. 11 itd… sa dva bitna mesta se moze kodovati 27 kombinacija tj. vise od 16 koliko daju 4 bitna mesta tj. sa nizovima duzine n/2 I manje moze se kodovati vise od 2^n kombinacija. Ukoliko neko bas dobije neodoljivu zelju da mi pomaze na nacin za koji sam rekao da je nepozeljan molim da pocne sa analizom mogucnosti konstrukcije/eksploatacije ovog I ovakvog brojaca posto su ucesnici rasprave vec dva puta uspeli da ga iskuliraju u jednoj drugoj temi.
3) Pomoc u vidu nagovaranja mene da se prihvatim programiranja. Iako sam vec na prvi takav predlog odgovorio opisom svojih programerskih (ne)mogucnosti ova vrsta pomoci se ponavljala I ponavljala. Ocene su se kretale od za to ti je potrebno “ono malo programiranja” do “zillion puta bi isprogramirao I da nijednom nisi seo za tastaturu”. A ja se samo pitam kad je vec tako lako sto neko ne sedne I za jedno prepodne uradi program pa da vec jednom stavimo tacku na ovu saradu. Ako ja kao priucen budem programirao sta da rade programeri? Da se bave zemljoradnjom, zemljoradnici politikom, politicari kuvanjem itd… Ja sam ipak za to da svako radi svoj posao tj. da ovaj program uradi neki profesionalac. Sto je najgore posto ga ipak verovatno niko nece uraditi na kraju cu biti prinudjen da prihvatim ovu vrstu pomoci.
4) Pomoc u vidu dobrodusnog nagovaranja da svoj algoritam isprobam “na papiru” uz uveravanje da cu tako najpre videti da je nemoguce. Iako sam I na ovakvu prvu ponudu odmah odgovorio I ova pomoc se ponavljala I ponavljala. 15-tak koeficijenata (faktora) po 30-50 bita u proseku cini 450-750 bita za pocetak mogucnosti kompresije. Za nizove krace od te vrednosti nema smisla da proveravam jer sigurno nece raditi, za nizove duze od 450 bita jednostavno nema sanse da proverim na papiru. Moj digitron se zakucava vec kod vrednosti 2^33 I ne moze da prikaze vece vrednosti a ovde bi racunicu trebao da pocnem sa 2^450 + …Ako bi mi I poslo za rukom da nabavim neki softverski digitron koji radi sa tako velikim vrednostima najdalje dokle bih stigao je da rucno izracunam vrednost m za dati niz, ostao bi problem odredjivanja najoptimalnijih faktora za koji ne samo da ne znam kako bi se to radilo vec sam I prilicno uveren da za tako velike brojeve to moze da se odradi samo programski a nikako rucno tj. na papiru.
5) Pomoc u vidu poredjenja ovoga sto ja pokusavam sa raznim drugim ocigledno nemogucim stvarima: “kao staviti kilo u pola kile”, “kao sipati dva litra vode u flasu od litar”, “izvrsiti trisekciju ugla lenjirom I sestarom”, “predstaviti spil
karata jednom kartom”. Da se ne bi mucili da smisljate evo vam jos jedno poredjenje:”Jednako nemoguce kao okrenuti gravitaciju uzbrdo” to je naime odgovorio profesor Nikoli Tesli na neko njegovo pitanje valjda o mogucnosti konstrukcije elektromotora uz primenu obrtnog magnetnog polja. Mislim da su mnogo vise literature (nego sto je jedna teorija informacija) I mnogo veci naucni umovi stajali protiv mogucnosti dobijanja energije putem cepanja atoma pa je jedna grupa naucnika ne obaziruci se na ocigledne dokaze protiv ipak uspela to da uradi. Tipa koji je izmislio televiziju izbacili su iz patentnog zavoda sa recima “tu je neki ludak koji tvrdi da je sem zvuka I sliku moguce prenositi na daljinu”. Nije mi naravno ni na kraj pameti da se poredim sa ovako velikim ljudima vec samo da ilustrujem da je mnogo puta nesto dokazano nemoguce ipak postajalo moguce istorija je puna primera.
6) Pomoc u vidu zbijanja urnebesnih sala na moj racun, kao I na racun modela koji sam predlozio. No koment.
7) Pomoc u vidu napucavanja ljudi koji su moj model hteli da stave na proveru. No koment.
Posto smo videli sta sve nije pomoc po mom misljenju jos jednom cu istaci sta jeste:
Implementacija algoritma tj. potpuno funkcionalna verzija programa bi bila od velike pomoci.
Ovde cu iskoristiti priliku da odgovorim jedinom coveku koji je zasluzio bilo kakav odgovor sa prethodnog jam-sesiona:
Ovo je samo predlog: koduj sa po 4 bita deset decimala, cetri osnovne racunske operacije, “^” I separator npr. /. Koji niz bitova (a ne bajtova) od mogucih 16 ce ti predstavljati separator (/) sam odluci. Inace ovime bi trebao da se bavis ti a ne ja. I uopste uzev poceo si vec da me pitas neke stvari koje se ticu programiranja a ja sa istim nemam blage veze tako da je mozda najbolje da sa algoritmom odes na podforum koji se bavi resavanjem problema iz tvog omiljenog programskog jezika pa da tamo pitas sve sto te zanima.
Posto je I pored mnogobrojnih upozorenja moguce sve I svasta na ovom forumu molio bih moderatora da ovaj put radi svoj posao kako treba tj. blagovremeno a ne kad voda vec dodje do guse (tj do njega) I na pravi nacin tj. brisanjem postova koji se ne slazu sa pravilima ovog foruma a ne brisanjem teme. Mada ja se iskreno nadam da ovaj put nece biti neke velike prepiske jer sam pokusao da je ogranicim.
Jos jednom cu ponoviti sustinu ovog posta ako nemate ili ne radite na implementaciji gorenavedenog algoritma molim vas da se I ne javljate tj. ne pomazete mi na bilo koji drugi nacin. Hvala.