TSBK04 Datakompression Övningsuppgifter

Relevanta dokument
TSBK04 Datakompression. Övningsuppgifter

Krafts olikhet. En momentant avkodbar kod (prefixkod) med kodordslängderna l 1,...,l N existerar om och endast om. 2 l i. 1 i=1

Aritmetisk kodning. F (0) = 0 Exempel: A = {1, 2, 3} k=1. Källkodning fö 5 p.1/12

Shannon-Fano-Elias-kodning

Källkodning. Egenskaper hos koder. Några exempel

TSBK35 Kompression av ljud och bild

Skurlängdskodning. aaaabbbbbbbccbbbbaaaa. Man beskriver alltså sekvensen med ett annat alfabet än det ursprungliga.

Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.

FLAC (Free Lossless Audio Coding)

Datakompression. Harald Nautsch ISY Bildkodning, Linköpings universitet.

Kursinnehåll. Datakompression. Föreläsningar, preliminärt program. Examination

Adaptiv aritmetisk kodning

Ordbokskodning. Enkel variant av kodning med variabelt antal insymboler och fixlängds kodord. (Jfr tunstallkodning)

Exempel, minnesfri binär källa. Ordbokskodning. Lempel-Zivkodning. Lempel-Zivkodning, forts.

Kompression av ljud och bild

Kurslitteratur. Kompression av ljud och bild. Föreläsningar, preliminärt program. Laborationer

Kurslitteratur. Kompression av ljud och bild. Föreläsningar, preliminärt program. Laborationer. Khalid Sayood, Introduction to Data Compression

Linjär prediktion. Prediktiv kodning. Linjär prediktion. Prediktiv kodare och avkodare

En generell prediktiv kodare utnyttjar signalens utseende N steg tillbaka i tiden för kodningen, dvs vi kodar efter den betingade fördelningen

Informationsteori. Repetition Kanalkapaciteten C. Repetition Källkodhastigheten R 2. Repetition Kanalkodhastigheten R 1. Huffmans algoritm: D-när kod

Detta ger oss att kanalkapaciteten för den ursprungliga kanalen är C = q 1 C 1 + q 2 C C =1 h ( ) 0.30.

Träd och koder. Anders Björner KTH

Burrows-Wheelers transform

Föreläsninsanteckningar till föreläsning 3: Entropi

Idag: Reguljära språk Beskrivs av Reguljära uttryck DFA Grammatik

Markovkedjor. Patrik Zetterberg. 8 januari 2013

Satsen om total sannolikhet och Bayes sats

Kodning med distorsion

SF1901 Sannolikhetsteori och statistik I

Stokastiska processer och simulering I 24 maj

Stokastiska processer

a = a a a a a a ± ± ± ±500

x 23 + y 160 = 1, 2 23 = ,

Tentamen'i'TMA321'Matematisk'Statistik,'Chalmers'Tekniska'Högskola.''

Matematisk statistik 9 hp Föreläsning 3: Transformation och simulering

TAMS79: Föreläsning 10 Markovkedjor

Kombinatorik. Kapitel 2. Allmänt kan sägas att inom kombinatoriken sysslar man huvudsakligen med beräkningar av

Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Stokastiska processer och simulering I 24 augusti

SF1901: SANNOLIKHETSTEORI OCH KONTINUERLIGA STOKASTISKA VARIABLER STATISTIK. Tatjana Pavlenko. 7 september 2016

Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Tentamen i IE1204/5 Digital Design måndagen den 15/

Moment Viktiga exempel Övningsuppgifter

Föreläsning 7. Felrättande koder

2.1 Mikromodul: stokastiska processer

MVE051/MSG Föreläsning 14

Lösningsförslag till övningsuppgifter, del V

Moment 5.5 Övningsuppgifter I 5.60a. 5.60b, 5.60.c, 61

19.1 Funktioner av stokastiska variabler

Kurssammanfattning MVE055

SF1901: Sannolikhetslära och statistik

Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl

1. För vilka värden på konstanterna a och b är de tre vektorerna (a,b,b), (b,a,b) och (b,b,a) linjärt beroende.

Föreläsning 12: Repetition

Tentamen i matematisk statistik, TAMS15/TEN (4h)

Matematisk statistik 9 hp Föreläsning 4: Flerdim

Övning 1 Sannolikhetsteorins grunder

Probabilistisk logik 2

Lab 3 Kodningsmetoder

Induktion, mängder och bevis för Introduktionskursen på I

Finansiell Statistik (GN, 7,5 hp,, HT 2008) Föreläsning 3

Föreläsning 1. Repetition av sannolikhetsteori. Patrik Zetterberg. 6 december 2012

Innehåll. Föreläsning 11. Organisation av Trie. Trie Ytterligare en variant av träd. Vi har tidigare sett: Informell specifikation

Grundläggande matematisk statistik

Grafer och grannmatriser

Tentamen i matematisk statistik (9MA241/9MA341, STN2) kl 08-12

SF1901: SANNOLIKHETSTEORI OCH FLERDIMENSIONELLA STOKASTISKA STATISTIK VARIABLER. Tatjana Pavlenko. 8 september 2017

4 Diskret stokastisk variabel

Optimering med bivillkor

1, 2, 3, 4, 5, 6,...

2x ex dx. 0 = ln3 e

Lineära system av differentialekvationer

Tentamen i Digitalteknik, EITF65

TMS136: Dataanalys och statistik Tentamen

Föreläsningen ger en introduktion till differentialekvationer och behandlar stoff från delkapitel 18.1, 18.3 och 7.9 i Adams. 18.

Grundläggande matematisk statistik

Lektionsanteckningar 11-12: Normalfördelningen

Blandade problem från elektro- och datateknik

Ekvationslösning genom substitution, rotekvationer

Finansiell statistik. Multipel regression. 4 maj 2011

SF1901: SANNOLIKHETSTEORI OCH STATISTIKTEORI KONSTEN ATT DRA INTERVALLSKATTNING. STATISTIK SLUTSATSER. Tatjana Pavlenko.

SF1911: Statistik för bioteknik

Föreläsning 7: Bild- och videokodning

6. Flerdimensionella stokastiska variabler

Tentamen i Digitalteknik, EIT020

Tentamen i matematisk statistik (9MA241/9MA341, STN2) kl 14 18

SF1905 Sannolikhetsteori och statistik: Lab 2 ht 2011

Föreläsning 3, Matematisk statistik Π + E

4x 1 = 2(x 1). i ( ) får vi 5 3 = 5 1, vilket inte stämmer alls, så x = 1 2 är en falsk rot. Svar. x = = x x + y2 1 4 y

Industriell matematik och statistik, LMA /14

TENTAMEN I SF2937 (f d 5B1537) TILLFÖRLITLIGHETSTEORI TORSDAGEN DEN 14 JANUARI 2010 KL

Tentamen. TSEA22 Digitalteknik 5 juni, 2015, kl

Resultat till ett försök är ofta ett tal. Talet kallas en stokastisk variabel (kortare s. v.).

Föreläsning 2 (kap 3): Diskreta stokastiska variabler

Övning 6 - Tillämpad datalogi 2012

Matlab övningsuppgifter

Statistiska metoder för säkerhetsanalys

Lösningar till övningstentan. Del A. UPPSALA UNIVERSITET Matematiska institutionen Styf. Övningstenta BASKURS DISTANS

Transkript:

TSBK04 Datakompression Övningsuppgifter Innehåll 1 Informationsteoretiska begrepp........................ 1 2 Källkodning................................... 4 Copyright c 2004 Bildkodningsgruppen, Linköpings Universitet

Problem 1 Informationsteoretiska begrepp 1.1 Den stokastiska variabeln X tar värden i alfabetet {1,2,3,4}. Sannolikhetsfunktionen är p X (x i ) = 1 4, x i. Beräkna H(X) 1.2 Den stokastiska variabeln Y tar värden i alfabetet {1,2,3,4}. Sannolikhetsfunktionen är p Y (1) = 1 2, p Y (2) = 1 4, p Y (3) = p Y (4) = 1 8. Beräkna H(Y) 1.3 Antag att X och Y i 1.1 och 1.2 är oberoende. Betrakta den stokastiska variabeln (X,Y ). a) Bestäm p XY (x i,y j ). b) Beräkna H((X,Y )) = H(X,Y ) c) Visa att H(X,Y ) = H(X) + H(Y ) då X och Y är oberoende. d) Generalisering: Visa att H(X 1,X 2,...,X n ) = H(X 1 ) +... + H(X n ) så länge alla variablerna är inbördes oberoende. 1.4 Z tar värden i {1, 2, 3, 4} a) Ge ett exempel på en sannolikhetsfunktion p Z som maximerar H(Z). Är p Z unik? b) Ge ett exempel på en sannolikhetsfunktion p Z som minimerar H(Z). Är p Z unik? 1.5 Låt den stokastiska variabeln U ta värden i det oändliga alfabetet {0,1,2,...}, med sannolikhetsfunktionen p U (u i ) = q i (1 q), 0 < q < 1. a) Kontrollera att p U (u i ) = 1. b) Beräkna H(U) i=0 c) Beräkna väntevärdet E {U } 1.6 Visa att, Ledning: Utnyttja olikheten ln x x 1. I(X,Y ) = H(X) H(X Y ) 0 1.7 En binär minnesfri källa där de två symbolerna har sannolikheterna {p,1 p} har entropin H. Uttryck entropierna för följande källor i H. a) En minnesfri källa med fyra symboler med sannolikheterna { p 2, p 2, 1 p 2, 1 p 2 } b) En minnesfri ternär källa med sannolikheterna { p 2, p,1 p} 2 c) En minnesfri källa med fyra symboler med sannolikheterna {p 2,p(1 p),(1 p)p,(1 p) 2 }. 1.8 Låt X vara en stokastisk variabel och f en godtycklig deterministisk funktion av alfabetet. Visa att a) H(f(X) X) = 0 b) H(X, f(x)) = H(X) c) H(f(X)) H(X) 1.9 Låt X och Y vara två oberoende stokastiska variabler. Visa att 1.10 Visa att H(X) H(X + Y ) H(X,Y ) H(X Z) H(X Y ) + H(Y Z) Ledning: Starta med H(X Y ) H(X Y Z) och utnyttja kedjeregeln 1.11 Visa att H(X 1,...,X n+1 ) = H(X 1,...,X n ) + H(X n+1 X 1,...X n ) 1.12 En likformigt fördelad stokastisk variabel tar värden ur alfabetet {0000, 0001, 0010,..., 1011} (talen 0 till 11 skrivna som fyrabitars binära tal). a) Vad är entropin för den minst signifikanta biten? b) Vad är entropin för den mest signifikanta biten? c) Vad är entropin för hela fyrabitarsordet? 1 2

1.13 En första ordningens markovkälla X i med alfabet {0,1,2} har övergångssannolikheter enligt figuren. Beräkna de stationära sannolikheterna för tillstånden. 1.14 Betrakta markovkällan i 1.13. a) Beräkna den minnesfria entropin. 0.1 0.8 0 0.5 0.1 0.5 1 2 0.5 0.5 b) Beräkna blockentropin H(X i,x i+1 ). Jämför med H(X i ) + H(X i+1 ) = 2H(X i ). c) Beräkna den betingade entropin H(X i X i 1 ) 1.15 En andra ordningens markovkälla X i med alfabet {a,b} har övergångssannolikheterna p Xi Xi 1X i 2 nedan: p(a aa) = 0.7, p(b aa) = 0.3, p(a ba) = 0.4, p(b ba) = 0.6 p(a ab) = 0.9, p(b ab) = 0.1, p(a bb) = 0.2, p(b bb) = 0.8 Beräkna entropierna H(X i ), H(X i X i 1 ), H(X i X i 1 X i 2 ), H(X i X i 1 ) och H(X i X i 1 X i 2 ). 2 Källkodning 2.1 En föreslagen kod för en källa med alfabet A = {1,...,8} har kodordslängderna l 1 = 2, l 2 = 2, l 3 = 3, l 4 = 4, l 5 = 4, l 6 = 5, l 7 = 5 och l 8 = 6. Kan man konstruera en prefixkod med dessa längder? 2.2 En källa har det oändliga alfabetet A = {1,2,3,..., } och symbolsannolikheter P = { 1 2, 1 4, 1 8,...}, dvs p(i) = 2 i, i A. Konstruera en optimal binär prefixkod för källan och beräkna den förväntade datatakten R i bitar/symbol. 2.3 Betrakta följande markovkälla av ordning 1, där p = 8 0.5: p a 1 p 1 p Konstruera huffmankoder för källan där vi kodar 2 respektive 3 symboler i taget. Beräkna datatakterna för de två koderna. Vilken kod är bäst? 2.4 Betrakta källan i problem 2.3. Den ger ifrån sig skurar av a och b. Istället för att koda symboler, kan man koda längden av varje skur. Vi skapar alltså en ny källa R som har ett oändligt alfabet av skurlängder B = {1, 2, 3,...}. a) Vad är sannolikheten för en skur av längd r? b) Vad är den förväntade skurlängden (i symboler/skur)? c) Vad är entropin för R (i bitar/skur)? d) Vad är entropitakten för källan (i bitar/symbol)? 2.5 Vi vill nu göra en enkel systematisk kod för skurlängderna från källan i 2.3. a) Konstruera en fyrabitars fixlängdskod för skurlängderna 1 till 14. Längre skurar kodas som 15 följt av kodordet för en skur av längd-15, dvs skurlängden 15 kodas som 15 0, skurlängden 17 kodas som 15 2, skurlängden 40 kodas som 15 15 10 och så vidare. Beräkna datatakten för koden i bitar/symbol. b) Ändra kordslängden till fem bitar och gör samma sak som ovan b p 3 4

2.6 Vi vill nu koda skurlängderna från källan i 2.3 med hjälp av golombkodning. a) Hur ska parametern m väljas så att vi får en optimal kod? b) Beräkna den resulterande datatakten. 2.7 Vi vill sända dokument med en faxmaskin. Faxen klarar av färgerna svart och vitt. Experiment har visat att textområden och bildområden av dokumenten har olika statistiska egenskaper. Dokumenten läses av och kodas radvis, enligt en tidsdiskret stationär process. De följande betingade sannolikheterna har skattats från en stor mängd testdata Färg på Sannolikhet för färg på nästa bildpunkt nuvarande Textområde Bildområde bildpunkt svart vit svart vit svart 0.5 0.5 0.7 0.3 vit 0.1 0.9 0.2 0.8 Sannolikheten att vi befinner oss i ett textområde är 4 5 och sannolikheten att vi befinner oss i ett bildområde är 1 5. Antag att de estimerade sannolikheterna är korrekta och besvara nedanstående frågor. a) Antag att vi kan försumma kostnaden för att koda vilka områden i dokumentet som är text och vilka områden som är bilder. Beräkna en övre gräns för den teoretiskt lägsta datatakten som vi kan koda dokument med, i bitar/bildpunkt. b) Konstruera en huffmankod för textområdena som har en datatakt på 0.65 bitar/bildpunkt eller mindre. 2.8 Betrakta följande markovkälla av ordning 1 0.1 A C 0.5 0.7 0.5 B D 0.8 0.2 0.9 0.3 a) Visa att det är möjligt att koda utsignalen från källan med en datatakt som är mindre än 0.6 bitar/symbol. b) Konstruera optimala trädkoder för enstaka symboler och för par av symboler från källan. Beräkna de resulterande datatakterna. 5 6

2.9 Man vill koda konturer av objekt i bilder effektivt. Konturer utgörs av en kedja konturelement. Ett konturelement är den en bildpunkt långa gränsen mellan två bildpunkter. Till höger visas en kontur bestående av 22 konturelement: Ett naturligt sätt att koda en kontur är att införa ett alfabet A = {V,R,H} där V står för sväng vänster, R för rakt fram och H för sväng höger. Märk att redan genom detta val av alfabet har man utnyttjat minne i konturkällan genom att man strykt möjligheten att konturen går bakåt in i sig själv. Man vill dock gå ett steg längre och koda betingat även på elementet två steg bakåt. Man har ur en stor mängd testdata mätt upp följande fördelning för de olika prinicipiella konturerna med 3 element (bortsett från rotationen): Kontur Frekvens 0.24 0.20 0.20 0.16 0.16 0.04 Man kan anta att det är lika stor sannolikhet att följa en kontur från ena hållet som det andra. T.ex. så genererar den andra typen av kontur symbolföljderna RH eller V R beroende på vilken ände man startar i. a) Konstruera en huffmankod (blocklängd 1) för konturkällan (med alfabet A). Vad blir datatalten (bit/konturelement) b) Sannolikheterna ovan definierar implicit en markovmodell. Hur bra kan man som bäst koda denna modell? (bit/konturelement). 2.10 En minnesfri källa har alfabet A = {a 1,a 2,a 3 } och sannolikheter P = {0.6,0.2,0.2}. Vi vill koda sekvensen a 3 a 1 a 1 a 2 med aritmetisk kodning. Ta fram kodordet. Anta att alla beräkningar kan göras med oändlig precision. 2.11 Gör samma sak som i uppgift 2.10, men låt alla sannolikheter och gränser lagras med sex bitars noggrannhet. Skifta ut kodordsbitar så snart som möjligt. 2.12 Antag samma källa som i uppgift 2.10 och uppgift 2.11. Låt alla sannolikheter och gränser lagras med sex bitars noggrannhet. Avkoda kodordet 1011101010000. Vi vet att kodordet motsvarar fem symboler. 2.13 Ett system för att överföra enkla färgbilder använder färgerna vitt, svart, rött, blått grönt och gult. Källan modelleras som en första ordningens markovkälla med följande övergångssannolikheter Tillstånd sannolikhet för nästa tillstånd vitt svart rött blått grönt gult vitt 0.94 0.02 0.01 0.01 0.01 0.01 svart 0.05 0.50 0.15 0.10 0.15 0.05 rött 0.03 0.02 0.90 0.01 0.01 0.03 blått 0.02 0.02 0.02 0.90 0.03 0.01 grönt 0.02 0.02 0.01 0.03 0.90 0.02 gult 0.03 0.01 0.03 0.01 0.03 0.89 Vi använder aritmetisk kodning för att koda sekvenser från källan. Kodaren utnyttjar de betingade sannolikheterna vid kodningen. a) En sekvens börjar med rött, vitt, vitt. Vilket intervall motsvaras detta av? Antag att den föregående bildpunkten var röd. b) Avkodaren väntar på en ny sekvens. Bitströmmen 110100111100001100 tas emot. Vilka är de två första färgerna i denna sekvens? Den sista pixeln i föregående sekvens var svart. 2.14 Man vill koda en stationär och binär minneskälla med alfabetet A = {a, b}. Följande blocksannolikheter p(x n,x n+1 ) har mätts upp och kan antas vara de sanna: p(aa) = 1/7 p(ab) = 1/7 p(ba) = 1/7 p(bb) = 4/7 Konstruera ett kodord för sekvensen bbab genom att använda aritmetisk kodning. Koden ska vara baserad på betingade sannolikheter. Anta att symbolen närmast innan sekvensen som ska kodas är b. 2.15 En källa har alfabtetet A = {a,b}. Koda sekvensen ababbaaababbbbaaabaaaaaababba... med LZ77. Historiebufferten har storlek 16 och maximal matchlängd är 15. Kontrollera din lösning genom att avkoda kodorden. 2.16 Koda sekvensen i uppgift 2.15 med LZ78. 2.17 Koda sekvensen i uppgift 2.15 med LZW. 7 8

Lösningar eftersom E { } P(X)P(Y ) P(X,Y ) = P(x,y) P(x)P(y) = 1. P(x,y) x,y 1.1 H(X) = 4 i=1 p X(x i ) log p X (x i ) = 4 1 4 log 1 4 = 2 1.2 H(Y ) = 4 i=1 p Y (x i ) log p Y (y i ) = 1 2 log 1 2 1 4 log 1 4 2 1 8 log 1 8 = 1.75 1.3 a) Oberoende ger direkt att p XY (x i,y j ) = p X (x i ) p Y (y j ). b) Eftersom X och Y är oberoende gäller att H(X,Y ) = H(X) + H(Y ) = 3.75 c) H(X,Y ) = p XY (x i,y j ) log p XY (x i,y j ) i j = p X (x i ) p Y (y j )(log p X (x i ) + log p Y (y j )) i j = p Y (y j ) p X (x i ) log p X (x i ) ( ) p X (x i ) p Y (y j ) log p Y (y j ) i j j i = H(X) + H(Y ) d) Betrakta (X 1,...,X n 1 ) som en stokastisk variabel och konstruera ett induktionsbevis. 1.4 a) p Z (z i ) = 1 4, z i ger maximal entropi. b) p Z (1) = 1, p Z (2) = p Z (3) = p Z (4) = 0 ger H(Z) = 0. Eftersom entropin alltid är icke-negativ är detta minimalt. Lösningen är inte unik. 1.5 a) Ledning: i=0 i=0 q i = 1, q < 1. 1 q b) H(U) = h(q) 1 q Ledning: i q i q = (1 q) 2, q < 1. c) E { U } = q 1 q ( ) 1.6 ln 2 I(X;Y ) = ln 2 H(X Y ) H(X) { = E ln P(X)P(Y ) } { P(X)P(Y ) E P(X,Y ) P(X,Y ) ( = ln 2 } 1 = 0 ) H(X,Y ) H(X) H(Y ) 1.7 a) H + 1 b) H + p c) 2H 1.8 a) H(f(X) X) = / Z = f(x) / = H(Z X) = = p XZ (a i,b j ) log p }{{} Z X(b j a i ) }{{} b j A Z a i A X =0,f(a i) b j = 0 b) H(X,f(X)) = / kedjeregeln / =1,f(a i)=b j = H(X) + H(f(X) X) }{{} =0 enligt a) c) H(X) H(f(X)) = / enligt b) / = H(X,f(X)) H(f(X)) = / kedjeregeln / = H(X f(x)) 0 1.9 Enligt 1.8 så har en funktion av en stokastisk variabel lika eller mindre entropi än variabeln själv, vilket leder till den högra olikheten. För den vänstra olikheten sätter vi Z = X + Y och visar att H(Z Y ) = = z y p ZY (z,y) log = x y p XY (x,y) log (1) = x y p X(x)p Y (y) log 1.10 Visa pzy (z,y) p Y (y) pxy (x,y) p Y (y) px(x)py (y) p Y (y) = ( y p Y (y)) ( y p X(x) log p X (x) = / / x=z y Vid (1) använde vi oberoendet. Vi kan nu skriva ) = H(X) H(X + Y ) H(X + Y Y ) = H(X) Se 1.6 för ett bevis på att betingning inte kan öka entropin. H(X Y ) + H(Y Z) (1) 9 10

H(X Y Z) + H(Y Z) = H(X Y Z) + H(Y Z) + H(Z) H(Z) }{{} kedjeregeln =H(XY Z) = H(XY Z) H(Z) (2) = H(X Z) + H(Y XZ) H(X Z) där vi vid (1) utnyttjade det faktum att betingning aldrig ökar entropin och vid (2) använde kedjeregeln: H(XY Z) = H(Z) + H(X Z) + H(Y XZ). 1.11 Kedjeregeln bevisas genom H(X,Y ) = E { log p XY (X,Y ) } = E { log p X Y (X Y )p Y (Y ) } = E { log p X Y (X Y ) } + E { log p Y (Y ) } = H(X Y ) + H(Y ) Låt nu X = X n+1 och Y = (X 1,...,X n ). 1.12 a) H = 1 b) H = h( 8 12 ) = 8 12 log 12 8 + 4 12 log 12 4 c) H = log 12 3.58 0.92 Notera att detta är mindre än summan av entropierna för de olika bitarna, eftersom de olika bitarna inte är oberoende av varandra. 1.13 Övergångsmatrisen P för källan är P = 0.8 0.1 0.1 0.5 0.5 0 0.5 0 0.5 Den stationära fördelningen w = (w 0, w 1, w 2 ) ges av ekvationssystemet w = w P. Ersätt någon av ekvationerna (vilken som helst) med ekvationen w 0 + w 1 + w 2 = 1 och lös systemet. Det ger oss lösningen w = 1 (5, 1, 1) (0.714, 0.143, 0.143) 7 1.14 a) H(X i ) = 5 7 log 5 7 2 1 7 log 1 7 1.15 [bit/sym]. b) Blocksannolikheterna ges av symbolpar sannolikhet 00 5/7 0.8 = 8/14 01 5/7 0.1 = 1/14 02 5/7 0.1 = 1/14 10 1/7 0.5 = 1/14 11 1/7 0.5 = 1/14 12 0 20 1/7 0.5 = 1/14 21 0 22 1/7 0.5 = 1/14 H(X i,x i+1 ) = 8 14 log 8 14 6 1 14 log 1 14 2.09 [bitar/par]. ( 1.05 [bitar/symbol]). Entropin för par är mindre än 2 gånger den minnesfria entropin. c) Enligt kedjeregeln är H(X i X i 1 ) = H(X i 1,X i ) H(X i 1 ) 0.94 1.15 Övergångsmatrisen P för källan är P = 0.7 0 0.3 0 0.9 0 0.1 0 0 0.4 0 0.6 0 0.2 0 0.8 Den stationära fördelningen w = (w aa, w ab, w ba,w bb ) ges av ekvationssystemet w = w P. Ersätt någon av ekvationerna (vilken som helst) med ekvationen w aa + w ab + w ba + w bb = 1 och lös systemet. Det ger oss lösningen w = 1 (3, 1, 1, 3) 8 Den stationära fördelningen är förstås också sannolikheterna för par av symboler, så vi kan beräkna H(X i X i 1 ) direkt H(X i X i 1 ) = 2 3 8 log 3 8 2 1 8 log 1 8 1.8113 Sannolikheterna för enstaka symboler fås ur marginalfördelningen p(a) = p(aa) + p(ab) = 0.5, p(b) = p(ba) + p(bb) = 0.5 H(X i ) = 1 Sannolikheterna för tre symboler fås ur p XiX i 1X i 2 = p Xi 1X i 2 p Xi X i 1X i 2 p(aaa) = 3 8 0.7 = 21 80, p(baa) = 3 8 0.3 = 9 80 p(aba) = 1 8 0.4 = 4 80, p(bba) = 1 8 0.6 = 6 80 11 12

Vilket ger oss p(aab) = 1 8 0.9 = 9 80, p(bab) = 1 8 0.1 = 1 80 p(abb) = 3 8 0.2 = 6 80, p(bbb) = 3 24 0.8 = 8 80 H(X i X i 1 X i 2 ) 2.5925 Nu kan vi beräkna de betingade entropierna med hjälp av kedjeregeln H(X i X i 1 ) = H(X i X i 1 ) H(X i 1 ) 0.8113 H(X i X i 1 X i 2 ) = H(X i X i 1 X i 2 ) H(X i 1 X i 2 ) 0.7812 2.1 Ja, eftersom Krafts olikhet är uppfylld. 2.2 1 2 3 4.. R = 2 [bit/sym]. 2.3 Sannolikheter för par av symboler: {0.4585,0.0415, 0.0415, 0.4585} Sannolikheter för tre symboler: {0.4205, 0.0381, 0.0034, 0.0381, 0.0381, 0.0034, 0.0381, 0.4205} 1 = (1 p) 1 p log(1 p) (1 p) p (1 p) 2 log p = h(p) 4.972 [bitar/skur] 1 p d) H(R) = h(p) 0.413 [bitar/symbol] r Samma svar fås naturligtvis om vi räknar ut entropitakten direkt från källan. 2.5 a) Om vi gör en direkt avbildning till den binära representationen får vi l = E {kodordslängd/skur } = 14 29 44 4 (1 p)p r 1 + 8 (1 p)p r 1 + 12 (1 p)p r 1 +... = 5 r=30 4 (1 p)p r 1 + 4p 14 (1 p)p r 1 + 4p 29 (1 p)p r 1 +... = 4 (1 p)p r 1 (1 + p 14 p 15i ) = 4(1 + p14 1 p15) 5.635 [bitar/skur] i=0 Från problem 2.3 vet vi att r 12.05 [symboler/skur], därför blir datatakten 0.468 [bitar/symbol]. l r b) På samma sätt som i a) får vi p l 30 = 5(1 + 1 p31) 5.399 [bitar/skur] och datatakten 0.448 [bitar/sym]. aa bb ab ba l 1.62 R 0.81 l 1.95 R 0.65 Det är bättre att koda tre symboler i taget. 2.4 a) p(r) = p r 1 (1 p) b) r = r (1 p) p r 1 = 1 1 p = 1 1 8 12.05 [symboler/skur] 0.5 c) H(R) = (1 p) p r 1 log((1 p) p r 1 ) = (1 p) log(1 p) p r 1 (1 p) log p (r 1) p r 1 2.6 a) Eftersom skurar av a respektive b har samma sannolikheter kan vi använda samma golombkod för båda typerna av skurar. Eftersom sannolikheten för en skur av längd r är p(r) = p r 1 (1 p) får vi en optimal kod om m väljs som m = 1 log p = 8 b) En golombkod med parameter m = 8 har 8 kodord av längd 4, 8 kodord av längd 5, 8 kodord av längd 6 et c. Kodordsmedellängden blir l = E {kodordslängd/skur } = 8 16 4 (1 p)p r 1 + 5 (1 p)p r 1 + 6 r=9 24 7 (1 p)p r 1 +... = 4 (1 p)p r 1 + p 8 (1 p)p r 1 + p 16 (1 p)p r 1 +... = 4 + p 8i = 4 + p8 1 p 8 = 5 [bitar/skur] i=1 13 14

Från problem 2.3 vet vi att r 12.05 [symboler/skur], därför blir datatakten 0.415 [bitar/symbol]. l r 2.7 a) Den teoretiskt lägsta gränsen ges av entropitakten för källan. Den bästa modell av källan vi kan göra, givet den information vi har, är en markovkälla av ordning 1. I textområdena ser den ut som 0.5 0.5 B W 0.9 0.1 De stationära sannolikheterna för denna källa är w B = 1 6 and w W = 5 6 och entropitakten för när vi befinner oss i ett textområde är därför H t = w B h(0.5) + w W h(0.9) 0.5575 För bildområden blir, på samma sätt, entropitakten H p 0.7857 Den totala entropitakten för källan är därför H = 4 5 H t + 1 5 H p 0.60313 Detta är det bästa estimat vi kan göra, den riktiga entropitakten för källan kan vara lägre, om minnet är längre än bara en bildpunkt tillbaka, som vi antog. b) Den önskade datatakten kan uppnås genom att koda block om 3 symboler. Sannolikheterna för de 8 olika blocken kan beräknas som De åtta sannolikheterna blir P(X 1 X 2 X 3 ) = P(X 1 )P(X 2 X 1 )P(X 3 X 2 ) P = 1 {1 5 5 5 5 9 9 81} 120 Konstruera koden med huffmanalgoritmen. Den resulterande datatakten blir 0.625 bitar/bildpunkt. 2.8 a) Det är möjligt att komma godtyckligt nära källans entropitakt. För den givna källan ges entropitakten av H(S n+1 S n ) = w A H(S n+1 S n = A) + w B H(S n+1 S n = B) + w C H(S n+1 S n = C) + w D H(S n+1 S n = D) 2.9 där w A et.c. betecknar de stationära sannolikheterna för tillstånden. Dessa beräknas ur följande ekvationssytem, plus det faktum att de ska summera till 1. 0 0 0.1 0 w A w A 0.5 0.2 0 0 0 0 0.9 0.7 0.5 0.8 0 0.3 (w A w B w C w D ) = 1 (56 35 560 80) 731 och entropitakten blir då w B w C w D = w B w C w D H(S n+1 S n ) = 1 731 (56 + 35h(0.2) + 560h(0.1) + 80h(0.3)) = 0.567 bitar/symbol. b) Optimala trädkoder kan konstrueras med hjälp av huffmans algoritm. När vi kodar enstaka symboler använder vi de stationära sannolikheterna. Till exempel kan vi få följande kod symbol sannolikhet kodord längd A 56/731 110 3 B 35/731 111 3 C 560/731 0 1 D 80/731 10 2 som ger en datatakt på 993 1.36 bitar/symbol 731 Sannolikheterna för par av symboler beräknas enkelt ur P(X 1 X 2 ) = P(X 1 )P(X 2 X 1 ). Vi får till exempel följande kod. symbol sannolikhet kodord längd AB 28/731 1010 4 AD 28/731 1110 4 BB 7/731 10110 5 BD 28/731 1111 4 CA 56/731 100 3 CC 504/731 0 1 DC 56/731 110 3 DD 24/731 10111 5 Den resulterande datatakten är 1 2 1331 731 0.910 bitar/symbol a) Sannolikheterna för de olika konturerna ger följande blocksannolikheter: RR 0.24 RH, HR, V R, RV 0.10 V H, HV 0.16 V V, HH 0.02 15 16

2.10 Vi vill koda en symbol i taget och behöver därför de (stationära) sannolikheterna för de enstaka symbolerna. Dessa kan beräknas exempelvis enligt: P(V ) = P(V V ) + P(V R) + P(V H) = 0.28 P(R) = P(RV ) + P(RR) + P(RH) = 0.44 P(H) = P(HV ) + P(HR) + P(HH) = 0.28 Huffmanträdet blir då R. V H Datatakten: R = l = 1 + 0.56 = 1.56 b) Gränsen för en markovkälla ges av den betingade entropin H(X 2 X 1 ). H(X 2 X 1 ) kan t ex beräknas med hjälp av kedjeregeln: H(X 2 X 1 ) = H(X 1,X 2 ) H(X 1 ) = 2.895 1.550 = 1.345 F(0) = 0, F(1) = 0.6, F(2) = 0.8, F(3) = 1 l (0) = 0 u (0) = 1 l (1) = 0 + (1 0) 0.8 = 0.8 u (1) = 0 + (1 0) 1 = 1 l (2) = 0.8 + (1 0.8) 0 = 0.8 u (2) = 0.8 + (1 0.8) 0.6 = 0.92 l (3) = 0.8 + (0.92 0.8) 0 = 0.8 u (3) = 0.8 + (0.92 0.8) 0.6 = 0.872 l (4) = 0.8 + (0.8 0.872) 0.6 = 0.8432 u (4) = 0.8 + (0.8 0.872) 0.8 = 0.8576 Intervallet som motsvarar sekvensen är alltså [0.8432, 0.8576). Storleken på intervallet är 0.0144, vilket, innebär att vi ska använda minst log 0.0144 = 7 bitar i kodordet. Alternativ 1: Det minsta tal med 7 bitar som ligger i intervallet är (0.1101100) 2 = 0.84375. Eftersom även (0.1101101) 2 = 0.8515625 ligger i intervallet räcker det med 7 bitar, och kodordet blir alltså 1101100. Alternativ 2: Mittpunkten på intervallet är 0.8504 = (0.110110011...) 2. Trunkera till 7+1=8 bitar, vilket ger oss kodordet 11011001. 2.11 Med sex bitar lagras alla värden som -delar. Fördelningen blir då F(0) = 0, F(1) = 38, F(2) = 51, F(3) = l (0) = 0 = (000000) 2 u (0) = 63 = (111111) 2 l (1) (63 0 + 1) 51 = 0 + = 51 = (110011) 2 u (1) (63 0 + 1) = 0 + 1 = 63 = (111111) 2 Skifta ut 1 till kodordet, skifta in 0 i l och 1 in u l (1) = (100110) 2 = 38 u (1) = (111111) 2 = 63 Skifta ut 1 till kodordet, skifta in 0 i l och 1 in u l (1) = (001100) 2 = 12 u (1) = (111111) 2 = 63 l (2) (63 12 + 1) 0 = 12 + = 12 = (001100) 2 u (2) (63 12 + 1) 38 = 12 + 1 = 41 = (101001) 2 l (3) (41 12 + 1) 0 = 12 + = 12 = (001100) 2 u (3) (41 12 + 1) 38 = 12 + 1 = 28 = (011100) 2 Skifta ut 0 till kodordet, skifta in 0 i l och 1 in u l (3) = (011000) 2 = 24 u (3) = (111001) 2 = 57 l (4) (57 24 + 1) 38 = 24 + = 44 = (101100) 2 u (4) (57 24 + 1) 51 = 24 + 1 = 50 = (110010) 2 Eftersom det inte kommer några fler symboler behöver vi inte göra fler skiftoperationer. Kodordet blir de bitar som skiftats ut tidigare plus hela l (4), dvs 110101100. 17 18

2.12 Med sex bitar lagras alla värden som -delar. Fördelningen blir då F(0) = 0, F(1) = 38, F(2) = 51, F(3) = Det innebär att intervallet 0-37 hör till symbol a 1, intervallet 38-50 till symbol a 2 och intervallet 51-63 till symbol a 3. l (0) = (000000) 2 = 0 u (0) = (111111) 2 = 63 t = (101110) 2 = 46 (46 0 + 1) 1 = 46 a 2 63 0 + 1 l (1) (63 0 + 1) 38 = 0 + = 38 = (100110) 2 u (1) (63 0 + 1) 51 = 0 + 1 = 50 = (110010) 2 Skifta ut 1, skifta in 0 i l, 1 in u och en ny bit från kodordet i t. l (1) = (001100) 2 = 12 u (1) = (100101) 2 = 37 t = (011101) 2 = 29 (29 12 + 1) 1 = 44 a 2 37 12 + 1 l (2) (37 12 + 1) 38 = 12 + = 27 = (011011) 2 u (2) (37 12 + 1) 51 = 12 + 1 = 31 = (011111) 2 De tre första bitarna är desamma i l och u. Skifta ut dem, skifta in nollor i l, ettor i u och tre nya bitar från kodordet i t. l (2) = (011000) 2 = 24 u (2) = (111111) 2 = 63 t = (101010) 2 = 42 (42 24 + 1) 1 = 30 a 1 63 24 + 1 l (3) (63 24 + 1) 0 = 24 + = 24 = (011000) 2 u (3) (63 24 + 1) 38 = 24 + 1 = 46 = (101110) 2 De två första bitarna i l är 01 och de två första i u är 10. Skifta l, u och t ett steg, invertera den nya mest signifikanta biten och skifta in 0 i l, 1 i l och en ny bit från kodordet i t l (3) = (010000) 2 = 16 u (3) = (111101) 2 = 61 t = (110100) 2 = 52 (52 16 + 1) 1 = 51 a 3 61 16 + 1 l (4) (61 16 + 1) 51 = 16 + = 52 = (110100) 2 u (4) (61 16 + 1) = 16 + 1 = 61 = (111101) 2 De två första bitarna är desamma i l och u. Skifta ut dem, skifta in nollor i l, ettor i u och två nya bitar från kodordet i t. l (4) = (010000) 2 = 16 u (4) = (110111) 2 = 55 t = (010000) 2 = 16 (16 16 + 1) 1 = 1 a 1 55 16 + 1 Eftersom vi nu har avkodat fem symboler behöver vi inte göra fler beräkningar. Den avkodade sekvensen blir alltså a 2 a 2 a 1 a 3 a 1 2.13 a) Under antagandet att vi har ordnat färgerna i samma ordning som i tabellen, med vitt närmast 0, så blir intervallet [0.05, 0.07538). Om du valde en annan symbolordning borde du i alla fall ha fått samma intervallängd. b) grönt, grönt 2.14 Sannolikheter för enskilda symboler p(x n ) fås ur marginalfördelningen, dvs p(a) = p(aa) + p(ab) = 2/7, p(b) = p(ba) + p(bb) = 5/7 De betingade sannolikheterna p(x n+1 x n ) blir p(a a) = p(aa) p(a) = 1/7 2/7 = 0.5 p(b a) = p(ab) p(a) = 1/7 2/7 = 0.5 19 20

p(a b) = p(ba) p(b) = 1/7 5/7 = 0.2 p(b b) = p(bb) p(b) = 4/7 5/7 = 0.8 Intervallet som motsvarar sekvensen är [0.424,0.488) Intervallstorleken är 0.0, vilket betyder att vi behöver minst log 0.0 = 4 bitar i vårt kodord. Alternativ 1: Det minsta tal med 4 bitar som ligger i intervallet är (0.0111) 2 = 0.4375. Eftersom (0.1000) 2 = 0.5 inte ligger i intervallet räcker det inte med 4 bitar, utan vi måste använda 5 bitar. Vi använder talet (0.01110) 2 = 0.4375 och kodordet blir alltså 01110. Alternativ 2: Mittpunkten på intervallet är 0.456 = (0.0111010...) 2 Trunkera till 4+1=5 bitar, vilket ger oss kodordet 01110. 2.15 Offset 0 är längst till höger i historiebufferten Kodord: (offset, längd, ny symbol) Binärt kodord (0,0,a) 0000 0000 0 (0,0,b) 0000 0000 1 (1,2,b) 0001 0010 1 (2,1,a) 0010 0001 0 (6,5,b) 0110 0101 1 (8,6,a) 1000 0110 0 (1,4,b) 0001 0100 1 (15,3,a) 1111 0011 0 2.16 Den kodade sekvensen av par <index, ny symbol> blir: < 0,a > < 0,b > < 1,b > < 2,a > < 1,a > < 4,b > < 2,b > < 4,a > < 3,a > < 5,a > < 5,b > < 3,b >... Om vi antar att ordboken har storleken 16 så går det åt 4+1 bitar för att koda varje par. Ordboken ser i detta läge ut som: index sekvens 0-1 a 2 b 3 ab 4 ba 5 aa 6 bab 7 bb 8 baa 9 aba 10 aaa 11 aab 12 abb 2.17 Den kodade sekvensen av <index> blir: < 0 > < 1 > < 2 > < 3 > < 0 > < 2 > < 4 > < 1 > < 5 > < 7 > < 6 > < 12 > < 3 > < 9 >... Om vi antar att ordboken har storleken 16 så går det åt 4 bitar för att koda varje index. Ordboken ser i detta läge ut som: index sekvens 0 a 1 b 2 ab 3 ba 4 abb 5 baa 6 aa 7 aba 8 abbb 9 bb 10 baaa 11 abaa 12 aaa 13 aaab 14 bab 15 bba 21 22