Nevýhody předchozího algoritmu byla nutnost průchodu zdrojových dat kvůli
vytvoření statistického modelu a také nutnost uložení statistického modelu do
výstupu. Tyto nedostatky je možné odstranit upravením na adaptivní verzi.
Existuje více možností, jak vytvořit adaptivní verzi Huffmanova kódování, zde
se však soustředíme na algoritmus FGK, vytvořený Fallerem, Gallagerem a
Knuthem v roce 1985. Kódový strom se v tomto algoritmu tvoří postupně a data
jsou kódována podle statistického modelu vytvořeného z dosud zakódované části.
Po každém načtení znaku je třeba také provést aktualizaci stromu tak, aby byla
zachována sourozenecká vlastnost. Adaptivní algroitmy se také mohou lišit v tom,
jak bude vypadat strom před začátkem algoritmu:
- Inicializace se všemi znaky abecedy - v tomto případě je strom na
začátku nastaven tak, že obsahuje všechny znaky se zvolenou pravděpodobností
- Použití uzlu ZERO - v tomto případě obsahuje počáteční strom pouze
jediný uzel ZERO. Při načtení znaku, který dosud nebyl zakódován, se do výstupu
vypíše kód uzlu zero a uzel se rozdělí na nový uzel ZERO a list s novým znakem.
Tento způsob je také použitý ve vizualizačním appletu.
Následuje applet s vizualizací algoritmu adaptivního Huffmanova kódování s aktualizací
stromu podle FGK. Tato vizualizace je dostupná také jako aplikace po spuštění souboru
fgkcz.jnlp v adresáři application.