Præfiks kode - Prefix code

En præfiks-kode er en type kodesystem , der adskiller sig ved dets besiddelse af "præfiks-egenskaben", hvilket kræver, at der ikke er noget helt kodeord i systemet, der er et præfiks (indledende segment) af noget andet kodeord i systemet. Det er trivielt sandt for kode med fast længde, så kun et overvejelsespunkt i kode med variabel længde .

For eksempel har en kode med kodeord {9, 55} præfiksegenskaben; en kode bestående af {9, 5, 59, 55} ikke, fordi "5" er et præfiks for "59" og også af "55". En præfiks kode er en entydig dekodbar kode : givet en komplet og nøjagtig sekvens kan en modtager identificere hvert ord uden at kræve en særlig markør mellem ord. Der er dog unikt dekodbare koder, der ikke er præfiks koder; for eksempel er bagsiden af ​​en præfiks-kode stadig entydigt dekodbar (det er en suffiks-kode), men det er ikke nødvendigvis en præfiks-kode.

Præfiks koder er også kendt som præfiks-fri koder , præfiks betingelseskoder og øjeblikkelige koder . Selvom Huffman-kodning kun er en af ​​mange algoritmer til at udlede præfiks-koder, kaldes præfiks-koder også bredt som "Huffman-koder", selv når koden ikke blev produceret af en Huffman-algoritme. Udtrykket kommafri kode anvendes undertiden også som et synonym for præfiks-fri koder, men i de fleste matematiske bøger og artikler (f.eks.) Bruges en komma-fri kode til at betyde en selvsynkroniseringskode , en underklasse af præfiks-koder.

Ved hjælp af præfikskoder kan en meddelelse transmitteres som en sekvens af sammenkædede kodeord uden markører uden for båndet eller (alternativt) specielle markører mellem ord for at indramme ordene i meddelelsen. Modtageren kan afkode meddelelsen utvetydigt ved gentagne gange at finde og fjerne sekvenser, der danner gyldige kodeord. Dette er generelt ikke muligt med koder, der mangler præfiksegenskaben, for eksempel {0, 1, 10, 11}: en modtager, der læser et "1" i starten af ​​et kodeord, ved ikke, om det var det komplette kodeord " 1 "eller blot præfikset for kodeordet" 10 "eller" 11 "; så strengen "10" kunne fortolkes enten som et enkelt kodeord eller som sammenkædning af ordene "1" og derefter "0".

Huffman-koder med variabel længde, landekaldekoder , land- og udgiverdele af ISBN'er , de sekundære synkroniseringskoder, der bruges i UMTS W-CDMA 3G Wireless Standard, og instruktionssættene (maskinsprog) for de fleste computermikroarkitekturer er præfiks-koder.

Præfiks-koder er ikke fejlkorrektionskoder . I praksis kan en meddelelse først komprimeres med en præfiks-kode og derefter kodes igen med kanalkodning (inklusive fejlkorrektion) inden transmission.

For enhver entydig dekodbar kode er der en præfiks-kode, der har de samme kodeordlængder . Krafts ulighed karakteriserer de sæt kodeordlængder, der er mulige i en unik dekodbar kode.

Teknikker

Hvis hvert ord i koden har samme længde, kaldes koden en fastlængdekode eller en blokkode (selvom udtrykket blokkode også bruges til fejlkorrigeringskoder i fast størrelse i kanalkodning ). For eksempel er ISO 8859-15 bogstaver altid 8 bit lange. UTF-32 / UCS-4 bogstaver er altid 32 bit lange. ATM-celler er altid 424 bits (53 bytes) lange. En kode med fast længde på k- bit med fast længde kan kode op til kildesymboler.

En kode med fast længde er nødvendigvis en præfiks-kode. Det er muligt at omdanne en hvilken som helst kode til en kode med fast længde ved at polere faste symboler til de kortere præfikser for at imødekomme længden af ​​de længste præfikser. Alternativt kan sådanne polstringskoder anvendes til at indføre redundans, der muliggør autokorrektion og / eller synkronisering. Imidlertid er kodninger med fast længde ineffektive i situationer, hvor nogle ord er meget mere tilbøjelige til at blive transmitteret end andre.

Afkortet binær kodning er en ligetil generalisering af koder med fast længde til at håndtere tilfælde, hvor antallet af symboler n ikke er en styrke på to. Kildesymboler tildeles kodeord med længden k og k +1, hvor k vælges således, at 2 k <n ≤ 2 k + 1 .

Huffman-kodning er en mere sofistikeret teknik til at konstruere præfiks-koder med variabel længde. Huffman-kodningsalgoritmen tager som input de frekvenser, som kodeordene skal have, og konstruerer en præfiks-kode, der minimerer det vægtede gennemsnit af kodeordets længder. (Dette er tæt knyttet til minimering af entropi.) Dette er en form for tabsfri datakomprimering baseret på entropikodning .

Nogle koder markerer slutningen af ​​et kodeord med et specielt "komma" symbol, der adskiller sig fra normale data. Dette er noget analogt med mellemrummet mellem ord i en sætning; de markerer, hvor et ord slutter, og et andet begynder. Hvis hvert kodeord ender i et komma, og kommaet ikke vises andetsteds i et kodeord, er koden automatisk præfiksfri. Imidlertid sender moderne kommunikationssystemer alt som sekvenser af "1" og "0" - det ville være dyrt at tilføje et tredje symbol, og det ville kun være ineffektivt at bruge det i enderne af ord. Morse-kode er et dagligdags eksempel på en kode med variabel længde med komma. De lange pauser mellem bogstaverne og de endnu længere pauser mellem ordene hjælper folk med at genkende, hvor et bogstav (eller ord) slutter, og det næste begynder. Tilsvarende bruger Fibonacci-kodning en "11" til at markere slutningen af ​​hvert kodeord.

Selvsynkroniseringskoder er præfiks-koder, der tillader rammesynkronisering .

Relaterede begreber

En suffikskode er et sæt ord, hvoraf ingen er et suffiks for nogen anden; ækvivalent et sæt ord, der er det modsatte af en præfiks-kode. Som med en præfiks kode er repræsentationen af ​​en streng som en sammenkædning af sådanne ord unik. En bifix-kode er et sæt ord, der både er et præfiks og en suffiks-kode. En optimal præfiks kode er en præfiks kode med minimal gennemsnitlig længde. Dvs. antage et alfabet af n symboler med sandsynligheder for en præfikskode C . Hvis C ' er en anden præfiks-kode og er længderne på kodeordene til C' , så .

Præfiks koder, der er i brug i dag

Eksempler på præfiks koder inkluderer:

Teknikker

Almindeligt anvendte teknikker til konstruktion af præfikskoder inkluderer Huffman-koder og de tidligere Shannon-Fano-koder og universelle koder såsom:

Bemærkninger

Referencer

eksterne links