Előtag kód - Prefix code

Az előtag kód egy olyan kódrendszertípus, amely megkülönböztethető az "előtag tulajdonság" birtoklásával, amely megköveteli, hogy a rendszerben ne legyen olyan teljes kódszó, amely a rendszer bármely más kódszavának előtagja (kezdeti szegmense) legyen. Triviálisan igaz a rögzített hosszúságú kódokra, tehát csak egy szempont a változó hosszúságú kódban .

Például a (z) {9, 55} kódszavakkal ellátott kód az előtag tulajdonsággal rendelkezik; a {9, 5, 59, 55} kódból álló kód nem, mert az "5" az "59" és az "55" előtag. Az előtag kód egyedülállóan dekódolható kód : teljes és pontos sorrendet kapva a vevő minden szót azonosíthat anélkül, hogy a szavak között külön jelölőt igényelne. Vannak azonban egyedülállóan dekódolható kódok, amelyek nem előtag-kódok; például az előtag kód fordítottja továbbra is egyedileg dekódolható (ez utótag kód), de nem feltétlenül előtag kód.

Az előtag-kódok más néven előtag nélküli kódok , előtag-állapotkódok és pillanatnyi kódok . Bár a Huffman-kódolás csak egy a sok algoritmus közül az előtag-kódok levezetésére, az előtag-kódokat széles körben "Huffman-kódoknak" is nevezik, még akkor is, ha a kódot nem Huffman-algoritmus állította elő. A vessző nélküli kód kifejezést néha az előtag nélküli kódok szinonimájaként is alkalmazzák, de a legtöbb matematikai könyvben és cikkben (pl.) A vessző nélküli kódot önszinkronizáló kódra , az előtagkódok alosztályára használják.

Az előtagkódok használatával az üzenet összefűzött kódszavak sorozataként továbbítható, sávon kívüli jelölők vagy (alternatívaként) speciális jelölők nélkül a szavak között az üzenet szavainak keretezésére . A címzett egyértelműen dekódolhatja az üzenetet, ismételten megkeresve és eltávolítva az érvényes kódszavakat alkotó szekvenciákat. Ez általában nem lehetséges olyan kódokkal, amelyekből hiányzik az előtag tulajdonság, például {0, 1, 10, 11}: a vevő egy kódszó elején "1" -et olvasva nem tudná, hogy ez volt-e a teljes kódszó " 1 ", vagy pusztán a" 10 "vagy" 11 "kódszó előtagja; így a "10" karakterlánc akár egyetlen kódszóként, akár az "1", majd a "0" szavak összefűzéseként értelmezhető.

A változó hosszúságú Huffman-kódok , az országhívó kódok , az ISBN-ek országa és kiadói részei, az UMTS W-CDMA 3G vezeték nélküli szabványban használt másodlagos szinkronizációs kódok és a legtöbb számítógépes mikroarchitektúra utasításkészlete (gépi nyelve) előtag-kód.

Az előtag-kódok nem hibajavító kódok . A gyakorlatban egy üzenetet előbb tömöríthetünk egy előtag kóddal, majd az átvitel előtt ismét kódolhatjuk csatornakódolással (beleértve a hibajavítást is).

Bármely egyedülállóan dekódolható kódhoz tartozik egy előtag kód, amelynek azonos a kódszó hossza. Kraft egyenlőtlensége jellemzi azokat a kódszavas hosszúságokat, amelyek egy egyedülállóan dekódolható kódban lehetségesek.

Technikák

Ha minden szót a kód hossza azonos, a kód nevezzük fix hosszúságú kódot , vagy egy blokk-kód (bár a kifejezés blokk kód is használható fix méretű a hibajavító kódokat a csatorna kódolási ). Például az ISO 8859-15 betűk mindig 8 bit hosszúak. Az UTF-32 / UCS-4 betűk mindig 32 bit hosszúak. Az ATM-cellák mindig 424 bit (53 bájt) hosszúak. Egy rögzített hosszúságú, rögzített hosszúságú k bit kódolhat akár forrásszimbólumokat.

A rögzített hosszúságú kód szükségszerűen előtag-kód. Bármelyik kódot rögzített hosszúságú kódgá lehet alakítani úgy, hogy rögzített szimbólumokat tölt be a rövidebb előtagokra, hogy megfeleljen a leghosszabb előtagok hosszának. Alternatív módon ilyen kitöltőkódokat lehet alkalmazni redundancia bevezetésére, amely lehetővé teszi az autokorrekciót és / vagy a szinkronizálást. A rögzített hosszúságú kódolások azonban nem hatékonyak olyan helyzetekben, amikor egyes szavak sokkal nagyobb valószínűséggel kerülnek továbbításra, mint mások.

A csonkított bináris kódolás a rögzített hosszúságú kódok egyszerű általánosítása azoknak az eseteknek a kezelésére, amikor az n szimbólumok száma nem kettő hatványa. A forrásszimbólumokhoz k és k +1 hosszúságú kódszavakat rendelünk , ahol k úgy van megválasztva, hogy 2 k <n ≤ 2 k + 1 .

A Huffman-kódolás egy kifinomultabb technika a változó hosszúságú előtag-kódok elkészítésére. A Huffman-kódolási algoritmus bemenetként veszi azokat a frekvenciákat, amelyeknek a kódszavaknak rendelkezniük kell, és egy olyan előtag-kódot készít, amely minimalizálja a kódszó hosszának súlyozott átlagát. (Ez szorosan összefügg az entrópia minimalizálásával.) Ez a veszteségmentes adattömörítés egyik formája, amely az entrópia kódolásán alapul .

Néhány kód a kódszó végét egy speciális "vessző" szimbólummal jelöli, amely eltér a normál adatoktól. Ez némileg analóg a szavak közötti szóközökkel egy mondatban; megjelölik, hol az egyik szó véget ér, hol a másik kezdődik. Ha minden kódszó vesszővel végződik, és a vessző nem jelenik meg máshol a kódszóban, akkor a kód automatikusan előtagmentes. A modern kommunikációs rendszerek azonban mindent az "1" és a "0" sorozataként küldenek - egy harmadik szimbólum hozzáadása drága lenne, és csak a szavak végén történő használata nem hatékony. A morze kód egy változó hosszúságú kód vesszővel ellátott példája. A betűk közötti hosszú szünetek és a szavak közötti még hosszabb szünetek segítenek az embereknek felismerni az egyik betű (vagy szó) végének és a következő kezdetét. Hasonlóképpen, a Fibonacci kódolás "11" -et használ minden kódszó végének jelölésére.

Az önszinkronizáló kódok olyan előtag-kódok, amelyek lehetővé teszik a keretszinkronizálást .

Kapcsolódó fogalmak

Az utótag kód olyan szavak összessége, amelyek egyikének sem képzője más; ekvivalensen olyan szavak halmaza, amelyek az előtag kód fordítottja. Csakúgy, mint egy előtag kódnál, a karakterlánc reprezentációja az ilyen szavak összefűzésének is egyedi. A bifix kód olyan szavak összessége, amelyek mind előtag, mind utótag kódok. Az optimális előtagkód egy minimális átlagos hosszúságú előtagkód. Vagyis tegyünk fel egy n szimbólumból álló ábécét valószínűséggel a C előtag kódhoz . Ha C ' egy másik előtag kód, és a C' kódszavainak hossza , akkor .

A ma használt előtag-kódok

Példák az előtag kódokra:

Technikák

Az előtagkódok készítéséhez általánosan használt technikák közé tartoznak a Huffman-kódok és a korábbi Shannon – Fano-kódok , valamint az univerzális kódok, mint például:

Megjegyzések

Hivatkozások

Külső linkek