Optimális hosszúságú kódok akkor beszélünk,ha :
a nagyobb valószínuségu betu kódja rövidebb,mint a kisebb valószínuségué;
• a kisebb hosszúságú kód minden variációs lehetosége ki van használva;
• a kódfa ágain a megengedett csatorna jelek számával megegyezo elágazás van,kivéve az utolsó csomópontokat.
Huffman szerint optimalitás kritériumát eléro kódok:
• forrás-abc legkisebb gyakoriságú betuinek összevonásával egyre egyszerubb kód kialakítására vezetjük vissza a feladatot,egészen addig,míg az optimális megoldás triviális nem lesz;
• ezután az összevont legnagyobb gyakoriságú betuknek,ill.betü csoportoknak a lehetséges legrövidebb kódokat adjuk és az összevont betucsoportokat fokozatosan felbontjuk,hogy minden betu önálló kódot kapjon

Az optimális hosszúságú kód kritériumai:
• A nagyobb valószínuségu betu kódja rövidebb, mint a kisebb valószí¬nuségué. (Esetleg egyenlo)
• A kisebb hosszúságú kód minden variációs lehetosége ki van használva.
• A kódfa ágain a csatorna jelek számával megegyezo elágazás van, kivéve az utolsó csomópontokat.
Shannon tétele: Claude Elwood Shannon amerikai (ír származású) matematikus (1916-2001) vázolta fel a kommunikáció általános modelljét (1948):

adó> csatornaban/jel/ > vevö

Szokás ehhez a modellhez más elnevezéseket is használni:
Az adót elméletileg szét lehet választani (hír)forrásra és tényleges adóra. Ekkor a (hír)forrástól az adóhoz jut a hír, az adó pedig – kódolva a hírt – közleményt (jelet) bocsát a csatornába. Ugyanígy a(z esetleg zajos) közlemény (jel) a csatornából a vevohöz jut, amely dekódolja azt és az így keletkezett (esetleg torzított) hírt a címzetthez juttatja.
A mi ábránkon a (hír)forrás és adó egyben szerepel adóként, és a vevo és címzett egyben szerepel vevoként, hiszen sok esetben ezeket nem érdemes elválasztani egymástól

Adattömörítés: Információvesztés nélküli kódolás kisebb méretre

A tömörítési eljárások alapvetoen két csoportra oszthatók: veszteségmentes és veszteséges tömörítésre. A veszteségmentes eljárással tömörített adatok visszaállítás után azonosak az eredetivel. A veszteségmentes tömörítés használata elengedhetetlen futtatható kódok, szövegfájlok stb. esetében, mert ezeknél akár egyetlen bit megváltozása sem megengedheto.
Az adathalmazok reprezentálhatnak pl. képeket vagy feldolgozásra váró egyéb digitalizált jeleket is. Ezekben az esetekben surun elofordul, hogy a tárolás vagy az adatátvitel folyamán nem kell megorizni az adatok eredeti állapotát. Az ilyen reprezentációk mindig tartalmaznak bizonyos mértéku zajt és torzítást. Ha a tömörítés és visszaalakítás során elveszo adatok a zajt és/vagy a torzítást még éppen elfogadható mértékben növelik csak meg, akkor nyugodtan használhatunk veszteséges tömörítést. A veszteséges tömörítési eljárások sokkal nagyobb tömörítési hatásfokkal dolgoznak, de a tömörítési arány növelésével növekszik a hasznos jelhez adódó zaj is.

A Huffman-kódolás
A legtöbb veszteségmentes tömörítési eljárást eredetileg szöveges információk (ASCII karakterkód-sorozatok) tömörítésére használták. A D.A. Huffman által még az 50-es években kidolgozott eljárás a szöveges adatok azon tulajdonságára épül, hogy egy szöveg 96 %-ban a 8 bites ASCII kód mindössze 31 karakterét használja. Ezeket tehát már 5 bites kóddal is ábrázolni lehet. A maradék 4 %-ot kitevo karakterek jelzésére az 5 bites kód nem használt 32. kombinációja szolgálhat, amit a karakter eredeti 8 bites kódja követ. A szöveg 96 %-át 5 biten, 4 %-át 13 biten ábrázoltuk.
Az egy karakterre eso átlagos bitszám 0.96• 5 + 0.04•13 = 5.32, a tömörítési arány 1.5:1.

Fenti módszert általánosítva, a leggyakrabban eloforduló adatok ábrázolására 1 vagy 2 bitet, a legritkábbakéra 12 vagy még több bitet használhatunk. Egy adott adatszó ábrázolására használandó bitek száma arányos az adatszó elofordulási valószínuségének logaritmusával. Az egyes adatokhoz változó hosszúságú kódszavakat rendeltünk. Az ilyen típusú eljárásokat változó szóhosszúságú kódolásnak (Variable Length Coding, VLC) nevezik.
A Huffman-kódolás gyakorlati alkalmazása során a kódoló- és dekódoló algoritmusnak ugyanazt a kódtáblát kell használnia. Ez lehet állandó, de létezik olyan eljárás is, amikor minden bemeno adatblokkon új statisztikai elemzést végzünk és új kódtáblát veszünk fel az egyes adatok elofordulási gyakoriságának függvényében. Ilyenkor a kódolt információ továbbítását természetesen meg kell eloznie az új kódtábla továbbításának. Ezt azonban csak akkor célszeru megtenni, ha az új táblával kódolt adathalmaz és az új kódtábla együttesen kevesebb adattal írható le, mint az eredeti táblával kódolt információ.