VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA STROJNÍHO INŽENÝRSTVÍ ODBOR APLIKOVANÉ INFORMATIKY. Ing. Radomil Matoušek, Ph.D. METODY KÓDOVÁNÍ VER. 1.

Rozměr: px
Začít zobrazení ze stránky:

Download "VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA STROJNÍHO INŽENÝRSTVÍ ODBOR APLIKOVANÉ INFORMATIKY. Ing. Radomil Matoušek, Ph.D. METODY KÓDOVÁNÍ VER. 1."

Transkript

1 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA STROJNÍHO INŽENÝRSTVÍ ODBOR APLIKOVANÉ INFORMATIKY Ing. Radomil Matoušek, Ph.D. METODY KÓDOVÁNÍ VER..9 Studijní text vznikl s podporou projektu FRVŠ 42/26 Brno 26

2

3 METODY KÓDOVÁNÍ DOHODNUTÁ SYMBOLIKA ÚVOD III IV. KÓDOVÁNÍ.. BĚŽNÉ PŘÍKLADY KÓDOVÁNÍ... KÓDOVÁNÍ ZNAKŮ PANA SAMUELA F. B. MORSEHO, TZV. MORSEOVKA..2. ČÁROVÝ KÓD... ENDIANITA ZPŮSOB KÓDOVÁNÍ ČÍSEL V ELEKTRONICKÉ PAMĚTI KÓDOVÁNÍ ZNAKŮ POMOCÍ ASCII TABULKY ČÍSELNÉ SOUSTAVY 8.2. GRAYŮV KÓD.. ZÁKLADNÍ POJMY.4. BLOKOVÉ A PREFIXOVÉ KÓDOVÁNÍ BLOKOVÉ KÓDOVÁNÍ PREFIXOVÉ KÓDOVÁNÍ.4.. KONSTRUKCE PREFIXOVÉHO KÓDU 4 2. MINIMÁLNÍ KÓDOVÁNÍ TEXTOVÁ KOMPRESE MORSEŮV PRINCIP NEJKRATŠÍ KÓD - HUFFMANOVA KONSTRUKCE HUFFMANNOVA KONSTRUKCE BINÁRNÍHO KÓDU (952) HUFFMANNOVA KONSTRUKCE OBECNÉHO KÓDU FANOVA-SHANNONOVA KONSTRUKCE BINÁRNÍHO KÓDU METODA POTLAČENÍ NUL METODA PROUDOVÉHO KÓDOVÁNÍ - RLE ALGORITMUS SLOVNÍKOVÉ METODY LEMPEL-ZIV KÓDOVÁNÍ MOVE-TO-FRONT FILTER (MTF) BURROWS-WHEELEROVA TRANSFORMACE (BWT) 2. BEZPEČNOSTNÍ KÓDOVÁNÍ DETEKČNÍ A KOREKČNÍ KÓDY 5.. OBJEVOVÁNÍ CHYB 7.2. HAMMINGOVA VZDÁLENOST A GEOMETRICKÁ INTERPRETACE HAMMINGOVA VZDÁLENOST GEOMETRICKÁ INTERPRETACE 9.. ZABEZPEČUJÍCÍ SCHOPNOST KÓDU 4... DETEKČNÍ SCHOPNOST KÓDU KOREKČNÍ SCHOPNOST KÓDU 4... DEKÓDOVÁNÍ INFORMAČNÍ ZNAKY LINEÁRNÍ KÓDY STRUČNÁ TEORIE LINEÁRNÍCH BINÁRNÍCH BLOKOVÝCH KÓDŮ GENERUJÍCÍ MATICE 5.6. KONTROLNÍ MATICE DUÁLNÍ KÓD PRINCIP ZABEZPEČENÍ (DEKÓDOVÁNÍ POMOCÍ SYNDROMU) 5.7. PERFEKTNÍ KÓDY HAMMINGOVY KÓDY PRINCIP ROZŠÍŘENÍ KÓDU GOLAYOVY KÓDY Radomil MATOUŠEK i

4 .. CYKLICKÉ KÓDY KRYPTOGRAFICKÉ KÓDOVÁNÍ - KRYPTOGRAFIE NÁZVOSLOVÍ STEGANOGRAFIE SUBSTITUČNÍ ŠIFRY TRANSPOZIČNÍ ŠIFRY HISTORICKÉ POZNÁMKY KRYPTOGRAFIE ŘECKA A ŘÍMA CAESAROVA ŠIFRA TEMNÝ STŘEDOVĚK VIGENEROVA ŠIFRA VZESTUP KRYPTOGRAFIE VÁLKA A TELEGRAF VERMANŮV KRYPTOSYSTÉM MODERNÍ DOBA SYMETRICKÉ A ASYMETRICKÉ ŠIFROVÁNÍ KERCKHOFFŮV PRINCIP SYMETRICKÉ ALGORITMY DES (DATA ENCRYPTION STANDARD) ASYMETRICKÉ ALGORITMY - RSA HASHOVACÍ FUNKCE DIGITÁLNÍ PODPIS 85 ii

5 METODY KÓDOVÁNÍ Dohodnutá symbolika Pro snazší orientaci v dokumentu i jeho příslušnou pragmatičnost byly zvoleny piktogramy, které vhodně navádějí čtenáře k danému cíli. V úvodu hlavních kapitol je výpravnou formou uvedena. Na závěr kapitol jsou položeny kontrolní otázky, přes které by měl čtenář projít, pokud chce danou kapitolu prohlásit za ujasněnou. Některé kapitoly jsou rovněž zakončeny odkazem na vědomostní kviz v elektronické podobě, ve kterém si může čtenář, v podstatě zábavnou formou, ověřit své vědomosti v dané oblasti. Součástí studijního textu je množství příkladů, z nichž některé jsou vzorově řešeny, jiné obsahují nápovědu či další úkol. Jednou ze stěžejních částí tohoto elektronického textu jsou interaktivní příklady, které intuitivním způsobem umožní čtenáři rychle pochopit podstatu prezentovaného problému (na CD adresář /flash). Tyto příklady lze volat, jak přímo z elektronické verze tohoto dokumentu, tak je nalézt a spustit samostatně z dále uvedeného web odkazu. Celý text je doplněn příslušnou foto dokumentaci, která by ho jinak neúměrně rozšiřovala. Základní referenční zdroje jak literární, tak elektronické jsou uvedeny včetně stručného a komentáře. V textu jsou zařazeny některé historické poznámky či jiné zajímavosti, které doufejme vhodně doplňují atmosféru diskutovaného tématu. Jak bylo uvedeno, předkládaný učební text je ve své elektronické formě provázán s řadou interaktivních příkladů, doplňkových obrazových dokumentů a dále dostupných hypertextů. Přesto, že plná funkčnost tohoto učebního textu je umožněna pouze v elektronické podobě, byl text tvořen i se zřetelem na jeho možnou čistě textovou podobu. V této formě je tedy možné učební text bez problému samostatně vytisknout a využít ke studiu. Užité interaktivní, samostatně funkční aplikace jakož i vlastní text jsou dostupné na K plné funkčnosti aplikací je třeba mít nainstalovány následující softwarové technologie: Adobe Reader Adobe Flash Player motivace odkaz na interaktivní příklady příklady další úkol, nápověda odkaz na doprovodnou dokumentaci kviz vědomostí kontrolní otázky poznámka, zajímavost literatura, reference CodeExamples7.swf Demonstrační aplikace k teorii kódů. 26 Radomil MATOUŠEK iii

6 ÚVOD Teorie kódování je jedna z nejfantastičtějších součástí současné informatiky. Zabývá se jak konstrukcemi kódu, tak studiem jejich vlastností. Její působení, ať si to uvědomujeme či ne, je skutečně všudypřítomné. Je tomu tak nyní, bylo tomu před mnoha lety a bude tomu, jak se dá předpokládat, i v časech budoucích, a to mnohem, mnohem intenzivněji. Vznik současné teorie kódování je v podstatě datován již od čtyřicátých let, a to pracemi Shannona, které byly věnovány teorii informace a dále hlavně Hamminga s Golayem, kteří zkonstruovali první lineární kódy. Praktický boom pak nastal s příchodem použitelné výpočetní techniky. Kódování lze dle účelu rozdělit na několik samostatných částí, které se v praxi mohou dokonce velmi často prolínat: Minimální kódování (komprese dat): Jedná se o způsob kódování, jehož účelem je zmenšit objem dat ve zprávě. Dle práce s informací je toto kódování dále děleno na bezztrátové a ztrátové. Typickými a prakticky všem známými představiteli první skupiny jsou komprimační programy (ARJ, ZIP, RAR, aj.). Reprezentanty druhé skupiny jsou většinou nástroje pracující s obrazem nebo zvukem, a z nich vyplývající datové formáty (JPEG, MPG, MP, aj.). Bezpečnostní kódování (Samoopravné kódy): Toto kódování je užito pro přenos informace reálným přenosovým kanálem, tj. kanálem, kde může dojít k ovlivnění přenášené informace vlivem chyby. Smyslem bezpečnostního kódováni je detekovat, případně i přímo opravit vzniklou chybu. Jedním z nejfrekventovanějších představitelů využití části této teorie kódů je realizace zabezpečení paketů v síti internet, tzv. CRC kódem. Kryptografické kódování (kryptografie): V tomto případě se jedná o kódování mající vztah k utajení informace. Tento typ kódování je nejčastěji znám a skloňován jedním slovem šifrování. Šifrování obecně zahrnuje, jak jednoduché postupy známé z rébusů či junáckých her, tak opravdu silné algoritmy k jejichž prolomení by při současné technice nestačilo ani stáří vesmíru. O tom, že informace mohou mít cenu zlata není pochyb. Utajení takovéto informace má pak cenu snad ještě vyšší. Aparát teorie kódování sahá od praktických inženýrských implementací až po čistě teoretické aspekty, zahrnující mnoho matematických disciplín jako teoretickou informatiku, kombinatoriku, algebru, aj. Základní znalost těchto partií matematiky je pro další studium tohoto textu předpokládána. V rámci předkládaného základního kurzu metod kódování samozřejmě není možné vše obsáhnout. Základní informace podané v tomto textu by však měly sloužit jako dobrý základ pro pochopení funkce a možnosti konstrukce vybraných kódů. Text není v žádném případě publikován v matematickém stylu (důkazy předložených vět je možné naleznout v uvedené literatuře) a ani si tento cíl neklade. Elektronickou součástí tohoto textu jsou interaktivní příklady, na kterých si může čtenář vyzkoušet zda prezentované látce rozumí či naopak. Seznam použitých a doporučených zdrojů pro případné další studium je vždy uveden na konci dané kapitoly, včetně stručného komentáře k uvedenému zdroji. Ze současných autorů bych chtěl na tomto místě, mimo jiných, poděkovat a zároveň jmenovat prof. Jiřího Adámka, který svojí skvělou publikací Kódování výrazně přispěl i k mému zájmu o tento obor. Dále děkuji neodmyslitelně těm mým nejbližším, kteří to se mnou po dobu přípravy tohoto textu neměli lehké. V Brně, Autor. iv

7 METODY KÓDOVÁNÍ 26 Radomil MATOUŠEK v

8

9 METODY KÓDOVÁNÍ. KÓDOVÁNÍ Equation Chapter Section Alea iacta est. Gaius Iulius Caesar Poté co Caesar neuposlechl rozhodnutí senátu a počátkem roku 49 př. n. l. překročil Rubikon, pronesl známou sentenci: Kostky jsou vrženy. Pokud dnes mnozí z nás hrají čas od času tuto hru náhody pravděpodobně danou informaci o stavu dění neříkají. Místo toho pečlivě zapisují výsledky dosažených hodů. Představme si, že hrajeme kostky a máme poměrně jednoduchá pravidla hry typu sečti výsledky všech hodů a zapiš je na list papíru. Málo kdo by asi hod šestky zapsal jako šest ok, což je reálné zobrazení stavu kostky. Většinou všichni zapíší číslici 6. Ano je to tak, právě jste uskutečnili kódování! Systém kostek generuje konečnou množinu stavů, my volíme systém pravidel a tyto stavy kódujeme do množiny námi zvolených symbolů (například číselných hodnot)... Běžné příklady kódování Dále si ukážeme některé běžně užívané systémy kódování, jejichž význam již čtenář pravděpodobně zná.... Kódování znaků pana Samuela F. B. Morseho, tzv. Morseovka Historicky významný, dnes stále užívaný, systém kódování zpráv. Kódová abeceda je kombinací krátkých a dlouhých signálů. Kódová abeceda je označována jako tzv. Morseova abeceda. Další informace viz. kapitola 2.. A.- J.--- T B - K -.- U C -.-. L.-.. V D -.. M -- W E. N -. X F..-. O --- Y G -.. P.--. Z H. Q CH ---- R.-. / I Tab..: Morseova kódová abeceda. morseovka.swf CodeExamples7.swf Morseova abeceda: kódování, dekódování a trénink. Běžné typy kódů (RČ, ISBN). 26 Radomil MATOUŠEK

10 ..2. Čárový kód Čárové kódy řadíme do oblasti tzv. automatické identifikace, jinak řečeno do oblasti kdy k registraci dat neužíváme klávesy. Do stejné oblasti můžeme rovněž zařadit magneticky a elektronicky čitelné kódy, např. na kreditních kartách nebo strojově čitelné písmo OCR. Symbol čárového kódu se skládá z tmavých čar a ze světlých mezer, které se čtou pomocí snímačů vyzařujících většinou červené světlo. Toto světlo je pohlcováno tmavými čárami a odráženo světlými mezerami. Snímač zjišťuje rozdíly v reflexi a ty přeměňuje v elektrické signály odpovídající šířce čar a mezer. Tyto signály jsou převedeny v číslice, popř. písmena, která obsahuje příslušný čárový kód. To tedy znamená, že každá číslice či písmeno je zaznamenáno v čárovém kódu pomocí předem přesně definovaných šířek čar a mezer. Data obsažená v čárovém kódu mohou zahrnovat takřka cokoliv: číslo výrobce, číslo výrobku, místo uložení ve skladu, číslo série nebo dokonce jméno určité osoby, které je např. povolen vstup do jinak uzavřeného prostoru. Symbol začíná znakem start, pak následují vlastní data s případným kontrolním součtem, a na konci je znak stop. Šířka čar a mezer, jakož i jejich počet, je dán specifikací symboliky příslušného kódu. Termín "symbolika" se používá pro popis pravidel, specifikujících způsob jakým se kódují data do čar a mezer čárových kódů.. Princip kódování čísel do čárového kódu Industrial 2/5, kódování řetězce čísel 24. Jedná se o čistě numerický kód proměnné délky. Kód je tvořen znakem start, příslušným počtem datových znaků (číslice až 9) a znakem stop. Kód každého znaku je tvořen 5 čarami, z nichž jsou úzké a 2 široké. Poměr šířky široké a úzké čáry je :. Mezery nenesou žádnou informaci a slouží jen k oddělení čar. Znak. čára 2. čára. čára 4. čára 5. čára start N/A N/A stop N/A N/A Tab..2: Kódovací tabulka čárového kódu Industrial 2/5. 2

11 METODY KÓDOVÁNÍ.2 Charakteristika nejznámějších typů čárových kódů: CODE9 první kód vytvořený pro kódovaní alfanumerických znaků již v roce 974, časté použití v průmyslu, zdravotnictví nebo obchodě, INTERLAVED přijat jako standard v přepravě kontejnerů, CODABAR většinou používán v knihovnictví, evidenci krevních vaků, expresních přepravních službách, CODE28 kóduje kompletní tabulku znaků ASCII 28, CODE vysoká hustota, použití v mikroelektronice, UPC a EAN nejpopulárnější kódy známé především z prostředí obchodů se zbožím, PDF47 nová generace čárového kódu - dvourozměrný (2D) čárový kód, obsáhne mnohem více informací, má také schopnost detekce a oprav chyb při porušení kódu. Princip kódování znaků do čárového kódu EAN kódování řetězce čísel Jedná se o numerický kód pevné délky. Obsahuje dva stejné okrajové znaky (start S /stop S ), dělicí znak D a numerických znaků (číslice až 9). Symbol čárového kódu EAN lze najít na obalu téměř každého zboží, které si zakoupíte v obchodě. Symbol bývá často doplněn "lidsky čitelnými" číslicemi, které uvádí, co je vlastně symbolem čárového kódu zakódováno. Pokud jsou první tři číslice 859, jedná se o zboží, vyrobené v České republice. Nosičem informace v kódu EAN jsou čáry i mezery. Mohou mít různou šířku, která je ale vždy násobkem šířky nejužšího elementu. Šířka nejužšího elementu představuje základní délkovou jednotku. Každý zakódovaný znak má v symbolu čárového kódu EAN délku přesně 7 základních jednotek. Na základě pevné délky kódu znaku (7 jednotek) byly vytvořeny pro kódování číslic až 9 tři znakové sady, pojmenované A, B a C. Znakové sady jsou uvedeny v následující tabulce. Symbol čárového kódu EAN je uprostřed rozdělen dělicím znakem na dvě části, zvané pole. První pole je vlevo od dělicího znaku, druhé pole je vpravo. Tab..: Kódovací tabulka pro čárový kód EAN. 26 Radomil MATOUŠEK

12 První pole: Pokud by byly všechny kódy brány z jedné znakové sady, bylo by možno do každého pole zakódovat 6 znaků. Podíváte-li se ale na vytištěný symbol EAN, uvidíte, že v prvním (levém) poli je 7 znaků. Je zde totiž použita finta, která umožní do tohoto pole přidat ještě jeden znak tím, že se pro kódování nepoužije jen jedna znaková sada, ale použijí se dvě. Dělá se to pro to, že do prvního pole je třeba umístit 7 znaků (kód země a kód výrobce). První číslice kódu země není přímo reprezentována čárovým kódem, ale vyplývá z označení sad, z níž se berou kódy pro 2. až 7. číslici, tj. šestici číslic v prvním poli. Pro zdůraznění této anomálie se v lidsky čitelné numerické reprezentaci symbolu čárového kódu píše první číslice vlevo od levého okrajového znaku a ne spolu s ostatními šesti číslicemi uvnitř prvního pole. Česká republika má přidělen kód země 859, první číslice je tedy 8, ale v prvním poli budou kódy číslic 5, 9 a další 4 číslice patřící k označení kódu výrobce. Jak vyplývá z následující tabulky, budou v našem případě brány kódy šesti znaků v prvním poli ze znakových sad A, B, A, B, B, A. Dekodér čárového kódu pak z této skutečnosti odvodí, že první číslicí má být číslice 8. Tab..4: Dekódování první číslice kódu EAN Druhé pole: V tomto poli je zakódováno číslo výrobku (5 číslic) a znak kontrolního součtu ( číslice). Všechny znaky jsou zde kódovány ze znakové sady C. Znak kontrolního součtu vypočteme tak, že všech 2 číslic podrobíme následující matematické operaci. Stejnou operaci pak provede po sejmutí čárového kódu dekodér čtecího zařízení a dospěje-li ke stejnému výsledku, bude pokládat čtení za úspěšné. Výpočet: Sečtou se hodnoty číslic na sudých pozicích a výsledek se vynásobí třemi. Sečtou se hodnoty číslic na lichých znakových pozicích. Sečtou se obě výsledné hodnoty a výsledek se zaokrouhlí nahoru na celé desítky. Kontrolní číslice je rozdíl zaokrouhlené a původní hodnoty. Výpočet kontrolní číslice pro řetězec čísel Součet sudých pozic: = 8 Vynásobení třemi: 8* = 54 Součet lichých pozic: = 29 Součet obou hodnot: = 8 Zaokrouhlení nahoru: 9 Rozdíl hodnot: 9-8 = 7 Kontrolní číslice: 7 číslice Znakové sady AAAAAA AABABB 2 AABBAB AABBBA 4 ABAABB 5 ABBAAB 6 ABBBAA 7 ABABAB 8 ABABBA 9 ABBABA 4

13 METODY KÓDOVÁNÍ [online] Gaben s.r.o Typy čárových kódů URL: GABEN, spol. s r. o. Dokument firmy Gaben, který může sloužit jako stručný průvodce čárovými kódy. [online] Adams, Russ Bar code history page (in Bar Code ) URL: Adams Communications. Článek se věnuje historii vzniku čárového kódu. Popisuje počátky vzniku čárového kódu na univerzitách, požadavky jednoho obchodního potravinového řetězce spojené s prací Bernarda Silvera a Norberta Josepha Woodlanda, kteří si svoji práci nechali později patentovat, následné pronikání čárového kódu do obchodních řetězců a instalaci scannovacích systémů. [online] Adams, Russ Universal Product Code (UPC) and EAN Article Numbering Code (EAN) Page (in Bar Code ) URL: Adams Communications. Autor v článku podává obecnou charakteristiku UPC a EAN. Zabývá se srovnáním kódů, charakteristikou jednotlivých verzí a obecnými otázkami jakými jsou např: jak získat UPC či jak získat seznam všech kódů produktů.... Endianita způsob kódování čísel v elektronické paměti Endianita je způsob kódování čísel v elektronické paměti, který definuje, v jakém pořadí se uloží jednotlivé bajty příslušného datového typu. Endiánovatost je základní filosofií dané platformy a všeobecně platí, že portování programů či dokonce operačních systémů z malého endiánu na velký a naopak je velice obtížné a v řadě případů je nutné celé přeprogramování. Prozatím jediným druhem procesoru, který je schopen pracovat jak s malým tak velkým endianem, tj. tzv. bi-endian, je procesor PowerPC. Big-endian: V tomto případě se na paměťové místo s nejnižší adresou uloží nejvíce významný bajt a za něj se ukládají ostatní bajty až po nejméně významný bajt.. 2bitové číslo x4ab2cd se na adresu uloží následujícím způsobem: 2 4A B 2C D Little-endian: V tomto případě se na paměťové místo s nejnižší adresou uloží nejméně významný bajt a za něj se ukládají ostatní bajty až po nejvíce významný bajt..4 2bitové číslo x4ab2cd se na adresu uloží následujícím způsobem: 2 D 2C B 4A Původ slova (big a little endian) je u Gulliverových cest Jonathana Swifta, kde se národ liliputánů dělil místo na politické strany na dvě nesmiřitelné skupiny - jedna rozbíjela vajíčko na měkko na tlustším konci (big endian) a druhá na tenčím (little endian). 26 Radomil MATOUŠEK 5

14 ..4. Kódování znaků pomocí ASCII tabulky Problematika kódování znaků a příslušná standardizace je poměrně rozsáhlá. Pro potřeby našeho příkladu uveďme pouze základní informace. ASCII znamená American Standard Code for Information Interchange (Americký standardní kód pro výměnu informací) a je to tabulka, která znakům přiřazuje čísla od do 255. První polovina je standardní, v druhé polovině tabulky se projevují národnostní zvláštnosti. Prvních 2 je znaků je tzv. řídících. kód znak kód znak kód znak kód znak kód znak kód znak kód znak kód znak kód znak 2 6 < 88 X 6 t Č 228 ä! 6 = 89 Y 7 u É 229 ĺ 4 " 62 > 9 Z 8 v Ę 2 ć 5 # 6? 9 [ 9 w Ż 2 Ë 2 ç 6 $ 92 \ 2 x Ě 22 č 7 % 65 A 9 ] 2 y ± 25 Í 2 é 8 & 66 B 94 ^ 22 z Î 24 ę 7 BEL 9 ' 67 C 95 _ 2 { 5 79 ł 27 Ď 25 ë 8 BS 4 ( 68 D 96 ` Đ 26 ě 9 TAB 4 ) 69 E 97 a 25 } 5 8 µ 29 Ń 27 í LF 42 * 7 F 98 b 26 ~ 54 š 82 2 Ň 28 î G 99 c Ó 29 ď 2 FF 44, 72 H d ś Ô 24 đ CR 45-7 I e ť 85 ą 2 Ő 24 ń J 2 f 58 ž 86 ş 24 Ö 242 ň 47 / 75 K g 59 ź 87» ó L 4 h Ľ 26 Ř 244 ô M 5 i 6 ˇ Ů 245 ő N 6 j ľ 28 Ú 246 ö 5 79 O 7 k 5 6 Ł 9 ż 29 Ű P 8 l Ŕ 22 Ü 248 ř Q 9 m 7 65 Ą 9 Á 22 Ý 249 ů R n 8 Š Â 222 Ţ 25 ú S o Ă 22 ß 25 ű T 2 p 4 Ś Ä 224 ŕ 252 ü U q 4 Ť Ĺ 225 á 25 ý 58 : 86 V 4 r 42 Ž 7 Ş 98 Ć 226 â 254 ţ 59 ; 87 W 5 s 4 Ź 7 «99 Ç 227 ă 255 Tab..5: ASCII tabulka Kód ASCII je podle původní definice sedmibitový, obsahuje tedy 28 platných znaků. Pro potřeby dalších jazyků a pro rozšíření znakové sady se používají osmibitová rozšíření ASCII kódu, která obsahují dalších 28 kódů. Takto rozšířený kód je přesto příliš malý na to, aby pojmul třeba jen evropské národní abecedy. Pro potřeby jednotlivých jazyků byly vytvořeny různé kódové tabulky, význam kódů nad 27 není tedy jednoznačný. Systém kódových tabulek pro národní abecedy vytvořila například organizace ISO. Ke konci osmdesátých let 2. století vznikla naléhavá potřeba sjednotit různé kódové tabulky znaků pro národní abecedy. Například český jazyk používal v informatice nejméně 5 různě kódovaných tabulek. Vznikaly značné problémy při spolupráci aplikací a 6

15 METODY KÓDOVÁNÍ při přenosech dat mezi programy a různými platformami. Podobná situace byla ve všech jazycích, které nevystačily se základní 7bitovou tabulkou ASCII znaků. V té době vznikly současně dva projekty pro vytvoření jednotné univerzální kódovací tabulky znaků. Byl to projekt ISO 646 organizace ISO a projekt Unicode. Norma ISO definuje tzv. UCS - Universal Character Set. Kolem roku 99 došlo k dohodě a projekty spojily své úsilí na vytvoření jednotné tabulky. Oba projekty stále existují a publikují své standardy samostatně, ale tabulky znaků jsou kompatibilní a jejích rozšiřování je koordinováno. Unicode verze. odpovídá normě ISO 646-:99, Unicode. odpovídá ISO 646-:99, Unicode 4. odpovídá třetí verzi ISO 646. Všechny verze Unicode od 2. výše jsou kompatibilní, jsou přidávány pouze nové znaky, existující znaky nejsou vyřazovány nebo přejmenovávány. Poslední verzí je prozatím Unicode 5.. Znak Unicode může být až bitů dlouhý. Tento rozsah pokrývá všechny známé znakové sady jazyků na Zemi, včetně japonského nebo čínského písma. Používá se dále pro fonetické abecedy (pro zápis výslovnosti), speciální vědecké a matematické symboly, kombinované znaky a podobně. Každý znak má jednoznačný číselný kód a svůj název. UTF-8 je zkratka pro UCS Transformation Format. Je to způsob kódování řetězců znaků Unicode/UCS do sekvencí bajtů. Varianta UTF-6 kóduje řetězce do posloupností 6bitových slov (2 bajty), varianta UTF-2 do 2 bitových slov (4 bajty). UTF-8 je definováno v ISO 646-:2 Annex D, v RFC 629 a v Unicode 4.. Některé starší aplikace (dosud) UTF-8 nepodporují. Na druhé straně pro některé systémy je UTF-8 již jedinou používanou znakovou sadou, např. jazyk Java nebo XML. Unicode pro vnitřní zápis znaků používá Microsoft Office od verze 97. Přirozené kódování znaků Unicode/UCS do 2 nebo 4 bajtů se nazývá UCS-2 a UCS-4. Pokud se nespecifikuje jinak, ukládá se nejprve nejvýznamnější bajt (tzv. konvence Big-endian). [online] Unicode, Inc. About Unicode Standard URL: Unicode, Inc. Stránka nabízejí kompletní specifikaci všech standardů Unicode, včetně připravovaného standardu Unicode 5.. Domovská stránka je zpravována přímo organizací garantující tento standard a je tak vhodným zdrojem pro studium této tématiky. [online] Wikipedia, the free encyclopedia ASCII URL: Ucelené informace o ASCII kódování, včetně rozdělovníku na další témata související se standardizací znakových sad (Unicode, UTF-8 aj.). Na stránkách je možné naleznout kompletní ASCII tabulku, včetně ojasnění významovosti tzv. řídících znaků atd. [online] ECMA International Standard ECMA-48 URL: Stránka obsahuje dokument popisující ECMA standard definující řídící funkce a jejich kódovou reprezentaci (tzv. escape sekvence) pro užití v 7-bitovém kódu a rozšířeném 7,8-bitovém kódu. 26 Radomil MATOUŠEK 7

16 ..5. Číselné soustavy Číselná soustava je v podstatě způsob kódové reprezentace čísel. Výpočetní stroje mohou být zkonstruovány na základě libovolné číselné soustavy, nicméně všechny moderní počítače jsou založeny na soustavě binární, která pro nás v teorii kódování bude mít základní význam. Zda kvantové, optické, chemické, biologické či mechanické počítače budoucnosti nastolí nový trend se uvidí. Základ či báze (anglicky radix, česky budeme značit jako z) číselné soustavy definuje maximální počet číslic, které máme v dané soustavě k dispozici. Mezi nejčastěji používané číselné soustavy patří: desítková dekadická z =, dvojková binární z = 2, šestnáctková hexadecimální z = 6. Každé číslo vyjádřené v těchto soustavách může mít část celočíselnou a část desetinnou. Uvedené soustavy řadíme mezi polyadické, ve kterých se číslo vyjadřuje součtem mocnin základu dané soustavy vynásobených příslušnými platnými číslicemi..5 Existují i soustavy nepolyedrické, které není možné výše uvedeným aditivním způsobem vyjádřit, jako příklad uveďme soustavu zbytkových tříd. Vyjádření čísla 5 v soustavě (2,,5) zbytkových tříd. Nepolyedrická soustava. Obecné celé číslo je zde vyjádřeno jako celočíselný zbytek po dělení prvočíslem. Číslo 5 bude v soustavě (2,,5) zobrazeno následovně: N = a2z2 + R2a 5= 2 2+ N = az+ Ra 5= + 2 N = a5z5+ R5a 5= 5+ kde N je převáděné číslo, z jsou základy soustavy a R zbytky po dělení. Čísla v soustavě (2,,5): N R 2 R R 5 N R 2 R R 5 N R 2 R R

17 METODY KÓDOVÁNÍ.6 Nejznámější polyedrickou soustavou je soustava desítková. Číslo se v ní vyjadřuje jako součet mocnin deseti (tj. základu z = ) vynásobených jednoduchými součiniteli. Součinitelé mohou nabývat hodnoty z množiny {,,...,9}; prvky této množiny jsou označovány jako číslice. Číslo A lze zapsat jako: A=a n. n + a n-. n a i. i a. + a. Běžnější je zhuštěná forma zápisu: A= a n a n-... a i... a a. Při zobecnění pro jiný základ z získáme např. pro: z = 2 dvojkovou - binární soustavu z = 8 osmičkovou - oktanovou soustavu a {,} a {,,,7} z = 6 šestnáctkovou - hexadecimální soustavu a {,, 9,A,B, F} Převody v běžných polyedrických soustavách Číslo v soustavě o základu z k (kde z a k jsou přirozená čísla) lze převést do soustavy o základu z jednoduše tak, že každou k-tici číslic nižší soustavy nahradíme číslicí soustavy vyšší, např.: ( ) 2 = (5A) 6 desítková, DEC dvojková, BIN osmičková, OKT šestnáctková, HEX A B F Způsob zápisu: Poziční každá číslice v daném čísle má jednoznačně určenu svoji váhu významnosti. Obecně platí, že kladné číslo může být zapsáno pozičně následovně: N = ( an, an 2... aa, a a2... a m) z, kde an je nejvyšší významová číslice, a m nejméně významová číslice a z je základ číselné soustavy. 2.7 Vyjádření čísla π na 2 desetinná místa. π = (,4), tj. π = ( )..8 Nepoziční zde hodnota čísla není dána pouze umístěním číslice v dané sekvenci. Využívá se zde například sčítání číslic, případně jednoduchých pravidel dekódování jejich sekvencí. Římské číslice a například vyjádření čísla 27: (MMVII) Římská nepoziční soustava 26 Radomil MATOUŠEK 9

18 .2. Grayův kód Grayův kód je charakterizován svoji jedinečnou vlastností, a to změnou sousedících slov pouze v jednom prvku. Definice: Nechť je dána množina všech binárních n ciferných čísel. Uspořádáme li 2 n binárních čísel tak, že libovolné i té slovo se bude od i+ slova lišit pouze v jednom prvku, vznikne Grayův kód. Algoritmus - postup tvorby Grayova kódu pomocí překódování přímého binárního kódu:. Dvojková číslice přímého binárního kódu s nejvyšší vahou se ponechá beze změny. 2. Každá následující dvojková číslice přímého binárního kódu se invertuje, když ji v přímém kódu předchází na vyšší váze jednička. DEC BIN Grayův kód Princip a uplatnění Grayova kódu lze naleznout například v analogově číslicových převodnících, mechanických kodérech či matematických postupech, které s teorií kódování zdánlivě nesouvisí. Jako příklad jmenujme n-bitový Grayův kód korespondující s Hamiltonovským cyklem na n-dimensionální jednotkové krychli. Algoritmus 2 tento postup využívá jisté symetrie Grayova kódu. Při tvorbě n-ciferného Grayova kódu je používán střídavě prefix a, jak je patrno z naznačeného postupu: Grayův kód (n = ) Grayův kód (n = 2) Grayův kód (n = ) atd. atd. Grayův kód poprvé užil Francouzský telegrafní inženýr Émile Baudot v roce 875. Kód pak patentoval Frank Gray, vědecký pracovník z Bellových Laboratoří v roce 95. Nadčasovost Grayova kódu je zřejmá z faktu, že se pro specifické aplikace používá dodnes.

19 METODY KÓDOVÁNÍ.. Základní pojmy KÓDOVÁNÍ je předpis, který každému prvku konečné množiny A přiřazuje právě jedno slovo v konečné množině B. Je to tedy zobrazení K : A B * (.) Zdrojová abeceda a její prvky jsou zdrojové znaky. Kódová abeceda a její prvky jsou kódové znaky. KÓD je chápán jako množina všech kódových slov K(a) (kde a jsou zdrojové znaky), kterými vyjadřujeme jednotlivé stavy systému. Konečná množina všech slov B * může být vyjádřena ve formě tabulky, nebo pomocí dohodnutého systému pravidel, tedy algoritmem. Pojem slovo na množině B v tomto případě znamená konečnou (a neprázdnou) posloupnost prvků této množiny (k-prvkový vektor), tedy posloupnost b b 2 b k, kde b i B pro i =,2,,k. Dále mluvíme o slově délky k. Slova délky pak ztotožňujeme s prvky množiny B. Příkladem kódu, kde dochází k nahrazení znaků binárními slovy je následující tabulka: Znak z množiny A {,,,9} Binární slovo z množiny B * {,} Tab..6: Příklad kódování..9 Příklad použití tohoto kódu k zakódování numerické zprávy: 76. Poznámka.: Z hlediska praxe je pro nás nejdůležitější binární kódování, tj. takové, které má dva kódové znaky ( a ). Poznámka 2.: Význam mají jen prostá kódování, tj. taková, kdy různým zdrojovým znakům odpovídají vždy různá kódová slova. Poznámka.: Každé kódování zdrojových znaků (.) můžeme rozšířit na kódování zdrojových zpráv, tedy slov na abecedě A. ( ) = ( ) ( ) ( ). (.2) * K aa 2 an Ka Ka2 Kan Tím vznikne zobrazení * * * K : A B, (.) které každé zdrojové zprávě přiřadí její kódovou zprávu.. K * (986) = K() K(9) K(8) K(6) = 26 Radomil MATOUŠEK

20 Při přechodu z jednoho kódu do druhého se může měnit počet kódových znaků, jejich četnost a pravděpodobnost výskytu v kódovém slově, jak uvidíme v části pojednávající o prefixovém kódování, kap Při procesu kódování tak může docházet ke změně redundance. V případě minimální redundance, tj. max. entropie, tak kódování povede k tzv. minimálnímu kódu, kap. 2, použitelnému v kanálech bez rušení (v reálném kanálu, kde je možné zanedbat rušení). Jelikož reálné kanály jsou vždy s rušením, je naopak mnohdy žádoucí redundanci v kódu zvyšovat za účelem detekce, případně korekce chyb, což vede k tzv. bezpečnostnímu (protichybovém) kódování, kap.. Definice: Řekneme, že kódování (.) je jednoznačně dekódovatelné, jestliže ze znalosti zakódované zprávy K * (a a 2 a n ) můžeme vždy jednoznačně určit zdrojovou zprávu a a 2 a n ; stručně, jestliže je kódování zpráv (.) prostým zobrazením.. Jako motivaci k porozumění další části tohoto textu uveďme příklad, kde k zakódování čtyř stavů teploty vody používáme tři rozdílné kódy. Stav teploty vody (kód) Kód Kód 2 Kód ledová A studená B teplá C horká D Tab..6: Příklad tří druhů kódování stavu teploty vody. Zkuste pomocí uvedených kódů, 2 a z tabulky zapsat a zpětně dekódovat následující sekvenci AABAC a vyvodit závěr:. Které kódování je prosté? 2. Které kódování je jednoznačně dekódovatelné? Kód : Kód 2: Kód : Po přijetí celé zprávy lze jednoznačně dekódovat. Nelze jednoznačně dekódovat. Lze jednoznačně dekódovat znak po znaku..4. Blokové a prefixové kódování.4.. BLOKOVÉ KÓDOVÁNÍ Blokové kódování délky n, je takové prosté kódování, při kterém všechna kódová slova mají stejnou délku, a to n. Každé blokové kódování je jednoznačně dekódovatelné: pokud známe zprávu K*( aa 2 a m ), potom prvních n znaků tvoří kód zdrojového znaku a, dalších n znaků tvoří kód znaku a 2 atd. Příkladem blokového kódování je např. tabulka (Tab..6). 2

21 METODY KÓDOVÁNÍ.4.2. PREFIXOVÉ KÓDOVÁNÍ Mějme binárně zakódovanou informaci o teplotě vody: Stav teploty vody (kód) Kód ledová A Studená B teplá C horká D Tab..7: Příklad kódování stavu teploty vody. Zprávu: ledová, ledová, studená, ledová zakódujeme takto:. Zkusme dekódovat tuto zprávu:. Jaké si nyní můžeme položit otázky? Co z nich vyplývá?. Je zvolené kódování prosté? ANO 2. Je zvolené kódování jednoznačně dekódovatelné? ANO. Kdy jsme schopni zprávu dekódovat? Po přijetí celé zprávy, a to odzadu. 4. Šlo by to i lépe (dekódovat znak po znaku)? ANO! Prefixové kódování. PREFIX slova b b 2 b k je každé ze slov b, b b 2, b b 2 b k. Definice (prefixový kód): Kódování se nazývá prefixové, jestliže je prosté a žádné kódové slovo není prefixem jiného kódového slova. Poznámka.: Prefixové kódování je vždy jednoznačně dekódovatelné. Poznámka 2.: Každé blokové kódování je prefixové. Poznámka.: Prefixové kódy jsou jediné kódy, které lze dekódovat znak po znaku..2 Prefixové ternární kódování. A B C 2 D 2 E 22 F 22 Zpráva: Dekódování: BBFBFB. Upravte Kód z tabulky (Tab..6, Tab..7) tak, aby byly zachovány délky kódových slov a upravený kód splňoval prefixové vlastnosti. 26 Radomil MATOUŠEK

22 .4.. KONSTRUKCE PREFIXOVÉHO KÓDU Pro konstrukci prefixového kódu stačí znát požadované délky d,d 2, d r kódových slov pro jednotlivé zdrojové znaky a,a 2, a r. Poznámka: Mechanismus tvorby kódu je zřejmý z definice (prefixový kód). Jak ale volit délky kódových slov? Odpovědí je tzv. Kraftova nerovnost. Odvození Kraftovy nerovnosti: Dále budeme pro jednoduchost předpokládat, že zdrojové znaky jsou uspořádány tak, aby délky kódových slov tvořily neklesající posloupnost, d d 2 d r. Pro případ binárního kódu existuje 2 d slov délky d a mezi nimi volíme slovo K(a ). Při volbě slova K(a 2 ) se musíme vyvarovat všem slovům délky d 2 s prefixem K(a ); 2 jejich počet je 2 d d. d2 d d2 Protože platí 2 < 2, můžeme volit K(a 2 ) jako některé zbývající slovo délky d 2. Při volbě slova K(a ) (již vznikají jisté potíže) se musíme vyhnout všem slovům s prefixem K(a ), jejichž počet je 2 d d 2 2 d d., a všem slovům s prefixem K(a 2 ), kterých je Potřebujeme, aby celkový počet 2 d slov délky d byl alespoň o větší než počet slov, 2 kterým se vyhýbáme, tj. 2 d d 2 d d 2 d + + / 2 d 2 2 d d d Podobně pro čtyři a více je nutné (i postačující), aby platilo: 2 2 d + 2 d d r (.4) Poznámka: Tato podmínka je nutná jak v případě prefixových kódů, tak i v případě jednoznačně dekódovatelných kódů, jak plyne z McMillanovy věty. Věta (Kraftova nerovnost): Při kódování n znaky můžeme sestavit prefixový kód s délkami slov d,d 2, d r, právě když platí tzv. Kraftova nerovnost. d d2 d r n n n (.5) Poznámka.: Z existence prefixového kódu plyne Kraftova nerovnost (dále též KN). Poznámka 2.: Kraftova nerovnost nezaručuje, že daný kód je prefixový. Pouze zaručuje, že prefixový kód s danými délkami kódových slov musí existovat..4 Existuje binární prefixové kódování číslic desítkové soustavy, které používá jen slov déky max. 5 a číslice má kód?.5 Kolik znaků má mít kódová abeceda k zakódování 25 znaků do blokového kódu, n=2. 4

23 METODY KÓDOVÁNÍ.6 Ověřte prefixové vlastnosti z předchozích dvou příkladu (.). Navrhněte prefixový kód. KN (kód A): = + + = KN splněna lze nalézt prefixový kód stav teploty vody (kód) Kód A (neprefixový) Kód B (prefixový) ledová A KN studená B splněna teplá C horká D Věta (McMillanova): Pro každé jednoznačně dekódovatelné kódování platí Kraftova nerovnost (.5)..7 Která z uvedených kódování znaků a, b, c, d, e, f jsou jednoznačně dekódovatelná a která jsou prefixová? Spočtěte sami KN, a proveďte případnou korekci kódu na prefixový. Kódování: K K 2 K K 4 A xxx B xxy C xyx 2 D yxx 2 E xyy 22 F yyx 22 KN: Radomil MATOUŠEK 5

24 Jaká je výhoda prefixového kódu? Znáte jeho definici? Musí být blokový kód také prefixový? Odvoďte Kraftovu nerovnost. Existuje binární prefixové kódování číslic,,,9, které používá jen slov délky nejvýše 5 a číslice 9 má kód? Najděte ternální prefixový kód znak; A,B,C,D,E,F s předepsanými délkami kódových slov 2,2,,,2,2. Co říká věta McMillanova? Platí i opak? Jaký je princip čárového kódu? Je --/---/.-./ /./..-/ -//-.-/---/-..//- /../-./.-/.-./-./../? Jaký je rozdíl mezi polyedrickou a nepolyedrickou číselnou soustavou? Co je to kódování? Jaký je význam endianity, uveďte příklad. Najděte unicode hodnotu znaku &. 6

25 METODY KÓDOVÁNÍ 2. Minimální KÓDOVÁNÍ textová komprese Equation Section (Next) Vždyť je to jen algoritmus David A. Huffman Profesor David A. Huffman stál při zrodu fakulty informatiky na kalifornské univerzitě a získal mnoho ocenění (kromě jiného medaili R. W. Hamminga ). David Huffman svůj skromný nápad nikdy nepatentoval a ani nechtěl:). Jak to však všechno začalo? Byla to výzva, jakých se denně na univerzitách a vysokých školách po celém světě urodí desítky. Profesor umožnil svým studentům vyhnout se zkoušce, když vyřeší jistý problém. Jednalo se o problém dosažitelnosti nejkratšího prefixového kódování (ve vztahu k informační entropii). Studenti ovšem nevěděli, že se jedná o nevyřešenou úlohu. Davidu Huffmanovi na univerzitě v Ohiu se ke zkoušce nechtělo, jenže úloha se zdála téměř neřešitelná. Když už chtěl nechat bádání a začít se na závěrečnou zkoušku učit, zadíval se na papír s poznámkami, které zlostně vyhodil do koše. V tu chvíli ho to napadlo D. A. Huffman později publikoval svůj nápad v práci nazvané Metoda pro vytvoření kódu s minimální redundancí (A Method for the Construction of Minimum Redundancy Codes). Jeho řešení pomocí binárního stromu bylo velmi prosté a zároveň elegantní. Ale také velmi účinné v praxi. V tu dobu již působil na MIT (Massachusetts Institute of Technology), kde také získal rok nato doktorát. Minimální kódování je způsob kódování, jehož účelem je zmenšit objem dat ve zprávě. Tento proces kódování se běžně označuje jako datová komprese, či komprimace dat. Inverzní proces je pak označován jako expanze. Dle práce s informací je možné datovou kompresi dělit na bezeztrátovou a ztrátovou. V současnosti se pro přenos dat používají převážně metody digitální komunikace. Digitální data se na rozdíl od analogových jednodušeji uchovávají, lépe zabezpečují proti chybám i proti případnému zneužití. Přenos a práce s informacemi jako je zvuk, obraz a video v digitálním tvaru má za následek velké paměťové nároky a užití velkých šířek přenosového pásma. Tyto skutečnosti by měly za následek zvyšování nákladů na uchování a přenos informace v této podobě. Cíl je tedy jasný, adekvátně zachovat původní informaci a s použitím minimálního kódování snížit ekonomické či energetické náklady. Pokud má být použití komprimace efektivní, musí umožňovat reprodukci komprimované informace v požadované kvalitě. Požadovaná kvalita může být v rozpětí od požadavku úplné rekonstrukce původní informace (například komprimace textu), až po omezení přenášeného frekvenčního pásma (zvuková informace), počtu zobrazovaných barev (obrazová informace, video) nebo počtu rozlišitelných zobrazovacích prvků informace (obraz, video, dynamika zvukového signálu). 26 Radomil MATOUŠEK 7

26 Cílem datové komprese je tedy převést data z původní reprezentace, dále též označované jako původní soubor, či vstupní proud do nové úspornější formy, dále též označované jako zkomprimovaný soubor, či výstupní proud a zároveň umožnit kdykoliv opět získat originál nebo jeho aproximaci. Účelem minimálního kódování je vždy snížit redundanci původních dat. Na vyjádření efektivnosti metod komprimace můžeme zavést tzv. kompresní poměr nebo jeho převrácenou hodnotu tzv. faktor komprimace: rozměr vstupního proudu kompresní poměr =, rozměr výstupního proudu rozměr výstupního proudu faktor komprese =. rozměr vstupního proudu (2.) Poznámka: Pro posouzení kvality kompresních metod, je velmi vhodné vědět, jaký je jejich kompresní poměr při kompresi obvyklé třídy komprimovaných dat. Pro tyto účely byly sestaveny kolekce souborů, které se standardně využívají při testování úspěšnosti navržených komprimačních algoritmů. K hlavním testovacím korpusům patří tzv.: A.C.T. (Archive Comparison Test) soubor benchmarků k otestování bezeztrátových kompresních algoritmů, Odkaz obsahuje tabulku s porovnáním hlavních komprimačních programů. The Canterbury Corpus často užívaný soubor benchmarků k testování bezeztrátových kompresních algoritmů, Metody komprese lze dělit podle mnoha kritérií. Jedním z možných je rozhodování na základě použitých technik komprese, nebo na základě kvality reprodukce původních dat: Bezeztrátová komprese dat: Užité algoritmy nám zaručují % rekonstrukci původních nezkomprimovaných dat. Z pochopitelných důvodů mají tyto metody horší kompresní poměr. Hlavní oblastí aplikace je komprese obrazu a komprese textu (textová komprese) na která bude v tomto textu stručně uvedena. Příklady postupů: Morseův princip Huffmanovy kódy Fannova-Shannova konstrukce Metoda potlačení nul Metody proudového kódování RLE Slovníkové metody LZx BWT transformace s následným entropickým kódováním 8

27 METODY KÓDOVÁNÍ Příklady počítačových komprimačních programů: ARJ, ZIP, RAR, pkzip, gzip, bzip2. Ztrátová komprimace: Užité kompresní algoritmy vypouští některé méně významné informace. Po dekompresi tak získáváme jen aproximaci originálu (přípustné pro multimediálními data, ne pro text nebo například astronomické fotografie hvězda sem hvězda tam ). Počítačové komprimační programy, které užívají ke zmenšení objemu dat metod ztrátové komprese, jsou v některých případech též kombinovány s algoritmy bezeztrátovými. Účelnější členění těchto typů komprese pro práci s multimediálními daty je tedy následující: Komprimace zvukových souborů Transformační kódování obrazového signálu Komprimace obrazových souborů Fraktální komprimace Komprimace videa V dalším textu se budeme zabývat pouze některými vybranými algoritmy pro bezeztrátovou textovou kompresi. [online] non-commercial project by Graphic&Media Lab. Compression Links Info URL: 25 Compression-Links.info Team Stránka nabízí patrně nejlepší rozdělovník s odkazy na téma datové komprese. Stručně uveďme, že je možné přejít na stránky věnující se přímo komprimačním algoritmům (bezeztrátovým i ztrátovým), metodám kódování, problematice kódování obrazu, specifickým normám H.26, H.26, MPEG-4 aj., moderním metodám komprese založených na využití wavelet transformace či fraktálního kódování. [online] Visicron Corp. DataCompression.info URL: 25 Visicron Systéme, Inc. Slovníkově pojatý rozdělovník s velmi bohatou strukturou vhodnou ke studiu bezztrátových i ztrátových kompresních metod. 26 Radomil MATOUŠEK 9

28 2.. Morseův princip Když v únoru roku 87 vypsal Kongres Spojených Států soutěž na zlepšení tehdejší informační soustavy, nikdo netušil, že dojde k převratnému vývoji zadané technologie. Než uvedeme podstatu jeho objevu, řekněme si nejdříve méně významnou kuriozitu : autorem objevu byl malíř, amatérský fyzik, kterému zrovna přálo štěstí v podobě vypsání zmíněné soutěže, a to zrovna v době, kdy prováděl pokusy s novou konstrukcí telegrafu. Ke zkonstruování telegrafu použil mimo jiné nástěnné hodiny a malířský stojan, co také shánět jiného? Další originalita je v principu telegrafu. Soutěž byla vypsána na zdokonalení optického telegrafu již známé podstaty. Pan Samuel Inlay Breese Morse se však pustil do elektromagnetického telegrafu. Slovo kuriosita bylo použito z toho důvodu, že návrat k optickým přenosovým technologiím, byť v radikálně jiné podobě, je současným trendem. Již v září 87, byl předveden veřejnosti nový Morseův telegrafní přístroj využívající nový způsob kódování znaků. A tak amatérský fyzik a malíř Samuel F. B. Morse patentoval svůj vynález a získal tím i vypsanou cenu Kongresu. Jeho způsob kódování využíval sériový přenos dat, což jak se ukázalo, bylo v oné době, kdy funkci kodéru a dekodéru zastával člověk, zjevně to nejlepší. Ještě za života ( ) se pan Samuel F. B. Morse dočkal několika realizací svého vynálezu. Ta první byla v květnu roku 844 na trase, jejíž délka byla 6 km, a to mezi městy Washington a Baltimore. Morseův kód je technicky realizován tak, že jsou k písmenovým symbolům (zdrojová abeceda) přiřazeny elektrické impulsy dvou délek. Delší impuls, dosahoval trojnásobnou délku impulsu kratšího. Toto doporučení se vztahovalo k potřebám telegrafie v návaznosti na fyziologické adaptační schopnosti lidského sluchu i zraku. Rozdílnost těchto elektrických impulsů se po převodu na signál akustický nebo vizuální presentovala v podobě teček a čárek. Morseův kód však není binární, jak by se mohlo zdát. Jedná se o ternární kód, kdy oním třetím znakem je mezera. Tento prvek ve vysílání jakoby neslyšíme, ale je nezastupitelně používán k správnému dekódování prvků abecedy. Obecně v tomto kódu nebyla stanovena maximální délka slova nebo dokonce počet jednotlivých prvků v kódovém slově. Skladba všech tří prvků v kódovém slově byla závislá na frekvenci výskytu písmenových symbolů v anglickém (americkém) komunikačním prostředí. Morseův princip spočívá v tom, že písmenům s velkou pravděpodobností výskytu jsou přiřazeny kódová slova s kratšími časovými intervaly a naopak. Morseův kód se tedy skládá z časově odlišných kódových složek (nerovnoměrný kód). Časové intervaly pro jednotlivé složky jsou realizovány jako celistvé násobky; u Morseova kódu se používá časové relace: T... tečka i vnitřní mezisložková mezera, T... čárka. Pro kód je vyjadřovaná pouze relativní časová jednotka trvání kódových složek. Rychlost je, podobně jako při psaní na klávesnici, limitována fyziologickými a nervo-svalovými schopnostmi daného člověka. 2

29 METODY KÓDOVÁNÍ 2.2. Nejkratší kód - Huffmanova konstrukce Předpokládáme, že jsme zjistili přesnou frekvenci znaků zdrojové abecedy a a 2 a r. To znamená, že pro každý znak a i známe pravděpodobnost p i toho, že na náhodně zvoleném místě zdrojové zprávy je zapsáno a i. Platí Σp i = a p i. Označme délky kódových slov pro dané kódování d, d 2,,d r a odpovídající pravděpodobnosti výskytu těchto slov p, p 2,,p r. Našim cílem je najít nejkratší kód, přesněji prefixový kód, jehož průměrná délka slova d je nejmenší možná. d = dp+ dp+ drpr (2.2) 2. Které z uvedených kódování znaků a, b, c, d, e, f je jednoznačně dekódovatelné a které je prefixová? Spočtěte sami KN, a proveďte případnou korekci kódu na prefixový. znak * + a B pravděpodobnost,4,2,2,2 Kód na abecedě {,} Kód na abecedě {,,2} 2 2 d {,} =,4+ 2,2+,2+,2 = 2 d {,,2} =,4+,2+ 2,2+ 2,2 =,4 2 KN {,} : + + = KN {,,2} : + =, Definice (nejkratší kód): Nejkratším n znakovým kódováním zdrojové abecedy a, a 2,, a r s pravděpodobnostmi výskytu p, p 2,,p r se rozumí prefixové kódování této abecedy pomocí n znaků, které má nejmenší možnou průměrnou délku slova d. D.A.Huffman (čti: Hafmen) objevil v roce 952 algoritmus, který při zadané pravděpodobnosti výskytu zdrojových symbolů p i vytvoří kód minimální délky d. Hoffmanův algoritmus kódováni je jedním z klasických algoritmů užívaných pro bezeztrátovou kompresi dat (bezeztrátové komprese PKZIP, BZIP2, PBZIP2 aj., v jistém kroku jinak ztrátové komprese JPEG, MP). Prakticky existují dva typy Huffmanova kódování, a to kódování statické a kódování adaptivní (dynamické). V dalším textu se budeme věnovat jeho statické variantě. Stěžejní myšlenka, v podobě algoritmu, se nejdříve objevila v Fanon-Shannonově kódu. Základní myšlenkou je zakódování znaků podle počtu jejich výskytů ve vstupu tak, že znaky, které se vyskytují nejčastěji, mají nejkratší kód. Huffmanova konstrukce byla později značně zefektivněna zavedením Burrows- 26 Radomil MATOUŠEK 2

30 Wheelerova transformace (BWT) spolu s tzv. Move-To-Front (MTF) filtrem. Nutno podotknout, že ve variante (RLE + BWT + Huffman) a implementaci v Open Source programech BZIP2 (PBZIP2) algoritmus poráží, či je rovným soupeřem jiných, draze licencovaných kompresních algoritmů (aritmetická komprese, slovníkové metody aj.). Úvodní poznámky: Huffmanův algoritmus generuje binární stromy, kde uzly cesty z počátečního do koncového uzlu umožňují vytvořit kódová slova. Huffmanovy kódy jsou prefixové kódy minimální délky. Huffmanův algoritmus přiřazuje slova dle Morseova principu. Huffmanův algoritmus není a nebyl nikdy patentován. Statická varianta: Statická metoda je dvoufázová, nejprve se provede výpočet četnosti, resp. pravděpodobnosti výskytu daného znaku ve vstupním proudu. Dále se dle algoritmu vypočte prefixový kód, tj. provede se zakódování znaků zdrojové abecedy pomocí prefixového kódu z kódové abecedy. Tento algoritmus používá tzv. binární stromy, kde hodnoty uzlů od kořene k listům stromu tvoří jednotlivá kódová slova. U tohoto algoritmu bude dále prezentována i varianta nad rozšířenou kódovou abecedou. Adaptivní varianta: Metoda vycházející z předchozí statické varianty. Zásadním rozdílem adaptivních kódů je pouze jeden průchod textem. Celý proces funguje tak, že algoritmus opět vytvoří binární strom, jehož listy jsou jednotlivé znaky. Poté začne kódovat, u každého znaku si však vede statistiku kolikrát se v textu vyskytl. Takto nám vzniká po každém zakódovaném znaku nová statistika a tedy i nový strom, který je přehodnocen po každém znaku. Implementace tohoto algoritmu je ovšem poněkud časově náročnější 22

31 METODY KÓDOVÁNÍ HUFFMANNOVA KONSTRUKCE BINÁRNÍHO KÓDU (952) Zdrojové znaky uspořádáme podle pravděpodobností tak, aby platilo: p p 2 p r. Pokud máme jen dva zdrojové znaky (r = 2), je nejkratší kód zřejmý: znak a a 2 kód K Pro případ tří znaků (r = ) pracujeme s tzv. redukovanou abecedou a a a,2, která má pravděpodobnost výskytu p a p 2, = p 2 + p : znak a a 2, kód K Kódové slovo rozdělíme na dvě slova a a dostaneme nejkratší kód původní abecedy: znak a a 2 a kód K Stejně postupujeme v případě libovolného počtu r zdrojových znaků. Definujeme redukovanou abecedu a, a 2,, a r-2, a r-,r s příslušnými pravděpodobnostmi výskytu znaků a i. Znovu uspořádáme znaky podle pravděpodobností a najdeme nejkratší kód K. Pak původní abeceda má nejkratší kód, vzniklý z redukované abecedy a rozdělení slova K(a r-,r ) na dvě: znak a a 2 a r-2 a r- a r kód K K(a ) K(a 2 ) K(a r-2 ) K(a r- ) K(a r ) Tento princip redukce shrňme do následujících, zcela ekvivalentních algoritmů: Algoritmus (postup vhodný pro ruční výpočet):. Zdrojové znaky uspořádáme tak, aby platilo: p p 2 p r (nerostoucí posloupnost). 2. Znaky a, a 2,, a r napíšeme pod sebe a vedle nich jejich pravděpodobnosti.. Sečteme poslední dvě pravděpodobnosti a výsledek zařadíme do posloupnosti dle Sečteme poslední dvě dosud nesečtené pravděpodobnosti a výsledek opět zařadíme. 5. Krok 4. opakujeme až do součtu pravděpodobností =. 6. Poté přiřazujeme kódová slova od prvního znaku a směrem k dalším dle prefixového principu. Nekódová slova využíváme jako použitelné prefixy mimo poslední součet. 2.2 znak 2 A B četnost [%] % % % % 4% min. kód znak pravděpodobnost konec,6 B,4, A,,2, 2,, 26 Radomil MATOUŠEK 2

32 Algoritmus 2 (generovaný binární strom): Jednotlivé znaky (u kterých známe jejich četnost) umístíme jako samostatné vrcholy, a z nich postupně budujeme binární prefixový strom. Množinu tvořenou vrcholy označíme například X. Vezmeme z X dva prvky (vrcholy = znaky) s nejmenším ohodnocením (kde ohodnocením rozumíme jejich četnosti) a spojíme je tak, že z nich uděláme bratry, přičemž jejich otec bude mít ohodnocení rovnající se součtu četností jeho synů. Právě užité prvky z množiny vyjmeme a namísto nich přidáme do X jejich otce. Tento postup rekurzivně opakujeme do té doby, než bude množina X jednoprvková. Tento jediný prvek je kořenem našeho Huffmanova stromu vyjadřující minimální prefixový kód. 2. znak a b c d e f četnost [počet znaků] Vybereme dva prvky s nejmenší četností a vytvoříme k nim vrchol reprezentující jejich otce, který má četností rovnající se součtu četností jeho synů. Vybrali jsme tedy vrcholy e a f. K nim vytvoříme jejich otce. Nyní potřebujeme znovu vybrat vrcholy s nejmenšími četnostmi z množiny X (v ní již nejsou vrcholy e a f ). Vezmeme tedy nově vytvořený vrchol (tj. ten s ohodnocením 6) a vrchol d (ohodnocení 7). Další postup je analogický a jistě lze domyslet z následujících obrázků. 24

33 METODY KÓDOVÁNÍ 26 Radomil MATOUŠEK 25

34 Poznámka: Huffmanova konstrukce minimálního kódu je vždy optimální, ale není jednoznačná. Této nejednoznačnosti jsme si mohli všimnout v příkladu 2.2, kde pro různá zařazení sečtených pravděpodobností bylo možné obdržet různá kódová slova. Rovněž invertováním jednotlivých bitů obdržíme jiná kódová slova. Závěr tedy je, že při zpětném přiřazení kódových slov máme jistou libovůli, ovšem vždy budou mít sestrojené Huffmanovy kódy stejnou hodnotu d. 2.4 znak 2 A B četnost [%] % % % % 4% Navrhněte různá Huffmanova kódování pro zadaný soubor znaků a zkontrolujte průměrnou délku slova. Zkuste mimo tento příklad sestavit, pro vámi navržené soubory znaků, minimální prefixové kódy. Pro všechny případy těchto minimálních binárních prefixových kódů proveďte ověření přes Kraftovu nerovnost. znak min. kód K min. kód K 2 min. kód K atd. B A 2 d =, 4 + 2, + ( ), = 2, 2 4 KN: /2+ /2 + /2 + 2 (/2 ) = Poznámka: Při konstrukci binárního Huffmanova kódu dojdeme k závěru, že Kraftova nerovnost je vždy identicky splněna, tj. pravá a levá strana je vždy rovna jedné HUFFMANNOVA KONSTRUKCE OBECNÉHO KÓDU Pro případ n-znakové kódové abecedy se nejkratší kód nalezne analogicky jako v binárním případě, tj. provádíme postupné redukce sečtením n nejmenších pravděpodobností. Výjimku tvoří první redukce, kde sčítáme s [2, n] pravděpodobností. Algoritmus konstrukce je obdobou Algoritmu pro binární Huffmanovo kódování s tím rozdílem, že nesčítáme 2 pravděpodobnosti, ale obecně n. Tzn. například pro tříznakový Huffmanův kód (ternární kódování) postupně sčítáme (redukujeme) tři sčítance. Výjimku tvoří první součet, při kterém sčítáme s pravděpodobností. Určení čísla s můžeme provádět tak, že v seznamu zdrojových symbolů vytvoříme skupiny po n- symbolech, až zbude poslední skupina s počtem s [2, n]. 2.5 znak pravděpodobnost ternární min. kód, n= A 2/8 Skupiny po n-, tj. po B 2/8 2 dvou znacích. C /8 D /8 2 s = 2 E /8 F /8 26

35 METODY KÓDOVÁNÍ 2.6 znak pravděpodobnost min. kód, n=4 A 2/8 Skupiny po n-, tj. po B 2/8 2 třech znacích. C /8 D /8 s = E /8 F / Porovnejte průměrnou délku kódového slova pro kódování z příkladů 2.5 a 2.6 s binárním kódováním. znak pravděpodobnost min. kód, n=2 min. kód, n= min. kód, n=4 A 2/8 B 2/8 2 2 C /8 D /8 2 E /8 F /8 2 průměrná délka slova: 5 d = = 2,5 2 d = + =,75 4 d = + =,75 8 Kraftova nerovnost, KN: 26 / 27,96 5/6,94 Huffman.swf Konstrukce Hoffmanova kódu algoritmem 2. CodeExamples7.swf Konstrukce Hoffmanova kódu algoritmem FANOVA-SHANNONOVA KONSTRUKCE BINÁRNÍHO KÓDU Princip konstrukce je založen na rekurzivní proceduře, která přiřazuje, pro každou zdrojovou informaci, k jejímu kódovému slovu v jednom kroku binární číslici. Postup není optimální (nejkratší). Důležitou vlastností této konstrukce je opět její prefixovost. Tuto prefixovost Fanova-Shannonova kódu můžeme zachytit binárním prefixovým stromem, jako v případě Huffmanova kódování. Předchozí 2. má následující binární prefixový strom: 26 Radomil MATOUŠEK 27

36 Každý Fanon-Shannonův kód lze samozřejmě zapsat takovýmto binárním stromem, kde písmena vstupní abecedy jsou v listech a jejich kódy tvoří cesta od kořene do daného vrcholu. Poznámka : Pokud by kód nebyl prefixový, pak by na cestě do nějakého listu muselo ležet nějaké písmeno vstupní abecedy. Poznámka 2: Fanův-Shannonův binární prefixový strom nemusí být z hlediska minimálního kódování, na rozdíl od Huffmanova, vždy optimální, jak již bylo uvedeno. Algoritmus konstrukce budeme demonstrovat příkladem realizovaným v tabulce. Do této tabulky zaneseme všechny znaky, které se v souboru vyskytují, přičemž je seskupíme do dvou skupin tak, aby součet pravděpodobností všech znaků z jedné skupiny se co nejvíce blížil součtu ve skupině druhé. Po tomto rozdělení přiřadíme všem znakům z první skupiny prvek a všem znakům z druhé skupiny prvek. Tímto jsme zapsali první znak kódového slova daného písmene. Tento systém kroků dále rekurzivně použijeme na každou skupinu zvlášť, až do vytvoření všech kódových slov. Je zřejmé, že optimálnost postupu bude velmi záviset na počátečním rozdělení znaků do skupin. 2.8 Konstrukce Fanova-Shannonova kódu. znak pravděpodobnost krok # krok #2/ Krok #/ Huffman, n=2 A 4/ B / C 2/ D / E / F / průměrná délka slova: d FS = 2,5 d H = 2, Metoda potlačení nul Princip této nejstarší metody komprese spočívá v potlačení opakujících se mezer (nul) v textu. Tam kde se vyskytnou tři a více mezery, je vložen indikující znak, tzv. zarážka a za ní následuje číselná informace o počtu tzv. počítadlo potlačovaných znaků. Zarážka i počítadlo mají velikost jeden bajt. Znak zarážky musí byt pochopitelně v celém textovém souboru jedinečný Metoda proudového kódování - RLE ALGORITMUS Princip metody spočívá v kompresi opakujících se symbolů. Tato bezztrátová komprese je užívána tam, kde se vyskytují skupiny opakujících se symbolů (znaků). Tyto skupiny se vyjadřují tzv. počítadlem. Tato kompresní metoda je v podstatě odvozena od metody potlačení nul. Metod RLE existuje vícero druhů. 28

37 METODY KÓDOVÁNÍ Počítadlo: Užití: zvláštní symbol tzv. indikátor (zarážka) počítadlo znak. například PCX, nebo preprocessing pro další typ komprese (Huffman) RLE (Run Length Encoding) někdy též RLC (Run Length Compression) tedy definuje speciální znak, pomocí kterého je identifikována komprimovaná sekvence. Po indikátoru komprimace obvykle následuje znak, který je komprimován a poté následuje údaj o počtu opakování tohoto znaku. Pokud použijeme standardní kódy ASCII nebo EBCDIC, je vhodné jako indikátor komprimace (zarážku) vybrat takový symbol, který se jinak ve vstupním proudu dat nevyskytuje. Princip je patrný z následujícího příkladu. TOK DAT I c (indikátor) X (libovolný znak) p z (počítadlo) 2.9 RLE komprese. Původní data Komprimovaná data A bbbbbbb9.99 A I c b79.99 Name: Name: I c.5 Poznámka: Zarážka i počítadlo mohou být sloučeny do jednoho byte: pppppp. CodeExamples7.swf RLE.swf Více variant komprese textu pomocí RLE. Demonstrace užití RLE pro komprimaci obrazových dat Slovníkové metody Lempel-Ziv kódování Tento algoritmus byl navržen v roce 977 Abrahamem Lempelem a posléze vylepšen v roce 978 Jacobem Zivem. Dnes se proto můžeme setkat s tímto algoritmem jako LZ77 nebo LZ78. Vývoj však ještě pokračoval a v roce 984 byl upraven pro potřeby hardwarových řadičů Terrym Welschem, tento má potom zkratku LZW. Algoritmus LZ77 funguje následovně. Algoritmus pracuje se dvěmi částmi textu zároveň. První je aktuální okno - to, které komprimujeme, a druhé tzv. sliding window - tedy posuvné okno. V posuvném okně se snažíme nalézt co nejdelší řetězec obsažený v aktuálním okně, na který posléze v aktuálním okně vytvoříme odkaz. Poznámka: Velikost posuvného okna musí být dostatečně velká, abychom mohli najít požadovaný řetězec a zároveň dostatečně malá, aby komprimace netrvala příliš dlouho. Velikost bufferu se obecně pohybuje v kilobajtech. 2. LZ77 komprese. Vstupní proud: Výstupní proud: Leze leze po železe Leze l[2,] po že[5,4] 26 Radomil MATOUŠEK 29

38 Algoritmus LZ78 je do jisté míry podobný LZ77. Tento algoritmus nepoužívá sliding window, ale tvoří si vlastní slovník. Do tohoto zapisuje již nalezená spojení znaků. Při čtení souboru tedy přečte řetězec, pokud je obsažen ve slovníku, nahradí ho příslušným odkazem, v opačném případě ho připíše do slovníku. Algoritmus komprese začíná s prázdným slovníkem a řetězcem L obsahujícím první znak zdrojového souboru. Vždy po přečtení dalšího znaku c zjistí, jestli se řetězec L+c vyskytuje ve slovníku. Pokud ano, pouze prodlouží řetězec L o znak c, jinak zapíše např. 2-ti bitový odkaz do slovníku nebo (pokud řetězec L obsahuje jediný znak) pouze znak, ale opět 2-ti bitově. V tomto případě tedy čísla -255 jsou jednotlivé znaky a čísla indexy do slovníku. Pokud se slovník zaplní dříve než je přečten celý soubor, je celý slovník smazán a začíná se plnit znovu. Někdy se pro zlepšení účinnosti místo smazání slovníku používá algoritmus LRU (last-recently-used) pro odstranění nepoužívaných řetězců ze slovníku. Vzhledem k tomu, že slovník se plní od nejnižších pozic, je pro zlepšení kompresního poměru výhodné začít kódy ukládat pouze 9-ti bitově a teprve kdy se slovník více zaplní, postupně je rozšiřovat až na např. na 2 bitů. 2. Sestavte fragment pseudo-programu pro kompresi LZW dle výše uvedeného postupu. L = readchar while (!eof(input)) { c = readchar if (Lc ve slovníku) L = Lc else { zapsat kód pro řetězec L přidat Lc do slovníku L = c } } 2.2 Zkomprimujte pomocí LZ78 vstupní proud: WEB-WEB-WEB! Řetězec L Přečtený znak Výstup Nová položka ve slovníku W W E W (256) = WE E B E (257) = EB B - B (258) = B- - W - (259) = -W W E Řetězec WE již je ve slovníku WE B (256) (26) = WEB B - B- W (258) (26) = B-W W E WE B WEB! (26) (262) = WEB!! (eof)! Dekompresní algoritmus postupně čte kódy, zapisuje jim příslušející řetězce a přidává nové řetězce do slovníku. Do slovníku je vždy přidán řetězec reprezentovaný předcházejícím kódem a první znak z řetězce s aktuálním kódem. V případě, že byl přečten kód, kterému ještě nebyl přiřazen řetězec (to se stane např. pokud původní text obsahoval několik stejných znaků za sebou), je do slovníku přidán řetězec skládající se z

39 METODY KÓDOVÁNÍ předcházejícího řetězce a jeho posledního znaku. V průběhu dekomprese má dekompresor stejný slovník jako kompresor. read last write last while (!eof(input)) { read code write řetězec table[code] (nebo znak code) přidání řetězce table[last]+prvni znak table[code] do slovníku last = code } Tabulku řetězců lze přímo indexovat přečteným kódem (pokud je větší než xff, jinak jde o jediný znak a ten stačí zapsat na výstup). Stačí, když tabulka bude obsahovat kód prefixu a nově přidaný znak. Postupným procházením tabulky podle kódu prefixu tak dostaneme odzadu celý řetězec reprezentovaný přečteným kódem. Problém nastane, pokud byl přečten kód řetězce, který ještě není v tabulce. To se opravdu stát může: při kompresi zjistíme, že řetězec (cl)c jetě není ve slovníku, proto ho přidáme a jako začátek nového řetězce vezmeme c, pokud na vstupu následuje Lcx, zapíšeme kód pro clc a přidáme (clc)x do slovníku. Při dekompresi přečteme kód pro clc (který ještě není v tabulce) a... Teď již je vidět, že stačí, kdy do tabulky přidáme frázi skládající se z předcházejícího řetězce (last) a jeho prvního znaku, celou tuto frázi zapíšeme na výstup a jako nový řetězec last vezmeme jeho první znak. LZx.swf 2. Slovníkový algoritmus LZ77. Projděte si známé datové formáty GIF, TIF. PNG, PDF a zjistěte užité metody komprese Move-to-Front Filter (MTF) MTF transformuje znaky, které mají charakteristiku často se vyskytujících stejných znaků za sebou na nuly. To je pochopitelně vstup velice výhodný pro Huffmanovo kódování. MTF kódování: K zakódování budeme potřebovat jednu pomocnou strukturu a tou je zásobník naplněný tak, že na i-tém místě v zásobníku je znak s (ASCII) kódem i. Postup kódování je následující. Postupně bereme znaky ze vstupu a na výstup dáváme číslo pozice v zásobníku, kde se znak nachází a znak přesuneme na začátek zásobníku. Výhoda z toho plynoucí pro druh vstupu, který máme, je zřejmá. První znak posloupnosti stejných znaků ve vstupu je kódován číslem své pozice na zásobníku, poté se přesune na začátek zásobníku (jeho pozice je tudíž po tomto přesunu ) a všechny další (stejné) znaky z posloupnosti se kódují jako. 2.4 Jak bude vypadat vstupní proud ammtt aass po průchodem MTF filtrem (ASCII)? MTF.swf Move-To-Front filtr. 26 Radomil MATOUŠEK

40 MTF dekódování: Zde není mnoho co říci, protože dekódování u MTF probíhá skoro stejně jako kódování. Vezmeme posloupnost čísel a budeme postupovat naprosto stejně jako u kódování s tím malým rozdílem, že na výstup nebudeme dávat čísla, nýbrž znaky jim odpovídající Burrows-Wheelerova transformace (BWT) BWT byla uvedena roku 994 pány Davidem Burrowsem a Michaelem Wheelerem, ale vymyšlena byla již v roce 984 Wheelerem. Transformace představuje velice elegantní postup, který přeskupí znaky vstupního textu tak, že shodné znaky budou pravděpodobně vedle sebe. Tato pravděpodobnost vychází z vlastností jazyka. BWT je pouze transformace, která permutuje vstupní proud a přidává jedno pomocné číslo. Při užití v komprimačních programech pouze tzv. předzpracovává vstupní proud a je tedy nutné dále zařadit skutečnou komprimační metodu (v tomto ohledu je možné ještě využít transformaci MTF). Následovat mohou samostatně případně v kombinaci metody RLE, slovníkové, Hoffmanův algoritmus aj. Typickou kombinaci je právě BWT+Hoffmanův algoritmus, na který se nevztahuje žádný patent (to je také asi hlavní důvod, proč je použit v programu bzip2). BWT algoritmus transformace (kódování) Vstupní text se zpracovává po blocích o konstantní velikosti. Čím jsou bloky větší, tím je kódování účinnější (ve výsledné permutaci budou pravděpodobně delší posloupnosti stejných znaků). Skutečné účinnosti BWT dosahuje pro bloky délky desítek tisíc znaků (někdy se díky zpracovávání po blocích tomuto algoritmu také říká Block Sorting algorithm). Mějme tedy blok o délce N, vytvoříme si N cyklických posunů o jeden znak doleva Tímto vzniká pomyslná matice N*N, kde v řádcích jsou právě cyklické posuny původního bloku. Dalším krokem je lexikografické setřídění řádků této matice (setřídění podle abecedy). Poslední sloupec matice je výsledná transformace! K této permutaci musíme ještě přidat číslo řádku, na kterém se v seřazené matici nalézá původní vstupní proud. Poznámka: Proč mají stejné znaky tendenci seskupovat se k sobě? Dobrým příkladem je anglický určitý člen "the". Toto slovo se v anglickém textu vyskytuje velice často. Jaká situace nastane v naší matici N*N? Bude-li se řetězec "the" v bloku vyskytovat 5 krát, pak v matici bude 5 krát v posledním sloupci znak "t" (díky rotacím). To ale znamená, že na prvních dvou místech se 5 krát ocitnou znaky "he". Je tedy velice provděpodobné, že řádky začínající na "he" budou (po lexikografickém setřídění) blízko u sebe a velice pravděpodobně budou hned pod sebou. A to samé musí samozřejmě platit i pro poslední znaky těchto řádku (to je právě znak "t"). 2

41 METODY KÓDOVÁNÍ BWT algoritmus zpětné transformace (dekódování) Vytvoříme tzv. transformační vektor, což je pole čísel z rozmezí -N (indexy řádků), kde na i-tém místě je index řádku, který vznikne rotací i-tého řádku (nebo tak spíše vznikne text v něm). Takový vektor nám úplně postačuje k rekonstrukci vstupu. Známe totiž řádek, kde se vyskytuje první písmeno (nechť je to řádek j) a tedy máme k dispozici první písmeno původního vstupu (první sloupec). A taky víme, kde se nachází druhé písmeno textu - je v prvním sloupci na řádku, kam ukazuje j-tá složka transformačního vektoru (po rotaci se druhé písmeno dostane na první místo)! Nyní tedy zbývá ukázat si, jak vektor sestrojit. Pro písmena, která se vyskytují ve vstupu pouze jednou to není těžké. Řekněme, že jsme na řádku i a v prvním sloupci je písmeno "x", když na tento řádek zrotujeme do leva, pak se písmeno "x" dostane na konec. Z toho vyplývá: vektor[i]="číslo řádku, kde je v posledním sloupci znak "x"". Ale co když nastane situace, že se znak "x" vyskytuje ve vstupu několikrát? Pak v posledním sloupci najdeme více znaků "x" a který je tedy ten náš zrotovaný? Vezměme první výskyt znaku "x" v prvním sloupci (první od shora), pak mu odpovídá (ukazuje tam transformační vektor) první výskyt "x" v posledním sloupci. Proč? Vyplývá to z toho, že řetězce jsou lexikograficky setříděny, vyskytuje-li se na prvním místě vícekrát znak "x", pak se tyto řetězce musí lišit na druhém místě (pro jednoduchost - jinak můžou být stejné i na druhém místě a lišit se až na některém dalším, ale princip je stejný). Po rotaci se tento druhý znak dostane na první místo a znak "x" na poslední. A právě ten druhý znak nyní rozhoduje o pořadí řádku, čili o pořadí znaku "x" v posledním sloupci. Tento princip platí stejně i pro i-tý výskyt znaku "x". Obecně lze nalézt dva postupy zpětné rekonstrukce. Postup BWT je nejlépe patrný z následující interaktivní flash prezentace. Postup rekonstrukce označený jako BWT je původní variantou navrženou autory. Detailní popis je možné naleznout v základním dokumentu autorů, který je dostupný jako technical report SRC-RR-24 na linku společnosti HP CodeExamples7.swf Burrows-Whelerova transformace. [online] non-commercial project by Graphic&Media Lab. Compression Links Info URL: 25 Compression-Links.info Team 26 Radomil MATOUŠEK

42 Jak lze rozdělit kompresní metody z hlediska zachování informačního obsahu komprimovaného souboru? Co je to kompresní poměr? Jak zní Morseův princip? Jaká je maximální velikost počítadla u metody potlačení nul? Jaké varianty RLE komprese znáte? Kde se tato komprese používá? Jak a pomocí čeho je definován nejkratší kód? Demonstrujte Huffmanovu konstrukci binárního i obecně n-arního kódu. V tomto kontextu se vyjádřete ke Kraftově nerovnosti. Popište Fanovu-Shannonovu konstrukci. Vede tato konstrukce k minimálnímu kódu a proč? Jaké dva stěžejní kompresní algoritmy jsou využity u programu BZIP2 a proč jsou použity? Jaký je základní princip slovníkových metod komprese? Popište princip BW transformace a alespoň jeden způsob inverzní BW transformace. Uveďte použití. Jsou MTF a BWT kompresní algoritmy? Lze použít bezztrátové kompresní metody pro komprimaci multimediálních dat? Pokud ne tak proč? Pokud ano tak uveďte příklad. Vysvětlete, proč u dalších redukcí není potřeba v Hoffmanově konstrukci zjišťovat počet sčítanců (začněte od ternálního kódu). Kolik znaků musí mít kódová abeceda, jestliže chceme najít prefixový kód průměrné délky slova <,6 pro následující zdrojovou abecedu (dvojice znak/pravděpodobnost): A/,22; B/,5; C/,2; D/,; E/,; F/,8; G/,6; H/,5; I/,5; J/,4; K/,. Pro předchozí případ Hoffmanovy konstrukce na binární abecedě realizujte Fanovu-Shannonovu konstrukci a srovnejte KN a průměrnou délku slova. Na slově sasanka demonstrujte BWT transformaci. kvizkomprese.swf Malý test vědomostí.. 4

43 METODY KÓDOVÁNÍ. Bezpečnostní KÓDOVÁNÍ detekční a korekční kódy Equation Section (Next) Země se vzdaluje a kolem létají hvězdy, náhle začne někdo mluvit tajemným hlasem: Asi jen málokdo ví, že ve vesmíru je ještě jedna úplně stejná sluneční soustava jako ta naše. A tedy i naše země má své zrcadlo. Na této zemi se dějí události ve stejnou dobu a čas jako u nás, ale s drobnými odchylkami, protože jejich systém má při přenosu informací chyby, které si označuje jako -X- a zapisuje do své databáze. Chyby jsou detekovány a podle možností opraveny. Systém tyto chyby kontroluje programem pomocí tzv. kontrolního metru. Ten program se jmenuje "METR X" Bezpečnostní kódování (protichybové kódování, detekční a korekční kódování) je užito pro přenos informace reálným přenosovým kanálem, tj. kanálem, kde může dojít k ovlivnění přenášené informace vlivem chyby (šum, ztráta informace). Smyslem bezpečnostního kódováni je detekovat, případně i přímo opravit vzniklou chybu. Možné chybě čelíme zavedením přídavné informace k přenášeným datům. V dalším budeme uvažovat pouze typ chyby, která vznikne změnou vyslaného znaku za jiný, tj. příjemce obdrží jiný znak, než odesilatel původně vyslal. Bezpečnostní kódy uměle zvyšují redundanci, za účelem zabezpečení informace před možnými chybami. Základní myšlenka použití bezpečnostních kódů je velmi jednoduchá - původní znaky se podle přesně definovaných pravidel transformují na znaky jiného typu (např. osmibitové znaky se přidáním jednoho paritního bitu převedou na devítibitové). Teprve ty se pak skutečně přenesou a příjemce si je převede zpět do jejich původního tvaru. Bezpečnostní kódy jsou v zásadě dvojího typu, a to: detekční kódy - error-detection codes, které umožňují pouze rozpoznat (detekovat), že přijatý znak je chybný, a korekční kódy, resp.: samoopravné kódy - self-correcting codes, které kromě detekce chyby umožňují i opravu chybně přeneseného znaku, takže jej není nutné přenášet znovu (což u detekčního kódu obecně nutné je). Jak může kód objevovat či opravovat chyby? Tak, že k původní informaci přidává další, která z hlediska zprávy sice nenese novou informaci, ovšem informačně postihuje strukturu původní nezabezpečené informace. Po takovémto zvýšení redundance je možné v případě chybného přenosu detekovat vzniklou chybu, případně jí i opravit. Typickým příkladem redundantního zdroje, který v tomto kontextu má charakter zabezpečení, je běžná řeč. 26 Radomil MATOUŠEK 5

44 Opakkvání je matka moudrosti. Máš pravdu, já Ti rozumím ;-) Příkladů, kdy je nutné, aby vysílající i přijímající strana mluvili o stejné věci, je celá řada. Přestože v dalším budeme pojednávat o způsobech bezpečnostního kódování v rámci digitálně reprezentované (bitově reprezentované) informace, uveďme ještě jeden příklad zabezpečení vzniklý umělým přidáním redundance, který se velmi osvědčil při komunikaci, která je zatížena rušením. Bez dalšího komentáře: Baravo Charlie Delta Písmeno Český výraz Mezinárodní výraz A Adam Alfa B Božena Bravo C Cyril Charlie D David Delta E Emil Echo F František Foxtrot G Gustav Golf H Helena Hotel I Ivan India J Josef Juliet K Karel Kilo L Ludvík Lima M Marie Mike N Neruda November O Otakar Oscar P Petr Papa Q Quido Quebec R Rudolf Romeo S Svatopluk Sierra T Tomáš Tango U Urban Uniform V Václav Victor W Wiliam Whiskey X Xaver X-Ray Y Ypsilon Yankee Z Zuzana Zulu Poznámka: Nutno upozornit, že hláskovací výrazy nejsou voleny náhodně, ale byly vybrány na základě seriozních pokusů se statistickým vyhodnocením chyb. 6

45 METODY KÓDOVÁNÍ... OBJEVOVÁNÍ CHYB Dále budeme do odvolání pracovat s blokovým kódem K na nějaké konečné abecedě T. Množina všech slov délky n je {...,,2,..., } n T tt 2 tn ti T i n = =. (.) n Pokud délka všech slov v kódu K je rovna n, potom K T a slova množiny T n dělíme na kódová slova (v K) a nekódová slova (v T n -K). V reálném kanále vysíláme kódová slova a přijímáme slova z množiny T n. Pokud přijmeme nekódové slovo, říkáme, že jsme detekovali chybu. Pokud jsme přijali kódové slovo, pak je buď vše v pořádku, nebo jsme chybu nedetekovali. Mluvíme o t-násobné chybě (t =,2,, ), jestliže počet chybných míst je nejvýše t. Tedy například ze slova může dvojnásobná chyba vytvořit slovo ale i. Kód K objevuje t-násobné chyby, jestliže při vyslání kódového slova a vzniku t-násobné chyby je přijaté slovo vždy označeno jako nekódové. Neboli, pro každé slovo v v 2 v n kódu K a každé jiné slovo w w 2 w n takové, že pro nejvýše t indexů i platí v i w i, je w w 2 w n nekódové slovo. Konstrukce kódu dva z pěti. Kód dva z pěti. Jde o binární kód délky 5, tedy K {,} 5, který je tvořen množinou slov obsahujících právě dvě jedničky. D=2 kód detekuje (objevuje) jednoduché chyby. 5 Počet kódových slov je = 2 využití, např. kódování cifer. dva z pěti dva z pěti Tab..: Kód dva z pěti. Poznámka : Srovnejte s kódem dle tabulky Tab..2. Poznámka 2: Tyto kódy se označují jako tzv. izokódy. Typickou vlastností je konstantní počet a, což je vlastně vnitřní parita. Kolik kódových slov bude mít kód z 7? Vypište několik kódových slov tohoto kódu. Speciálním případem izokódů jsou tzv. ekvidistantní kódy. Základní odlišnost spočívá v tom, že obsahují i nulovou složku a Hammingova vzdálenost (kap..2.) libovolných dvou kódových slov je konstantní. Navrhněte ekvidistantní kód 2 z Radomil MATOUŠEK 7

46 .2. Konstrukce opakovacího kódu. Opakovací kód. Pro případ velkého šumu můžeme každý znak abecedy T n-krát opakovat. Například ternární opakovací kód délky 5 má kódová slova,, D=n kód detekuje (n-) násobné chyby a koriguje t násobné pro t<n/2. Konstrukce opakovacího kódu. Sudá parita; též kód celkové kontroly parity. Jedná se o nejznámější a hojně užívaný bezpečnostní kód. Kód náleží do skupiny detekčních kódů, tj. D=2 kód detekuje (objevuje) jednoduché chyby. Princip spočívá v přidání jednoho, tzv. paritního bitu k původnímu nezabezpečenému slovu. Tento bit zajistí, že v zabezpečované sekvenci bude sudý počet jednotkových bitů, a tedy výsledek mod 2 bude. Pro 4 prvkový blokový kód máme prvky informační a jeden zabezpečující. paritní bit informace Tab..2: Sudá parita..2. Hammingova vzdálenost a geometrická interpretace.2.. HAMMINGOVA VZDÁLENOST Hammingova vzdálenost δ H dvou slov v v 2 v n a w w 2 w n je definována jako počet odlišných znaků těchto slov, tj. velikost množiny {i i=,2,,n, v i w i }. VÁHA w kódové složky je dána počtem jedniček v kódové složce. Nejvyšší vahou je pak myšlen jedničkový bit umístěný nejvíce vlevo. Minimální kódová vzdálenost (kódová vzdálenost) D, blokového kódu K, je spočtena jako minimální Hammingova vzdálenost mezi dvěma různými kódovými složkami. Kódová vzdálenost je důležitou charakteristikou kódu z hlediska jeho zabezpečující schopnosti proti chybám. S rostoucím D se zvyšuje zabezpečovací schopnost kódu, bohužel roste též jeho redundance. unikostka.swf minkodvzd.swf Praktická ukázka interpretace Hammingovi vzdálenosti. Praktická ukázka interpretace Hammingovi vzdálenosti. 8

47 METODY KÓDOVÁNÍ.4 Výpočet Hammingovi vzdálenosti. 2 4 Poznámka: K výpočtu byla užita operace sčítání modulo 2, označovaná jako. Tato operace je ekvivalentní odčítání modulo 2. Pro praktickou realizaci je použita logická operace XOR. Aritmetiku mod 2 demonstruje následující tabulka. Tab..2: Tabulka operace sčítání modulo Geometrická interpretace Uspořádanou posloupnost prvků kódové složky můžeme považovat za souřadnice bodu v n-rozměrném euklidovském prostoru. Danou kódovou složku můžeme tedy znázornit jako bod v prostoru..5 Znázornění tříprvkového kódu pomocí jednotkové krychle. Plná kolečka reprezentují platné kódové složky. Obr..: Jednotková krychle a geometrická interpretace kódu. Určete kódovou vzdálenost v tomto příkladu a odpovězte kolikanásobnou chybu je kód schopen odhalit. Je prezentovaný kód schopen korigovat chybu? O jaký kód by se mohlo jednat? Ověřte kódovou vzdálenost v příkladu. Hammingovu vzdálenost dvou kódových složek můžeme geometricky interpretovat jako počet hran krychle kterými je třeba projít na cestě vedoucí od jedné složky ke druhé. 26 Radomil MATOUŠEK 9

48 Poznámka : Hammingova vzdálenost je metrikou na množině T n všech slov délky n. δ = a b. (.2) H i i i Poznámka 2: Blokový kód minimální kódové vzdálenosti D objevuje t-násobné chyby pro všechna t < D, ale není schopen objevit všechny D-násobné chyby. To znamená, že pokud v kódovém slově změníme t znaků, potom: a) nevznikne kódové slovo, jestliže t D-, b) může vzniknout kódové slovo jestliže t = D... Zabezpečující schopnost kódu Jak již bylo řečeno, vyslaná kódová složka A i může být v důsledku rušivých vlivů E v přenosovém kanálu přijata jako složka B j : B j = A i E. Počet chybných prvků t v přijaté kódové složce je roven vzdálenosti mezi přijatou a vyslanou kódovou složkou. t = w( E) = w( A B ) = δ ( A, B ). (.) i j H i j.6 A = se vlivem chyby změní na B =, pak t =..7 Chyba v t prvcích (t-násobná chyba) určité kódové složky mění její vzdálenost od všech složek kódu o t jednotek. K některým se o t jednotek přibližuje, od jiných se o t jednotek vzdaluje. Vliv D na detekci, respektive korekci chyb. Pro D = a t = Vznik nedetekovatelné chyby. D = 2 Lze detekovat všechny jednoduché chyby. D = Lze detekovat všechny trojnásobné chyby a navíc korigovat jednonásobnou chybu.... DETEKČNÍ SCHOPNOST KÓDU Aby bylo možné detekovat chyby násobnosti t d a menší, nesmí již uvnitř ani na povrchu koule o poloměru td ležet žádný jiný vrchol n-rozměrné jednotkové krychle, odpovídající platné kódové složce. Cestu po hranách n-rozměrné jednotkové krychle, která je ve skutečnosti lomená, lze pro jednoduchost zobrazit jako přímku: A i A j t d D td+ Obr..2: Detekční schopnost kódu. Kód který je schopný detekovat t d chybných prvků musí mít kódovou vzdálenost D t d +. 4

49 METODY KÓDOVÁNÍ..2. KOREKČNÍ SCHOPNOST KÓDU Pravděpodobnost výskytu chyby klesá s rostoucí násobností chyby za předpokladu, že výskyty chyb v jednotlivých prvcích kódové složky jsou vzájemně nezávislé. Při příjmu nepoužité (chybné) kódové složky je možné proto předpokládat, že s největší pravděpodobností byla vyslána ta platná kódová složka, která má od přijaté nejmenší vzdálenost. Kód schopný korigovat (opravit) t c chybných prvků musí mít kódovou vzdálenost D 2t c + pro lichá D a D 2t c + 2 po sudá D. Detekční schopnost: D t d + Korekční schopnost pro D lichá: D 2t c + pro D sudá: D 2t c + 2 Tab..: Nerovnosti pro výpočet detekční a korekční schopnosti kódu. unikostka2.swf Praktická ukázka detekční a korekční schopnosti kódu..8 Kód dvourozměrné kontroly parity (křížové parity), též iterační kód. Jde o významný kód, který vznikl jako kombinace dvou kódů celkové kontroly parity. Informační znaky zapíšeme do matice (p,q). Kódová vzdálenost D = 2*2 = 4 koriguje jednonásobnou chybu t c. parita řádků křížová parita parita sloupců Obr..: Princip zabezpečení bloku dat pomocí křížové parity. Poznámka: Jak uvidíme dále, kód celkové kontroly parity i kód křížové parity patří ke kódům lineárním. Lineární kódy jsou pro teorii zabezpečovacích kódů nejvýznamnější. Příkladem nelineárního kódu je pak například inverzní kód. krizovaparita.swf Předvedení křížové parity pro zvolený blok binárních dat..9 Inverzní kód Vysílaná kódová složka se opakuje beze změny, je-li v informační části sudý počet nul. V případě lichého počtu nul v informační části se po informační části vyšle její inverze. Kódová vzdálenost tohoto kódu je D = 4. Může tedy korigovat jednonásobnou chybu. Princip je patrný z následující tabulky. 26 Radomil MATOUŠEK 4

50 znak Kódová složka G L X vysláno: přijato: překódováno: proces korekce: Místo chyby v informační části Místo chyby v zabezpečovací části Tab..4: Princip kódování a dekódování pomocí inverzního kódu. CodeExamples7.swf Inverzní kód.... DEKÓDOVÁNÍ n Dekódování je libovolné zobrazení δ : T K (.4) Poznámka : Dekódování není inverzní postup ke kódování informačních znaků. Poznámka 2: V případě bezpečnostních kódu mluvíme o dekódování odstraňující chyby, tj. zobrazení (.4)...4. INFORMAČNÍ ZNAKY U některých kódů můžeme rozdělit znaky na informační (lze libovolně zvolit) a kontrolní (jsou plně určeny volbou informačních znaků). Definice (kódování informačních znaků): n Nechť K T je blokový kód délky n. Jestliže existuje prosté zobrazení ϕ množiny všech k slov délky k na množinu všech kódových slov. ϕ : T K, řekneme, že kód K má k informačních znaků a n-k kontrolních znaků. Zobrazení ϕ se nazývá kódování informačních znaků.. Opakovací kód (délky 5). informačních znaků k=; kontrolních znaků n-k=4 Kódování informačních znaků ϕ : T K definujeme předpisem ϕ ( v) = vvvvv. Koktavý kód, každý znak se dvakrát opakuje. má polovinu informačních a polovinu kontrolních znaků Například pro n=6 Kódování informačních znaků ϕ : T K definujeme předpisem ϕ ( vvv 2 ) = vvvvvv

51 METODY KÓDOVÁNÍ Definice (systematičnost kódu): n Blokový kód K T se nazývá systematický, jestliže existuje číslo k<n takové, že pro každé slovo v v k v T k existuje právě jedno kódové slovo v v k v k+ v n. Kódování k ϕ : T K definované předpisem ϕ(v v k ) = v v k v k+ v n se nazývá systematické..2 opakovací kód lineární, systematický k= sudá parita lineární, systematický k=n- koktavý kód lineární, není systematický Poznámka : Minimální vzdálenost D systematického kódu nemůže překročit n-k kontrolních znaků o více než jeden. Poznámka 2: Problémem je obvykly požadavek: přenést mnoho informace a opravit velký počet chyb. D n k + (.5) kompromis Poznámka : je důležitý i způsob jakým se opravy realizují speciální třídy kódů INFORMAČNÍ POMĚR je poměr informačních znaků ke všem znakům. k R = (.6) n 26 Radomil MATOUŠEK 4

52 .4. LINEÁRNÍ KÓDY Základní myšlenkou teorie bezpečnostních kódů je zavedení algebraických operací sčítání a násobení na abecedě T, takže se T stane tělesem a T n n-rozměrným lineárním prostorem. Blokový kód K délky n je lineární, jestliže tvoří lineární podprostor prostoru T n. Poznámka : Pro tyto kódy lze užít mocný algebraický aparát. Poznámka : Běžné kódy jsou lineární. Poznámka : V dalším výkladu se spíše omezíme na binární kódy, tj. T = {,}. Operace logického součtu a součinu jsou definovány následovně a tvoří na množině {,} těleso: Tab..5: Příklad tří druhů kódování stavu teploty vody.. Vyjádření binárních kódů rovnicemi. Sudá parita v+ v v n = (.7) Opakovací kód v+ v2 =, v+ v =, v+ v n = Koktavý kód v+ v2 =, v + v4 =, vn + vn = Poznámka 4: Z lineární algebry víme, že všechna řešení homogenní soustavy lineárních rovnic o n neznámých tvoří lineární prostor, tedy podprostor prostoru T n. To znamená, že řešením je i:. součet dvou řešení v+ w = ( v+ w, v2 + w2,, vn + wn) 2. skalární násobek tv = ( tv, tv2,, tv n ) Definice (lineární kód): Binární kód K se nazývá lineární, jestliže je podprostorem lineárního prostoru {,} n, tj. jestliže součet dvou kódových slov je kódové slovo. Je-li K podprostorem dimenze k, mluvíme o lineárním (n,k)-kódu. Poznámka 5: Dimenze k je ovšem počet prvků libovolné báze. Například celý prostor {,} n má dimenzi n, protože má bázi: e = e2 =. e = n 44

53 METODY KÓDOVÁNÍ Poznámka 6: Kód celkové kontroly parity je (n,n-)-kód, jeho báze je například: b b b 2 = = n+ = Každé slovo b i má dvě jedničky a je tedy dle (.7) kódovým slovem. Slova jsou lineárně nezávislá (po oddělení poslední jedničky tvoří bázi prostoru {,} n- ) Každé slovo v v 2 v n sudé parity je součtem těchto slov. Poznámka 7: Každý lineární (n, k)-kód má k informačních a n-k kontrolních znaků. KONTROLNÍ MATICE KÓDU: Je-li binární kód popsán soustavou homogenních lineárních rovnic, potom matice H této soustavy se nazývá kontrolní maticí kódu. Slovo je označeno jako kódové, pokud je splněna následující podmínka: T T Hv = K, = vv 2 vn v v (.8) Řadu binárních kódů lze považovat za lineární podprostory prostoru {,} n. Tyto kódy můžeme stručně popsat jejich bází tj. generující maticí G, nebo jejich kontrolní maticí H. Poznámka 8: Dimenze kódu je rovna počtu informačních znaků..4.. Stručná teorie lineárních binárních blokových kódů Lineární kódy zaujímají v teorii kódování velmi významné místo. Výklad jejich teorie vyžaduje znalosti algebry těles a lineárních prostorů. K této podkapitole uveďme, že není pro studium dalších částí textu nevyhnutelná a je pouze rozšiřující! Přesto, je hloubavému čtenáři doporučena, včetně prostudování dalších uvedených zdrojů literatury. Poznámka : Pro připomenutí uveďme že těleso je zhruba řečeno algebraická struktura se sčítáním a násobením, splňující všechny vlastnosti prototypu těles množiny reálných čísel. Tento prototyp je dán velkým počtem axiomů, tak velkým, abychom mohli v každém tělese počítat a nemuseli přemýšlet nad tím, jaké úpravy ještě lze provést. Mnohem horší je ověřování, že určitá algebraická struktura všechny tyto axiomy splňuje. Poznámka 2 (Konečné těleso): V teorii kódování hrají roli jen konečná tělesa, u nichž není třeba axiomy ověřovat stačí znát jednoduchý popis všech těles. Konečné těleso je v podstatě určeno počtem svých prvků, což je mocnina prvočísla. Počet těchto prvků je řád tělesa. Tyto tělesa se označují jako Galoisova tělesa a značí se GF(q), v našem případě prezentovaných binárních kódu se bude jednat o GF(2) 26 Radomil MATOUŠEK 45

54 Další stručný výklad této podkapitoly budeme dělat tak, aby bylo zřejmé, že předpoklad binárnosti kódu není vždy podstatný a některé úvahy mohou být rozšířeny na libovolné jiné abecedě Y {,..., p } = (pro odlišení použito značení Y místo jinak pro abecedu uváděného T). Základem je, že binární abecedu Y = {,} můžeme chápat jako těleso se sčítáním + podle modulu 2 a obyčejným násobením. Tak jak je patrné z tabulky Tab..5. n Y je potom lineární prostor nad tělesem Y. Lineárním kódem K délky n nazveme n každý lineární podprostor prostoru Y. Lineární podprostor K má jistou dimezi k a právě tolik bázových vektorů (v našem případě jsou tyto vektory kódovými slovy). Tyto vektory můžeme napsat jako řádky nějaké matice G typu k n. Všechny vektory prostoru K (tj. všechna kódovaná slova) je možno obdržet jako lineární kombinace řádků matice G. Jeden z možných zápisů lineárního kódu K je tedy způsob pomocí matice G, kterou nazveme vytvářející, či generující maticí kódu. Zkoumejme nyní vektory prostoru k podprostoru K, dimenze Y n kolmé na K. Tyto tvoří nulový prostor n k s vytvářející maticí H s rozměrem ( n k) n. Protože pro T všechny v K platí v H = (nulový vektor), můžeme matici H (resp. H T ) nazvat kontrolní maticí kódu K. Kontrola, zda slovo v patří do K anebo ne, se provede pomocí již vzpomínaného součinu vektoru v s transponovanou maticí H T matice H. Pokud je výsledkem součinu nulový vektor, tak v K, když je nenulový, tak v K. Následující jednoduchá věta je jednou ze základů algebraické teorie kódů detekujících a opravujících chybu. Věta: Nechť K je kód a H je vytvářející matice nulového prostoru ke K. Potom když v K a ρ ( v,) = m ( je nulový vektor), tak existuje m lineárně závislých sloupců matice H. Naopak, když v H existuje m závislých sloupců, tak existuje v K, pro které ( v ) < ρ, m. Důkaz: Sloupce matice H jsou řádky matice H T T, pro které platí v H =. Protože ρ ( v,) = m, obsahuje v právě m nenulových složek; nechť jsou to i -ta,, i m -ta. Ty jsou potom nenulovými koeficienty lineární kombinace i -tého,, i m -tého sloupce, které se rovnají nulovému vektoru, a tedy i -tý,, i m -tý sloupce jsou lineárně závislé. Naopak, když i -tý,, i m -tý sloupce jsou lineárně závislé, musí existovat koeficienty v i,, v i m lineární kombinace těchto sloupců, která se rovná nenulovému vektoru, přičemž alespoň jeden z koeficientů je rozdílný od nuly. Když potom vezmeme v,, v za složky vektoru T v a ostatní složky zvolíme nulové, platí pro vektor v, že v H =, takže v K a navíc < ρ v, m. ( ) i i m 46

55 METODY KÓDOVÁNÍ Poznámka : Když ( K) m ( m ) -tice sloupců jsou nezávislé. ρ =, tak v H existuje m lineárně závislých sloupců, ale všechny Poznámka 2: Je též zřejmé, že záměnou pořadí složek kódových slov kódu K, tedy záměnou pořadí sloupců ve vytvářející matici G, se nezmění ρ ( K ), a teda ani schopnost kódu K detekovat a opravovat chyby. Pro dimenzi k kódu K můžeme tedy předpokládat, že právě prvních k sloupců matice G je lineárně nezávislých. Potom vhodným lineárním kombinováním řádků matice G (které můžeme při lineárním kódu K provést) dostaneme bázi a k ní odpovídající matici G ve tvaru b2 b n k G = b2 b2 n k. (.9) bk b kn k Ek B Tedy G= ( E k,b), kde E k je jednotková matice s k řádky. Libovolné kódové slovo je lineární kombinací s koeficienty a,, a k bázových vektorů (řádku matice G), a proto musí mít tvar a, a2,..., ak, ai pi, ai pi2,... ai pin k. (.) i i i Stačí, když se budeme věnovat jen těmto kódům, tj. kódům, u kterých slova mají prvních k míst informačních a zbývajících n k kontrolních (tj. jsou jen lineární kombinací prvních k míst). Takový kód pak nazveme systematickým kódem. Když máme systematický kód K s vytvářející maticí = ( ) G E B, potom T vytvářející matice H nulového prostoru ke kódu K má tvar = (, n k) potom skutečně platí k, H B E protože T B,..., G H = ( EkB) =. (.) E n k,..., Tedy H je vytvářející matice nulového prostoru právě ke kódu K a ne k žádnému většímu podprostoru..4 Mějme n 2 je libovolné, k = n. G = ( En, ), a tedy H =..., T B En k Jde o kód s kontrolou parity, protože pro libovolné slovo (... n ) a a a, a tedy ( a + a ) = ( a a ) n = n + n 2 n a a K platí.... Při binárním kódování tento kód vždy odhalí jednu chybu, při jiném jen když chyba naruší paritu. 26 Radomil MATOUŠEK 47

56 .5 Mějme dánu matici G, resp. H. Jaká slova jsou kódová? G = H = Celý kód K potom obsahuje následujících 6 slov: a platí ρ( K) ρ ( v ) = min, = (v každém nenulovém slově jsou alespoň tři jednotky). v K,v Kód K opravuje jednu chybu například když ve slově k 6 = dojde k chybě na druhém místě a přijmeme v =, jediné slovo v K, které se od v liší jen na jednom místě je právě k 6. Pomocí kontrolní matice H identifikujeme chybu T T takto: mělo by platit v H = (skutečně platí k 6 H = ), ale po výpočtu jsme obdrželi T v H = (,, ), nesouhlasí tedy první a druhá kontrola. Přitom první kontrolní číslice je součet., 2. a. číslice, druhá., 2. a 4. a třetí.,. a 4. číslice. V prvních dvou kontrolách je a ve třetí není 2. číslice, v ní musí být chyba, a tedy nulu na 2. místě třeba nahradit jednotkou. T Když na místo k 6 přijmeme w H =,,. Chyba w =, dostaneme ( ) je jen v druhé kontrole, a to proto, že druhá kontrolní číslice je chybná a tedy je třeba jedničku na 6. místě nahradit nulou..6 Vytvořte systematický kód K s vytvářející maticí = ( ) chyby. G E B, který opravuje dvě 2, Kód má opravovat 2 chyby, tedy pro všechny G = ( E, B 2 ), T = (, n 2) v K, v musí platit ( ) ρ v, 5. Když H B E musí být n 6, ale když v řádcích G musí být alespoň 5 jednotek, v řádcích B musí být po 4 jednotkách, přičemž všechny čtveřice sloupců v T H = B E musí být nezávislé, tedy n 7. (, n 2) 48

57 METODY KÓDOVÁNÍ 26 Radomil MATOUŠEK 49 Jedno možné řešení pro 8 = n. = H = G = K Ján Černý Entropia a informácia v kybernetike Alfa, 98, Bratislava, SK Malá, ale velmi šikovná knížka. Kniha je psána v matematickém duchu a velmi srozumitelnou formou uvede čtenáře do problematiky dle názvu. Thomas M. Cover, Joy A. Thomas Elements of INFORMATION THEORY (second edition) Wiley, 26, New Jersey, USA, ISBN Obsáhlá kniha zahrnující jak velmi důkladně prezentovanou teorii informace, tak i některé přináležející partie teorie kódů. Kniha obsahuje množství důkazů a doprovodných příkladů. Pojetí knihy je hlavně teoretické. Pro rozvoj vědomostí tzv. matematické informatiky je tato kniha vhodnou studijní potravou. Jaroslav Blažek a kol. Algebra a teoretická aritmetika SPN, 98, Praha, CZ Klasická vysokoškolská učebnice algebry. Je psána pro studium tj. slušně. Pozn.: jinak psané knihy se zde nesnažím ani doporučovat.. Otakar Borůvka Gruppy Matematické spisy Masarykovi university, 957, Brno, CZ Fantasticky napsaná kniha o algebře. Pokud hodláte proniknout k pojmům jako teorie grup, izomorfizmus aj. tak neváhejte. Doporučil bych druhé vydání této knihy. Jiří Adámek Kódování SNTL, 989, Praha, CZ Dle mého názoru asi nejlepší vstupní kniha do světa kódů. Monografie žádném případě nepostrádá matematického ducha a přitom neodradí čtenáře z technicky zaměřené vysoké školy.

58 .5. GENERUJÍCÍ MATICE Lineární (n, k)-kód má celkem q k kódových slov, protože kódová slova můžeme vyjádřit jejich k souřadnicemi ve zvolené bázi a každá souřadnice má q možných hodnot. Kód je q- znakový, jestliže abeceda T (těleso) má počet znaků q. GENERUJÍCÍ MATICE: Lineární (n, k)-kód s k je určen svojí (libovolnou) bází b,b 2,,b k. Pokud napíšeme těchto k slov (bází) pod sebe, vznikne tzv. generující matice daného kódu G. G= [ b b b ] T (.2) 2 k Matice G typu (n,k) je generující maticí lineárního kódu, jestliže každý její řádek je kódovým slovem, každé kódové slovo je lineární kombinací řádků, řádky jsou lineárně nezávislé, takže hodnost matice G je rovna k..7 Binární kód celkové kontroly parity v délce n=4, má následující generující matici: G =. KÓDOVÁNÍ INFORMAČNÍCH ZNAKŮ Jestliže zvolíme generující matici G, tj. bázi kódu b,b 2,,b k, je každé kódové slovo určeno svými k souřadnicemi v této bázi. k To znamená, že zobrazení ϕ : T K k definované předpisem ϕ ( uu 2 uk) = ub+ u2b2+ + ukbk ( uu 2 uk T ) (.) k nebo maticově ϕ ( u) = ug ( u T ), je prosté zobrazení množiny všech slov délky k na množinu všech kódových slov. Je to tedy kódování informačních znaků dle definice kódování informačních znaků. SYSTEMATICKÝ KÓD Systematické kódy jsou ty lineární kódy, které mají generující matici tvaru G= [ E B ], (.4) 5

59 METODY KÓDOVÁNÍ kde E je jednotková matice řádu k a platí, n k 2 2, n k [ uu u ] = [ uu uv v ] b kde v=v k+ v n je vektor v=ub. b b 2 k 2 k k+ n b b b k k, n k, (.5) Věta (ekvivalence lineárních kódů): Každý lineární kód je ekvivalentní se systematickým lineárním kódem. Poznámka: Důkaz předchozí věty dává návod, jak hledat ekvivalentní systematický kód: v generující matici přehodíme sloupce tak, aby první k sloupce byly lineárně nezávislé. Tento postup ukážeme na příkladu D5..8 Kód má následující generující matici: G =. Kód zjevně není systematický. Přehodíme-li druhý a pátý sloupec, tj. provedeme-li permutaci π = [, 5,,4, 2,6], dostaneme následující generující matici G ' = systematického kódu K', ekvivalentního s koktavým kódem. Kódová slova kódu K' jsou všechna slova u u 2 u u u u 2. Přehodíme-li druhý a třetí řádek matice G', dostaneme jinou generující matici kódu K': G' = [ E B ] =. Věta (kódová vzdálenost systematického (n,k) kódu): Kódová vzdálenost D lineárního systematického (n,k) kódu je rovna váze jeho nejlehčí nenulové složky. 26 Radomil MATOUŠEK 5

60 Stačí, ke zjištění D, použít tuto větu pouze na řádky matice G? Poznámka: Každý binární lineární kód obsahuje buď jen slova sudé váhy (váhou je myšlen počet nenulových znaků ve slově), nebo stejný počet slov sudé i liché váhy. Kolik slov sudé váhy a kolik liché váhy má následující lineární kód? Jakou má kódovou vzdálenost? G =.6. KONTROLNÍ MATICE Definice (kontrolní matice): Kontrolní matice lineárního kódu K je taková matice H z prvků abecedy T, pro kterou platí: slovo v = v v 2 v n (v T n ) je kódové, právě když splňuje následující podmínku. = T T Hv K, = vv 2 vn v v (.6) Věta (vztah matic G a H): Lineární kód s generující maticí = [ ] H B E, kde T G Ek B má kontrolní matici = ' n k B T je transponovaná matice B a E' n-k je jednotková matice. Nalezněte kontrolní matici kódu celkové parity..6.. DUÁLNÍ KÓD Na prostoru T n definujeme obvyklým způsobem skalární součin pro libovolná dvě slova u = u u n a v = v v n. u b = uv + uv + + uv (.7) 2 2 n n.9 Pro těleso Z 5 2 bude platit: * = + =. n Definice (duální kód): Duální kód lineárního kódu K T je kód K u u 2 u n v T n, která mají s každým slovem v K skalární součin roven nule. T n všech slov 52

61 METODY KÓDOVÁNÍ Tedy: u K,právě když u v = pro v K (.8) Věta (dualita kódu): Duální kód K lineárního (n,k) kódu K má n k informačních znaků, a je tedy (n,n-k) kódem. Generující matice kódu K je kontrolní maticí kódu K (a naopak)..2 Jaký bude duální kód opakovacího kódu délky 5? K řešení tohoto příkladu se podívejte na kód celkové kontroly parity..2 Pokračování příkladu.8. = [ ] = G' E B T H' = n k B E = Nyní provedeme inverzní permutaci a obdržíme: H ' = formální úprava '' = H KONSTATOVÁNÍ: koktavý kód je tzv. samoduální kód, tj. platí K = K, u tohoto typu kódu je generující matice zároveň maticí kontrolní PRINCIP ZABEZPEČENÍ (dekódování pomocí syndromu) Bezpečnostní kódování informace odpovídá vztahu (.5), dále tedy: Vyslaný zabezpečený kód: [ V ] = [ I ] [ G ] (.9) reálný kanál informace Generující matice kódu Přijatý kód s možnou chybou: [ P ] = [ V ] [ E rr ] (.2) Musí platit (.6), pokud ne, je pravá strana označována jako tzv. syndrom chyby [ S ], protože platí: [ S ] T = [ H ] [ P ] T = [ H ] ([ V ] T [ E ] T ) = [ H ] [ V ] T [ H ] [ E ] T = [ H ] [ E ] T (.2) T 26 Radomil MATOUŠEK 5

62 Vlastnost: Syndrom chyby S udává svými prvky polohu chybného místa v kódové složce..22 (7,4)-kód, přijaté slovo:. Vyjádřete syndrom chyby. matice H = T Hp = = Syndrom chyby S odpovídá šestému sloupci matice H, tedy opravíme šestý znak v přijaté kódové sekvenci..7. PERFEKTNÍ KÓDY slovo Má-li binární kód x K n T minimální kódovou vzdálenost D 2t +, pak pro každé n T existuje nejvýše jedno kódové slovo ve vzdálenosti t od x. Jinak řečeno, n tzv. kombinatorické koule se středem x a poloměrem t, B( xt, ) = { z T d( xz, ) t}, jsou pro různá x K disjunktní. Odtud dostaneme horní odhad pro velikost takového kódu. Počet prvků ve vzdálenosti i od středu x je n nad i (protože vybíráme neuspořádanou i-tici souřadnic, ve kterých x změníme). Tedy Bxt (, ) Tuto hodnotu nazveme objem koule B(x,t) a dále označíme V(n,t). Věta (Hammingův odhad): Pro binární kód o minimální kódové vzdálenosti alespoň 2t+ platí t n = i= i. (.22) n 2 K (.2) V ( n, t ) Definice (perfektní kód): Binární kód je označen jako perfektní, pokud pro něj platí rovnost v Hammingově odhadu..2 Ověřte, že opakovací kód liché délky a totální kód (kód tvořený všemi slovy nad T n ) je perfektní. 54

63 METODY KÓDOVÁNÍ.8. HAMMINGOVY KÓDY Hammingovy kódy tvoří významnou třídu kódů, které opravují jednoduché chyby. Kódy se snadno dekódují a jsou tzv. perfektní, tj. mají nejmenší myslitelnou redundanci. Hammingův binární kód s m kontrolními znaky (m=2,,4, ) má délku 2 m -, takže dostáváme binární (2 m -, 2 m m - )-kód, tj. (,2)-kód, (7,4)-kód, (5,)-kód, atd. Poznámka: Informační poměr roste rychle k, například pro kód délky 2 6 -=6 je informační poměr (6-6/6)>,9. Definice (Hammingův kód): Binární kód se nazývá Hammingův, jestliže má kontrolní matici, jejíž sloupce jsou všechna nenulová slova dané délky a žádné z nich se neopakuje. Věta H: Binární lineární kód opravuje jednoduché chyby, právě když sloupce jeho kontrolní matice jsou nenulové a navzájem různé. Věta H2: Hammingovy binární kódy jsou perfektní kódy pro jednoduché opravy. Tato vlastnost je charakterizuje, tj. každý perfektní binární kód pro jednoduché opravy je Hammingův kód..24 Pro m= dostáváme Hammingův (7,4)-kód. permutace sloupců H = 7,2 6,4 5 H' G' G Hamming.swf CodeExamples7.swf Systematická varianta Hammingova (7,4)-kódu. Nesystematická (HW) varianta Hammingova (7,4)-kódu..8.. Princip rozšíření kódu Rozšířený HAMMINGŮV KÓD je binární kód, vzniklý rozšířením Hammingova kódu o znak celkové kontroly parity. Je to tedy (2 m,2 m m - )-kód všech slov vv 2 v2 m takových, že vv 2 v m 2 je kódové slovo Hammingova kódu a v m = v 2 + v2 + + v m 2. Poznámka: Minimální vzdálenost Hammingova kódu je a minimální vzdálenost rozšířeného Hammingova kódu je 4. Princip ROZŠÍŘENÍ KÓDU (extension) spočívá v přidání znaku celkové kontroly parity ke každému řádku kontrolní matice a dále doplnění řádku jedniček. Tzn., že z (n,k)-kódu K vytvoříme (n+,k)-kód K všech slov v v 2 v n v n+ takových, že platí 26 Radomil MATOUŠEK 55

64 vv v K a v = v + v + + v (.24) 2 n n+ 2 n Kontrolní matice rozšířeného kódu má pak tvar: H * H = kontrolní bity sudé parity Poznámka : Původní kontrolní rovnice tedy zůstávají (ovšem bez proměnné v n+ ) a navíc přibývá rovnice v + v v n + v n+ =. Poznámka 2: Jestliže má binární kód K minimální kódovou vzdálenost D, má rozšířený kód minimální kódovou vzdálenost D+, pro D liché a D, pro D sudé..25 Zrealizujte rozšíření (7,4)-kódu (tj. zrealizujte (8,4)-kód). H = Poznámka: KONSTRUKCE KÓDOVÝCH SLOV H(8,4)-kódu: Rozšíříme kanonický tvar kontrolní matice H(7,4) dle (.24) na H(8,4). K tomu abychom získali generující matici je třeba provést algebraické úpravý vedoucí na kanonický tvar, tj. na systematickou variantu Hammingova kódu. Úprava spočívá v přičtení prvních tří řádků ke čtvrtému..26 Sestavte generující matici rozšířeného Hammingova (8,4)-kódu (systematického i nesystematického) a na základě vlastností matic H a G učiňte závěr. H = α β γ γ β α p H = G ' = Protože dimenze obou kódů je 4, stačí ověřit, že skalární součin libovolných dvou řádků je roven. 56

65 METODY KÓDOVÁNÍ.9. GOLAYOVY KÓDY Golayovy kódy patří k nejvýznamnějším binárním kódům a to ve variantě G 2 a rozšířené G 24. Kód G 2 je spolu s Hammingovým a opakovacím kódem jediným perfektním binárním kódem. Kód G 2 má 2 informačních a kontrolních znaků. Tyto kódy zavedeme opět pomocí matice G. Golayův kód: Golayovy kódy zavádíme jako systematické binární kódy délky 2 a 24. Levou polovinu generující matice tvoří matice jednotková. Pravá polovina sestává ze čtvercové matice B, doplněné o řádek v případě G 2 a dále o sloupec v případě G 24. G2 = E B G2 = E B (.25) Matice B vznikne cyklickými posuvy svého prvního řádku, tj. slova B o jednu pozici doprava. b b b2 b b4 b5 b6 b7 b8 b9 b B = (.26) Poznámka : Toto slovo má jedničku na místě i =,,, právě když je i čtvercem modulo, tj. pro 2 mod, 2 mod, 2 2 mod, atd. Poznámka 2: Kód G 24 je samoduální, tj. G 24 = G24. Případný důkaz: Stačí ukázat, že skalární součin dvou libovolných řádků matice G 24 je nulový, tj. radek i * radek j =. Potom totiž lineární prostor G 24 je podprostorem duálu G 24, a protože dimenze duálu je 24 2 = 2 (stejná jako dimenze prostoru G 24 ), plyne odtud G 24 = G24. Věta: Golayův kód G 2 je perfektní pro opravy trojnásobných chyb. Poznámka: Minimální vzdálenost G 2 kódu je 7 a rozšířeného G 24 kódu je 8. Věta (Tietäväinenova a Van Lintova): Jediné netriviální perfektní binární kódy jsou tyto: a) Hammingovy kódy pro jednoduché chyby, b) Golayův kód pro trojnásobné chyby a kódy s ním ekvivalentní, c) opakovací kódy délky 2t+ (pro t-násobné chyby), kde t =,2,,. 26 Radomil MATOUŠEK 57

66 .. CYKLICKÉ KÓDY Cyklické kódy, též CRC, patří k velmi rozšířené skupině lineárních kódů. Přes svoji relativní jednoduchost konstrukce skýtají mocný a aplikovatelný prostředek v protichybovém zabezpečovacím procesu. Matematická teorie cyklických kódů je založena na popisu vlastností konečných těles. Specifickou vlastností těchto kódů je vlastnost, podle které se též nazývají. Tato vlastnost spočívá v tom, že cyklickým posunem platné kódové složky vzniká opět platná kódová složka. Definice cyklických kódů je tak vzhledem k dalekosáhlým důsledkům překvapivě jednoduchá. Definice (Cyklický kód): Lineární kód se nazývá cyklický, jestliže pro každé kódové slovo je také kódovým slovem. Cyklickým posunem platné kódové složky vzniká opět platná kódová složka. v v v n- [V ] = [ v v 2 v n- v n ] v n- v v v n-2 [V 2 ] = [ v 2 v v n v ] Kódová slova můžeme zapisovat jako polynomy, přičemž každý polynom je pouze jiným zápisem kódového slova: v v v n- v + v x + + v n- x n- (.27) Poznámka: Indexy zde píšeme od nuly z dále zřejmých důvodů..27a Příklad manipulace se sloven v abecedě {,,2}, např. pro: 2.. Mějme slovo v abecedě {,,2}, např.: Pak můžeme psát toto slovo dle (.27) jako polynom 2 + x 2 + x 4.. Cyklickým posunem vznikne slovo Tedy polynom 2x + x + x 5 = x(2 + x 2 + x 4 ). 5. Což je x-násobek původního polynomu. 6. Dalším cyklickým posuvem vznikne slovo Tedy polynom 2x 2 + x 4 + x 6 = x 2 (2 + x 2 + x 4 ) atd. Poznámka : Ukazuje se tedy, že pro každé kódové slovo zapsané jako polynom v(x), jsou i všechny násobky p(x)v(x) kódová slova. Existuje jediné kódové slovo, tzv. generující polynom, které vytváří celý kód, jelikož kódová slova jsou všechny násobky generujícího polynomu. 58

67 METODY KÓDOVÁNÍ Z definice generující matice víme, že tyto polynomy tvoří bázi kódu. Pro generující polynom g(z) (n,k)-kódu K tedy platí: ) Stupeň polynomu g(z) je n-k. 2) Kód K sestává ze všech násobků polynomu g(z) v prostoru T n, tedy: n { ( ) ( ) ( ) } K = q z g z q z T. ) Polynom g(z), z.g(z),..., z k-.g(z) tvoří bázi kódu K. 4) Polynom g(z) dělí polynom z n - beze zbytku. U cyklických kódů můžeme také kontrolní matici nahradit kontrolním polynomem: hz ( ) = ( z n )/ gz ( ) Pro každý polynom v(z), pro který platí: vz ( ) hz ( ) = splňuje kontrolní matice podmínku.27b pokračování předchozího příkladu. T T H v =. 8. V tomto příkladu uvažujeme lineární prostor T 7, máme zde operaci sčítání a násobení polynomů, tj. naše algebraická struktura se velmi obohatila, místo pouhého násobení vektoru skalárem zde můžeme násobit dva vektory (ve smyslu obvyklého součinu dvou polynomů). 9. Ale je tu ALE : co když je součin dvou polynomů polynom stupně vyššího než 6?. Provedeme další posun, tj x + x 5, který již bohužel není součinem x (2 + x 2 + x 4 ), protože tento součin obsahuje člen x 7.. Nic však není ztraceno : Při cyklickém posunu se koeficient u x 7 přemístí na nulté místo vektoru (místo s indexem ). 2. Místo polynomu x (2 + x 2 + x 4 ) = 2x + x 5 + x 7 dostáváme polynom + 2x + x 5. Tato úprava je možná, protože platí x 7 =. Poznámka 2: Cyklické kódy délky n tedy budeme popisovat jako polynomy stupně < n, které sčítáme a násobíme obvyklým (u polynomů) způsobem, až na to, že pokládáme x n = (a tedy x n+ = x, x n+2 = x 2, atd.). V tomto duchu bychom mohli pokračovat hluboko nad rámec tohoto kurzu. Přes algebru polynomů a faktorové okruhy bychom se postupně dostali k zavedení generujícího a kontrolního polynomu cyklického kódu. Dále se tedy budeme zabývat praktickou stránkou užití CRC kódů a budeme předpokládat, že generující polynomy jsou již dány, například následující tabulkou. 26 Radomil MATOUŠEK 59

68 Generující mnohočlen r (n,k)-kód G (x) = x+ (7,6) G 2 (x) = x +x+ (7,4) G (x) = x +x 2 + (7,4) G 4 (x) = (x+) (x +x+) 4 (7,) G 5 (x) = (x+) (x +x 2 +) 4 (7,) G 6 (x) = (x +x+) (x +x 2 +) 6 (7,) Tab..6: Tabulka generujících mnohočlenů. Cyklický (n,k) kód je kód, jehož kódové složky lze vyjádřit mnohočleny stupně n- a méně, jež jsou dělitelné bezezbytku generujícím (vytvořujícím) mnohočlenem G(x) stupně r = n - k. Dále dvojčlen x n + musí být dělitelný G(x) beze zbytku. Označme I(x) mnohočlen jenž reprezentuje přenášenou informaci s k prvky. Postup zabezpečení je pak následující. Každý mnohočlen I(x), vyjadřující nezabezpečenou informaci, se nejprve násobí členem x r, tj. I'(x) = I(x) x r, čímž se stupeň každého členu polynomu I(x) zvýší o r. To je ekvivalentní připsání r nul na konec kódové složky [I]. Potom se I'(x) dělí generujícím mnohočlenem G(x): r I '( x) I( x) x R( x) = = Qx ( ) Gx ( ) Gx ( ) Gx ( ) Dělením vznikne podíl Q(x) a zbytek R(x), který může být nejvýše stupně r. Úpravou dostáváme: r r I( x) x = Q( x) G( x) R( x) nebo také I( x) x R( x) = Q( x) G( x), protože v aritmetice modulo 2 se odčítání shoduje se sčítáním. Pravá strana tohoto vztahu zajišťuje dělitelnost I(x) x r R(x) beze zbytku. Levá část tvoří zabezpečenou složku n- prvkového kódu: V( x) = I( x) x r R( x) Zbytek po dělení R(x) tedy určuje zabezpečující prvky. Do přenosového kanálu se vysílají nejprve informační prvky a za nimi prvky zabezpečující. Poznámka : Vlastní realizace dělení generujícím polynomem je snadno realizovatelná pomocí dvou binárních sčítaček a tří posuvných registrů (pro Hammingův (7, 4)-kód): Obr..: Hardwarová realizace dělení generujícím polynomem g(z) = z + z + 6

69 METODY KÓDOVÁNÍ Do obvodu vstupují koeficienty polynomu u(z) = u z 6 + u z u 6 a vystupují koeficienty podílu q(z) = q z 6 + q z q 6. Po vystoupení posledního koeficientu zůstávají v registrech koeficienty zbytku r(z) = r 2 z 2 + r z + r..28 Pro demonstraci zabezpečení přenosu CRC kódem použijeme (7,4) kód s generujícím mnohočlenem dle tabulky Tab..6 G 2 (x) = x +x+. Určovat zabezpečení budeme pro binární sekvenci [I] = [] reprezentovanou mnohočlenem I(x) =. I(x) nejprve násobíme členem x r = x, tedy I'(x) = x = x, což představuje doplnění kódové složky [I] třemi nulami: [I'] = []. Nyní vydělíme I'(x) generujícím mnohočlenem G (x): I '( x ) :( ) x + = + + = + G x x x x x x ( ) + + Zbytek R(x) = x+ tvoří redundantní část, takže vyslaná složka V(x) bude: V( x) = I'( x) + R( x) = x + x+, tj. [V] = []. Generující matici cyklického (7,4) kódu můžeme zapsat v maticovém tvaru následovně: [ G] = Uvedený kód je schopen detekovat všechny jednoduché a dvojnásobné chyby nebo korigovat všechny jednoduché chyby. Správnost přenosu lze na přijímající straně ověřit dělením polynomu P(x) přijaté kódové složky generujícím mnohočlenem G(x): r Px ( ) Ix ( ) x + Rx ( ) Ex ( ) = = Gx ( ) Gx ( ) Ex ( ) Rp( x) = Qx ( ) = Qx ( ) Mx ( ) Gx ( ) Gx ( ) Jestliže mnohočlen chyby E(x) není dělitelný polynomem G(x) beze zbytku, pak zbytek R p (x) indikuje chybu přenosu. Zbytek R p (x) je roven nule v případě bezchybného přenosu, tj. E(x) = nebo je-li mnohočlen E(x) dělitelný G(x) beze zbytku, čímž chyba v tomto místě zůstane nezjištěna. Poznámka 4: U počítačových sítí typu Ethernet se používá zabezpečení cyklickým kódem s 2 zabezpečovacími prvky a následujícím generujícím mnohočlenem CRC-2: G( x) = x + x + x + x + x + x + x + x + x + x + x + x + x + x+. CRC.swf Cyklické kódy (práce s polynomy). 26 Radomil MATOUŠEK 6

70 Tood K. Moon Error correction Coding Wiley, 25, New Persey, USA, ISBN Stručně: nejobsáhlejší a snad i nejlepší kniha s problematikou detekčních a korekčních kódů. San Ling, Chaoping Xing Cosiny Tudory Cambridge UP, 24, Cambridge, UK, ISBN Základní kurz teorie detekčních a korekčních kódů. Uveďte způsob jak objevit trojnásobné chyby, při použití kódu dvourozměrné kontroly parity. Opravuje tento kód dvojnásobné chyby? Kolik chyb opraví kód 2 z 5, kde ho můžete naleznout? Najděte dva typy kódů, pro které platí rovnost d = n k+. Jak je definován informační poměr? Pro vámi navržený kód dvourozměrné kontroly parity ověřte, že je lineární. Uveďte příklad nelineárního kódu a dokažte jeho nelinearitu. Napište tabulku operace sčítání v tělese Z. Kolik slov sudé váhy a kolik slov liché váhy má binární kód s následující generující maticí: G = Pro (7,4)-kód ověřte příjem zprávy [], učiňte závěr. Co to znamená, když o kódu prohlásíme, že je perfektní? Uveďte, které to jsou. Předveďte princip rozšíření Hammingova kódu. Napište kontrolní matici rozšířeného Hammingova (6,)-kódu. Proč není tento kód samoduální? Vydělte nad tělesem Z 2 : ( x + x+ )/( x+ ). Generující polynom (7,4)-kódu je vyslané kódové slovo? z + z+, informace je [], jaké bude kvizchyba.swf Malý test vědomostí.. 62

71 METODY KÓDOVÁNÍ 4. Kryptografické KÓDOVÁNÍ - kryptografie Equation Section (Next) Pánové, gentlemani si přece nečtou cizí dopisy. prohlášení na adresu výzvědné služby, tehdy prvního lorda admirality Winstona Churchilla na počátku I. světové války. Kryptografické kódování je kódování mající vztah k utajení informace. Tento typ kódování je často označován jako šifrování. Důvodem pro šifrování je nutnost přenosu citlivých či tajných dat přes nezabezpečené prostředí (přenosový kanál). Takovým prostředím může být např. poštovní kanál, internet, či jiná veřejná datová síť. Šifrování obecně zahrnuje, jak jednoduché postupy známé z rébusů či junáckých her, tak opravdu silné algoritmy k jejichž prolomení by časově při současném stavu poznání nestačilo ani stáří vesmíru. O tom, že informace mohou mít cenu zlata není pochyb, utajení takovéto informace má pak cenu snad ještě vyšší, jak již nejednou historie ukázala. Jeden z důkazů pro takovéto tvrzení může být založen na faktu, že USA uvalily na některé speciální typy kódů vojenské embargo a vládní instituce NSA ukrajuje nemalý finanční obnos z resortu ministerstva obrany. Další důkaz o tom, že šifrování může měnit i dějiny, je slavný případ německého kódovacího stroje ENIGMA. V současnosti se s různými formami utajení informace setkáme běžně, a to například: zašifrovaná hesla pro vstup do OS, kreditní karty jištěné tzv. pinem, zabezpečená komunikace po internetu (SSL), šifrování ů, elektronické platby aj. Následující text, je pouze stručnou informací k tomuto velmi komplexnímu oboru matematické informatiky. Bernard Schneier Applied Cryptography (sekond edition): protocols, algorithms, and source code in C Willey, 986, New York, USA Nebudu přehánět, když tuto knihu prohlásím za základní četbu o kryptografii. Autor knihy je sám autorem známého kryptosystému Blow Fish a některých dalších vylepšení. Kniha pojednává o moderní kriptografii a obsahuje základní matematické dodatky (Eulerova funkce, čínská věta o zbytcích, Fermatova věta a j.) vhodné k pochopení prezentovaných kryptosystémů. [online] Pavel Vondruška Crypto-word.info URL: 26 GCUCMP / Pavel Vondruška Skvělý portál s informacemi o kryptografii. Součástí je kryptografický e-časopis Crypto-World, který vychází cca. x měsíčně a lze si zde zdarma zajistit jeho pravidelné zasílání. Na stránky webu i e-časopisu přispívají mimo jiných následující přední čeští odborníci, dnes i světového ohlasu (metoda hledání kolizí pro MD5) jako například pánové (uvedeno bez akademických titulů): Vondruška, Pinkava, Klíma a Rosa. Simon Singh Kniha kódů a šifer Dokořán / ARGO, 2, Praha, CZ Skvělý překlad knihy The Code Book Simona Singhta, za který můžeme poděkovat Petru Koubskému a Ditě Eckhardtové. Kniha nás provede populárně naučnou formou metodami tajné komunikace od starého Egypta po budoucnost v podobě kvantové kryptografie. Tuto knihu bych doporučil jako první čtení pro zájemce o tento skvělý a jistě dobrodružný obor, jakým kryptografie i kryptoanalýza bezesporu je. 26 Radomil MATOUŠEK 6

72 4.. Názvosloví Kryptografie je věda o šifrování a dešifrování dat za pomoci matematických metod. Tedy v případě textových dat můžeme říci, že se kryptografie zabývá transformací tzv. otevřeného textu (srozumitelný, čitelný text, angl. plain text) na šifrovaný text, tj. šifru, kryptogram (angl. cipher text) prostřednictvím šifrování a transformací šifry na otevřený text prostřednictvím dešifrování. Ideální kryptosystémy podporují následující bezpečnostní vlastnosti, a to: utajení, autentizace a integrita dat, nepopiratelnost. S pojmem kryptografie musíme ještě zavést pojem kryptoanalýza. Kryptoanalýza se snaží (bez znalosti, či pouze s částečnou znalostí o klíči) dojít k utajovaným datům (metody zahrnují: čistě vědecké přístupy, hrubou strojovou sílu, hrubou lidskou sílu tzv. pendreková kryptoanalýza). Ke kryptoanalýze je však většinou třeba mnoho analytického myšlení, aplikace matematických metod, hledání cestiček, trpělivosti a štěstí. Kryptografie a kryptoanalýza spolu tvoří jeden obor nazývaný kryptologie. Definice (kryptografický systém): Kryptografický systém je petice {M,C,K,E,D}, kde M je konečná množina otevřených textů (prostor textu), C je konečná množina možných šifer (prostor šifer), K je konečná množina možných klíčů (prostor klíčů), E je množina šifrovacích funkcí (pravidel, šifrovacích algoritmu), D je množina dešifrovacích funkcí (pravidel, dešifrovacích algoritmu). Poznámka : Stručně systém, který nám umožní šifrovat a dešifrovat, označíme jako kryptografický systém. Poznámka 2: Užívané pojmy kryptografický systém a kryptosystém můžeme ztotožnit. Silné šifry jsou takové, které dokáží odolat všem kryptoanalytickým metodám, kromě útoku hrubou silou. Slovo dokáží vyjadřuje fakt, že bezpečnost systému je založena na řešení silného (NP-úplného) matematického problému. Obranou proti útoku hrubou silou je obecně zvětšení délky klíče, aby se vyčerpávající prohledávání uskutečnilo v čase, který není realizovatelný nebo je výpočetně neproveditelný v potřebném čase. Obecně jsou za silné šifry považovány kvalitní symetrické šifry s délkou klíče nad 7 bitů a u asymetrických šifer typu RSA s délkou klíče nad 7 bitů. 64

73 METODY KÓDOVÁNÍ 4... Steganografie Steganografie (z řečtiny: steganós-schovaný, gráphein-psát) je věda zabývající se utajením komunikace prostřednictvím ukrytí zprávy. Jedná se tedy o metody ukrývání zprávy jako takové. Často může být kombinována s kryptografií. Do této skupiny patří různé metody maskování jinak viditelné informace. V moderní době lze tajné texty ukrývat například do souborů s hudbou či obrázků namísto náhodného šumu Substituční šifry Substituční šifra obecně nahrazuje každý znak zprávy otevřeného textu jiným znakem podle nějakého pravidla. Aby příjemce získal otevřený text, musí na zašifrovaný text použít inverzní substituci. V klasické kryptografii existují čtyři typy substitučních šifer: Monoalfabetická substituční šifra (jednoduchá substituční šifra), ve které se každý znak otevřeného textu nahradí příslušným znakem šifrovaného textu. Homofonní substituční šifra se podobá jednoduché substituční šifře, avšak jeden znak otevřeného textu může byt nahrazen jedním z několika možných znaků šifrovaného textu. Znak A by mohl být nahrazen např. 5,, nebo 25, B např. 6 nebo 5. Počet znaků zašifrovaného textu pro jeden znak otevřeného textu se může lišit. Polygramová substituční šifra je ta, ve které šifrování probíhá mezi skupinami znaků. Skupina AA může být nahrazená skupinou JH, AB skupinou DK atd. Polyalfabetická substituční šifra sa skladá z několika jednoduchých šifer, které se postupně pro jednotlivé znaky otevřeného textu střídají Transpoziční šifry Transpozice spočívá ve změně pořadí znaků podle určitého pravidla. Například tak, že otevřený text je zapsán do tabulky po řádcích a šifrový text vznikne čtením sloupců téže tabulky. 4. Transpoziční mřížka. Ve čtverci n n políček je vystřižených n n/4 políček tak, aby při postupném otáčení o 9 stupňů vzniklé otvory vždy ukazovaly na volné místo k vepsání textu. Tento typ šifry použil Jules Verne ve své knize Matyáš Sandorf (Nový hrabě Monte Christo). Fleissnerovu otočnou mřížku, poprvé popsal Fleissner Von Wostrowitz v roce 88. playfair.swf Demonstrace šifry Play Fair. 26 Radomil MATOUŠEK 65

74 4.2. Historické poznámky Následující text nepředstavuje výčet všeho, co je možné nazvat historií kryptografie (zde můžeme doporučit například referenci: Kniha kódu a šifer, Simona Singhla). Text má pouze naznačit jak se vývoj šifer ubíral do doby vývoje metod, které teď označujeme za moderní kryptografii. Jak ale víme, vše je relativní a kvantová kryptografie, či jiné postupy jsou již jistě za dveřmi (možná za vašimi, možná je na nich cedulka NSA) Kryptografie Řecka a Říma První pokusy o utajení obsahu zpráv jsou známé již ze starého Egypta a Mezopotámie. Jednalo se o nejprimitivnější systémy, které spočívaly v nějaké mírné, zpravidla neobvyklé úpravě písma. Takovéto malé změny zcela postačovaly, protože již samotná znalost písma byla v té době jistým druhem šifrování. Ze staré Indie jsou známy metody utajení informace uvedené ve známé učebnici erotiky Kámasútře. Kořeny skutečné kryptologie jsou spjaty až s dějinami Řecka. Téměř každá učebnice šifrování začíná popisem toho, jak Řekové pro utajení zpráv používali následující: oholili svému poslu hlavu, napsali na jeho lebku vzkaz a když mu vlasy opět narostly, mohl se vydat na cestu (odesílatelem zprávy byl Histiaeus a zprávu napsal na hlavu svému oddanému otroku, který ji takto dopravil do Milétu a pomohl tak ke koordinaci povstání proti Peršanům). Takto uvedený způsob utajení informace je označován jako steganografie, a je ho zajisté užíváno dodnes. Řekové však neskončili jen u utajování přenosu zpráv, ale dokázali vyvinout skutečné šifrové systémy. Sparťané, nejbojovnější z Řeků, vymysleli a prokazatelně používali již v pátém století před naším letopočtem zařízení na utajení zpráv. Tento systém představuje nejstarší známé kryptografické zařízení a skládá se ze dvou holí ("skytale" nebo někdy psáno "scytale") přesně stanovené šířky (šířka = symetrický klíč zařízení), na prvou hůl se navinul pás látky, papyru nebo pergamenu. Na tento materiál se potom napsala zpráva. Pás s textem se sejmul a posel (komunikační systém) jej odnesl na místo určení. Tam byl pás látky navinut na druhou hůl a zpráva mohla být přečtena. Tento systém šifrování by se dnes označil jako transpoziční šifra. Obr. 4.: Princip Řecké skytaly. CodeExamples7.swf Jednoduše prezentovaný princip transpoziční šifry skytale 66

75 METODY KÓDOVÁNÍ Řecký spisovatel Polybius zase vynalezl systém signalizace, který byl později převzat jako další základní kryptografická metoda. Seřadil písmena do čtverce a jejich řady a sloupce očísloval. Každé písmeno je tak reprezentováno dvěma čísly: číslem řady a číslem sloupce. Polybiův čtverec (šachovnice), který umožňuje převod písmen na číslice, se stal základem mnoha dalších šifrových systémů. Římané nepřevzali tyto systémy od Řeků, vydali se vlastní cestou. Kolem přelomu našeho letopočtu prokazatelně zavedli vojenskou kryptografii. Zprávy mezi legiemi nebyly zasílány otevřeně, ale pomocí záměny otevřeného textu za šifrový text. Julius Caesar vypráví o využití těchto systémů v "Zápiscích o válce galské". Známý životopisec Suetonius pak dokonce prozrazuje, jak systém přesně vypadal. Každé písmeno zprávy bylo zaměněno za písmeno, které leželo o tři místa dále v abecedě. Tento systém by jsme dnes označili jako substituční monoalfabetická šifra. Kryptografie ve starém Římě se stala naprostou samozřejmostí. Mimo podobných záměn se ještě používalo vkládání kódů pro jména osob, zemí apod Caesarova šifra Jedná se o tzv. substituční monoalfabetickou šifru. Z hlediska názvosloví moderní kryptografie by jsme doplnily, že realizovaný kryptosystém je tzv. symetrický kap. 4.. Algoritmus šifry je realizován tak, že všechna písmena ve zprávě se posunou o tři pozice v abecedě dopředu. Například slovo CAESAR by se šifrovalo jako FDHVDU. Algoritmem šifry je zde posun písmen a heslem (tajným klíčem) je číslo. Obr. 4.2: Princip Caesarovy substituční šifry. 4.2 Nalezněte informace o šifře označené jako ROT CodeExamples7.swf Ceasarova substituční monoalfabetická šifra Temný středověk Skutečná kryptologie se zrodila teprve díky vynikajícím arabským matematikům, kteří jako první objevili a popsali metody kryptoanalýzy (rok 855 n.l. Abú Bakr Ahmad). Na práce arabských matematiků a kryptologů navázala středověká Evropa. Významným představitelem evropské kryptografie byl benediktinský opat Johannes Trithemius (452-58). Kolem roku 5 napsal první významnější evropskou knihu o šifrování. Trithemius se zabýval převážně substitučními systémy. Zavedl a doporučoval vkládání klamačů do šifrového textu. Jednalo se o náhodné vkládání znaků do textu za 26 Radomil MATOUŠEK 67

76 účelem ztížení statistického rozboru. Vrcholem tehdejší doby byl jeho následovník francouzský diplomat Blaire de Vigenere. V 6. století se objevili i první slavní luštitelé. Jedním z největších byl francouzský právník a matematik Francois Viete (54-6), který luštil zašifrované depeše španělského krále a předával je francouzskému panovníkovi Jindřichu IV. Navarrskému. Trvalo několik let, než na to Španělé přišli. Nevěřili, že je možné jejich složitou záměnu rozluštit a žádali Svatou stolici, aby postavila Vieta před soud, protože musí být spojen s ďáblem. Poznání, že výsledné šifrové texty lze na základě statistických metod luštit, vedlo ke zdokonalování šifrových systémů. Neboť spolehnutí na nedokonalý systém mohlo stát i život, viz. např. popravená skotská královna Marie Stuartovna ( ). Stuartovnou užívaný šifrovací monoalfabetický šifrovací systém rozluštil (frekvenční kryptoanalýza) a tím i její ortel zpečetil Thomas Phelippes. Kryptoanalytikové měli v té době navrch a to i přes to, že už dávno před tím se Leonu Battistovi Albertimu podařil objev tisíciletí s názvem polyalfabetická šifra. Ten však svůj objev nikdy nerozvinul a přenechal tak pomyslnou pochodeň dalším pokračovatelům, byli to Johanes Trithemius, Givanni Portay a konečně Blaire de Vigenere, francouzský diplomat se zcela praktickým zájmem o kryptografii Vigenerova šifra Síla Vigenerovy šifry spočívá v tom, že k zašifrování zprávy nepoužívá jednu, ale 26 odlišných šifrových abeced. První šifrovací krok spočívá v tom, že se vytvoří tzv. Vigenerův čtverec, což je otevřená abeceda následovaná 26 šifrovými abecedami, z nichž každá je vůči předchozí posunuta o jedno písmeno. První řádek tedy odpovídá šifrové abecedě s Caesarovým posunem. Řádek 2 odpovídá šifrové abecedě s Caesarovým posunem 2 a tak dále. Nejvrchnější řádek čtverce reprezentuje otevřený text. Každé jeho písmeno lze zašifrovat kteroukoliv z 26 šifrových abeced. Pokud například použijeme abecedu 2, pak písmeno A šifrujeme jako C, použijeme-li abecedu 2, šifrujeme ho jako M. Podstata Vigenerovy šifry však spočívá v tom, že se pro zakódování každého písmene použije jiný řádek čtverce, tedy jiná šifrová abeceda. Jinými slovy, odesílatel může zašifrovat první písmeno zprávy pomocí řádku 5, druhé podle řádku 4, třetí řádkem 2 a tak dále. Aby příjemce získal zpět čitelný text, musí vědět, kterým řádkem Vigenerova čtverce šifroval odesílatel každé písmeno zprávy, musí tedy existovat předem dohodnutý systém, podle něhož se řádky střídají. Toho lze dosáhnout pomocí klíčového slova - klíče. 4. Postup jak prostřednictvím Vigenerova čtverce zašifrujeme krátkou zprávu: divert troops to east ridge (odkloňte jednotky k východnímu hřebenu), heslo je: WHITE. Jako první krok napíšeme heslo nad text zprávy opakovaně, tolikrát, kolikrát je třeba, abychom ji pokryli celou. Z otevřeného textu odstraníme mezery. Pak šifrujeme následujícím způsobem: k zašifrování prvního písmene, jímž je d, se nejprve podíváme, jaké písmeno klíče se u něj nachází. Je to W, čímž je dán řádek Vigenerova čtverce, 68

77 METODY KÓDOVÁNÍ v daném případě řádek 22, jenž začíná právě písmenem W. V průsečíku sloupce označeného d a řádku označeného W najdeme písmeno Z, což je první písmeno hledaného šifrového textu atd. Klíčové slovo: W H I T E W H I T E W H I T E W H I T E W H I Otevřený text: d i v e r t t r o o p s t o e a s t r i d g e Šifrový text: Z P D X V P A Z H S L Z B H I W Z B K M Z N M Vrcholem Vigenerovy práce byl jeho Traicté des chiffres (Traktát o šifrách), publikovaný roku 586. Ironií osudu jej vydal téhož roku, kdy Thomas Phelippes prolomil šifru Marie Stuartovny. Vzhledem k tomu, o jak silný šifrovací prostředek šlo, zdálo by se přirozené, že se rychle rozšíří do šifrovací praxe po celé Evropě. Stal se však opak: Vigenerova šifra se neujala. Tento zjevně dokonalý systém byl opomíjen po celá dvě následující století. Vigenere.swf Vigeneruv substituční polyalfabetický šifrovací systém Vzestup kryptografie válka a telegraf První světová válka přivedla na svět první masové použití šifrování v polních podmínkách. Podnětem k rozvoji kryptologie nebyla jen válka jako taková, ale i rozšíření bezdrátového telegrafu. Např. samotný vstup USA do války byl důsledkem vyluštění obsahu šifrového telegramu dnes známého jako tzv. Zimmermannův telegram, kde německý ministr zahraničí Zimmermann v telegramu mexické vládě vyzývá Mexiko k válce proti USA. Slibuje v ní mexické straně podporu a územní zisk. Britové telegram zachytili, rozluštili jej a předali USA. Poté, co se prezident Wilson s obsahem telegramu seznámil, svolává Kongres. Ten schvaluje vstup USA do války proti Německu. První světová válka vychovala i prvního z velikánů kryptografie dvacátého století. Stal se jím William Frederic Friedman (89-969), který v roce 95 nastoupil dráhu úspěšného kryptologa v americké armádě a vybudoval pro USA vzorně fungující kryptoanalytickou službu. Opravdovou biblí všech kryptologů prvé poloviny dvacátého století se stalo jeho čtyřsvazkové dílo "Základy kryptoanalýzy" z roku 92. Nové vyzbrojování ve třicátých letech se tedy nesoustředilo jen na vývoj zbraní, ale i na výrobu šifrovacích zařízení. V Německu bylo sestrojeno snad nejznámější šifrovací zařízení všech dob legendární ENIGMA, ale i řada dalších důmyslných zařízení, např. kryptografické zařízení LORENZ nebo poněkud slabší zařízení Kryha. Svá řešení vyvíjelo i Japonsko, USA (Sigaba, Hagelin C-8, M-29), Anglie a další státy, které se připravovaly k válce. Jména tvůrců těchto kryptografických zařízení jsou Edward H. Hebern, Hugo Koch, Arvid Gerhard Damm, Alexandr von Kryha, Gilbert Vernam, Boris Hagelin a další. Druhá světová válka prověřila kvalitu přichystaných šifrovacích zařízení. Zní to až neuvěřitelně, ale s odstupem času, kdy byly příslušné materiály postupně odtajněny, se ukázalo, že většinu tehdy používaných šifrových systémů se podařilo druhé straně prolomit a příslušné zprávy z těchto kanálů využívat. Utajení před veřejností bylo dokonalé. V zájmu neprozrazení, že v Bletchley Parku (hrabství Buckinghamshire) luští zprávy z 26 Radomil MATOUŠEK 69

78 Enigmy, nezabránil W.Churchil rozbombardování Coventry. Vzhledem k luštění zpráv předávané Enigmou a i Lorenzem o chystaném náletu předem věděl, ale dlouhodobé strategické využívání zpráv z těchto zdrojů postavil nad životy tisíců lidí z tohoto anglického města. Cesta k prolomení tehdejších systémů již nebyla jednoduchá na luštění se podíleli nejlepší matematici a pro účely luštění zařízení Enigma a Lorenz byly postaveny první stroje, které můžeme dnes nazvat počítače. Úplný popis zařízení Colossus, které sloužilo k luštění zpráv kryptografického zařízení Lorenz, byl například uvolněn teprve v květnu roku 2. Jiným příkladem kryptografického systému bylo využití indiánů kmene NAVAJO u americké námořní pěchoty k předávání tajných zpráv rádiem. Kódovou řeč, kterou Indiáni předávali ve své mateřštině, se Japoncům nepodařilo odhalit. Američané tento způsob s úspěchem použili ještě ve válce v Severní Koreji a dokonce i v 6. letech ve Vietnamu. Veřejnost byla o úspěchu těchto Indiánů informována až koncem šedesátých let a úplná kódová kniha byla uvolněna k publikování teprve roku 999. Druhá polovina dvacátého století je charakteristická 2 pracemi od Claude Elwood Shannona. V časopise Bell Systém Technical Journal v roce 948 a 949 otiskuje články "Matematická teorie sdělování" a "Sdělovací teorie tajných systémů". Prvý z článků dal vznik teorii informací, druhý článek pojednával o kryptologii v termínech informační teorie. Pojetí nadbytečnosti (redundancy) je hlavním termínem, který Shannon zavedl. Oba články fakticky odstartovaly moderní pojetí matematického zkoumání základů kryptografie a kryptoanalýzy Vermanův kryptosystém Krátce po II. světové válce se začala vyrábět nová kvalitní kryptografická zařízení. Tato zařízení byla zpravidla založena na velice jednoduchém principu, sčítání otevřeného textu s náhodným heslem. Systém navrhl již roku 97 Gilbert Vernam, ale teprve z publikované teorie amerického vědce Shannona vyplynulo, že jediný absolutně bezpečný systém je právě sčítání otevřené zprávy se stejně dlouhým náhodným heslem. Při splnění jistých podmínek, je Vermanův kryptosystém jediným absolutně bezpečným systémem šifrování zpráv. Poznámka : Při objemu dnes předávaných zpráv je tento systém nevyhovující. Jeho význam je v tom, že se jedná o jediný absolutně bezpečný systém. Poznámka 2: Nutné podmínky absolutní bezpečnosti Vermanova kryptosystému: umíme vyrobit náhodné, stejně pravděpodobné heslo (výroba takového hesla byla v 6. letech velkým problémem), máme dostatečně důvěryhodný kanál k transportu hesla na místo určení, korespondence je tak slabá, že nám nevadí velká spotřeba hesla, každé heslo lze použít pouze jednou a je tedy potřeba dodržovat určitá přesně daná pravidla pro zacházení s heslovým materiálem. 7

79 METODY KÓDOVÁNÍ Karibská krize na začátku šedesátých let vyvolala potřebu rychlého a bezpečného spojení mezi USA a SSSR. Obě mocnosti se domluvily na vybudování horké linky mezi hlavami obou států. Pro tuto linku byl zvolen právě Vermanův kryptosystém. Horká linka byla uvedena do provozu Kreml i Bílý dům si vzájemně vyměnily heslové materiály. Otevřené texty se převedly do dálnopisného kódu a sčítaly se s heslovým materiálem, heslová páska byla ihned po použití automaticky ničena, čímž se mělo zamezit jejímu nechtěnému opětovnému použití. Při zavedení tohoto systému se použilo zařízení ETCRRM (Electronic Teleprinter Cryptographic Regenerative Repeater Mixer II) Moderní doba Kryptologie se v sedmdesátých letech rozšířila z uzavřených komunit tajných služeb i do civilního sektoru a začala se stávat součástí světové vědy. Objevily se první významné výsledky. V roce 976 publikovali Whitfield Diffie, Martin Hellman a Ralph Merkle článek o nové závratné myšlence asymetrické kryptologii (dosud šifrové systémy byly systémy tzv. symetrické). Brzy po zveřejnění teoretického schématu asymetrické kryptografie (978), se objevuje první šifrový systém. Vžil se pro něj název RSA (zkratka z prvních písmen tvůrců systému Rivest, Shamir a Adelmann). Tento systém se po malých úpravách (především prodloužení klíče a stanovení jistých pravidel, která musí klíče splňovat) používá dodnes. Na scéně se objevuje první celosvětově uznávaný symetrický algoritmus DES (Data Encryption Standard). Vývoj DES navazuje na vývoj šifrovacího algoritmu Lucifer od Thomase Watsona (IBM). Potřeba standardu jeho vývoj urychluje a DES je v roce 977 v USA přijat za veřejný standard pro ochranu informací, nikoliv však pro ochranu informací utajovaných! DES šifruje text po blocích délky 64 bitů, aktivní délka klíče je 56 bitů, hlavní prvky, které chrání šifrový text před útoky analytiků, jsou tzv. S-boxy. Dalším mezníkem je rok 98 kdy se konala v Santa Barbaře konference věnovaná kryptologii. Konference měla výjimečný ohlas a její další konání pod názvem Krypto trvá dodnes. Vytváří se nezávislá akademická skupina odborníků, kteří v roce 982 zakládají IACR. Koncem osmdesátých a začátkem 9. let se objevuje celá řada dalších symetrických blokových algoritmů FEAL, GOST, IDEA, CAST, BLOWFISH atd. Autoři těchto systémů jsou výrazné postavy z komunity IACR. V ČR se v té době komerčně vyvíjí vlastní šifrovací čip SIC5 (s algoritmem DVK). Současně se zjišťuje, že některé z těchto systémů, ač na první pohled velice podobné svoji strukturou DES, nejsou tak kvalitní a jsou rozbitelné. Japonský FEAL je totálně rozbit. Ale ani DES s délkou klíče pouze 56 bitů nevydržel věčně. V roce 995 se na veřejnost dostává informace, že NSA vlastní stroj, který je schopen DES vyluštit do 5 minut. Toto zařízení sestrojila firma The Harris Corporation. Později bylo komerčně sestrojeno a předvedeno speciální zařízení DES-cracker (998). DES musel být nahrazen jiným standardem. Prozatímně to byl DES (TripleDES). Nyní je novým standardem AES (Advanced Encryption Standard, 2). AES je 28bitová bloková šifra, podporující klíče délky 28, 92 a 256 bitů. Další řada metod se objevila se zavedením technologií elektronických podpisů, jedná se především o tzv. hash MD5 (message digest, otisk délky 28 bitů) a SHA- (Secure Hash Algorithm, otisk délky 6 bitů). Koncem roku 999 přijala evropská komise Směrnici o elektronických podpisech (999/9/EC) v rámci Evropské unie. V ČR byl e- podpis zaveden zákonem 227/2 Sb. (plus: NV 4/2, vyhláška 66/2). 26 Radomil MATOUŠEK 7

80 4.. Symetrické a asymetrické šifrování Základní rozdělení moderních kryptografických metod je možné dle způsobu práce s klíčem, tj. heslem. V zásadě dnes rozeznáváme dva druhy šifrování a to šifrování s tajným klíčem a šifrování s veřejným klíčem. Oba dva jsou pro bezpečnost důležité. Šifrování s veřejným klíčem je výpočetně a matematicky náročnější, ale má aspekty, které je staví na speciální nenahraditelnou pozici. Šifrování se pak dělí na: SYMETRICKÉ ŠIFROVÁNÍ někdy též nazývané konvenční, je takový šifrovací algoritmus, který používá k šifrování i dešifrování jediný klíč. ASYMETRICKÉ ŠIFROVÁNÍ (kryptografie s veřejným klíčem) je skupina kryptografických metod, ve kterých se pro šifrování a dešifrování používají odlišné klíče a to tzv. soukromý a veřejný klíč. DŮLEŽITÉ POJMY: S-Box: jeden ze základních stavebních prvků moderní blokové šifry. V zásadě je to booleovská funkce převádějící binární vektor na jiný binární vektor. Pro kryptografické účely jsou tyto funkce studovány a jsou formulovány takové jejich vlastnosti, které poskytují záruky pro bezpečnost výsledné šifry. Tyto vlastnosti jsou obvykle statistického charakteru (např. tzv. kriterium laviny, anglicky Strict Avalanche Criterion, spočívá v požadavku, že při změně jednoho bitu vstupu do S-boxu se s pravděpodobností jedna polovina změní jednotlivé bity výstupu S-boxu). Jednosměrná funkce: matematická funkce, kterou v jednom směru (přímém) lze snadno spočítat, zatímco v opačném směru (inverzní zobrazení) probíhají výpočty velmi obtížně. Hashovací funkce: Vstupem (jednosměrné) hashovací funkce je blok proměnné délky (zpráva) a výstupem je blok pevné délky (obvykle 28 či 6 bitů) hash [čti heš]. 72

81 METODY KÓDOVÁNÍ 4... Kerckhoffův princip S implementaci moderních kryptografických systémů souvisí pojem dnes chápané bezpečnosti dat. Tento princip vyslovil poprvé před 5 lety pruský důstojník Kerckhoff. Utajení a bezpečnost zašifrovaných dat nesmí záležet na utajení postupu, kterým se šifrují. Naopak, vždy se musí předpokládat, že váš nepřítel zná šifru (algoritmus) do nejmenších detailů. Utajení musí spočívat pouze v klíči (hesle), které nezná nikdo jiný. Tento princip je dnes všeobecně uznáván jako základ úspěšné ochrany dat. Proto se vědci soustředili na vytvoření co nejlepších, veřejně známých šifrovacích postupů (algoritmů), a na ověření toho, že tyto postupy jsou bezpečné. Takovými postupy jsou například symetrická šifra AES či asymetrická šifra RSA. Jejich bezpečnost je ověřena tím, že i přes mnohaletou práci mnoha tisíc vědců se patrně nikomu z nich nepodařilo objevit způsob, jak tyto postupy rozbít. Skutečně kvalitní systém pro ochranu dat je takový systém, jehož vnitřní funkčnost a detaily jsou dobře známy, ale přesto tato znalost ani v nejmenším nepomůže potenciálním protivníkům v jejich zlomení. Příkladem takového systému je například veřejně popsaný protokol TLS. S jeho pomocí jsou chráněny například bankovní operace při Internet bankingu, tedy transakce velké hodnoty. Kriteria hodnocení šifer (C.Shannon, 945): mohutnost nabízeného utajení, délka klíče, jednoduché a rychlé šifrování a dešifrování, šíření chyb, prodloužení zprávy. Dva důležité šifrovací principy (C.Shannon, 945): Konfůze: vyžaduje substituci, aby vztah mezi klíčem a šifrovým textem byl co nejsložitější. Difůze: vyžaduje transformaci, která rozptyluje statistické vlastnosti otevřeného textu napříč šifrovým textem. Diskutované metody prolomení šifer jsou: útok hrubou silou, lineární kryptoanalýza, diferenciální kryptoanalýza, timing attack a velmi efektivní pendreková kryptoanalýza. 26 Radomil MATOUŠEK 7

82 4..2. SYMETRICKÉ ALGORITMY Symetrické šifrování je založeno na principu jednoho klíče, kterým lze zprávu jak zašifrovat, tak i dešifrovat. Příkladem symetrického klíče je známý DES (Data Encryption Standard) vyvinutý v 7. letech v USA a již zmíněný v kapitole Symetrické kódy mají jako hlavní výhodu rychlost algoritmu, algoritmy pro šifrování s veřejným klíčem můžou být i stotisíckrát pomalejší. Na druhou stranu je nutné aby se příjemce i odesílatel dohodli na jednom klíči, který budou znát pouze oni dva. Problémem je tedy distribuce klíče - jak dostat klíč k příjemci aniž by se ho chopil někdo nepovolaný? Obr. 4.: Princip symetrické kryptografie. Symetrické šifry se dále dělí na dva druhy: Proudové šifry zpracovávají otevřený text po jednotlivých bitech. RC4, FISH, Blokové šifry rozdělí otevřený text na bloky stejné velikosti a doplní vhodným způsobe, poslední blok na stejnou velikost. U většiny šifer se používá blok o 64 bitech, AES používá 28 bitů. AES, Blowfish, DES, DES, IDEA, CÁST, RC2, RC5 Stručná charakteristika některých šifer: DES: kryptografický standard. Byl vyvinut firmou IBM v sedmdesátých letech. V roce 977 se stal americkou vládní normou pro šifrování (certifikován NIST National Institute of Standards and Technology - naposledy v roce 99). Široce používán, avšak v současné době ho nelze považovat za perspektivní algoritmus. Snaha o jeho vylepšení má označeni DES (též TripleDES) IDEA: (International Data Encryption Algorithm) je algoritmus s délkou klíče 28 bitů. Pro svou značnou bezpečnost a vysokou rychlost je považován za vysoce kvalitní algoritmus. IDEA je patentována, majitelem patentu je firma Ascom-Tech. Blowfish: algoritmus s proměnnou délkou klíče (2 448 bitů). Blowfish byl navržen v roce 99 a opublikován v roce 994 Bruce Scneierem. 74

83 METODY KÓDOVÁNÍ CAST: CAST, navržený autory Carlisle Adams a Stafford Taverns, je moderní algoritmus (bloková šifra s délkou bloku 64 bitů). Jeho design je velmi podobný algoritmu Blowfish, obsahuje S-boxy závislé na klíči, dále neinvertibilní funkci f a má strukturu Feistelovy šifry. CAST je patentován firmou Entrust Technologies, která ho však postoupila pro volné užití. Skipjack: Jádro kryptografického chipu Clipper. Pomocí klíče v délce 8 bitů je zpracováván blok otevřeného textu o délce 64 bitů. Vyvinut NSA (National Security Agency). Dlouho utajován, na nátlak veřejnosti byl v červnu 998 zveřejněn. Algoritmus obsahuje určitá zadní vrátka umožňující zpětnou rekonstrukci klíče. Pro tuto vlastnost (key recovery - možnost zpětného rozkrytí klíče) byl dosti kritizován. AES: Advanced Encryption Standard - norma blokové šifry. Kandidát této normy musel splňovat tyto minimální požadavky: a) podporovat šifrování bloků o velikosti 28 bitů b) podporovat využívaní klíčů v délkách 28, 92 a 256 bitů Jako vítěz AES byla 26. května 22 prijata šifra Rijndael (998), která je tímto dále označována jako AES. AES je 28 bitová bloková šifra. symetrasymetr.swf Demonstrace principu kryptosystému soukromého i veřejného klíče. Stručný výčet vhodných referenčních odkazů příprava kryptografického standartu (pro blokovou šifru) pro 2.století Peter Gutmann (jeden z nejlépe zpracovaných přehledů webovských stránek týkajících se kryptologie - možná vůbec nejlepší) Tatu Ylönen (bohatý zdroj informací z kryptologické problematiky) politika, legislativa a technologie - Evropa americký kryptografický standart (DES) algoritmus Blowfish algoritmus IDEA algoritmus CAST hashovací funkce SHA- hashovací funkce MD5 hashovací funkce RIPEMD 6 26 Radomil MATOUŠEK 75

84 4... DES (Data Encryption Standard) Kryptoanalytické metody, které je možno užít ke kryptoanalýze jednoduchých kryptosystémů (historické šifry: Césarova i Vingenerova šifra) jsou založeny na tom, že jednoduché šifrovací systémy vytvářejí šifrový text, z jehož statistických vlastností lze dělat jisté závěry. Proto je cílem pokročilých šifrovacích algoritmů transformovat otevřený text rovnoměrně do šifrového textu tak, aby byly šifrové texty stejně pravděpodobné. Teoreticky tuto myšlenku formuloval již C. Shannon (Difůze) a dále ji rozpracoval Horst Feistel při vytváření kryptosystému LUCIFER firmy IBM. Na základě tohoto kryptosystému byl vyvinut a v roce 977 zaveden v USA šifrový standard DES (Data Encryption Standard), který se stal na dvě desetiletí nejrozšířenějším symetrickým kryptosystémem určeným pro digitální přenos dat. DES slouží k šifrování bloků 64 bitů (utajovanou zprávu ve formě bitového řetězce je nutno předem rozdělit na 64-bitové bloky a poslední blok doplnit na 64 bitů). Šifrovací klíč je určen 56 bity existuje tedy celkem 2 56 možných klíčů. Algoritmus DES provádí postupně 6 iterací šifrovacího schématu tvořeného pevně danými substitucemi, transpozicemi a aplikací (v každém iteračním kroku jiného) 48-bitového klíče, který je pro každou z iterací odvozen ze zadaného 56-bitového klíče. Proto je před vlastním šifrováním nutno připravit ze zadaného (56-bitového) klíče K šestnáct 48-bitových klíčů K,, K 6. Při vlastní aplikaci klíče se používá bitová operace (součet modulo 2). V dalším popíšeme zvlášť postup odvozování 48-bitových klíčů (tento postup je obvykle nazýván expanzí klíčů) a vlastní šifrovací funkci. EXPANZE KLÍČŮ: 56-bitový klíč K je zadáván jako 64 bitů (8 bytů), bity č. 8, 6,, 64 slouží jako paritní kontrola. Z klíče je odvozeno 6 klíčů K,, K 6, které jsou postupně využívány při šifrování. Postup odvození klíčů K i (Obr. 4.4) je následující: nejdříve se aplikuje výběrová permutace PC vynechání paritních bitů a transpozice ostatních dle tabulky Tab. 4.. Výsledkem je 56-bitový řetězec PC(K) začínající 57. bitem klíče K, za ním následuje 49. bit klíče K a tak dále, na konci je 4. bit klíče K. Tento 58-bitový řetězec je rozdělen na poloviny po 28 bitech: PC = C D. Pak je v krocích i =,..., 6 provedena v každé polovině určená transpozice (<<<) LS i daný cyklický posun pozic vlevo LS C LS D K = PC2 CD, kde PC2 (Tab. 4.) (Tab. 4.2): C ( ), D ( ). Výsledek: ( ) i = i i i = i i i i i je výstupní výběrová permutace (Subkey), při níž proběhne též zúžení na 48 bitů (není použit např. bit č. 9 řetězce C i D i ) Tab. 4.: Výběrová permutace klíče PC 76

85 METODY KÓDOVÁNÍ Obr. 4.4: Princip odvození klíčů v DES Iterace Posun Tab. 4.2: Velikost levých posunů (<<<) LS Tab. 4.: Permutace klíče PC2. 26 Radomil MATOUŠEK 77

86 Tab. 4.4: Vstupní permutace IP Obr. 4.5: Šifrovací schéma DES (Feistelova struktura) 78

87 METODY KÓDOVÁNÍ ŠIFROVÁNÍ: Schéma šifrování je zachyceno na obrázku Obr Vstupem je šifrovaný 64-bitový blok T (otevřený text) a samozřejmě 6 připravených 48-bitových klíčů K,,K 6. (subkey 48 bitů, Obr. 4.6) Nejprve proběhne vstupní permutace IP (Tab. 4.4), jejímž výsledkem je 64-bitový blok T ( T) = IP začínající 58. bitem bloku T, pak následuje 5. bit bloku T a tak dále, na konci je 7. bit bloku T. Výsledný blok T je poté rozdělen na levou část L (prvních 2 bitů) a pravou část R (zbývajících 2 bitů). Vlastní šifrování se skládá z 6 iterací (tzv. rund běžné označení). Pro i =,..., 6 je vstupem i-té iterace výsledek předchozí iterace T i- tvořený levou částí L i- a pravou částí R i-. Výstupem i-té operace je 64-bitový blok T i, jehož levá část L i a pravá část R i jsou určeny takto: L přemístění pravé poloviny doleva, í = R i i ( R K ) R = L f, výpočet pravé poloviny použití šifrovací funkce f i i i s odvozeným klíčem K i. Obr. 4.6: DES F funkce, Feistelova funkce Šifrovací funkce f (Obr. 4.6) realizuje vlastní aplikaci klíče: Pravá polovina R i (2 bitů) je nejdříve rozšířena podle tabulky expanze (Tab. 4.6) na 48 bitový řetězec E ( R i ). Prvních šest bitů je nyní tvořeno 2.,., 2.,., 4. a 5. bitem řetězce R i, a tak dále; posledních šest bitů tvoří 28., 29.,.,., 2. a. bit řetězce R i. K výslednému 48- bitovému řetězci E ( R i ) je přičten odvozený klíč K i. 26 Radomil MATOUŠEK 79

88 Výsledek je rozdělen na 6-bitové řetězce,..., B8 B tak, že B B2 B8 = E( R i ) Ki... a transformován substitučními tabulkami (tzv. S-boxy) S,...,S8 (viz Tab. 4.5, kde číslo řádku tabulky S-boxu S j je dáno binárně. a 6. bitem řetězce B j, číslo sloupce bitem) Výstupy S-boxů jsou čtyřbitové řetězce ( B ) S ( ) S. Jejich spojením vznikne 2-,..., 8 B8 bitový řetězec, který je nakonec transformován permutací P (Tab. 4.7): f ( R, K ) P( S ( B ) S ( B )) i i = Výsledkem 6 iterací šifrování (rund) je blok R 6L6, který je na závěr transformován pomocí inverzní vstupní permutace ( R L ) IP 6 6. IP (Tab. 4.8) na výstupní šifrový text Sloupec Box řádek S S 2 2 S 2 S 4 2 S 5 2 S 6 2 S 7 2 S Tab. 4.5: S-boxy

89 METODY KÓDOVÁNÍ Tab. 4.6: Expanze Tab. 4.7: Permutace P Tab. 4.8: Výstupní permutace IP - DEŠIFROVÁNÍ Při dešifrování se používá stejný algoritmus jako u šifrování, ale odvozené klíče jsou aplikovány v pořadí K 6, K5,..., K, neboť platí: R L i i = L, i = R i f ( L, K ). i i [online] FIPS Publication 46-2 DATA ENCRYPTION STANDARD (DES) URL: NIST Kompletní popis standardu DES z publikačního archívu NIST. [online] FIPS Publication 46-2 NIST URL: NIST NIST National Institute of Standards and Technology 26 Radomil MATOUŠEK 8

90 4..4. ASYMETRICKÉ ALGORITMY - RSA Asymetrické algoritmy nazýváme též algoritmy s veřejným klíčem. Princip těchto algoritmů je spočívá v tom, že pro každého uživatele existuje dvojice klíčů: veřejný a soukromý (tajný). Veřejný klíč je všeobecně komukoliv dostupný. Tímto klíčem lze pouze zašifrovat zprávu pro určitého uživatele. Soukromý klíč má každý u sebe schovaný a určitým způsobem chráněný proti ukradení (heslem, na čipové kartě, na magnetické kartě). Tímto tajným klíčem lze provádět odkódování přijatých zpráv. Tedy, je-li zpráva pouze pro mě, tak pouze já svým tajným klíčem ji mohu odšifrovat. Asymetrická kryptografie je založena na tzv. jednocestných funkcích, což jsou operace, které lze snadno provést pouze v jednom směru: ze vstupu lze snadno spočítat výstup, z výstupu však je velmi obtížné nalézt vstup. Nejběžnějším příkladem je například násobení: je velmi snadné vynásobit dvě i velmi velká čísla, avšak rozklad součinu na činitele (tzv. faktorizace) je velmi obtížný. Obr. 4.7: Princip asymetrické kryptografie. Je zřejmé, že šifrovací klíč e a dešifrovací klíč d spolu musí být matematicky svázány, avšak nezbytnou podmínkou pro užitečnost šifry je praktická nemožnost ze znalosti šifrovacího klíče spočítat dešifrovací. Matematicky tedy asymetrická kryptografie postupuje následujícím způsobem (m zpráva, otevřený text): Šifrování: c = f(m, e) Dešifrování m = g(c, d) 82

91 METODY KÓDOVÁNÍ Z hlediska bezpečnosti je nutné podotknout, že teoreticky je možné z veřejného klíče u všech algoritmů vypočítat klíč tajný. Ale dosud je to výpočetně neproveditelné. Se současným výkonem počítačů by se jednalo o tisíciletí. Existují návrhy na zefektivnění kryptoanalýzy např. TWINKLE pro RSA, ale pro rozumný počet bitů klíče jsou algoritmy stále bezpečné. Nejvýznamnější představitel této skupiny je algoritmus RSA, který byl objeven roku 977 a jeho autoři jsou Ron Rivest, Adi Shamir a Joe Adleman odtud RSA. Systém je založen na teoreticky jednoduché úvaze: Je snadné vynásobit dvě dlouhá (-místná) prvočísla, ale bez jejich znalosti je prakticky nemožné zpětně provést rozklad výsledku na původní prvočísla. Součin těchto čísel je tedy veřejný klíč. Přitom obě prvočísla potřebujeme pro dešifrování. Algoritmus RSA je též používán k digitálním podpisům. Vzhledem k tomu, že není znám rychlý algoritmus na faktorizaci velkého čísla, je algoritmus RSA brán jako bezpečný. RSA konstrukce POSTUP (stručně, bez pravidel pro volbu p a q): Veřejný klíč: n součin dvou prvočísel p a q (zůstávají utajeny); n = p*q e volím náhodně, s jistými pravidly e je menší než (p-)(q-) a s tímto součinem nesoudělné Soukromý klíč: d = e - mod ((p-)(q-)) Šifrování: c = m e mod n Dešifrování: m = c d mod n 4.5 Příklad na RSA šifrování zprávy m = 2. p = 6 (první prvočíslo) q = 5 (druhé prvočíslo) n = pq = 2 (modul, veřejný) e = 7 (veřejný, šifrovací exponent) d = 275 (soukromý, dešifrovací exponent) Pro zašifrování zprávy 2 probíhá výpočet: šifruj(2) = 2 7 mod 2 = 855 Pro dešifrování pak: dešifruj(855) = mod 2 = 2 symetrasymetr.swf Demonstrace principu kryptosystému soukromého i veřejného klíče. 26 Radomil MATOUŠEK 8

92 4..5. Hashovací funkce Hashovací funkce jsou velmi důležité pro kryptografii a tvorbu digitálních podpisů. Jsou to funkce, které umí udělat vzorek jakéhokoli souboru tak, aby byl závislý na všech bitech původního souboru. Výstupem funkce je tzv. hash (vzorek, fngerprint, otisk) o pevné délce. Hash může sloužit ke kontrole integrity dat, k rychlému porovnání dvojice zpráv, indexování, vyhledávání apod. Formálně je to funkce h, která převádí vstupní posloupnost bitů (či bytů) na posloupnost pevné délky n bitů h: D R, kde D > R. Z definice plyne možná existence kolizí, to znamená dvojic vstupních dat (x,y) takových, že h(x)=h(y). Kolize jsou nežádoucí, ale v principu se jim nelze úplně vyhnout. Lze jen snižovat pravděpodobnost, že nastane kolize pro podobná data, například při náhodné změně v části vstupní posloupnosti. Cílem je vysoká pravděpodobnost, že dvě zprávy se stejným kontrolním součtem jsou stejné. Požadavky na hašovací funkce: a) Odolnost vůči získání předlohy. Pro daný haš c je obtížné spočítat x takové, že h(x)=c. (Hašovací funkce je jednosměrná.) b) Odolnost vůči získání jiné předlohy. Pro daný vstup x je obtížné spočítat y takové, že h(x)=h(y). c) Odolnost vůči nalezení kolize. Je obtížné (výpočetně sločité) systematicky najít dvojici vstupů (x,y), pro které h(x)=h(y). Další obvyklé požadavky zahrnují: a) Nekorelovatelnost vstupních a výstupních bitů, kvůli znemožnění statistické analýzy. b) Odolnost vůči skoro-kolizím. Je obtížné nalézt x a y taková, že h(x) a h(y) se liší jen v malém počtu bitů. c) Lokální odolnost vůči získání předlohy. Je obtížné najít i jen část vstupu x ze znalosti h(x). Známé hašovací funkce: o Algoritmus MD5 (Message Digest 5) je založen na specifikaci RFC 2. Byl vyvinut za účelem odstranění nedostatků algoritmu MD4. Algoritmus MD5 provede čtyři průchody datových bloků (algoritmus MD4 provedl pouze tři průchody) za použití různých číselných konstant pro jednotlivá slova ve zprávě během každého průchodu. Počet 2bitových konstant použitých během výpočtu algoritmu MD5 je 64, takže algoritmus MD5 nakonec vytvoří 28bitový algoritmus hash, který se používá pro kontrolu integrity. I když je algoritmus MD5 náročnější na prostředky, poskytuje silnější integritu než algoritmus MD4. 84

93 METODY KÓDOVÁNÍ MD5 je již ale kompromitovaná, od srpna 24 je veřejně znám postup nalezení kolizí. Její bezproblémové využití například pro ověření integrity dat přenášených souborů je pochopitelně možné. Tento algoritmus byl implementován i na HW bázi jako MD5 Processor Core. o Algoritmus SHA (Secure Hash Algorithm ) byl vyvinut v institutu NIST (National Institute of Standards and Technology), jak je uvedeno ve standardu Federal Information Processing Standard (FIPS) PUB 8-. Proces výpočtu algoritmu SHA se velmi podobá procesu výpočtu algoritmu MD5. Výsledkem výpočtu algoritmu SHA je 6bitový algoritmus hash, který se používá pro kontrolu integrity. Delší algoritmus hash poskytuje lepší zabezpečení, proto je algoritmus SHA bezpečnější než algoritmus MD5. SHA je již také kompromitovaná, v únoru 25 byl zveřejněn objev algoritmu, který umožňuje nalézt kolizi podstatně rychleji než hrubou silou, algoritmus je však prozatím výpočetně náročný. o Algoritmus SHA2 je dosud považován za spolehlivý. o Algoritmus RIPEMD 6: Nejnovějším hashovacím algoritmem je RIPEMD-6, který byl navržen s cílem nahradit MD4 a MD5. Vytváří (jak vyplývá z jeho názvu) hash v délce 6 bitů. Byl vyvinut v rámci evropského projektu RIPE. hash.swf Funkce MD DIGITÁLNÍ PODPIS Obr. 4.7: Princip asymetrické kryptografie. 26 Radomil MATOUŠEK 85

94 Digitální podpis je elektronickým protějškem ručně psaného podpisů. Jsou to dlouhá a složitě generovaná čísla, která vypočítává buď procesor nebo čipová karta. K výpočtu těchto podpisů je zapotřebí dvojice klíčů. Svým privátním klíčem (ke kterému nemá přístup nikdo kromě vlastníka - bývá uložen na čipové kartě nebo v počítači a je chráněn heslem) lze zprávu podepsat. Důležité je, že vygenerovaný digitální podpis (jako zmíněné číslo) závisí na každém bitu podepisované zprávy. Protože by pak byl digitální podpis neúměrně dlouhý, využívají se vzorkovací funkce. Po vytvoření vzorku je pak podepsán vzorek a nikoli celá zpráva. Elektronický podpis je kryptografická metoda zajišťující pro digitální data podobné vlastnosti jako vlastnoruční podpis u běžných papírových dokumentů. Elektronický podpis zajišťuje: integritu dokumentu lze prokázat, že po podepsání nedošlo k žádné změně, soubor není poškozen (ani záměrně, ani omylem), autentizaci lze prokázat, že autorem je skutečně ten, kdo je pod dokumentem podepsán, nepopiratelnost autor nemůže popřít, že dokument podepsal. 86

Kódy a kódování dat. Binární (dvojkové) kódy. Kód Aikenův

Kódy a kódování dat. Binární (dvojkové) kódy. Kód Aikenův Kódy a kódování dat Kódování je proces, při kterém se každému znaku nebo postupnosti znaků daného souboru znaků jednoznačně přiřadí znak nebo postupnost znaků z jiného souboru znaků. Kódování je tedy transformace

Více

Kódováni dat. Kódy používané pro strojové operace

Kódováni dat. Kódy používané pro strojové operace Kódováni dat Před zpracováním dat například v počítači je třeba znaky převést do tvaru, kterému počítač rozumí, tj. přiřadit jim určité kombinace bitů. Tomuto převodu se říká kódování. Kód je předpis pro

Více

[1] samoopravné kódy: terminologie, princip

[1] samoopravné kódy: terminologie, princip [1] Úvod do kódování samoopravné kódy: terminologie, princip blokové lineární kódy Hammingův kód Samoopravné kódy, k čemu to je [2] Data jsou uložena (nebo posílána do linky) kodérem podle určitého pravidla

Více

Úvod do teorie informace

Úvod do teorie informace PEF MZLU v Brně 24. září 2007 Úvod Výměna informací s okolím nám umožňuje udržovat vlastní existenci. Proces zpracování informací je trvalý, nepřetržitý, ale ovlivnitelný. Zabezpečení informací je spojeno

Více

ČÍSELNÉ SOUSTAVY PŘEVODY

ČÍSELNÉ SOUSTAVY PŘEVODY ČÍSELNÉ SOUSTAVY V každodenním životě je soustava desítková (decimální, dekadická) o základu Z=10. Tato soustava používá číslice 0, 1, 2, 3, 4, 5, 6, 7, 8 a 9, není však vhodná pro počítače nebo číslicové

Více

Technická kybernetika. Obsah. Principy zobrazení, sběru a uchování dat. Měřicí řetězec. Principy zobrazení, sběru a uchování dat

Technická kybernetika. Obsah. Principy zobrazení, sběru a uchování dat. Měřicí řetězec. Principy zobrazení, sběru a uchování dat Akademický rok 2016/2017 Připravil: Radim Farana Technická kybernetika Principy zobrazení, sběru a uchování dat 2 Obsah Principy zobrazení, sběru a uchování dat strana 3 Snímač Měřicí řetězec Měřicí obvod

Více

Informatika Datové formáty

Informatika Datové formáty Informatika Datové formáty Radim Farana Podklady předmětu Informatika pro akademický rok 2007/2008 Obsah Datové formáty (datové typy). Textové formáty, vlastnosti zdroje zpráv. Číselné formáty, číselné

Více

Matematické základy šifrování a kódování

Matematické základy šifrování a kódování Matematické základy šifrování a kódování Permutace Pojem permutace patří mezi základní pojmy a nachází uplatnění v mnoha oblastech, např. kombinatorice, algebře apod. Definice Nechť je n-prvková množina.

Více

Struktura a architektura počítačů (BI-SAP) 5

Struktura a architektura počítačů (BI-SAP) 5 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 5 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii

Více

Komprese dat (Komprimace dat)

Komprese dat (Komprimace dat) Komprese dat (Komprimace dat) Př.: zakódovat slovo ARARAUNA K K 2 četnost absolutní relativní A 4,5 N,25 R 2,25 U,25 kód K : kód K 2 :... 6 bitů... 4 bitů prefixový kód: žádné kódové slovo není prefixem

Více

Zobrazení dat Cíl kapitoly:

Zobrazení dat Cíl kapitoly: Zobrazení dat Cíl kapitoly: Cílem této kapitoly je sezn{mit čten{ře se způsoby z{pisu dat (čísel, znaků, řetězců) v počítači. Proto jsou zde postupně vysvětleny číselné soustavy, způsoby kódov{ní české

Více

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty Data v počítači Informační data (elementární datové typy) Logické hodnoty Znaky Čísla v pevné řádové čárce (celá čísla) v pohyblivé (plovoucí) řád. čárce (reálná čísla) Povelová data (instrukce programu)

Více

Kódy pro odstranění redundance, pro zabezpečení proti chybám. Demonstrační cvičení 5 INP

Kódy pro odstranění redundance, pro zabezpečení proti chybám. Demonstrační cvičení 5 INP Kódy pro odstranění redundance, pro zabezpečení proti chybám Demonstrační cvičení 5 INP Princip kódování, pojmy Tady potřebujeme informaci zabezpečit, utajit apod. zpráva 000 111 000 0 1 0... kodér dekodér

Více

Teorie informace: řešené příklady 2014 Tomáš Kroupa

Teorie informace: řešené příklady 2014 Tomáš Kroupa Teorie informace: řešené příklady 04 Tomáš Kroupa Kolik otázek je třeba v průměru položit, abychom se dozvěděli datum narození člověka (den v roce), pokud odpovědi jsou pouze ano/ne a tázaný odpovídá pravdivě?

Více

Algoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19

Algoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19 Algoritmy I Číselné soustavy přečíst!!! Číselné soustavy Každé číslo lze zapsat v poziční číselné soustavě ve tvaru: a n *z n +a n-1 *z n-1 +. +a 1 *z 1 +a 0 *z 0 +a -1 *z n-1 +a -2 *z -2 +.. V dekadické

Více

Informace, kódování a redundance

Informace, kódování a redundance Informace, kódování a redundance INFORMACE = fakt nebo poznatek, který snižuje neurčitost našeho poznání (entropii) DATA (jednotné číslo ÚDAJ) = kódovaná zpráva INFORAMCE = DATA + jejich INTERPRETACE (jak

Více

Základní jednotky používané ve výpočetní technice

Základní jednotky používané ve výpočetní technice Základní jednotky používané ve výpočetní technice Nejmenší jednotkou informace je bit [b], který může nabývat pouze dvou hodnot 1/0 (ano/ne, true/false). Tato jednotka není dostatečná pro praktické použití,

Více

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Jak v Javě primitivní datové typy a jejich reprezentace BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Obsah Celočíselný datový typ Reálný datový typ Logický datový typ, typ Boolean

Více

Počet kreditů: 5 Forma studia: kombinovaná. Anotace: Předmět seznamuje se základy dělitelnosti, vybranými partiemi algebry, šifrování a kódování.

Počet kreditů: 5 Forma studia: kombinovaná. Anotace: Předmět seznamuje se základy dělitelnosti, vybranými partiemi algebry, šifrování a kódování. Název předmětu: Matematika pro informatiky Zkratka předmětu: MIE Počet kreditů: 5 Forma studia: kombinovaná Forma zkoušky: kombinovaná (písemná a ústní část) Anotace: Předmět seznamuje se základy dělitelnosti,

Více

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy Lukáš Havrlant Univerzita Palackého 10. ledna 2014 Primární zdroj Jiří Adámek: Foundations of Coding. Strany 137 160. Na webu ke stažení, heslo:

Více

PJC Cvičení #2. Číselné soustavy a binární reprezentace proměnných

PJC Cvičení #2. Číselné soustavy a binární reprezentace proměnných PJC Cvičení #2 Číselné soustavy a binární reprezentace proměnných Číselné soustavy Desítková (decimální) kdo nezná, tak...!!! Dvojková (binární) - nejjednodušší Šestnáctková (hexadecimální) - nejpoužívanější

Více

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2013/2014 Radim Farana. Obsah. Kybernetika

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2013/2014 Radim Farana. Obsah. Kybernetika 2 Podklady předmětu pro akademický rok 2013/2014 Radim Farana Obsah Základní pojmy z Teorie informace, jednotka informace, informační obsah zprávy, střední délka zprávy, redundance. Přenosový řetězec.

Více

Identifikátor materiálu: ICT-1-19

Identifikátor materiálu: ICT-1-19 Identifikátor materiálu: ICT-1-19 Předmět Informační a komunikační technologie Téma materiálu Komprimace, archivace dat Autor Ing. Bohuslav Nepovím Anotace Student si procvičí / osvojí komprimaci, archivaci

Více

Komprese dat. Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI. přednášky

Komprese dat. Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI. přednášky Komprese dat Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI přednášky Statistické metody Jan Outrata (Univerzita Palackého v Olomouci) Komprese dat Olomouc, únor březen 2016 1 / 23 Tunstallův

Více

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT Mgr. Jana

Více

Digitální signály a kódy

Digitální signály a kódy EVROPSKÝ SOCIÁLNÍ FOND Digitální signály a kódy PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Podpora kvality výuky informačních a telekomunikačních technologií ITTEL CZ.2.17/3.1.00/36206 Digitální signál

Více

MATA Př 3. Číselné soustavy. Desítková soustava (dekadická) základ 10, číslice 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

MATA Př 3. Číselné soustavy. Desítková soustava (dekadická) základ 10, číslice 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. MATA Př 3 Číselné soustavy Poziční číselná soustava je dnes převládající způsob písemné reprezentace čísel dokonce pokud se dnes mluví o číselných soustavách, jsou tím obvykle myšleny soustavy poziční.

Více

KOMPRESE OBRAZŮ. Václav Hlaváč, Jan Kybic. Fakulta elektrotechnická ČVUT v Praze katedra kybernetiky, Centrum strojového vnímání.

KOMPRESE OBRAZŮ. Václav Hlaváč, Jan Kybic. Fakulta elektrotechnická ČVUT v Praze katedra kybernetiky, Centrum strojového vnímání. 1/25 KOMPRESE OBRAZŮ Václav Hlaváč, Jan Kybic Fakulta elektrotechnická ČVUT v Praze katedra kybernetiky, Centrum strojového vnímání hlavac@fel.cvut.cz http://cmp.felk.cvut.cz/ hlavac KOMPRESE OBRAZŮ, ÚVOD

Více

Informatika Kódování. Obsah. Kód. Radim Farana Podklady předmětu Informatika pro akademický rok 2007/2008

Informatika Kódování. Obsah. Kód. Radim Farana Podklady předmětu Informatika pro akademický rok 2007/2008 Informatika Kódování Radim Farana Podklady předmětu Informatika pro akademický rok 27/28 Obsah Základy pojmy diskrétních kódů. Druhy kódů. Nejkratší kódy. Detekce chyb, Hammingova vdálenost. Kontrolní

Více

Způsoby realizace této funkce:

Způsoby realizace této funkce: KOMBINAČNÍ LOGICKÉ OBVODY U těchto obvodů je výstup určen jen výhradně kombinací vstupních veličin. Hodnoty výstupních veličin nezávisejí na předcházejícím stavu logického obvodu, což znamená, že kombinační

Více

Číselné soustavy a převody mezi nimi

Číselné soustavy a převody mezi nimi Číselné soustavy a převody mezi nimi Základní požadavek na počítač je schopnost zobrazovat a pamatovat si čísla a provádět operace s těmito čísly. Čísla mohou být zobrazena v různých číselných soustavách.

Více

PŘEDNÁŠKA KURZU MPOV

PŘEDNÁŠKA KURZU MPOV 1 PŘEDNÁŠKA KURZU MPOV Strojové rozpoznávání kódů a znaků P. Petyovský (email: petyovsky@feec.vutbr.cz) kancelář SD3.152, Technická 12 2 rev. 2015.3 Pojmy a opakování Strojové čtení Braillova písma Popis

Více

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: 3 Maticový počet 3.1 Zavedení pojmu matice Maticí typu (m, n, kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: a 11 a 12... a 1k... a 1n a 21 a 22...

Více

Komprese dat Obsah. Komprese videa. Radim Farana. Podklady pro výuku. Komprese videa a zvuku. Komprese MPEG. Komprese MP3.

Komprese dat Obsah. Komprese videa. Radim Farana. Podklady pro výuku. Komprese videa a zvuku. Komprese MPEG. Komprese MP3. Komprese dat Radim Farana Podklady pro výuku Obsah Komprese videa a zvuku. Komprese MPEG. Komprese MP3. Komprese videa Velký objem přenášených dat Typický televizní signál - běžná evropská norma pracuje

Více

Y36SAP. Osnova. Číselné soustavy a kódy, převody, aritmetické operace Y36SAP Poziční číselné soustavy a převody.

Y36SAP. Osnova. Číselné soustavy a kódy, převody, aritmetické operace Y36SAP Poziční číselné soustavy a převody. Y36SAP Číselné soustavy a kódy, převody, aritmetické operace Tomáš Brabec, Miroslav Skrbek - X36SKD-cvičení. Úpravy pro SAP Hana Kubátová Osnova Poziční číselné soustavy a převody Dvojková soust., převod

Více

Algoritmy a datové struktury

Algoritmy a datové struktury Algoritmy a datové struktury Data a datové typy 1 / 28 Obsah přednášky Základní datové typy Celá čísla Reálná čísla Znaky 2 / 28 Organizace dat Výběr vhodné datvé struktry různá paměťová náročnost různá

Více

Informační a komunikační technologie

Informační a komunikační technologie Informační a komunikační technologie 2. www.isspolygr.cz Vytvořil: Ing. David Adamovský Strana: 1 Škola Integrovaná střední škola polygrafická Ročník Název projektu 1. ročník SOŠ Interaktivní metody zdokonalující

Více

PSK2-5. Kanálové kódování. Chyby

PSK2-5. Kanálové kódování. Chyby PSK2-5 Název školy: Autor: Anotace: Vzdělávací oblast: Předmět: Tematická oblast: Výsledky vzdělávání: Klíčová slova: Druh učebního materiálu: Typ vzdělávání: Ověřeno: Zdroj: Vyšší odborná škola a Střední

Více

Kapitola 1. Signály a systémy. 1.1 Klasifikace signálů

Kapitola 1. Signály a systémy. 1.1 Klasifikace signálů Kapitola 1 Signály a systémy 1.1 Klasifikace signálů Signál představuje fyzikální vyjádření informace, obvykle ve formě okamžitých hodnot určité fyzikální veličiny, která je funkcí jedné nebo více nezávisle

Více

Principy počítačů. Prof. RNDr. Peter Mikulecký, PhD.

Principy počítačů. Prof. RNDr. Peter Mikulecký, PhD. Principy počítačů Prof. RNDr. Peter Mikulecký, PhD. Číselné soustavy Obsah přednášky: Přednáška 3 Číselné soustavy a převody mezi nimi Kódy, přímý, inverzní a doplňkový kód Znakové sady Úvod Člověk se

Více

Informační systémy ve zdravotnictví

Informační systémy ve zdravotnictví Informační systémy ve zdravotnictví ZS 2008/2009 Zoltán Szabó Tel.: (+420) 312 608 207 E-mail: szabo@fbmi.cvut.cz č.dv.: 504, 5.p Dnešní přednáška Kódování, komprese 2 1 Komprese dat Cíl komprese: redukovat

Více

ČÍSELNÉ SOUSTAVY. Číselnou soustavu, která pro reprezentaci čísel využívá pouze dvou číslic, nazýváme soustavou dvojkovou nebo binární.

ČÍSELNÉ SOUSTAVY. Číselnou soustavu, která pro reprezentaci čísel využívá pouze dvou číslic, nazýváme soustavou dvojkovou nebo binární. Číselné soustavy V běžném životě používáme soustavu desítkovou. Desítková se nazývá proto, že má deset číslic 0 až 9 a v jednom řádu tak dokáže rozlišit deset různých stavů. Mikrokontroléry (a obecně všechny

Více

ZŠ ÚnO, Bratří Čapků 1332

ZŠ ÚnO, Bratří Čapků 1332 Úvodní obrazovka Menu Návrat na hlavní stránku Obsah Výsledky Poznámky Záložky edunet Konec Matematika 1 (pro 9-12 let) LangMaster Obsah (střední část) výběr tématu - dvojklikem v seznamu témat (horní

Více

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávání v informačních a komunikačních technologií

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávání v informačních a komunikačních technologií VY_32_INOVACE_31_18 Škola Název projektu, reg. č. Vzdělávací oblast Vzdělávací obor Tematický okruh Téma Tematická oblast Název Autor Vytvořeno, pro obor, ročník Anotace Přínos/cílové kompetence Střední

Více

KOMPRESE OBRAZŮ. Václav Hlaváč. Fakulta elektrotechnická ČVUT v Praze katedra kybernetiky, Centrum strojového vnímání. hlavac@fel.cvut.

KOMPRESE OBRAZŮ. Václav Hlaváč. Fakulta elektrotechnická ČVUT v Praze katedra kybernetiky, Centrum strojového vnímání. hlavac@fel.cvut. 1/24 KOMPRESE OBRAZŮ Václav Hlaváč Fakulta elektrotechnická ČVUT v Praze katedra kybernetiky, Centrum strojového vnímání hlavac@fel.cvut.cz http://cmp.felk.cvut.cz/ hlavac KOMPRESE OBRAZŮ, ÚVOD 2/24 Cíl:

Více

Kódování 21.9.2014. Obsah. Unikátní identifikátory. Radim Farana Podklady pro výuku. Unikátní identifikátory. Kontrolní číslice, GUI,

Kódování 21.9.2014. Obsah. Unikátní identifikátory. Radim Farana Podklady pro výuku. Unikátní identifikátory. Kontrolní číslice, GUI, Kódování Radim Farana Podklady pro výuku Obsah Unikátní identifikátory. Kontrolní číslice, GUI, realizace kontrolních číslic. Kódy konstantní změny, Grayovy kódy. Čárové kódy. Unikátní identifikátory Speciální

Více

Kódování a Šifrování. Iveta Nastoupilová

Kódování a Šifrování. Iveta Nastoupilová Kódování a Šifrování Iveta Nastoupilová 12.11.2007 Kódování Přeměna, transformace, šifrování signálů Převádění informace z jednoho systému do jiného systému znaků Kódování Úzce souvisí s procesem komunikace

Více

3 Jednoduché datové typy 2 3.1 Interpretace čísel v paměti počítače... 3. 4 Problémy s matematickými operacemi 5

3 Jednoduché datové typy 2 3.1 Interpretace čísel v paměti počítače... 3. 4 Problémy s matematickými operacemi 5 Obsah Obsah 1 Číselné soustavy 1 2 Paměť počítače 1 2.1 Měření objemu paměti počítače................... 1 3 Jednoduché datové typy 2 3.1 Interpretace čísel v paměti počítače................. 3 4 Problémy

Více

7. Rozdělení pravděpodobnosti ve statistice

7. Rozdělení pravděpodobnosti ve statistice 7. Rozdělení pravděpodobnosti ve statistice Statistika nuda je, má však cenné údaje, neklesejte na mysli, ona nám to vyčíslí Jednou z úloh statistiky je odhad (výpočet) hodnot statistického znaku x i,

Více

Základní komunikační řetězec

Základní komunikační řetězec STŘEDNÍ PRŮMYSLOVÁ ŠKOLA NA PROSEKU EVROPSKÝ SOCIÁLNÍ FOND Základní komunikační řetězec PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Podpora kvality výuky informačních a telekomunikačních technologií ITTEL

Více

Informace v počítači. Výpočetní technika I. Ing. Pavel Haluza ústav informatiky PEF MENDELU v Brně haluza@mendelu.cz

Informace v počítači. Výpočetní technika I. Ing. Pavel Haluza ústav informatiky PEF MENDELU v Brně haluza@mendelu.cz .. Informace v počítači Ing. Pavel Haluza ústav informatiky PEF MENDELU v Brně haluza@mendelu.cz Osnova přednášky Úvod do teorie informace základní pojmy měření množství informace ve zprávě přenos a kódování

Více

Nejvyšší řád čísla bit č. 7 bit č. 6 bit č.5 bit č. 4 bit č. 3 bit č. 2 bit č. 1 bit č. 0

Nejvyšší řád čísla bit č. 7 bit č. 6 bit č.5 bit č. 4 bit č. 3 bit č. 2 bit č. 1 bit č. 0 Číselné soustavy Cílem této kapitoly je sezn{mit se se z{kladními jednotkami používanými ve výpočetní technice. Poznat číselné soustavy, kódy a naučit se převody mezi číselnými soustavami. Klíčové pojmy:

Více

Dlouhodobé a důvěryhodné ukládání elektronických dokumentů. Oskar Macek

Dlouhodobé a důvěryhodné ukládání elektronických dokumentů. Oskar Macek Dlouhodobé a důvěryhodné ukládání elektronických dokumentů Oskar Macek Co je to dokument? co se rozumí pod pojmem dokument, je definováno v zákoně 499/2004 Sb., ve znění pozdějších předpisů v 2, písmeno

Více

1.5.1 Číselné soustavy

1.5.1 Číselné soustavy .. Číselné soustavy Předpoklady: základní početní operace Pedagogická poznámka: Tato hodina není součástí klasické gymnaziální sady. Upřímně řečeno nevím proč. Jednak se všichni studenti určitě setkávají

Více

Fz =a z + a z +...+a z +a z =

Fz =a z + a z +...+a z +a z = Polyadické číselné soustavy - převody M-místná skupina prvků se z-stavovou abecedou umožňuje zobrazit z m čísel. Zjistíme, že stačí vhodně zvolit číslo m, abychom mohli zobrazit libovolné číslo menší než

Více

Číselné soustavy. Ve světě počítačů se využívají tři základní soustavy:

Číselné soustavy. Ve světě počítačů se využívají tři základní soustavy: Číselné soustavy Ve světě počítačů se využívají tři základní soustavy: dekadická binární hexadecimální patří mezi soustavy poziční, tj. desítková hodnota každé číslice (znaku) závisí na její pozici vzhledem

Více

BPC2E_C09 Model komunikačního systému v Matlabu

BPC2E_C09 Model komunikačního systému v Matlabu BPCE_C9 Model komunikačního systému v Matlabu Cílem cvičení je vyzkoušet si sestavit skripty v Matlabu pro model jednoduchého komunikačního systému pro přenos obrázků. Úloha A. Sestavte model komunikačního

Více

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu 1 Podklady předmětu pro akademický rok 2006/2007 Radim Farana Obsah 2 Obsah předmětu, Požadavky kreditového systému, Datové typy jednoduché, složené, Programové struktury, Předávání dat. Obsah předmětu

Více

Programy na PODMÍNĚNÝ příkaz IF a CASE

Programy na PODMÍNĚNÝ příkaz IF a CASE Vstupy a výstupy budou vždy upraveny tak, aby bylo zřejmé, co zadáváme a co se zobrazuje. Není-li určeno, zadáváme přirozená čísla. Je-li to možné, používej generátor náhodných čísel vysvětli, co a jak

Více

Reprezentace dat. INP 2008 FIT VUT v Brně

Reprezentace dat. INP 2008 FIT VUT v Brně Reprezentace dat INP 2008 FIT VUT v Brně Pojem kód a typy kódů Definice: Kód je vzájemně jednoznačné přiřazení mezi symboly dvou množin. (Tedy tabulka.) Přehled kódů pro reprezentaci dat: Data můžeme rozdělit

Více

Generující kořeny cyklických kódů. Generující kořeny. Alena Gollová, TIK Generující kořeny 1/30

Generující kořeny cyklických kódů. Generující kořeny. Alena Gollová, TIK Generující kořeny 1/30 Generující kořeny cyklických kódů 6. přednáška z algebraického kódování Alena Gollová, TIK Generující kořeny 1/30 Obsah 1 Alena Gollová, TIK Generující kořeny 2/30 Hammingovy kódy Hammingovy kódy jsou

Více

1 Co jsou lineární kódy

1 Co jsou lineární kódy 1 Žádný záznam informace a žádný přenos dat není absolutně odolný vůči chybám. Někdy je riziko poškození zanedbatelné, v mnoha případech je však zaznamenaná a přenášená informace jištěna přidáním dat,

Více

1.5.2 Číselné soustavy II

1.5.2 Číselné soustavy II .. Číselné soustavy II Předpoklady: Př. : Převeď do desítkové soustavy čísla. a) ( ) b) ( ) 4 c) ( ) 6 = + + + = 7 + 9 + = a) = 4 + 4 + 4 = 6 + 4 + = 9 b) 4 = 6 + 6 + 6 = 6 + 6 + = 6 + + = 69. c) 6 Pedagogická

Více

Kódování signálu. Problémy při návrhu linkové úrovně. Úvod do počítačových sítí. Linková úroveň

Kódování signálu. Problémy při návrhu linkové úrovně. Úvod do počítačových sítí. Linková úroveň Kódování signálu Obecné schema Kódování NRZ (bez návratu k nule) NRZ L NRZ S, NRZ - M Kódování RZ (s návratem k nule) Kódování dvojí fází Manchester (přímý, nepřímý) Diferenciální Manchester 25.10.2006

Více

Digitalizace dat metodika

Digitalizace dat metodika Digitalizace dat metodika Digitalizace Jak počítač získá jedničky a nuly, se kterými potom počítá a které je schopen si pamatovat? Pomocí různých přístrojů a zařízení (mikrofon, fotoaparát, skener, kamera,

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech

Více

Číselné soustavy. Jedná se o způsob reprezentace čísel.

Číselné soustavy. Jedná se o způsob reprezentace čísel. Číselné soustavy Číselné soustavy Jedná se o způsob reprezentace čísel. Dvě hlavní skupiny: Nepoziční (hodnota číslice není dána jejím umístěním v dané sekvenci číslic) Poziční (hodnota každé číslice dána

Více

Osnova přednášky. Informace v počítači. Interpretace dat. Údaje, data. Úvod do teorie informace. Výpočetní technika I. Ochrana dat

Osnova přednášky. Informace v počítači. Interpretace dat. Údaje, data. Úvod do teorie informace. Výpočetní technika I. Ochrana dat Osnova přednášky 2/44 Informace v počítači Ing Pavel Haluza ústav informatiky PEF MENDELU v Brně haluza@mendelucz základní pojmy měření množství informace ve zprávě přenos a kódování dat parita kontrolní

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Typy Základní (primitivní) datové typy Deklarace Verze pro akademický rok 2012/2013 1 Typy v jazyce Java Základní datové typy (primitivní datové typy) Celočíselné byte, short,

Více

Počítač jako elektronické, Číslicové zařízení

Počítač jako elektronické, Číslicové zařízení Počítač jako elektronické, Číslicové Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1135_Počítač jako elektrornické, číslicové _PWP Název školy: Číslo a název projektu: Číslo a název šablony

Více

Digitalizace signálu (obraz, zvuk)

Digitalizace signálu (obraz, zvuk) Digitalizace signálu (obraz, zvuk) Základem pro digitalizaci obrazu je převod světla na elektrické veličiny. K převodu světla na elektrické veličiny slouží např. čip CCD. Zkratka CCD znamená Charged Coupled

Více

Číselné vyjádření hodnoty. Kolik váží hrouda zlata?

Číselné vyjádření hodnoty. Kolik váží hrouda zlata? Čísla a logika Číselné vyjádření hodnoty Au Kolik váží hrouda zlata? Dekadické vážení Když přidám osmé závaží g, váha se převáží => závaží zase odeberu a začnu přidávat závaží x menší 7 závaží g 2 závaží

Více

PŘEDNÁŠKA 2 POSLOUPNOSTI

PŘEDNÁŠKA 2 POSLOUPNOSTI PŘEDNÁŠKA 2 POSLOUPNOSTI 2.1 Zobrazení 2 Definice 1. Uvažujme libovolné neprázdné množiny A, B. Zobrazení množiny A do množiny B je definováno jako množina F uspořádaných dvojic (x, y A B, kde ke každému

Více

Úvod do programování 7. hodina

Úvod do programování 7. hodina Úvod do programování 7. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Syntax Znaky Vlastní implementace

Více

Základy informatiky a teorie informace

Základy informatiky a teorie informace První kapitola Základy informatiky a teorie informace Učební text Mgr. Radek Hoszowski Základy informatiky a teorie informace Jednotka informace V této kapitole se dozvíme základní informace o jednotkách

Více

C2115 Praktický úvod do superpočítání

C2115 Praktický úvod do superpočítání C2115 Praktický úvod do superpočítání IX. lekce Petr Kulhánek, Tomáš Bouchal kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta, Masarykova univerzita, Kotlářská 2, CZ-61137

Více

13 Barvy a úpravy rastrového

13 Barvy a úpravy rastrového 13 Barvy a úpravy rastrového Studijní cíl Tento blok je věnován základním metodám pro úpravu rastrového obrazu, jako je např. otočení, horizontální a vertikální překlopení. Dále budo vysvětleny různé metody

Více

U Úvod do modelování a simulace systémů

U Úvod do modelování a simulace systémů U Úvod do modelování a simulace systémů Vyšetřování rozsáhlých soustav mnohdy nelze provádět analytickým výpočtem.často je nutné zkoumat chování zařízení v mezních situacích, do kterých se skutečné zařízení

Více

IV. Základní pojmy matematické analýzy IV.1. Rozšíření množiny reálných čísel

IV. Základní pojmy matematické analýzy IV.1. Rozšíření množiny reálných čísel Matematická analýza IV. Základní pojmy matematické analýzy IV.1. Rozšíření množiny reálných čísel na množině R je definováno: velikost (absolutní hodnota), uspořádání, aritmetické operace; znázornění:

Více

III/ 2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/ 2 Inovace a zkvalitnění výuky prostřednictvím ICT Metodický list k didaktickému materiálu Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět

Více

II. Úlohy na vložené cykly a podprogramy

II. Úlohy na vložené cykly a podprogramy II. Úlohy na vložené cykly a podprogramy Společné zadání pro příklady 1. - 10. začíná jednou ze dvou možností popisu vstupních dat. Je dána posloupnost (neboli řada) N reálných (resp. celočíselných) hodnot.

Více

DSY-6. Přenosový kanál kódy pro zabezpečení dat Základy šifrování, autentizace Digitální podpis Základy měření kvality přenosu signálu

DSY-6. Přenosový kanál kódy pro zabezpečení dat Základy šifrování, autentizace Digitální podpis Základy měření kvality přenosu signálu DSY-6 Přenosový kanál kódy pro zabezpečení dat Základy šifrování, autentizace Digitální podpis Základy měření kvality přenosu signálu Kódové zabezpečení přenosu dat Popis přiřazení kódových slov jednotlivým

Více

Jednoduché cykly 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.

Jednoduché cykly 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. Jednoduché cykly Tento oddíl obsahuje úlohy na první procvičení práce s cykly. Při řešení každé ze zde uvedených úloh stačí použít vedle podmíněných příkazů jen jediný cyklus. Nepotřebujeme používat ani

Více

5. Náhodná veličina. 2. Házíme hrací kostkou dokud nepadne šestka. Náhodná veličina nabývá hodnot z posloupnosti {1, 2, 3,...}.

5. Náhodná veličina. 2. Házíme hrací kostkou dokud nepadne šestka. Náhodná veličina nabývá hodnot z posloupnosti {1, 2, 3,...}. 5. Náhodná veličina Poznámka: Pro popis náhodného pokusu jsme zavedli pojem jevového pole S jako množiny všech možných výsledků a pravděpodobnost náhodných jevů P jako míru výskytů jednotlivých výsledků.

Více

1. Základy teorie přenosu informací

1. Základy teorie přenosu informací 1. Základy teorie přenosu informací Úvodem citát o pojmu informace Informace je název pro obsah toho, co se vymění s vnějším světem, když se mu přizpůsobujeme a působíme na něj svým přizpůsobováním. N.

Více

KAPITOLA 1 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ

KAPITOLA 1 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ KAPITOLA 1 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ KLÍČOVÉ POJMY technické vybavení počítače uchování dat vstupní a výstupní zařízení, paměti, data v počítači počítačové sítě sociální

Více

Informace, kódování a redundance

Informace, kódování a redundance Informace, kódování a redundance Data (jednotné číslo údaj) obvykle chápeme jako údaje, tj. číselné hodnoty, znaky, texty a další fakta zaznamenaná (a uložená v databázi) ve formě uspořádané posloupnosti

Více

1 Linearní prostory nad komplexními čísly

1 Linearní prostory nad komplexními čísly 1 Linearní prostory nad komplexními čísly V této přednášce budeme hledat kořeny polynomů, které se dále budou moci vyskytovat jako složky vektorů nebo matic Vzhledem k tomu, že kořeny polynomu (i reálného)

Více

Čísla, reprezentace, zjednodušené výpočty

Čísla, reprezentace, zjednodušené výpočty Čísla, reprezentace, zjednodušené výpočty Přednáška 4 A3B38MMP kat. měření, ČVUT - FEL, Praha J. Fischer A3B38MMP, 2014, J.Fischer, ČVUT - FEL, kat. měření 1 Čísla 4 bitová dec bin. hex. 0 0000 0 1 0001

Více

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Číslo projektu: CZ.1.07/1.5.00/34.0410 Číslo šablony: 17 Název materiálu: Ročník: Identifikace materiálu: Jméno autora: Předmět: Tématický celek:

Více

(Cramerovo pravidlo, determinanty, inverzní matice)

(Cramerovo pravidlo, determinanty, inverzní matice) KMA/MAT1 Přednáška a cvičení, Lineární algebra 2 Řešení soustav lineárních rovnic se čtvercovou maticí soustavy (Cramerovo pravidlo, determinanty, inverzní matice) 16 a 21 října 2014 V dnešní přednášce

Více

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij] MATICE Matice typu m/n nad tělesem T je soubor m n prvků z tělesa T uspořádaných do m řádků a n sloupců: a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij] a m1 a m2 a mn Prvek a i,j je prvek matice A na místě

Více

( ) Jako základ mocnin nemusíme používat jen 10. Pokud není jasné, že číslo je uvedeno v desítkové soustavě, píšeme jej takto: ( 12054 ) 10

( ) Jako základ mocnin nemusíme používat jen 10. Pokud není jasné, že číslo je uvedeno v desítkové soustavě, píšeme jej takto: ( 12054 ) 10 .. Číselné soustavy I Předpoklady: základní početní operace Pedagogická poznámka: Tato a následující hodina není součástí klasické gymnaziální sady. Upřímně řečeno nevím proč. Jednak se všichni studenti

Více

Matematika I (KMI/PMATE)

Matematika I (KMI/PMATE) Přednáška první aneb Úvod do matematické analýzy Funkce a její vlastnosti Úvod do matematické analýzy Osnova přednášky pojem funkce definice funkce graf funkce definiční obor funkce obor hodnot funkce

Více

Nejvyšší řád čísla bit č. 7 bit č. 6 bit č.5 bit č. 4 bit č. 3 bit č. 2 bit č. 1 bit č. 0

Nejvyšší řád čísla bit č. 7 bit č. 6 bit č.5 bit č. 4 bit č. 3 bit č. 2 bit č. 1 bit č. 0 Číselné soustavy Cílem této kapitoly je sezn{mit se se z{kladními jednotkami používanými ve výpočetní technice. Poznat číselné soustavy, umět v nich prov{dět z{kladní aritmetické operace a naučit se převody

Více

VYUŽÍTÍ SYSTÉMŮ AUTOMATICKÉ IDENTIFIKACE V KONFEKČNÍ VÝROBĚ

VYUŽÍTÍ SYSTÉMŮ AUTOMATICKÉ IDENTIFIKACE V KONFEKČNÍ VÝROBĚ VYUŽÍTÍ SYSTÉMŮ AUTOMATICKÉ IDENTIFIKACE V KONFEKČNÍ VÝROBĚ ČÁROVÉ KÓDY nejstarší a nejrozšířenější metoda automatické identifikace pro automatický sběr dat kombinace tmavých čar a světlých mezer data

Více

Ing. Jan Bartoš, MBA. Jednatel společnosti Smartdata, s.r.o. jan.bartos@smartdata.cz

Ing. Jan Bartoš, MBA. Jednatel společnosti Smartdata, s.r.o. jan.bartos@smartdata.cz Moderní technologie identifikace v marketingu aneb, Naučme se vytěžit vlastní data Ing. Jan Bartoš, MBA Jednatel společnosti Smartdata, s.r.o. jan.bartos@smartdata.cz Program prezentace 1) Kčemu jsou čárové

Více

ISU Cvičení 1. Marta Čudová

ISU Cvičení 1. Marta Čudová ISU Cvičení 1 Marta Čudová Supercomputing Technologies Reseaŕch Group Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole icudova@fit.vutbr.cz Kdo

Více

Středoškolská technika Algoritmus pro bezztrátovou kompresi dat

Středoškolská technika Algoritmus pro bezztrátovou kompresi dat Středoškolská technika 2016 Setkání a prezentace prací středoškolských studentů na ČVUT Algoritmus pro bezztrátovou kompresi dat Štěpán Pešout Gymnázium, Vlašim, Tylova 271 Tylova 271, Vlašim Agloritmus

Více

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase -stromy a rozpoznávání intervalových grafů v lineárním čase ermutace s předepsanými intervaly Označme [n] množinu {1, 2,..., n}. Mějme permutaci π = π 1, π 2,..., π n množiny [n]. Řekneme, že množina S

Více