K d abeceda k dov n zpr v
This presentation is the property of its rightful owner.
Sponsored Links
1 / 23

Kód, abeceda, kódování zpráv PowerPoint PPT Presentation


  • 71 Views
  • Uploaded on
  • Presentation posted in: General

Kód, abeceda, kódování zpráv. Kódován í – proces nahrazování posloupností, vyjádření symbolů zprávy v jedné ( zdrojové ) abecedě A, posloupností vyjádření těch samých symbolů v jiné ( kódovací ) abecedě A C

Download Presentation

Kód, abeceda, kódování zpráv

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


K d abeceda k dov n zpr v

Kód, abeceda, kódování zpráv

Kódování – proces nahrazování posloupností, vyjádření symbolů zprávy v jedné (zdrojové) abeceděA, posloupností vyjádření těch samých symbolů v jiné (kódovací) abecedě AC

kódové slovo – prvek AC, presp. posloupnost prvků Ac, použivá pro vyjádření prvku A, resp. posloupnosti prvků A

kód – množina všech kódových slov, použitá pro jistou konkrétní formu kódování, předpis pro zobrazování (podmnožin) prvků A do (podmnožin) prvků AC

Příklady aplikací kódování:

pořizování dat, šifrování (utajování) zpráv, samoopravné kódování (integrita) zpráv, komprese (minimalizace „prostoru pro uchování“) zpráv, transformace zpráv na signálové prvky pro přenos, ...


K d abeceda k dov n zpr v form ln ji

Kód, abeceda, kódování zpráv formálněji

Abeceda – konečná množina znaků (prvků)

Slovo (zpráva, fráze, řetězec) nad abecedou A – konečná posloupnost znaků z A

délku této posloupnosti nazýváme délkou slova, je-li slovo značeno s, pak značíme jeho délku |s|

množinu všech slov nad abecedou A značíme A* , množinu všech slov nenulových délek vzniklých ze znaků z A označujemeA+

-pro naše zkoumání platí AC = {0,1}

-Kódování je funkce , kód C je trojice C : (A, A*,K)

-Aby kódování bylo jednoznačně dekódovatelné, funkce K musí být prostá (každé dva různé zdrojové prvky jsou zobrazovány na dvě různá kódová slova).


K d abeceda form ln ji

Kód, abeceda, formálněji

Typická strategie kódování:

zprávu s rozdělíme na slova s = s1 s2 ... sk , si ∊A*

si– slova, fráze, pokud neřekneme jinak, fráze mají pevnou délku

-určíme C(s1), ... , C(sk) ∊A*, kde C(si) jsou kódová slova

-K(s) = C(s1) C(s2) ... C(sk), resp. K(s1s2...sk) = C(s1) C(s2) ... C(sk)


K d p klad

Kód, příklad

kód, C, zobrazující prvky abecedy A do množiny prvků abecedy AC

A je např. posloupnost znaků {a,b,c,d,...}

AC jsou např. kódová slova tvořená vybranými bitovými řetězci

např. kód ACII ztotožňuje znaky (anglické) abecedy a některé další znakys dekadickými čísly 0 až 127, např. A ∼ 65, a ∼97

pro zpracování v počítači je kódovací abeceda vyjadřovaná 7icemi bitůekvivalentními dekadickým kódovým slovům, např. A ∼ 1 000 0012.

Pak kód ASCII ztotožňuje znaky anglické abecedy se 7icemi bitů

text HELLO! zobrazuje kód ASCII na binární řetězec

100100010001011001100100110010011110100012,

pro lepší vizuální názornost s mezerou mezi znaky:

1001000 1000101 1001100 1001100 1001111 01000112


Klasifikace k d probl m jednozna n dek dovatelnosti

Klasifikace kódů, problém jednoznačné dekódovatelnosti

kód C je nesingulární kód, když každý prvek abecedy S1, např. {A,B,C,D, …} zobrazuje na jiné kódové slovo vytvořené z prvků abecedy S2, např. {1,0}

příklad nesingulárního kódu:

S1 = { A,B,C,D}, S2 = { 0,010,01,10})

vysílač vysílá znak B jako bitovou posloupnost 010

přijímač přijme řetězec 010 a přijatý řetěz může dekódovat na znak B

nebo na řetěz znaků CA nebo na řetěz znaků AD

výše uvedený kód není jednoznačně dekódovatelný

pokud se vysílá zpráva složená z více symbolů, kódovaných nesingulárním kodem, musí se jednotlivé symboly oddělovat speciálním symbolem, např. „čárkou“ (,) – oddělovač/separátor, …


Klasifikace k d jednozna n dek dovateln k d

Klasifikace kódů, jednoznačně dekódovatelný kód

Cílem kompresního kódování je řešení problému minimalizace očekávaných délek kódových slov, ale při zachování omezující podmínky požadující zachovat schopnost on-line dekódovat kódová slova bez vkládání separátorů

jestliže v nesingulárním kódu C platí -C(x1, …, xn) = C(x1), …, C(xNn)

a zdrojové prvky a kódová slova, xi a C(xi), mají konečné délky,

pak C je jednoznačně dekódovatelný kód.

Kód (A,AC,K) je jednoznačně dekódovatelný kód právě tehdy, když všechny možné řetězce z jsou jednoznačně dekódovatelné

Řetězec x ∊je jednoznačně dekódovatelný vzhledem k zobrazení K, jestliže existuje právě jeden řetězec y ∊ A+ takový, že K(y) = x


Klasifikace k d jednozna n dek dovateln k d1

Klasifikace kódů, jednoznačně dekódovatelný kód

Každému vygenerovanému řetězci kódových slov jednoznačně dekódovatelného kódu odpovídá jediný zdrojový řetězec, který jej produkuje, a dále platí – pro zjištění byť i prvního symbolu zprávy se někdy musí analyzovat celá zpráva

Jestliže C(a) = 10, C(b) = 00, C(c) = 11 a C(d) = 110, pak C(ab) = 1000, C(cb) = 1100.

při přijetí zprávy 1000 se hodnota ab rozpozná „online“ 1000

při přijetí zprávy 1100 se ale pozná, zda se jedná o cb, 1100 nebo d?, 1100, až po analýze celého řetězu

problém – kódové slovo c je prefix kódového slova d

Určení, zda libovolný kód je jednoznačně dekódovatelný je algoritmicky neřešitelný problém

Existují třídy kódů, které jsou jednoznačně dekódovatelné, mezi ně patří např. prefixové, afixové a blokové kódy.


Klasifikace k d prefixov afixov a blokov k d

Klasifikace kódů,prefixový, afixový a blokový kód

Jestliže žádné kódové slovo z jednoznačně dekódovatelného kódu není prefixem jiného kódového slova z , jedná se o prefixový kód

žádné kódové slovo prefixového kódu není zřetězením jiného kódového slova (prefixu) a dalšího řetězce

prefixový kód lze dekódovat prvek po prvku, během čtení zleva doprava, můžeme začít s dekódováním, aniž bychom znali celý kódový text, každé kódové slovo je„samovyčlenitelné“

mezi prefixové kódy patří například kód UTF-8

Pro afixový kód platí, že žádné jeho kódové slovo není příponou jiného jeho kódového slova. Je dekódovatelný znak po znaku během čtení zprava doleva.

Pokud mají všechna kódová slova stejnou délku, pak tento kód označujeme jako blokový. Blokovým kódem je například kód ASCII


Klasifikace k d prefixov k d

Klasifikace kódů,prefixový kód

platí – každý prefixový kód je nesingulární kód

platí – každý prefixový kód je jednoznačně dekódovatelný kód

existují ale i jednoznačně dekódovatelné kódy, které nejsou prefixové:

C(a) = 0, C(b) = 01, C(c) = 011 a C(d) = 0111

je nesingulární jednoznačně dekódovatelný kód, každá 0 následující po nějakém existujícím symbolu jednoznačně startuje nový symbol

není prefixový kód – např. C(a) = 0 je prefixem všech symbolů atd.


Klasifikace k d p ehled

Klasifikace kódů, přehled


Pro se vlastn k duje

Proč se vlastně kóduje?

je nutná změna velikosti a/nebo typu abecedy, např. znaky a,b,c, … kódujeme na posloupnosti 0 a 1. Kódování si vynucuje prostředí do kterého se zpráva zapisuje, kterým se přenáší, …

existuje požadavek na utajení obsahu zprávy

kryptografie  PV017 a další předměty

kódování omezující přístup ke kódu jen na autorizované subjekty

je nutné dosáhnout lepší využití kapacity paměti, resp. kapacity přenosového kanálu

komprese dat,tou se budeme dále zabývat hlouběji =identifikace a odstranění redundance (nadbytečnosti) v originální zprávě jejím kódováním do jiné abecedy


Komprese zpr vy role metodiky tvorby k dov ch slov

Komprese zprávy – role metodiky tvorby kódových slov

Zdroj generuje zprávy, jejichž symboly jsou kódované prvky abecedy o N prvcích

Pro kódování prvků této abecedy do abecedy {0,1} potřebujeme v průměru alespoň log2N bitů, pokud nechceme takovým kódováním snížit možné množství informace ve zprávě

pokud N = 8, pak potřebujeme alespoň 3 bity, log28 = 3, 23 = 8

pokud N = 26, pak potřebujeme alespoň 5 bitů, 25 = 32, 6 kombinací se přitom nevyužije

Pro vyjádření symbolů zpráv se používají kódová slova

prvky, či posloupnosti prvků, nějaké abecedy, např. {a,b, …}, polohy rukou signalisty, slova jazyka, …

případně posloupnost prvků nějaké abecedy,

např. {0,1} – {0 110 001, 0 110 010, …} nebo {0, 10, 11, 110, 1110, 1111}


Komprese zpr vy role metodiky tvorby k dov ch slov1

Komprese zprávy – role metodiky tvorby kódových slov

kódová slova pevné délky

{a,b, …},{0 110 001, 0 110 010, …}

výhoda – snadná a jednoznačná dekódovatelnou, slovníky

nerespektují se žádné statistické charakteristiky výskytu

kódová slova proměnné délky

{0, 10, 110, 1110, 1111}

délky kódových slov obvykle odrážejí statistické charakteristiky výskytu jednotlivých kódových slov

základní zákon komprese dat -je žádoucí, aby častěji použitá kódová slova měla kratší délku

požaduje se bezprostřední rozhodnutelnost při dekódování

vhodná je prefixová vlastnost kódu

vhodné jsou prefixové kódy

žádné kódové slovo kódu není prefixem některého jiného kódového slova daného kódu


Pr m rn d lka k dov ho slova k du

Průměrná délka kódového slova kódu

Průměrnou délka kódového slova kódu C pro diskrétní náhodnou veličinu X nabývající hodnot x∊ A s pravděpodobnostní funkcí p(x) definujeme jako L(C) =

pro jednoznačně dekódovatelný kód platí H(X) ≤ L(C)

Nechť A = 0, 10, 11, p(0) = 0,5, p(10) = 0,4, p(11) = 0,1: -log2(0,5) = 1, -log2(0,4) = 1,32, - log2(0,1) = 3,32

H(X) = 0,5 × 1 + 0,4 × 1,32 + 0,1 × 3,32 = 1,36 a

L(C) = 0,5 × 1 + 0,4 × 2 + 0,1 × 2 = 1,5

Nechť A = 00, 01, 11, p(00) = 0,5, p(10) = 0,4, p(11) = 0,1 :

H(X) se změnou kódování nezmění, H(X) = 1,36 a

L(C) = 0,5 × 2 + 0,4 × 2 + 0,1 × 2 = 2,

jak dá rovněž i selský rozum


Prefixov k dy o ty n m hlavn jde

Prefixové kódy, o ty nám hlavně jde

Pro libovolný optimální prefixový kódC pro náhodnou veličinu

X platí H(X) ≤ L(C) < H(X) + 1.

unární kódC

C(1) = 1, C(i + 1) = 0C(i) nebo C(1) = 0, C(i + 1) = 1C(i)

C(i) = i – 1 nul následovaných 1, C(5) = 000012 resp.

C(i) = i – 1 jedniček následovaných 0, C(5) = 111102

optimální kód pro


Prefixov k dy o ty n m hlavn jde1

Prefixové kódy, o ty nám hlavně jde

binární kódC(0) = 0, C(1) = 1, C(2i) = C(i)0, C(2i + 1) = C(i)1

nesplňuje vlastnost jednoznačně dekódovatelného kódu, jeho použití vyžaduje používání

buďto oddělovačů nebo

pevné délky kódových slov

pevná délka kódových slov vyžaduje apriorní znalost velikosti množiny kódovaných čísel – N,

poněvadž ta pak determinuj velikost, délku, kódových slov, |B(N)| = [1 + log2 N], a velikost množiny N nemusí vždy známé předem (B(n) – binární reprezentace celého čísla n)

binární kód je optimální pro p(i) = 1/N


Dal p klady prefixov ch k d eliasovy peter elias 1975

Další příklady prefixových kódů (Eliasovy, Peter Elias, 1975)

nechť B(n) značí B(n) bez nejvýznamnějšího bitu (vždy = 1)

C1:kladené celé se kóduje zápisem s prefixem – unárním kódem délky binární reprezentace n, |B(n)|

n = 38 = 1001102 (38) = 001102, | | = 6, takže C1(38) = 000001001102

n = 5 = 1012, (5) = 012, || = 1, takže C1(1) = 12

délka C1() = 2[log2 ] + 1

C2: přeuspořádání C1: každý z B(n)bitů se uvede příznakem 0, poslední příznak na konci kódového slova = 1

C2(5) = 000112, délkový prefix se rozptýlí do B(n)


Prefixov strom

Prefixový strom

Každý prefixový kód (nad binární kódovací abecedou) lze znázornit binárním stromem – prefixovým stromem

Prefixový strom lze využít k dekódování.

11

201

3001

40001

500001

6 …


Prefixov strom1

Prefixový strom

Elias, C1

11

2010

3011

400100

500101

600110

700111

80001000


Prefixov strom2

Prefixový strom

Elias, C2

11

2001

3011

400001

500011

601001

701011

80000001


Dal p klady prefixov ch k d eliasovy

Další příklady prefixových kódů (Eliasovy)

Kódová slova Eliasova kódu C1 kód jsou pro velká čísla dlouhá

To je způsobeno reprezentací délky kódu čísla unárním kódem

Eliasův kód C3používá pro vyjádření délky kódu čísla kód C2

Nejprve ilustrace s malým číslem, 50 (1100102)

kódové slovo Eliasova kódu C1 pro 50 je 000001100102, |B(50)| = 6 bitů,

jeho permutací na kódové slovo C2 vznikne 010000010012

délka kódového slova pro 50 v C2 je 11 bitů

C1(6) = 00110, C2(6) = 01001, C3(50) = 01001100102

délka kódového slova pro 50 v C3 je 10 bitů


Dal p klady prefixov ch k d eliasovy1

Další příklady prefixových kódů (Eliasovy)

a nyní Eliasův kód C3pro 1 000 000 (111101000010010000002)

Kódové slovo Eliasova kódu C1 pro 1000000 je

0000000000000000000111101000010010000002,

|B(1 000 000)| = 20 bitů, |C1(1 000 000)| = 39 bitů

délku 20 vyjádříme v C2, 20 = 101002, |B(20)| = 5,

C1(20) = 0000101002, C2(20) = 0001000012

Kódové slovo Eliasova kódu C3 pro 1 000 000 je 00010000111101000010010000002

a má délku 28 bitů místo 39 bitů kódu téhož čísla v C2


Pozn mky k porovn n k d

Poznámky k porovnání kódů

Prostorově nejvýhodnější je samozřejmě binární kód, ten ale není jednoznačně dekódovatelný

Unární kód je použitelný pro malá čísla, délka jeho kódových slov výrazně roste s rostoucí zdrojovou jednotkou


  • Login