Kompresní program – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kompresní program – Java – Fórum – Programujte.comKompresní program – Java – Fórum – Programujte.com

 

jack
~ Anonymní uživatel
22 příspěvků
13. 12. 2012   #1
-
0
-

   

Potreboval bych poradit s nejakym navrhem jak to naimplementovat? 

Vim že H. kodovani vyuziva prefixoveho opt. kodovani.na wikip. jsem nasel toto:

Minimální prefixový kód: Minimálním prefixovým kódem potom rozumíme takový kód, který obsahuje minimální možný počet znaků pro kódování. Délka kódu pro jednotlivé znaky se určuje z pravděpodobnosti jejich výskytu v kódovaném textu.

Jak urcim pravd. jejich vyskytu?

  1. Ulozim si do souboru 1 21 22 231 232 coz je prefixovy kod.Symbol kod. abecedy neobsahuje predponu napr. pridanim 225 by uz to nebyl prefixovy kod, pokud jsme to pochopil spravne,nebo budu ukladat jakykoli znaky a z nich vytvorim pref. kod?Jeslti ano mohl by mi nekdo poradit jak na to?

Nahlásit jako SPAM
IP: 178.22.113.–
jack
~ Anonymní uživatel
22 příspěvků
13. 12. 2012   #2
-
0
-

#1 jack

2. Jak mysli jeden znak povazujte jako 1byte v souboru?

Moc dekuju predem za odpovedi 

Nahlásit jako SPAM
IP: 178.22.113.–
KIIV
~ Moderátor
+43
God of flame
14. 12. 2012   #3
-
0
-

pokud me pamet nesali, tak huffmanovo kodovani znamena projet si cely soubor, spocitat ktere znaky jsou nejcetnejsi... uplne nejcastejsi znak ma pak hodnotu binarne dejme tomu 0b1 druhej nejcastejsi se vejde na 2b (zacinajici 0) ... (a samozrejme nejmene casty pak muze obsadit i daleko delsi pocet bitu nez 8b.. )

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
TheOndrap+2
Super člen
14. 12. 2012   #4
-
0
-

#2 jack

Ahoj,

myslí se to tak, že budeš číst ze souboru po jednom bytu.

Budeš mít tabulku tak velikou, jako je abeceda vstupního souboru(textu).

Tzn na 1bytu může být 2^8 možností = tabulka bude mít max 256 řádků(kdybys věděl že v textu bude čeština, můžeš si spočítat počet písmen a číslic české abecedy). Z počátku inicializovaná na nuly

Např.: přečteš byte, ten bude mít hodnotu (0x30) a v tabulce na indexu 0x30 inkrementuješ hodnotu.

Potom co pročteš celej soubor projedeš tvou tabulku, zjistíš nejčastější výskyt a koduješ písmena

Následně bych soubor projel ještě jednou s tím že bych už vytvořil i nějakej výstupní a postupně každý písmeno vzal, kouknul jakej má kód a zapsal ho do výstupu.

Složitost polynomiální, možná někdo vymyslí i něco rychlejšího :)

+ jak píše KIIV, ten 1byte nemá s max délkou výsledného kodu nic společného

Nahlásit jako SPAM
IP: 88.102.250.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
jack
~ Anonymní uživatel
22 příspěvků
14. 12. 2012   #5
-
0
-

#4 TheOndrap
Uz sem si pro takovy text: AAAABBBBBBBCCCCCCCCCCCCDDDDDDDDDEEEEEEEEEE ,ktery prectu ze souboru napsal tabulku:

D 00
E 01
A 100
B 101
C 11

Vytvorim retezec "000110010111"

Smazu predchozi text ze souboru a ulozim do nej komprimovany text + tabulku.

Muze to tak probuhat?

Jakym zpusobem to potom dekomprimuji...??

Nahlásit jako SPAM
IP: 178.22.113.–
TheOndrap+2
Super člen
14. 12. 2012   #6
-
0
-

To máš zakódovaný nějak krátký, ne?

Nahlásit jako SPAM
IP: 88.102.250.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
TheOndrap+2
Super člen
14. 12. 2012   #8
-
0
-
  1. http://www.stringology.org/…ndex_cs.html
  2. předpoklad je že víš jak funguje huffmanův kod a máš všechno správně (což vypadá OK), ověř podle linku

Potom prostě načteš 1byte ze vstupu, koukneš do tabulky a přidáš do výstupu. Sám vidíš že původní tvůj vstup byl asi 40bytů a ten zakodováný je asi 20bytů

Dekodování?

Načetl bych celý zakodovaný text a četl ho po bitech. Vzal první bit a kouknul, jestli pro něj existuje kód, když ne tak bych vzal 2 bity a takhle musíš ke kódu adekvátní písmeno

Nahlásit jako SPAM
IP: 88.102.250.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 14 hostů

Podobná vlákna

Program — založil Jan Burant

C# program — založil Tomas.P

Program do C++ — založil elis5

Program — založil dakine

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý