Shannon-Fanovo kódování je technika pro sestavení prefixového kódu založená na seznamu symbolů a počtech jejich výskytů (případně pravděpodobnostech). Metodu nezávisle na sobě publikovali v roce 1949 Claude Elwood Shannon s Warrenem Weaverem a Robert Mario Fano. Shannon-Fanův algoritmus lze využít i pro kompresi dat – je to metoda statistická, dvouprůchodová, semiadaptivní a asymetrická. Narozdíl od Huffmanova kódování není optimalita výsledného kódu zaručena.
Symboly jsou seřazené do neklesající posloupnosti podle počtu výskytů.
| Symbol | Počet výskytů |
|---|---|
| F | 5 |
| D | 4 |
| C | 4 |
| A | 3 |
| B | 3 |
| E | 2 |
Seznam je (F,D,C,A,B,E). Kódy všech symbolů jsou prázdné.
počáteční stav
| Symbol | Kód |
|---|---|
| F | – |
| D | – |
| C | – |
| A | – |
| B | – |
| E | – |
Seznam je (F,D,C,A,B,E). Nyní jej rozdělíme na dvě poloviny s příbližně stejným součtem četností.
první krok
| Symbol | Kód |
|---|---|
| F | 0 |
| D | 0 |
| C | 1 |
| A | 1 |
| B | 1 |
| E | 1 |
Seznamy jsou (F,D) a (C,A,B,E). Nyní je oba rozdělíme na poloviny s příbližně stejným součtem četností.
po druhém kroce
| Symbol | Kód |
|---|---|
| F | 00 |
| D | 01 |
| C | 10 |
| A | 10 |
| B | 11 |
| E | 11 |
Seznamy (F) a (D) již rozložit nejdou, zbývá zpracovat seznamy (C,A) a (B,E). Opět je oba rozdělíme na poloviny s příbližně stejným součtem četností.
po třetím a posledním kroce
| Symbol | Kód |
|---|---|
| F | 00 |
| D | 01 |
| C | 100 |
| A | 101 |
| B | 110 |
| E | 111 |
| Symbol | Kód |
|---|---|
| F | 00 |
| D | 01 |
| C | 100 |
| A | 101 |
| B | 110 |
| E | 111 |