informatika:maturita:huffmann

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

informatika:maturita:huffmann [26. 09. 2020, 22.57] – vytvořeno rydloinformatika:maturita:huffmann [26. 09. 2020, 23.18] (aktuální) rydlo
Řádek 7: Řádek 7:
 V klasickém kódování ASCII zabere 22 B neboli 176 b. V klasickém kódování ASCII zabere 22 B neboli 176 b.
  
-V Huffmanově kódování pouze 46 b tedy necelých B.+V Huffmanově kódování pouze 60 b tedy necelých B.
  
-Postup:+==== Postup ====
   - **Zjistíme četnost** jednotlivých znaků:<WRAP>   - **Zjistíme četnost** jednotlivých znaků:<WRAP>
 ^ Znak      T  |  E  |  SPC  |  N  |  J  |  O  |  X  |  S  | ^ Znak      T  |  E  |  SPC  |  N  |  J  |  O  |  X  |  S  |
Řádek 17: Řádek 17:
   - Zpětně **procházíme vzniklý strom** a na každé úrovni **přidělujeme vždy symboly 1 a 0** tak, že větev/znak s vyšší četností dostane 1 a větev/znak s nižší četností 0.   - Zpětně **procházíme vzniklý strom** a na každé úrovni **přidělujeme vždy symboly 1 a 0** tak, že větev/znak s vyšší četností dostane 1 a větev/znak s nižší četností 0.
  
-Na příkladu:+==== Na příkladu ====
   - Nejnižší četnost mají znaky X,S, proto vznikne dvojznak (X,S) s četností 2:<WRAP>   - Nejnižší četnost mají znaky X,S, proto vznikne dvojznak (X,S) s četností 2:<WRAP>
 ^ Znak      T  |  E  |  SPC  |  N  |  J  |  (X,S)  |  O  | ^ Znak      T  |  E  |  SPC  |  N  |  J  |  (X,S)  |  O  |
Řádek 23: Řádek 23:
 </WRAP> </WRAP>
   - Další dvojice v pořad je O a dvojznak (X,S):<WRAP>   - Další dvojice v pořad je O a dvojznak (X,S):<WRAP>
-^ Znak      T  |  E  |  SPC  |  ((X,S),O)  |  N  |  J  | +^ Znak      T  |  E  |  SPC  |   ( (X,S),O)  |  N  |  J  | 
-^ Četnost  |  6  |  5  |          3      |  2  |  2  |+^ Četnost  |  6  |  5  |            3      |  2  |  2  |
 </WRAP> </WRAP>
   - Nyní mají nejnižší četnost znaky N a J, vzniká z nich dvojznak:<WRAP>   - Nyní mají nejnižší četnost znaky N a J, vzniká z nich dvojznak:<WRAP>
-^ Znak      T  |  E  |  SPC  |  (N,J)  |  ((X,S),O) +^ Znak      T  |  E  |  SPC  |  (N,J)  |  ( (X,S),O) 
-^ Četnost  |  6  |  5  |        4    |      3      |+^ Četnost  |  6  |  5  |        4    |       3      |
 </WRAP> </WRAP>
   - V dalším kroku budeme slučovat trojznak XSO a dvojznak NJ, který bude mít hodnotu 7:<WRAP>   - V dalším kroku budeme slučovat trojznak XSO a dvojznak NJ, který bude mít hodnotu 7:<WRAP>
-^ Znak      ((N,J),((X,S),O))  |  T  |  E  |  SPC  | +^ Znak      ( (N,J),( (X,S),O) )  |  T  |  E  |  SPC  | 
-^ Četnost         7           |  6  |  5  |     |+^ Četnost  |           7            |  6  |  5  |     |
 </WRAP> </WRAP>
   - Dále slučujeme mezeru a E:<WRAP>   - Dále slučujeme mezeru a E:<WRAP>
-^ Znak      (E,SPC)  |  ((N,J),((X,S),O))  |  T  | +^ Znak      (E,SPC)  |  ( (N,J),( (X,S),O) )  |  T  | 
-^ Četnost  |                 7           |  6  |+^ Četnost  |                   7            |  6  |
 </WRAP> </WRAP>
   - V předposledním kroku bude složený znak NJXSO spojen s T:<WRAP>   - V předposledním kroku bude složený znak NJXSO spojen s T:<WRAP>
-^ Znak      (((N,J),((X,S),O)),T)  |  (E,SPC) +^ Znak      ( ( (N,J),( (X,S),O) ),T)  |  (E,SPC) 
-^ Četnost           13            |         |+^ Četnost             13              |         |
 </WRAP> </WRAP>
   - Při posledním složení už vznikne jediný složený znak, tedy kompletní strom:  - V předposledním kroku bude složený znak NJXSO spojen s T:<WRAP>   - Při posledním složení už vznikne jediný složený znak, tedy kompletní strom:  - V předposledním kroku bude složený znak NJXSO spojen s T:<WRAP>
-^ Znak      ((((N,J),((X,S),O)),T),(E,SPC)) +^ Znak      ( ( ( (N,J),( (X,S),O) ),T),(E,SPC)) 
-^ Četnost                22                 |+^ Četnost                  22                    |
 </WRAP> </WRAP>
  
-Výše uvedený řetězec lze zapsat také formou stromu: +==== Výše uvedený řetězec lze zapsat také formou stromu ==== 
-{{ :informatika:maturita:huffmanstrom.png?nolink&200 |Strom Huffmanova kódování pro větu "TENTO TEXT JE JEN TEST"}}+ 
 +{{ :informatika:maturita:huffmanstrom.png?nolink&300 |Strom Huffmanova kódování pro větu "TENTO TEXT JE JEN TEST"}} 
 + 
 +==== Při zpětném sestavení přidělujeme 1 a 0 ==== 
 + 
 + 
 +| krok:  ^ 1 ^ 2 ^ 3 ^ 4 ^ 5 ^ Celkem | 
 +^      | 1 | 0 |       | **10** | 
 +^      | 0 | 1 |       | **01** | 
 +^  SPC   | 0 | 0 |       | **00** | 
 +^      | 1 | 1 | 1 | 1 |   | **1111** |  
 +^      | 1 | 1 | 1 | 0 |   | **1110** | 
 +^      | 1 | 1 | 0 | 0 |   | **1100** | 
 +^      | 1 | 1 | 0 | 1 | 0 | **11010** | 
 +^      | 1 | 1 | 0 | 1 | 1 | **11011** | 
 + 
 +[[http://huffman.ooz.ie/?text=TENTO TEXT JE JEN TEST|online zpracování stromu]] 
 +==== Zakódovaný text ==== 
 +100111111011000010011101010001110010011100111110010011101110 
 + 
 +Dekódování probíhá **sekvenčně** náhradou za znak z tabulky, vždy jakmile to nalezená sekvence umožňuje: 
 +| 10 | 01 | 1111 | 10 | 1100 | 00 | 10 | 01 | 11010 | 10 | 00 | 1110 | 01 | 00 | 1110 | 01 | 1111 | 00 | 10 | 01 | 11011 | 10 | 
 +| T  | E  |  N   | T  |  O      | T  | E  |     | T  |    |  J   | E  |    |  J   | E  |  N      | T  | E  |     | T  |
informatika/maturita/huffmann.1601153862.txt.gz · Poslední úprava: autor: rydlo

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki