Univerzita Karlova v Praze Matematicko-fyzikální fakulta BAKALÁŘSKÁ PRÁCE Jiří Lechner Dekodér konvolučního kódu pomocí Viterbiho algoritmu Katedra algebry Vedoucí bakalářské práce: doc. RNDr. Jiří Tůma, DrSc. Studijní program: Matematika Studijní obor: Matematické metody informační bezpečnosti 2008
1
Prohlašuji, že jsem svou bakalářskou práci napsal(a) samostatně a výhradně s použitím citovaných pramenů. Souhlasím se zapůjčováním práce a jejím zveřejňováním. V Praze dne Jméno Příjmení 2
3
Obsah 1 Základní pojmy grafů 8 1.1 Úvod................................... 8 1.2 Definice grafu a základních pojmů.................. 9 1.3 Klasifikace grafů............................ 11 1.4 Množiny slov grafu........................... 18 2 Mřížkové kódy (trellis code) 20 2.1 Mřížkový diagram (trellis diagram).................. 20 2.2 Mřížkové kódy............................. 21 2.3 Hustota mřížkového kódu....................... 23 2.4 Volná vzdálenost mřížkového kódu.................. 23 2.5 Kódování................................ 24 2.6 Dekódování............................... 26 3 Lineární automaty 31 3.1 Lineární automaty........................... 31 3.2 Cesty v lineárních automatech.................... 32 3.3 Ireducibilita, počáteční vrchol a aperiodičnost lineárního automatu 35 3.4 Generující matice............................ 40 3.5 Bezeztrátovost lineárního automatu.................. 42 4
4 Konvoluční kódy 43 4.1 Konvoluční kódy............................ 43 4.2 Kódování konvolučních kódů..................... 45 4.3 Konstrukce některých binárních konvolučních kódů......... 50 4.3.1 Massey-Costellovy binární kódy................ 50 4.3.2 Komplementární konvoluční kódy............... 52 4.3.3 Propíchnuté (punctured) konvoluční kódy.......... 53 4.4 Implementované dekódery....................... 55 Literatura 60 5
Název práce: Dekodér konvolučního kódu pomocí Viterbiho algoritmu Autor: Jiří Lechner Katedra (ústav): Katedra algebry Vedoucí bakalářské práce: doc. RNDr. Jiří Tůma, DrSc. e-mail vedoucího: Jiri.Tuma@mff.cuni.cz Práce se zabývá úvodem do teorie konvolučních kódů a jejich odvození z mřížkových kódů. Nejprve se zaměřuje na definice základních grafových pojmů a vlastností nutných k zavedení mřížkových kódů. Dále je definován pojem mřížkového diagramu určitého grafu a popsán proces kódování mřížkovými kódy. Následně je rozebrán Viterbiho dekódovací algoritmus, jeho vlastnosti a vlastnosti mřížkových kódů. Pak jsou definovány lineární automaty a uvedeny jejich základní charakteristiky. Samotný konvoluční kód je definován jako množina slov generovaná vhodným lineárním automatem. Podrobněji je rozebrán proces kódování konvolučními kódy a je odvozen pojem generující matice. Pak jsou zmíněny některé třídy kódů a to konkrétně Massey-Costellovy a komplementární konvoluční kódy. Dále je popsána metoda propichování konvolučních kódů. Nakonec jsou uvedeny některé reprezentace konkrétních kódů a zdrojový kód dekóderu implementující Viterbiho dekódovací algoritmus v jazyce Verilog. Klíčová slova: Konvoluční kódy, Viterbiho algoritmus. Title: Decoding convolutional codes by Viterbi algorithm Author: Jiří Lechner Department: Department of algebra Supervisor: doc. RNDr. Jiří Tůma, DrSc. Supervisor s e-mail address: Jiri.Tuma@mff.cuni.cz This work is an introduction to the theory of convoluctional codes and its eliciting from the trellis codes. First we addict on the definition of basic graph notions and properties that are necessary for an implementation of trellis codes. Next is defined the notion of trellis diagram of specific graph and is described the encoding process of trellis codes. Consequently is described Viterbi decoding algorithm, its properties and properties of trellis codes. Then are defined the linear finite state machines and the basic characterization is mentioned. Convolutional code itself is defined as a set of codewords that are generated by the suitable finite state machine. The encoding process of convolutional codes is described in detail and the notion of generator matrix is derived. Then are mentioned some classes of convolu- 6
tional codes concretely the Massey-Costello and the complementary convolutional codes. Next is introduced a puncturing method for generating some convolutional codes of higher rates. Finally are listed some reprezentations of concrete convolutional codes and the the source code of the decoder, that implements the Viterbi algotihmus in Verilog. Keywords: Convolutional codes, Viterbi algorithm. 7
Kapitola 1 Základní pojmy grafů 1.1 Úvod Při klasickém kódování blokových kódů jsou zprávy (slova pevné délky) zobrazeny kódovacím zobrazením na kódová slova, přičemž toto zobrazení je nezávislé na předešlé kódované zprávě. Narozdíl tomu mřížkové a konvoluční kódy při kódování zohledňují i zprávy předcházející právě kódované zprávě. K tomuto účelu má kódovací zobrazení konečnou množinu stavů, ve kterých se může nacházet a které vpodstatě slouží jako jakýsi parametr pro kódování následující zprávy. Vždy po zakódování vstupní zprávy, přejde kódovací zobrazení do některého ze svých stavů odpovídajícího této zprávě a připraví se tak na kódování další zprávy. Takovéto kódovací zobrazení může být reprezentováno orientovaným grafem, kde množina vrcholů jsou jednotlivé stavy kódovacího zobrazení a hrany grafu reprezentují možné přechody mezi těmito stavy. Pak kódování posloupnosti zpráv vytváří jakousi cestu v grafu. Zakódovanou zprávu a původní zprávu můžeme jednotlivým hranám přiřadit jako jejich obarvení. Tím získáme korespondenci mezi cestami v grafu vzniklými při kódování, posloupnostmi zpráv a posloupnostmi kódových slov. Aby takto vzniklá posloupnost zakódovaných zpráv měla samoopravné vlastnosti, prodloužíme vzniklou cestu na cyklus. Nejprve se zaměříme na potřebné vlastnosti grafu a stanovíme tak třídu vhodných grafů pro reprezentaci kódovacího zobrazení. Odvodíme tak mřížkové kódy a jejich speciální variantu - konvoluční kódy. Většina textu čerpá z [1] strany 452-520. 8
1.2 Definice grafu a základních pojmů Definice 1.2.1. At V je konečná neprázdná množina vrcholů a E je konečná (případně i prázdná) množina orientovaných hran. Dále předpokládejme dvě zobrazení ι : E V a τ : E V. Pak definujeme konečný orientovaný graf jako G := (V, E, ι, τ). Pro každou hranu e E označíme její počáteční vrchol jako ι(e), koncový vrchol jako τ(e) a takovouto hranu budeme symbolicky zapisovat ι(e) τ(e). Grafy, které budeme nadále uvažovat, mohou obsahovat jak smyčky, tedy hrany e E, kde ι(e) = τ(e), tak i paralelní hrany, což jsou hrany e 1, e 2 E, kde ι(e 1 ) = ι(e 2 ) a τ(e 1 ) = τ(e 2 ). Dále přirozeným způsobem definujeme pojem podgrafu a indukovaného podgrafu. Definice 1.2.2. At G = (V, E, ι, τ) je konečný orientovaný graf, množina V V je neprázdná, E E a zobrazení ι : E V a τ : E V jsou restrikce na množinu E původních zobrazení ι a τ. Pak graf G = (V, E, ι, τ ) nazveme podgrafem grafu G. Definice 1.2.3. At G = (V, E, ι, τ) je konečný orientovaný graf a množina V V je neprázdná. Pak indukovaný podgraf G grafu G na množině V je orientovaný podgraf G := (V, E, ι, τ ), kde E = {e E, kde ι(e) V & τ(e) V } a zobrazení ι : E V a τ : E V jsou restrikce zobrazení ι, τ. Tedy indukovaný podgraf je největší podgraf grafu G na množině vrcholů V. Definice 1.2.4. At G = (V, E, ι, τ) je konečný orientovaný graf. Pak cestu π délky l N 0 { } v grafu G definujeme: a) pro l = 0 jako jeden jediný vrchol s V b) pro l = 1 jako jednu hranu π = {e i } 0 i=0 E c) a pro l 2 jako posloupnost na sebe navazujících hran, tedy kde τ(e i ) = ι(e i+1 ) pro i = 0,..., l 2. π = {e i } l 1 i=0 E, 9
Počáteční vrchol cesty π definujeme jako { jediný vrchol s pro l = 0 ι(π) := ι(e 0 ) pro l > 0 Koncový vrchol cesty π definujeme obdobně jako ι(π) = s pro l = 0 τ(π) := τ(e l 1 ) pro l N nedefinováno pro l = Pro cestu z vrcholu s 0 do vrcholu s l zavedeme označení π = s 0 s l. Cestu π délky l N 0 nazveme cyklem, pokud ι(π) = τ(π). V této naší definici cesty dovolujeme, aby se jednotlivé hrany v cestě opakovaly, což spíše odpovídá klasické definici sledu. Protože však později budeme namísto s grafem pracovat s jeho mřížkovým diagramem, vněmž se sledy i cykly mění na cesty v klasickém pojetí, nebudeme mezi nimi rozlišovat a souhrně je označíme jako cesty. Jak už jsme naznačili, pro kódování a dekódování slov nad nějakou abecedou budeme chtít použít cesty v grafu. Musíme tedy najít způsob, jak jednotlivým slovům přiřadit cesty v grafu. K tomuto účelu použijeme obarvení grafu. Definice 1.2.5. At G = (V, E, ι, τ) je konečný orientovaný graf a Σ je konečná abeceda. Pak obarvení grafu G je zobrazení σ : E Σ. Pro zdůraznění abecedy, do které σ zobrazuje hrany, budeme někdy obarvení označovat jako (σ, Σ). Obarvení hrany e E pak definujeme jako σ(e). Později budeme používat graf s dvěma obarveními. K jejich rozlišení je budeme označovat jako vstupní a výstupní obarvení. Nyní už přirozeným způsobem jednotlivým cestám v grafu přiřadíme slova nad danou abecedou. Definice 1.2.6. At G = (V, E, ι, τ) je konečný orientovaný graf s výstupním obarvením (σ, Σ) a π = {e i } l 1 i=0 je cesta délky l N { }. Pak slovo c π generované cestou π je c π := σ(e 0 )σ(e 1 )... σ(e l 1 ) = c 0 c 1... c l 1. Skutečnost, že cesta π generuje slovo c π budeme zapisovat π = ι(π) c 0c 1...c l 1 τ(π). 10
Cesty v grafu nám tedy generují určitá slova nad výstupní abecedou. Abychom měli zobrazení mezi dvěma množinami slov nad různými abecedami, zbývá nám nějak zobrazit slova nad vstupní abecedou na cesty v grafu. K tomuto účelu budeme potřebovat hrany v grafu jednoznačně reprezentovat a to samozřejmě pomocí dalšího obarvení. Definice 1.2.7. At G = (V, E, ι, τ) je konečný orientovaný graf se vstupním obarvením (ω, Ω). Identifikátor hrany e E definujeme jako dvojici [ι(e), ω(e)]. Dále definujeme zobrazení Υ : V Ω E jako kde [s, a] je identifikátor hrany e. Υ : [s, a] e, At dále u = u 0 u 1... u l 1 je slovo nad abecedou Ω. Pak cesta z vrcholu s generovaná slovem u je π = Υ([s, u 0 ]) Υ([τe }{{} 0, u 1 ])... Υ([τe }{{} l 2, u l 1 ]) = e }{{} 0 e 1... e l 1 e 0 e 1 Opět analogicky skutečnost, že cesta π z vrcholu s je generovaná slovem u budeme zapisovat π = v u 0 u 1...u l 1 τe l 1. Abychom kódované slovo u mohli použít k vygenerování příslušné cesty, musíme určit její počáteční vrchol s. Nejjednoduším řešením je k tomuto účelu stanovit jeden pevný vrchol grafu a při kódování a dekódování uvažovat pouze cesty z tohoto vrcholu. Definice 1.2.8. At G = (V, E, ι, τ) je konečný orientovaný graf. Pak počáteční vrchol grafu G definujeme jako nějaký pevně zvolený vrchol s V a budeme jej značit ι(g). V další části textu se zaměříme, pro které grafy, jejich obarvení a počáteční vrcholy mají předešlé definice smysl a které grafy budou vhodné pro kódování. e l 1 1.3 Klasifikace grafů Pro kódování využíváme cykly v grafu, proto důležitou roli bude hrát dostupnost vrcholů (a tedy i hran) v daném grafu. 11
Definice 1.3.1. At G = (V, E, ι, τ) je konečný orientovaný graf. Pak definujeme relaci ekvivalence na množině vrcholů jako s, s V : s s def cesty π, π, že π = s s & π = s s. Důkaz korektnosti. Nyní musíme ukázat, že relace je opravdu ekvivalencí. a) Reflexivita: chceme, aby s V : s s. V definici cesty jsme připustili i existenci cesty z vrcholu s do s délky 0 a definovali ji jako právě vrchol s. Tato cesta samozřejmě pro každý vrchol vždy existuje, a tedy s s. b) Symetrie: chceme, aby s, s V : s s s s. Z předpokladu s s máme existenci cesty z vrcholu s do s a cesty z s do s, což je ale zároveň definice s s. c) Tranzitivita: chceme, aby s, s, s V : s s & s s s s. Z s s máme existenci cesty π z s do s a cesty π zpět z s do s. Dále z s s máme existenci cesty π z s do s a cesty π z s do s. Spojením π a π dostaneme hledanou cestu z s do s a spojením π a π zase cestu zpět z s do s. Tedy tato relace je opravdu ekvivalencí a můžeme podle ní faktorizovat. Grafu vzniklému touto faktorizací se říká graf souvislosti grafu G. Jeho vrcholy jsou tvořeny jednotlivými třídami ekvivalence, což nás vede k následující definici. Definice 1.3.2. At G je konečný orientovaný graf s ekvivalencí. Pak definujeme komponenty souvislosti grafu G jako indukované podgrafy na množinách vrcholů jednotlivých tříd ekvivalence. Definice 1.3.3. At G = (V, E, ι, τ) je konečný orientovaný graf. Pak graf G je ireducibilní (někdy se též používá silně souvislý nebo jen souvislý), právě když s, s V cesty π, π, že π = s s & π = s s, tedy cesta π vede z vrcholu s do s a zároveň cesta π vede zpět z s do s. Komponenty souvislosti jsou maximální souvislé podgrafy v tom smyslu, že pokud bychom k množině vrcholů některé z komponent přidali další vrchol, pak by indukovaný graf na této množině vrcholů už nebyl souvislý. Z definice ireducibilního grafu ihned vyplývá, že takovýto graf se sestává právě z jediné komponenty souvislosti, a proto jakoukoli cestu lze prodloužit na cyklus. Oproti tomu v neireducibilním grafu jsou množiny vrchlů i množiny hran jednotlivých komponent souvislosti disjunktní, takže cesta procházející více komponentami souvislosti musí obsahovat alespoň jednu hranu s počátečním vrcholem v jedné komponentě a koncovým vrcholem v jiné komponentě souvislosti. Tuto hranu nazveme most. Takovouto cestu zřejmě nelze prodloužit na cyklus, protože 12
všechny vrcholy obsažené v cyklu jsou si ekvivaletní, a tudíž musí být v jedné komponentě souvislosti. Jak už víme, při kódování vstupního slova nejprve nalezneme cestu generovanou tímto slovem a následně ji potřebujeme prodloužit na cyklus. Tedy musíme zajistit, aby procházela pouze jednou komponentou. Definice 1.3.4. At G je konečný orientovaný graf s ekvivalencí. Pak definujeme stokovou komponentu jako komponentu souvislosti, z které nevede žádná hrana do jiné komponenty. Snadno vidíme, že cesta začínající ve stokové komponentě musí už nutně v této komponentě ležet celá, a tedy ji lze vždy prodloužit na cyklus. Zároveň víme, že cesty generované při kódování vždy začínají v počátečním vrcholu grafu. Volbou tohoto vrcholu ve stokové komponentě tak omezíme cesty generované při kódování pouze na tuto komponentu. Pak zbytek grafu už nemusíme vůbec uvažovat a budeme dále rovnou předpokládat, že graf G je tvořen pouze jedinou stokovou komponentou, tedy že je ireducibilní. Zbývá si ještě rozmyslet, že každý konečný orientovaný graf má alespoň jednu stokovou komponentu. To ovšem snadlo plyne z jeho konečnosti. Speciální případ ireducibilního grafu skládajícího se pouze z jediného vrcholu a žádné hrany označíme za triviální graf a ze zřejmých důvodů ho budeme z dalších úvah vynechávat. Definice 1.3.5. At G = (V, E, ι, τ) je konečný, orientovaný, ireducibilní, netriviální graf a s V. Pak definujeme: a) periodu p grafu G jako největší společný dělitel délek všech cyklů v grafu. Speciálně grafu s periodou 1 budeme říkat aperiodický. b) Ter(s, l) je množina koncových vrcholů všech cest délky l začínajících ve vrcholu s. c) Zpětná vzdálenost je přirozené číslo, pro které platí h N s V s Ter(s, h) cesta π : s s délky (h mod p), tj. každou cestu délky h lze prodloužit na cyklus délky l tak, že platí l = + h (h mod p). Existenci zpětné vzdálenosti ukážeme následujícími lemmaty. Lemma 1.3.6. ([1]Problém 14.3 ) At l 1, l 2,..., l k jsou přirozená čísla a p = gcd(l 1, l 2,..., l k ) 13
je jejich největší společný dělitel. Pak t 0 N t t 0 a 1, a 2,..., a k N 0 tak, že pt = k a i l i. i=1 Důkaz. Z Euklidova algoritmu máme pro p existenci b 1, b 2,..., b k tak, že Definujeme a tedy α = i:b i 0 p = k b i l i. i=1 b i l i a β = p = α β. i:b i <0 Pokud β = 0, pak p = α a můžeme definovat t 0 := 1 a a i := b i t, přičemž a i 0 pro i = 1,..., k. Dostáváme tak pro t t 0 k a i l i = i=1 k b i tl = t i=1 b i l i k b i l i = tα = tp. Pro β 0 můžeme volit t 0 := β(β 1). Pak pro t t 0 spočteme takže i=1 q = t div β r = t mod β, t = βq + r, a zároveň 0 r β 1. Protože ovšem platí β(β 1) = t 0 t = βq + r, dostáváme β 1 q. Po dosazení za t máme pt = p(βq + r) = βpq + pr = = βpq + (α β)r = βpq + αr βr = = αr + β(pq r) = r b i l i + (pq r)( b i l i ) = i:b i 0 b i l i r + i:b i <0 i:b i 0 b i l i (r qp). i:b i <0 14
Můžeme tak volit a i = { b i r pro b i 0 b i (r qp) pro b i < 0 Pak pro b i 0 jsou samozřejmě i a i 0. Dále ze vztahů 0 r β 1 a β 1 q snadno dostáváme, že r q, a tedy r pq 0. Proto i a i = b i (r pq) 0 pro b i < 0. Definice 1.3.7. At G = (V, E, ι, τ) je konečný orientovaný graf. Pak cyklus π je jednoduchý, právě když neobsahuje žádný podcyklus. Lemma 1.3.8. ([1]Problém 14.4 ) At G = (V, E, ι, τ) je konečný orientovaný graf s periodou p. Pak existuje přirozené číslo takové, že každou cestu délky l lze doplnit na cyklus prodloužením délky (l mod p). Důkaz. Předpokládejme, že l 1,..., l n jsou všechny různé délky jednoduchých cyklů v grafu G. Pak p = gcd(l 1,..., l n ). Libovolně zvolíme cykly γ 1,..., γ n tak, že délka cyklu γ i je rovna l i pro i = 1,..., n. V každém tomto cyklu zvolíme libovolně vrchol, dostaneme tak vrcholy v 1,..., v n. Dále nalezneme nejkratší cestu π γ procházející po řadě všemi vrcholy v 1,..., v n. Délku této cesty můžeme odhadnout jako V (n 1). Nyní předpokládejme libovolnou cestu π délky l vedoucí z nějakého vrcholu s do vrcholu s Tuto cestu prodloužíme libovolnou cestou délky p (l mod p). Označíme ji π p a její koncový vrchol označíme jako s. Dále nalezneme nejkratší cestu π 1 vedoucí z s do v 1 a cestu π 2 vedoucí z v n do vrcholu s. Opět délky obou cest π 1 a π 2 můžeme odhadnout jako V. Dostáváme tak, že ππ p π 1 π γ π 2 tvoří cyklus, jehož délka je samozřejmě dělitelná periodou p. Zároveň délka cesty ππ p je také dělitelná periodou p(protože tak jsme π p zkonstruovali), a proto musí být dělitelná i délka cesty π 1 π γ π 2. Tuto délku označme pk. Protože cesty π 1 a π 2 volíme vždy jako nejkratší, můžeme délku cesty π 1 π γ π 2 odhadnout jako V (n 1) + 2 V bez ohledu na volbu cesty π a spojovacích částí π 1, π 2. Definujeme V (n + 1) t 0 :=. p Z předchozího lemmatu máme pro l 1,..., l n existenci t 0 splňujícího určité vlastnosti. Nyní už stačí jen zvolit t tak, že t 1 t 0 + t 0 a můžeme definovat := pt. 15
Již jsme nalezli cestu π 1 π γ π 2 délky pk pt 0 zbývá ji doplnit na délku p. Protože ovšem t k 1 > t t 0 1 t 0, máme z předešlého lemmatu koeficienty a 1,..., a n, které splňují n p(t k 1) = a i l i. i=1 Takže k cestě π p π 1 π γ π 2 můžeme vždy ve vrcholu v i připojit právě a i smyček γ i. Vzniklá cesta tak bude mít délku což po úpravě dává p (l mod p) + pk + n a i l i, p (l mod p) + pk + p(t k 1) = pt (l mod p) = (l mod p). i=1 Předpokládejme, že chceme zakódovat nějaké slovo u = u 0 u 1... u l 1 nad abecedou Ω pomocí grafu G a jeho vstupního obarvení (ω, Ω). Nejprve musíme nalézt cestu generovanou slovem u vedoucí z počátečního vrcholu grafu G. To provedeme snadno. Začneme s prázdnou cestou π a počátečním vrcholem grafu. Pak vezmeme první znak u 0 a najdeme mezi odchozími hranami z ι(g) hranu s identifikátorem [ι(g), u 0 ]. O tuto hranu prodloužíme cestu π a přejdeme ke koncovému vrcholu této hrany a dalšímu znaku u 1. Takto bychom postupně vygenerovali hledanou cestu. Zbývá ještě zajistit existenci této cesty a její jednoznačnost. Nejdříve zajistíme existenci. V každém kroku generování cesty potřebujeme nalézt hranu vedoucí z aktuálního vrcholu mající obarvení rovné příslušnému znaku ve vstupním slově. Je-li toto slovo nad abecedou velikosti M, může být na dané 16
pozici ve slově M různých hodnot, a tedy z daného vrcholu musí vést alespoň M hran s navzájem různými obarveními. To nás vede k následujícím definicím. Definice 1.3.9. At G je konečný orientovaný graf a M N 0. Pak graf G je M-regulární, právě když každý vrchol má právě M odchozích hran. Definice 1.3.10. At G = (V, E, ι, τ) je konečný orientovaný graf se vstupním obarvením (ω, Ω). Pak graf G je deterministický vzhledem k obarvení (ω, Ω), právě když každé dvě hrany se stejným počátečním vrcholem mají různá obarvení. Ihned vidíme, že deterministický graf (vzhledem k ω) nám zároveň zaručuje i jednoznačnost generované cesty. Při kódování nalezenou cestu prodlužujeme na cyklus. Jak jsme ukázali, toto prodloužení vždy exituje a máme dokonce i odhad jeho délky. Nyní nám už jen zbývá zobrazit nalezený cyklus do množiny slov nad výstupní abecedou Σ. To provedeme přirozeně zobrazením daného cyklu na slovo generované tímto cyklem. Abychom zakódované slovo mohli zpět dekódovat, bude muset být toto zobrazení opět prosté. Mohli bychom požadovat determinističnost grafu G (vzhledem k výstupnímu obarvení σ), avšak to by bylo příliš omezující, proto zavedeme následující pojem. Definice 1.3.11. At G je konečný orientovaný graf s výstupním obarvením (σ, Σ). Pak graf G je bezeztrátový vzhledem k obarvení (σ, Σ), právě když každé dvě různé cesty se stejným počátečním a koncovým vrcholem generují různá slova. Snadno vidíme, že deterministický graf je zároveň i bezeztrátový, naopak to ovšem platit nemusí. Uved me příklad konečného, orientovaného, ireducibilního grafu G = (V, E, ι, τ) s obarveními (ω, Ω) a (σ, Σ). Množina vrcholů je dána jako V = {00, 01, 10, 11} a množina hran jako E = {[00, 0], [00, 1], [01, 0], [01, 1], [10, 0], [10, 1], [11, 0], [11, 1]} Vstupní obarvení hrany je v grafu odděleno od výstupního obarvení pomlčkou. 17
Tento graf je deterministický vzhledem ke vstupnímu obarvení a bezeztrátový vzhledem k výstupnímu. Zároveň je 2-regulární. Má periodu p = 1 a je tedy aperiodický. Snadno také vidíme, že jeho zpětnou vzdálenost lze volit = 2. 1.4 Množiny slov grafu V této části definujeme určité množiny slov, které nám později budou sloužit jako kód. Definice 1.4.1. At G = (V, E, ι, τ) je konečný, orientovaný, ireducibilní, garf s výstupním obarvením (σ, Σ). Pak definujeme: a) C(G) jako množinu všech (různých) nekonečných slov nad Σ generovanými všemi nekonečnými cestami vedoucími z počátečního vrcholu ι(g). b) C l (G) jako množinu všech (různých) slov nad Σ délky l generovanými všemi cestami délky l vedoucími z počátečního vrcholu ι(g). c) Cl o (G) jako množinu všech (různých) slov nad Σ délky l generovanými všemi cykly délky l vedoucími z počátečního vrcholu ι(g). Vidíme, že Cl o(g) je podmnožinou C l(g). Dále pokud G je deterministický (vzhledem k (σ, Σ)), je každý prvek z C l (G) generován právě jednou cestou začínající v počátečním vrcholu grafu G. Množina Cl o (G) je tvořena slovy generovanými cykly, což jsou cesty se stejným počátečním a koncovým vrcholem. K jejich jednoznačnému přiřazení k množině Cl o (G) nám stačí bezeztrátovost grafu. 18
V ireducibilním grafu jde každá cesta délky h prodloužit na cyklus přidáním (h mod p) hran, kde je zpětná vzdálenost a p je perioda grafu. Z toho vyplývá, že každý prvek z C h (G) je prefixem nějakého prvku v Cl o (G), kde l = + h (h mod p). 19
Kapitola 2 Mřížkové kódy (trellis code) 2.1 Mřížkový diagram (trellis diagram) Definice 2.1.1. At G = (V, E, ι, τ) je konečný orientovaný graf se vstupním obarvením (ω, Ω) a výstupním obarvením (σ, Σ). Pak definujeme mřížkový diagram T (G) = (V, E, ι, τ ) grafu G jako nekonečný orientovaný graf s obarveními (σ, Σ) a (ω, Ω), kde a) množina vrcholů V = V N 0 b) množina hran E = E N 0 c) počáteční vrchol hrany (e, t) je d) koncový vrchol hrany (e, t) je e) obarvení hrany (e, t) jsou pro t = 0, 1, 2,.... ι ((e, t)) := (ι(e), t) pro (e, t) E τ ((e, t)) := (τ(e), t + 1) pro (e, t) E ω ((e, t)) := ω(e) σ ((e, t)) := σ(e) Pro vrchol (s, t) zavedeme označení s (t). Obdobně hrany (e, t) označíme e (t). Pak můžeme definovat pro t = 0, 1,... takzvanou t-tou vrstvu jako V (t) := {s (t) : s V } = {(s, t) : s V }. 20
A dostáváme V = V (0) V (1) V (2) Analogicky pro hrany definujeme E (t) := {e (t) : e E} = {(e, t) : e E}. A tedy E = E (0) E (1) E (2) Hrana e v grafu G, kde e = s c u s, odpovídá hranám e (t) = s (t) c u s (t+1), pro t = 0, 1, 2,.... Snadno tak dostáváme korespondenci mezi cestami v grafu G a cestami v jeho mřížkovém diagramu T (G), kdy hraně e v cestě na pozici t přiřadíme odpovídající hranu v t-té vrstvě mřížkového diagramu. 2.2 Mřížkové kódy Nyní už konečně můžeme definovat mřížkové kódy. 21
Definice 2.2.1. At n, M N a F je konečná abeceda. Pak množina C nekonečných slov nad F n je (n, M) mřížkový kód nad F, právě když existuje konečný, orientovaný, ireducibilní, M-regulární graf G = (V, E, ι, τ), který je bezeztrátový vzhledem k výstupnímu obarvení σ : E F n = Σ, tak že C = C(G). O takovém grafu řekneme, že reprezentuje tento mřížkový kód. Graf G, který je konečný, orientovaný, ireducibilní, M-regulární, bezeztrátový vzhledem k výstupnímu obarvení a deterministický vzhledem ke vstupnímu obarvení budeme dále zkráceně označovat jen jako G. Protože daný mřížkový kód může být reprezentován různými grafy, budeme pro zdůraznění konkrétního grafu označovat mřížkový kód příslušný grafu G jako C(G). Lemma 2.2.2. At G a G jsou dva grafy reprezentující mřížkový kód C. Pak C l (G) = C l (G ) Důkaz. Předpokládejme slovo c C l (G), pak existuje ceta π v grafu G délky l, která generuje slovo c. Tuto cestu libovolně prodloužíme na nekonečnou cestu π, která nám bude generovat nekonečné slovo c, přičemž slovo c je prefixem slova c. Slovo c je samozřejmě prvkem C(G). Protože G a G reprezentují C, platí C(G) = C(G ), tedy c C(G ). Z toho vyplývá, že existuje nekonečná cesta π v grafu G, která generuje slovo c. Zkrácením cesty π na cestu délky jen l dostaneme cestu v G generující slovo c. Tedy C l (G) C l (G ). Opačnou inkluzi dokážeme analogicky. Oproti tomu množiny C o l (G) a Co l (G ) mohou být různé. To lze nahlédnout z předchozího důkazu. Postupujme tedy obdobně, tj. k danému slovu jsme našli cyklus, ten prodloužili na nekonečné slovo, našli jeho generující cestu v druhém grafu a zkrátili ji na délku l. Avšak nemáme nijak zaručeno, že vzniklá cesta bude opět cyklus. A opravdu není těžké jako protipříklad nalézt dvojici reprezentujících grafů jejihž množiny C o l (G) a Co l (G ) jsou různé. Definice 2.2.3. At G je M-regulární graf se vstupním obarvením (ω, Ω) a výstupním obarvením (σ, Σ). Pak definujeme zobrazení E l : Ω l C l (G) jako E l (u 0 u 1... u l 1 ) := σ(π), kde π je cesta z vrcholu ι(g) generovaná slovem u 0 u 1... u l 1. 22
2.3 Hustota mřížkového kódu Definice 2.3.1. At C je (n, M) mřížkový kód nad abecedou F. Pak definujeme hustotu ϱ mřížkového kódu C jako ϱ := log F M. n Nyní se podívejme na vztah hustoty mřížkového kódu k pojmu hustoty u blokových kódů, tedy u kódů s pevnou délkou kódových slov. Předpokládejme, že graf G reprezentuje daný mřížkový (n, M) kód nad abecedou F. Množiny C l (G) a C o l (G) pak můžeme chápat jako blokové kódy délky l nad abecedou F n. Lemma 2.3.2. ([1]Tvrzení 14.1 a Problém 14.6 ) At graf G reprezentuje (n, M) mřížkový kód C nad abecedou F velikosti q. Pak log q n C l (G) lim l l = log q M. n Důkaz. Protože G je M-regulární, z každého vrcholu vede právě M odchozích hran. V grafu G tedy máme celkem M l cest délky l vedoucích z počátečního vrcholu grafu a proto i C l (G) = M l. Pak log q n C l (G) log q n M l lim = lim l l l l 1 = lim log q n M = lim l l log q q n log q M = log q M n. Množinu C l (G) můžeme chápat i jako nějaký blokový kód. Dále C l (G) je nad abecedou F n, proto jeho dimenze je log q n C l (G). Zároveň délka kódu je l. To znamená, že hustota blokových kódů C l (G) je log q n C l(g) l a ty se limitně blíží k hustotě C. 2.4 Volná vzdálenost mřížkového kódu Nejprve zopakujme pojem Hamingovy vzdálenosti dvou slov. Definice 2.4.1. At x = (x 1 x 2... x n ), y = (y 1 y 2... y n ) jsou dvě slova délky n nad abecedou F. Pak definujeme Hamingovu vzdálenost dist H (x, y) slov x a y jako počet pozic, na kterých se slova x a y navzájem liší. 23
Protože mřížkové kódy jsou tvořeny slovy (posloupnostmi) nad F n, Hamingova vzdálenost dvou slov by nám určovala pouze počet bloků délky n, ve kterých se daná slova liší. My však spíše budeme potřebovat jejich Hamingovu vzdálenost jako by to byla slova jen nad abecedou F. Definice 2.4.2. At x = (x 0 x 1... x l 1 ), y = (y 0 y 1... y l 1 ) jsou dvě slova délky l nad abecedou F n, kde l N { }. Pak definujeme Hamingovu vzdálenost nad F jako l 1 dist F (x, y) := dist H (x t, y t ). Pomocí této nové Hamingovy vzdálenosti definujeme obvyklým způsobem minimální vzdálenost mřížkového kódu. Definice 2.4.3. At C je (n, M) mřížkový kód nad F. Pak definujeme volnou vzdálenost (free distance) dist free kódu C jako dist free (C) := min dist F (c 0 c 1 c 2..., c 0c 1c 2...) = min dist H (c t, c t), kde minimum je bráno přes všechny různé dvojice (c 0 c 1 c 2... c 0 c 1 c 2...) C C. Analogicky definujeme volnou vzdálenost blokového kódu Cl o (G) jako dist free (C o l (G)) := min dist F (c 0 c 1 c 2..., c 0c 1c 2...) = min l dist H (c t, c t), kde minimum je opět bráno přes všechny různé prvky v Cl o (G) a graf G reprezentuje kód C. Uvažujme nyní všechny cykly délky l začínající v ι(g). Tyto cykly generují všechna slova v Cl o (G), ale zároveň se dají stejně prodloužit na nekonečné cesty. Označímeli množinu slov, které tyto cesty generují H, snadno dostáváme H C a tedy dist free (H) dist free (C). Protože jsme ovšem všechny cykly generující Cl o(g) prodlužovali stejnou cestou, platí i dist free (H) = dist free (Cl o (G)). Dostáváme tak důležitý dolní odhad minimální vzdálenosti pro Cl o(g). dist free (C o l (G)) dist free(c) 2.5 Kódování Hlavní krok kódování už jsme popsali dříve. Ten propěhne pomocí zobrazení E l : Ω l C l (G). 24
Nejprve ale zopakujme potřebné předpoklady. Tedy mějme nějaký (n, M) mřížkový kód C s hustotou ρ nad abecedou F, která je velikosti q. Dále mějme jeho reprezentující graf G = (V, E, ι, τ), tedy tento graf je konečný, orientovaný, ireducibilní a M-regulární se vstupním obarvením ω : E Ω, vůči kterému je graf deterministický, a s výstupním obarvením σ : E Σ = F n, vůči kterému je bezeztrátový. Nakonec předpokládejme periodu p a zpětnou vzdálenost grafu G. Pak zakódování slova u 0 u 1... u l 1 Ω l proběhne přes cestu na kódové slovo π = [s 0 = ιg, u 0 ][s 1, u 1 ]... [s l 1, u l 1 ] E l (u 0 u 1... u l 1 ) = σ(π). Díky vlastnostem grafu G je zobrazení E l prosté a do množiny C l (G). Tedy existuje i inverzní zobrazení. Abychom docílili samoopravných vlastností musíme zobrazení E l použité pro kódování nějak modifikovat na zobrazení E o l : Ωh C o l (G). Toto zobrazení zkonstruujeme následovně. Nejprve zvolíme l jako nějaký násobek p (jinak by Cl o (G) byla prázdná množina) a zároveň aby l. Pak definujeme h := l. Posloupnost u 0 u 1... u h 1 nám určuje nějakou cestu π h vedoucí z ι(g). Dále víme, že existuje prodloužení π délky přesně, které prodlužuje cestu π h na cyklus. Toto prodloužení π je určeno nějakým slovem u h+1... u l 1 a tedy můžeme definovat El o (u 0... u h 1 ) := E l (u 0... u h 1 u h... u l 1 ). Protože zobrazení El o nám poskytuje kód Rng Eo l Co l (G), musíme opět ověřit jeho hustotu. Rng El o = M h = M l, tedy log q n M l l = ( 1 ) logq M l n l ρ. 25
2.6 Dekódování Opět předpokládejme (n, M) mřížkový kód C nad abecedou F s reprezentujícím grafem G, vstupním obarvením (ω, Ω) a výstupním obarvením (σ, F n ). Pomocí zobrazení El o zakódujeme slovo na posloupnost u 0... u h 1 Ω h c 0 c 1... c l 1 C o l (G). Díky vlastnostem grafu G je toto zobrazení prosté a mohli bychom tedy snadno dekódovat pomocí inverzního zobrazení k El o. Dále ovšem předpokládejme pravděpodobnostní přenosový kanál S = (F, Φ, P r), kde F je jeho vstupní abeceda, Φ jeho výstupní abeceda a P r je pravděpodobnostní distribuční funkce. Tedy funkce vracející hodnotu pravděpodobnosti jevu, že při vstupu znaku a F do přenosového kanálu S bude na výstupu kanálu znak b Φ. Přenosový kanál S nám slovo c 0 c 1... c l 1 Cl o nl (G) F zobrazí na y 0 y 1... y l 1 Φ n tak, že vstupní slovo přenese jako nl znaků abecedy F a po průchodu kanálem vzniklou posloupnost znaků abecedy Φ rozdělí na l bloků délky n. Dále budeme předpokládat, že přenosy jednotlivých znaků jsou nezávislé náhodné procesy. Dekódovat budeme na nejpodobnější prvek. Což znamená, že najdeme slovo ĉ 0 ĉ 1... ĉ l 1 C o l (G), jež má největší pravděpodobnost, že po vstupu do přenosového kanálu bude na výstupu tohoto kanálu slovo y 0 y 1... y l 1. Tedy vytvoříme dekódovací zobrazení D : (Φ n ) l C o l (G) zobrazující y 0 y 1... y l 1 na ĉ 0 ĉ 1... ĉ l 1 C o l (G), přičemž slovo ĉ 0ĉ 1... ĉ l 1 je určeno tak, že maximalizuje pravděpodobnost P r{y 0 y 1... y l 1 přijato ĉ 0 ĉ 1... ĉ l 1 odesláno}. Z nezávislosti náhodných jevů přenosů jednotlivých znaků dostáváme l 1 P r{y 0 y 1... y l 1 přijato ĉ 0 ĉ 1... ĉ l 1 odesláno} = P r{y t přijato ĉ t odesláno}. 26
Po zlogaritmování má ĉ 0 ĉ 1... ĉ l 1 maximalizovat výraz log(p r{y 0 y 1... y l 1 přijato ĉ 0 ĉ 1... ĉ l 1 odesláno}) = l 1 = log( P r{y t přijato ĉ t odesláno}) = l 1 = log(p r{y t přijato ĉ t odesláno}) Tato suma je záporné číslo a tedy po označení χ(y t, ĉ t ) := log(p r{y t přijato ĉ t odesláno}) má ĉ 0 ĉ 1... ĉ l 1 minimalizovat výraz l 1 χ(y t, ĉ t ). Definice 2.6.1. At G = (V, E, ι, τ) je konečný graf. Pak definujeme kladné ohodnocení grafu G jako funkci χ : E R +. Hodnotu χ(e) nazveme ohodnocení hrany e. Ohodnocení cesty π pak samozřejmě definujeme jako součet ohodnocení hran tvořících danou cestu. Nyní k reprezentujícímu grafu G uvažujme jeho mřížkový diagram T (G) a definujme pro prvních l vrstev ohodnocení χ(e (t) ) = χ t (e) := χ(y t, σ(e)), kde e E a t = 0,..., l 1. Pak problém najít slovo ĉ 0 ĉ 1... ĉ l 1 Cl o (G), které by minimalizovalo výraz l 1 χ(y t, ĉ t ), je ekvivalentní k nalezení cyklu π z vrcholu ι(g) délky l s nejmenším ohodnocením. Dále se nám bude hodit každému vrcholu s (t) V (t) z vrstvy t, kde t = 0,..., l, definovat jeho ohodnocení jako χ(s (t) ) = χ t (s) := min χ(π), π kde minimum je práno přes všechny cesty π délky t z vrcholu (ι(g)) (0) v nulté vrstvě do vrcholu s (t). Pokud žádná taková cesta neexistuje, definujeme χ t (s) :=. A pro vrchol (ι(g)) (0) definujeme ohodnocení jako 0. Cestu s nejmenším ohodnocením, která realizuje ohodnocení vrcholu s (t) označíme π t (s). Hledáme tedy cyklus π l (ι(g)) s nejmenším ohodnocením. Ten najdeme pomocí Viterbiho algoritmu. Nejprve pro přijaté slovo y 0 y 1... y l 1 vygenerujeme ohodnocení hran χ t (e) pro e E a t = 0,..., l 1 a pak použijeme Viterbiho algoritmus. 27
Algorithm 1 Viterbiho algoritmus Require: ohodnocení hran χ t (e) pro e E a t = 0,..., l 1 Ensure: cyklus π min Cl o (G) s nejmenším ohodnocením 1: for all s V do 2: { 0 pro s = ι(g) χ 0 (s) jinak 3: end for 4: π 0 (ι(g)) cesta délky 0 5: for t = 0,..., l 1 do 6: for all s V do 7: najdi vstupní hranu e do vrcholu s, která minimalizuje výraz χ t (e) + χ t (ι(e)), 8: pak nastav χ t+1 (s) χ t (e) + χ t (ι(e)) 9: a nastav π t+1 (s) π t (ι(e)) 10: end for 11: end for 12: Return π min π l (ι(g)) 28
Důkaz správnosti Viterbiho algoritmu. Budeme dokazovat indukcí podle t. Průběh algoritmu lze snadno znázornit v mřížkovém diagramu garfu G. Ukážeme, že Viterbiho algoritmus najde pro každý vrchol s ve vrstvě t cestu délky právě t s nejmenším ohodnocením vedoucí z počátečního vrcholu ι(g) do vrcholu s. Pro t = 0 nevede do žádného vrcholu s ι(g) žádná cesta délky 0. Pokud fakt, že do vrcholu žádná cesta z počátečního vrcholu nevede, označíme jeho ohodnocením rovným, je inicializace algoritmu korektní. Podívejme se ještě na případ t = 1. Pro každou hranu e vedoucí z jiného vrcholu než ι(g) je součet χ 0 (e) + χ(ι(e)) roven. Pouze pro hrany vedoucí z ι(g) je součet přímo roven ohodnocení dané hrany. Tedy součet je minimální pro hranu s minimálním ohodnocením vedoucím do daného vrcholu. A opravdu cesta z ι(g) do vrcholu s délky 1 je tvořena právě jednou hranou s minimálním ohodnocením vedoucí z počátečního vrcholu do vrcholu s. Indukční krok t t + 1. Předpokládejme, že ohodnocení každého vrcholu s ve vrstvě t je rovno nejmenšímu ohodnocení nějaké cesty vedoucí z počátečního vrcholu grafu do tohoto vrcholu s. Dále předpokládejme, že pro vrchol s ve vrstvě t+1 našel algoritmus hranu e vedoucí z vrcholu s 0 do s, která minimalizuje součet χ t (e) + χ t (ι(e)). Pak nalezená cesta s minimálním ohodnocením vedoucí do vrcholu s by měla být π = π t (s 0 )e. Pro spor uvažme jinou cestu π vedoucí z počátečního vrcholu grafu do vrcholu s s menším ohodnocením než má π. Cestu π můžeme napsat jako π e, kde π je cesta z ι(g) do nějakého vrcholu s 0 ve vrstvě t a hrana e vede z s 0 do vrcholu s. Ohodnocení cesty π je rovno χ(π ) + χ t (e ), přičemž χ(π ) musí být rovno χ t (s 0 ) (jinak by nebylo minimální). Pak ovšem z χ( π) = χ t (s 0) + χ t (e ) χ t (s 0 ) + χ t (e) = χ(π) máme spor, protože hrana e neminimalizuje součet χ t (e) + χ t (ι(e)). Výpočetní složitost algoritmu je soustředěna do for-cyklů (5) a (6). Vnější forcyklus má l kroků. Ve vnitřním forcyklu pro každý vrchol hledáme vstupní hranu vedoucí z předešlé vrstvy, která minimalizuje určitý výraz. K tomu, abychom ji našli, nám stačí projít všechny hrany vedoucí do dané vrstvy a otestovat, zda je 29
součet ohodnocení hrany a ohodnocení počátečního vrcholu menší než stávající ohodnocení koncového vrcholu. Dostáváme tak l E sčítání reálných čísel. Dále odhadneme prostorovou složitost. Pro každou vrstvu t = 1,..., l si algoritmus potřebuje pro každý vrchol s ve vrstvě t pamatovat již nalezenou cestu do vrcholu s s nejmenším ohodnocením. Máme tak l V cest. Protože G je M regulární graf, z každého vrcholu ve vrstvě vede M hran. Celkem tedy potřebujeme l V log M bitů. Nakonec ještě potřebujeme V reálných hodnot pro ohodnocení vrcholů (při výpočtu (7) a (8) potřebujeme hodnoty jen z předešlé vrstvy). 30
Kapitola 3 Lineární automaty 3.1 Lineární automaty V této části se zaměříme na konečné, regulární, obarvené, orientované grafy, které jsou v jistém smyslu lineární. Tyto grafy nám poslouží k zavedení konvolučních kódů jako speciální případ mřížkových kódů. Definice 3.1.1. Předpokládejme konečné těleso F = GF(q), kde q je prvočíslo. Dále at A = (V, E, ι, τ) je konečný, orientovaný, M-regulární graf se vstupním obarvením (ω, Ω) a výstupním obarvením (σ, Σ). Pak A je k : n lineární automat nad F, právě když existují přirozená čísla k, n, m a existují matice P velikosti m m, B velikosti k m, Q velikosti m n a matice D velikosti k n nad F tak, že graf A splňuje: V = F m, vrchol s pak budeme chápat jako řádkový vector F m ; M = F k a zároveň Ω = F k, pak identifikátor hrany e má tvar [ι(s), ω(s)] a dostáváme tak podmínku pro každou hranu e = [s, u] E platí E = V F k ; ι(e) = s a τ(e) = sp + ub; Σ = F n a pro každou hranu e = [s, u] E platí σ(e) = sq + ud. 31
ι(g) = 0 m tj. nulový vektor dimenze m. Tuto definici ještě rozšíříme pro speciální případ m = 0. Pak V = 1 a podmínku pro koncový vrchol nějaké hrany e a její obarvení změníme na τ(e) = ι(e) = s a σ(e) = ud. Lineární automat A je čtveřicí matic (P, B, Q, D) určen jednoznačně, oproti tomu snadno najdeme příklady dvou různých čtveřic, které určují izomorfní automaty. Naším dalším cílem bude odvodit potřebné podmínky, které musí lineární automat A splňovat, aby byl zároveň i grafem reprezentujícím nějaký mřížkový kód. Z předešlé části už víme, že k tomu musí být A konečný, orientovaný, regulární, ireducibilní graf se vstupním deterministický a výstupním bezeztrátovým obarvením a s počátečním vrcholem ι(a) ve stokové komponentě. Z definice k : n lineárního automatu A ihned vidíme, že A je konečný, F k -regulární, orientovaný graf s deterministickým vstupním obarvením. K odvození zbylých vlastností budeme potřebovat následující pojem. 3.2 Cesty v lineárních automatech Předpokládejme k : n lineární automat A = (V = F m, E, ι, τ) nad konečným tělesem F s výstupním obarvením (σ, F n ) a necht je A určený čtveřicí matic (P, B, Q, D). Dále předpokládejme vrchol s 0 a nekonečné slovo u nad F k, u = u 0 u 1 u 2.... Toto slovo nám generuje cestu π z vrcholu s 0, π = [s 0, u 0 ][s 1, u 1 ][s 2, u 2 ]..., a tato cesta nám zase zpět generuje nějaké slovo nad F n, K těmto nekonečným posloupnostem c 0 c 1 c 2.... s 0 s 1 s 2..., u 0 u 1 u 2..., c 0 c 1 c 2... přirozeným způsobem přiřadíme formální mocninné řady v proměnné x: s(x) = s t x t, u(x) = u t x t, c(x) = 32 c t x t.
Každá tato řada je vektorem nad okruhem F [[x]]. Nezapomínejme, že třeba například pro s t = (s 1t, s 2t,..., s mt ) F m platí s(x) = (s 1t, s 2t,..., s mt )x t = ( s 1t x t, s 2t x t,..., s mt x t ) (F [[x]]) m. Dostáváme tak s(x) (F [[x]]) m, u(x) (F [[x]]) k, c(x) (F [[x]]) n. Nyní se pokusíme odvodit vztah mezi posloupnostmi s 0 s 1 s 2..., u 0 u 1 u 2..., c 0 c 1 c 2... a jejich mocninými řadami s(x), u(x) a c(x). Pro každé t 0 z definice lineárního automatu platí a zároveň s t+1 = s t P + u t B c t+1 = s t Q + u t D. Přenásobením obou vztahů výrazem x t+1 a vysčítáním podle t dostáváme nebo-li s t x t = t=1 a po úpravě obdržíme vztah s t x t P + u t x t B s(x) s 0 = xs(x)p + xu(x)b s(x)(i xp ) = u(x)xb + s 0, kde I je jednotková matice. Snadno ověříme, že (I xp ) 1 = xt P t, protože platí (I xp )( x t P t ) = ( x t P t ) ( x t+1 P t+1 ) = I. Po vyjádření s(x) tak dostáváme následující lemma. Lemma 3.2.1. At A je k : n lineární automat nad konečným tělesem F reprezentovaný maticemi (P, B, Q, D). Dále předpokládejme cestu π = [s 0, u 0 ][s 1, u 1 ][s 2, u 2 ].... Pak vrchol s t můžeme vyjádřit jako s(x) = (u(x)xb + s 0 )(I xp ) 1. 33
Důkaz. Na obou stranách rovnice máme mocniné řady, tedy jejich rovnost dokážeme rovností jejich jednotlivých členů. Pro t 0 máme z definice lineárního automatu vyjádření s t+1 = s t P + u t B = (s t 1 P + u t 1 B)P + u t B = s t 1 P 2 + u t 1 BP + u t B, dalším rekurentním rozempsáním členů s t 1,..., s 0 dostáváme s t+1 = (s t 2 P + u t 2 B)P 2 + u t 1 BP + u t B =... = s 0 P t+1 + B a tedy n-tý člen je roven n 1 s n = s 0 P n + B u k P n 1 k. Nyní upravíme druhou stranu dokazované rovnosti (u(x)xb + s 0 )(I xp ) 1 = (u(x)xb + s 0 )( x t P t ). k=0 Dosazením za u(x) a roznásobením dostáváme což upravíme na x( u t x t )B( x t P t ) + s 0 x t P t, x( u t x t )( x t BP t ) + s 0 x t P t a použitím Cauchyova součinu řad máme t x ( u k BP t k )x t + s 0 x t P t. k=0 Tento výraz ještě upravíme na t ( u k BP t k )x t+1 + s 0 x t P t, k=0 n-tý člen této výsledné mocniné řady má pak tvar n 1 u k BP n 1 k + s 0 P n = s n. k=0 t u k P t k Tím je rovnost dokázána a získali jsme tak i vyjádření n-tého vrcholu v cestě. 34 k=0
Z vyjádření pro n-tý vrchol v cestě dostáváme i charakterizaci cest v grafu A a to konkrétně mezi vrcholy s, s V existuje cesta délky l, právě když existují u 0 u 1 u 2... u l 1 F k tak, že l 1 s = sp l + u t BP t. Pro posloupnost c 0 c 1 c 2... budeme postupovat analogicky. Výraz c t = s t Q + u t D vynásobíme x t a sečteme přes t 0. Dostaváme tak analogické lemma. Lemma 3.2.2. At A je k : n lineární automat nad konečným tělesem F reprezentovaný maticemi (P, B, Q, D). Dále předpokládejme cestu π = [s 0, u 0 ][s 1, u 1 ][s 2, u 2 ].... Pak c t můžeme vyjádřit jako c(x) = s(x)q + u(x)d. Důkaz. Opět budebe dokazovat rovnost řad člen po členu. Rozepsáním definic členů s(x), u(x) a c(x) dostáváme výsledek c t x t = s t x t Q + u t x t D. 3.3 Ireducibilita, počáteční vrchol a aperiodičnost lineárního automatu V definici k : n lineárního automatu A = (V = F m, E, ι, τ) nad F reprezentovaného maticemi (P, B, Q, D) jsme počáteční vrchol ι(a) definovali jako vektor 0 m. Nyní musíme ukázat, že tento vrchol leží ve stokové komponentě garfu A. K tomuto účelu pro l N zavedeme matici Γ l velikosti lk m jako Γ l := B BP BP 2. BP l 1 Lemma 3.3.1. ([1]Problém 14.9 ) At A je k : n lineární automat nad konečným tělesem F reprezentovaný maticemi (P, B, Q, D) a dále předpokládejme vrchol 35
s 0 F m. Pak pro každý vrchol s F m existuje cesta z s 0 do vrcholu s délky l, právě když hodnost matice je rank(γ l ) = m. Důkaz. Nejprve ukážeme implikaci. Takže předpokládejme, že do každého vrcholu s F m existuje z vrcholu s 0 cesta délky l. To, jak víme z předešlé části, je ekvivalentí s l 1 s F m u 0 u 1 u 2... u l 1 F k tak, že s = s 0 P l + u t BP t. Člen s 0 P l je pro všechny vrcholy s neměnný a tedy po převedení na levou stranu rovnice bude člen s := s s 0 P l opět probíhat celou množinu F m. Dostáváme tak ekvivalentní podmínku l 1 s F m u 0u 1u 2... u l 1 F k tak, že s = u tbp t. Každý člen v sumě u tbp t je vlastně lineární kombinace řádkových vektorů matice BP t s koeficienty na příslušných souřadnicích ve vektoru u t. A protože matice Γ l je tvořena řádkovými vektory matic B, BP,..., BP l 1, je celá suma lineární kombinací řádkových vektorů Γ l. Proto dostáváme ekvivalentní vyjádření s F m platí, že s span(γ l ). Z toho ovšem triviálně vyplývá, že F m span(γ l ) a platí dokonce i rovnost. Z lineární algebry pak víme, že rank(γ l ) = dim span(γ l ) = dim F m = m. Nyní se podívejme na opačnou implikaci. Předpokládejme, že rank(γ l ) = m. Pak dim span(γ l ) = rank(γ l ) = m a dostáváme tak span(γ l ) = F m. Chceme dokázat, že pro l 1 s F m u 0 u 1 u 2... u l 1 F k tak, že s = s 0 P l + u t BP t. Tedy pro libovolný vrchol s definujeme s := s s 0 P l. Tento vrchol je v F m a tedy l 1 u 0 u 1 u 2... u l 1 F k tak, že s = u t BP t. 36
Zpětným dosazením tak dostáváme l 1 u 0 u 1 u 2... u l 1 F k tak, že s = s 0 P l + u t BP t. A tedy existuje cesta z s 0 do s délky l. V předešlém lemmatu nezáleží na volbě vrcholu s 0, proto obecněji mezi vrcholy s a s existuje cesta délky l, právě když je rank(γ l ) = m. K ireducibilitě grafu A by jsme ovšem potřebovali tuto podmínku nezávislou na l. Lemma 3.3.2. ([1]Problém 14.9 ) At A je k : n lineární automat nad konečným tělesem F reprezentovaný maticemi (P, B, Q, D). Pak pro všechna l m platí span(γ l ) = span(γ m ). Důkaz. Tedy budeme dokazovat, že řádkové vektory matice Γ l jsou lineární kombinací řádkových vektorů matice Γ m, což ještě ukážeme ve speciálním tvaru a to, že pro k m c 0,..., c m 1 F tak, že platí BP k = m 1 Matici B můžeme ze sumy vytknout, takže budeme dokazovat k m c 0,..., c m 1 F tak, že platí P k = m 1 c t BP t. c t P t. Toto tvrzení už dokážeme indukcí podle k. Začneme od k = m. Z Cayley-Hamiltonovy věty máme m 1 P m = a t P t, kde koeficienty a t jsou koeficienty charakteristického polynomu a(x) matice P a platí m 1 a(z) = det(zi P ) = z m + a t z t. Tedy hledané koeficienty jsou a 0,..., a m 1 a máme dokázaný první krok indukce. Dále z indukčního předpokladu máme existenci koeficientů c 0,..., c m 1 tak, že P k = m 1 37 c t P t.
Provedeme indukční krok k k + 1 : m 1 P k+1 = P k P = ( = m 2 c t P t )P = m 1 m 1 c t P t+1 c m 1 kde c t jsou definovány zřejmým způsobem. c t P t+1 = a t P t = Jako důsledek předešlých dvou lemmat je tvrzení: m 2 m 1 c t P t+1 + c m 1 P m = c tp t, A je ireducibilní rank(γ m ) = m. Lemma 3.3.3. ([1]Problém 14.10 ) At A je k : n lineární automat nad konečným tělesem F reprezentovaný maticemi (P, B, Q, D). Pak A je aperiodický graf. Důkaz. Víme, že koncový vrchol cesty [0 m, 0 k ] délky 1 je s = 0 m P + u k B = 0 m. Takže u vrcholu 0 m je smyčka, a proto A musí mít periodu 1. Spolu s předešlými lemmaty tak dostáváme, že každé číslo l m je zpětná vzdálenost grafu A. Pro další lemma označíme Ter(0 m ) jako množinu všech vrcholů, do kterých vede nějaká konečná cesta z vrcholu 0 m. Lemma 3.3.4. ([1]Problém 14.11 ) At A je k : n lineární automat nad konečným tělesem F reprezentovaný maticemi (P, B, Q, D). Pak Ter(0 m ) = span(γ m ). Důkaz. Mějme nějakou cestu délky l určenou posloupností u 0 u 1 u 2... u l 1. Pak koncový vrchol této cesty je l 1 s = u t P t span(γ l ). Protože ovšem span(γ l ) = span(γ m ) dostáváme tak inkluzi Ter(0 0 ) span(γ m ). Opačná inkluze je zřejmá, protože každá lineární kombinace řádkových vektorů Γ m nám určuje nějakou posloupnost vektorů u 0 u 1 u 2... u l 1, která následně určuje i nějakou cestu. Existence této cesty je zaručena regulérností a determinističností grafu A. 38
Lemma 3.3.5. ([1]Problém 14.11 ) At A je k : n lineární automat nad konečným tělesem F reprezentovaný maticemi (P, B, Q, D). Pak vrchol 0 m leží ve stokové komponentě grafu A. Důkaz. Stačí dokázat, že pro každý vrchol s Ter(0 m ) existuje z tohoto vrcholu cesta zpět do 0 m. Předpokládejme tedy vrchol s Ter(0 m ). Podle předešlého lemmatu je s span(γ m ) a tudíž do něj vede z 0 m cesta délky m 1 určená posloupností u 0, u 1,..., u m 1 nad F k a platí s = m 1 u t BP t. Chceme najít u 0u 1u 2... u l 1 F k tak, že l 1 0 m = sp l + u tbp t. Dosazením a úpravou prvního členu dostáváme A po roznásobení sumy l 1 u t BP t )P l = u tbp t. m 1 ( m 1 l 1 u t BP t+l = u tbp t. Tedy chceme, aby m 1 u tbp t+l bylo lineární kombinací řádkových vektorů Γ l. Protože ovšem platí m 1 je tato podmínka splněna. u t BP t+l span(γ l+m 1 ) = span(γ l 1 ), pro l m Zbývá ještě ověřit, že stoková komponenta obsahující 0 m je sama o sobě k : n lineární automat. Všechny podmínky v definici lineárního automatu jsou triviálně splněné. Jediné, co je třeba ověřit, je, že tato stoková komponenta je na množině vrcholů rovné množině F m. Snadno vidíme, že uvažovaná stoková komponenta je graf na množine vrcholů Ter(0 m ) = span(γ m ). A protože je ireducibilní, platí dim Ter(0 m ) = dim span(γ m ) = m. Proto Ter(0 m ) musí být rovno F m. 39
3.4 Generující matice K odvození generující matice lineárního automatu nám stačí dosadit vyjádření s(x) = (u(x)xb + s 0 )(I xp ) 1 do c(x) = s(x)q + u(x)d. Dostaneme tak A po úpravách c(x) = (u(x)xb + s 0 )(I xp ) 1 Q + u(x)d. c(x) = u(x)(xb(i xp ) 1 Q + D) + s }{{} 0 (I xp ) 1 Q. G(x) Definice 3.4.1. At A je k : n lineární automat nad konečným tělesem F reprezentovaný maticemi (P, B, Q, D). Pak definujeme generující matici G(x) velikosti k n nad F [[x]] jako G(x) = (g ij ) i=1,...,k := xb(i xp ) 1 Q + D. j=1,...,n Při kódování nás opět budou zajímat cykly z počátečního vrcholu ι(a), pokud tento vrchol definujeme jako 0 m, získáme tak z výrazu jednoduchou charakterizaci c(x) = u(x)g(x) + s 0 (I xp ) 1 Q c(x) = u(x)g(x). Jinými slovy nekonečné slovo u 0 u 1..., které ztotožňujeme s u(x), nám určuje nějakou cestu π vedoucí z 0 m. Tato cesta nám zase generuje slovo reprezentované c(x) = u(x)g(x), což nás vede k následující definici a vyjádření C(A). Definice 3.4.2. At A je k : n lineární automat nad konečným tělesem F = GF (q) s generující maticí G(x). Pak definujeme span(g(x)) jako lineární obal řádkových vektorů matice G(x) nad F [[x]], tedy span(g(x)) := {c(x) (F [[x]]) n, kde c(x) = u(x)g(x) pro nějaké u(x) (F [[x]]) k }. Uvědomme si, že násobení vektoru s maticí (z leva) znamená provádět lineární kombinace řádků dané matice s koeficienty na příslušných souřadnicích vektoru, takže tato definice je korektní. Jako důsledek pak dostáváme vztah C(A) = {c 0 c 1..., kde c t x t span(g(x)) = span(g(x)). 40