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

Relevanta dokument
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

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.

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

Shannon-Fano-Elias-kodning

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

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

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

FLAC (Free Lossless Audio Coding)

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

TSBK04 Datakompression. Övningsuppgifter

TSBK04 Datakompression Övningsuppgifter

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.

Adaptiv aritmetisk kodning

Kompression av ljud och bild

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

Burrows-Wheelers transform

Träd och koder. Anders Björner KTH

Lab 3 Kodningsmetoder

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

Föreläsning 7. Felrättande koder

Övning 6 - Tillämpad datalogi 2012

TSBK35 Kompression av ljud och bild

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

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

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

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

F3 Datarepresentation teckenkodning och datakompression EDAA05 Datorer i system! Roger Henriksson!

F3 Datarepresentation teckenkodning och datakompression

Giriga algoritmer och dynamisk programmering

Digital- och datorteknik

Algoritmer, datastrukturer och komplexitet

Digital- och datorteknik

Kodning med distorsion

Tentamen, Algoritmer och datastrukturer

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

Föreläsningsanteckningar F6

Tildatenta Lösningsskiss

Programmering II (ID1019)

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Datastrukturer och algoritmer. Innehåll. Trie. Informell specifikation. Organisation av Trie. Föreläsning 13 Trie och Sökträd.

Speciell användning av heltalsvariabler. Heltalsprogrammering. Antingen-eller-villkor: Exempel. Speciell användning av heltalsvariabler

Algoritmer, datastrukturer och komplexitet

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

Teoretisk del. Facit Tentamen TDDC (6)

DAB760: Språk och logik

Föreläsning 4 Datastrukturer (DAT037)

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

Tommy Färnqvist, IDA, Linköpings universitet

Digital- och datorteknik

Facit Tentamen TDDC (7)

Tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl

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

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

I en matchning ligger varje hörn i högst en kant. I en stig ligger varje hörn i högst två kanter.

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

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 14 augusti, 2002

Tentamen Datastrukturer D DAT 035/INN960

Föreläsning 5: Kardinalitet. Funktioners tillväxt

SF2715 Tillämpad kombinatorik, 6hp

Tillämpad Programmering (ID1218) :00-13:00

DD1320 Tillämpad datalogi. Lösning (skiss) till tenta 20 okt 2011

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

Optimeringslära Kaj Holmberg

Datastrukturer. föreläsning 10. Maps 1

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

Symbolisk data. quote. (define a 1) (define b 2) (jacek johan david) (list a b)

18 juni 2007, 240 minuter Inga hjälpmedel, förutom skrivmateriel. Betygsgränser: 15p. för Godkänd, 24p. för Väl Godkänd (av maximalt 36p.

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 11 april, 2002

Optimeringslära Kaj Holmberg

Algoritmer, datastrukturer och komplexitet

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

TDDC74 Programmering, abstraktion och modellering DUGGA 2

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

Optimeringslära Kaj Holmberg

Block 2 Algebra och Diskret Matematik A. Följder, strängar och tal. Referenser. Inledning. 1. Följder

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Optimeringslära Kaj Holmberg

Uppgift 1 ( Betyg 3 uppgift )

Lösningsförslag till övningsuppgifter, del V

TNSL05 Optimering, Modellering och Planering. Föreläsning 10

Föreläsning 4 Datastrukturer (DAT037)

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

Kontinuitet och gränsvärden

Rekursiva algoritmer sortering sökning mönstermatchning

Algoritmer, datastrukturer och komplexitet

Sats 2.1 (Kinesiska restsatsen) Låt n och m vara relativt prima heltal samt a och b två godtyckliga heltal. Då har ekvationssystemet

Programmering II (ID1019) :00-11:00

Tentamen i. TDDC67 Funktionell programmering och Lisp

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Flöde i nätverk. Flöde i nätverk. Specialfall av minkostnadsflödesproblemet

Föreläsning 5: Grafer Del 1

PROV I MATEMATIK Algoritmik 26 mars 2008

Fredag 10 juni 2016 kl 8 12

Tentamen i TDDC75 Diskreta strukturer , lösningsförslag

Transkript:

Källkodning Källkodning innebär att vi avbildar sekvenser av symboler ur en källas alfabet på binära sekvenser (kallade kodord). Mängden av alla kodord kalls för en kod. (Man kan förstås tänka sig att ha icke-binära koder också, men i praktiken används bara binära koder.) Beroende på om vi avbildar ett fixt eller varierande antal symboler till varje kodord och om varje kodord har ett fixt eller varierande antal bitar, kan vi dela in koderna i fyra grupper: Fixt antal symboler, fixt antal bitar Exempel: ASCII, ISO 8859-1 Fixt antal symboler, varierande antal bitar Exempel: Huffmankodning, aritmetisk kodning Varierande antal symboler, fixt antal bitar Exempel: Tunstallkodning, Lempel-Ziv, Varierande antal symboler, varierande antal bitar Exempel: Lempel-Ziv Källkodning fö 3 p.1/23 Källkodning fö 3 p.2/23 Några exempel Egenskaper hos koder Antag att A = {a, b, c} fix fix fix variabel a 00 0 b 10 10 c 01 110 variabel fix variabel variabel aa 000 0 aba 001 100 abb 010 101 abc 011 1100 ac 100 1101 b 101 1110 c 110 11110 Om man från en sekvens av kodord kan återskapa den ursprungliga källsekvensen kallas koden för unikt avkodbar. Om man kan känna igen kodorden direkt vid avkodning, kallas koden momentant avkodbar (instantaneous). Om inget kodord är prefix till något annat kodord kallas koden för en prefixkod (i viss litteratur kallas de för prefixfria koder). Dessa koder är trädkoder, dvs kodorden är löv i ett binärt träd. Alla prefixkoder är momentant avkodbara och alla momentant avkodbara koder är prefixkoder. Källkodning fö 3 p.3/23 Källkodning fö 3 p.4/23

Exempel Är en given kod unikt avkodbar eller ej? Exempel, A = {a, b, c, d} Symbol Kod 1 Kod 2 Kod 3 Kod 4 a 0 0 0 0 b 0 1 10 01 c 1 00 110 011 d 10 11 111 111 Kod 1 Ej unikt avkodbar Kod 2 Ej unikt avkodbar Kod 3 Unikt avkodbar, momentant avkodbar Kod 4 Unikt avkodbar, ej momentant avkodbar Gör en lista av alla kodord. Undersök alla par av element i listan för att se om något element är prefix till ett annat element. I sådana fall lägg till suffixet till listan, om det inte redan finns där. Repetera tills en av två saker händer: 1. Man hittar ett suffix som är ett kodord. 2. Man hittar inga nya suffix att lägga till listan. I fall 1 är koden inte unikt avkodbar, i fall 2 är koden unikt avkodbar. Källkodning fö 3 p.5/23 Källkodning fö 3 p.6/23 Krafts olikhet Krafts olikhet, forts. En momentant avkodbar kod (prefixkod) med kodordslängderna l 1,...,l N existerar om och endast om Bevis: Antag att vi har en trädkod. Låt l max =max{l 1,...,l N }. Utvidga trädet så att alla grenar har djupet l max. Ett kodord på djupet l i har 2 l max l i löv under sig på djupet l max. Mängderna av löv är disjunkta. Det totala antalet löv under kodord är mindre än eller lika med 2 l max. Vi har alltså 2 l max l i 2 l max Omvänt kan vi, givet kodordslängder l 1,...,l N som uppfyller Krafts olikhet, alltid konstruera en trädkod. Börja med ett fullständigt träd där alla grenar har djup l max. Antag, utan att förlora i generalitet, att kodordslängderna är sorterade i stigande ordning. Välj någon ledig nod på djup l 1 för det första kodordet och ta bort alla dess avkomlingar. Gör likadant för l 2 och kodord 2, o.s.v. tills vi har placerat ut alla kodorden. Källkodning fö 3 p.7/23 Källkodning fö 3 p.8/23

Krafts olikhet, forts. Kraft-McMillans olikhet Uppenbarligen kan vi placera ut ett kodord på djup l 1. För att algoritmen ska vara möjligt måste det i steg i finnas lediga löv på maxdjupet l max. Antalet kvarvarande löv är i 1 i 1 2 l max 2 l max l j =2 l max (1 2 l j ) > 2 l max (1 2 l j ) 0 j=1 j=1 där vi utnyttjat att Krafts olikhet är uppfylld. Det finns alltså lediga löv i varje steg, alltså kan vi konstruera en prefixkod med de givna kodordslängderna. j=1 Krafts olikhet kan visas gälla för alla unikt avkodbara koder, inte bara prefixkoder. Den benämns då Kraft-McMillans olikhet: En unikt avkodbar kod med kodordslängderna l 1,...,l N existerar om och endast om Betrakta ( N 2 l i ) n, där n är ett godtyckligt heltal. ( ) n = i 1 =1 i n =1 2 (l i 1 +...+l i n ) Kraft-McMillans olikhet, forts. Källkodning fö 3 p.9/23 Kraft-McMillans olikhet, forts. Källkodning fö 3 p.10/23 l i1 +...+ l in är längden av n stycken kodord från koden. Det minsta värde denna exponent kan ta är n, som skulle hända om alla kodord hade längden 1. Det största värdet exponenten kan ta är nl där l är den maximala kodordslängden.summationen kan då skrivas om som ( ) n = nl k=n A k 2 k där A k är antalet kombinationer av n kodord som har den kombinerade längden k. Det finns maximalt 2 k binära sekvenser av längden k. Eftersom koden är unikt avkodbar, måste det gälla att för att vi ska kunna avkoda. A k 2 k Vi har alltså Vilket ger oss nl ( ) n 2 k 2 k = nl n +1 k=n (n(l 1) + 1) 1/n Detta gäller för alla n, inklusive när vi låter n gå mot oändligheten, vilket alltså slutligen ger oss Omvändningen till olikheten har vi redan, genom att vi kan konstruera en prefixkod med givna kodordslängder om de uppfyller Krafts olikhet. Källkodning fö 3 p.11/23 Källkodning fö 3 p.12/23

Godhetsmått Entropin som nedre gräns Det godhetsmått vi har för att mäta hur bra en kod är är (data)takten R R = E{# bitar i kodordet} E{# symboler per kodord} [bitar/symbol] Eftersom det är datakomprimering vi sysslar med, så vill vi att våra koder ska ha så låg takt som möjligt. Om vi till att börja med antar att vi har en minnesfri källa X j och kodar en symbol i taget med en prefixkod, så ges R av R = l = p i l i [bitar/symbol] där L är storleken på alfabetet och p i sannolikheten för symbol i. l är kodens kodordsmedellängd [bitar/kodord]. Entropin är en lägre gräns för l l H(Xj ) Betrakta skillnaden mellan entropin och kodordsmedellängden H(X j ) l = = p i log p i p i l i = p i (log 1 log 2 l i )= p i 1 ln 2 p i (log 1 l i ) p i p i log 2 l i p i p i ( 2 l i 1) = 1 L p i ln 2 ( där vi utnyttjat ln x x 1 samt Krafts olikhet p i ) (1 1) = 0 ln 2 Källkodning fö 3 p.13/23 Källkodning fö 3 p.14/23 Optimala koder Övre gräns för optimala koder En prefixkod kallas optimal om det inte existerar någon annan kod (för samma alfabet och sannolikhetsfördelning) som har lägre kodordsmedellängd. Den optimala koden uppfyller l <H(X j )+1 Låt l i = log p i = log p i + s i där 0 s i < 1 Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or. = = 2 log p i s i p i 2 s i p i = 1 Krafts olikhet är uppfylld, alltså existerar en unikt avkodbar kod med de givna kodordslängderna Källkodning fö 3 p.15/23 Källkodning fö 3 p.16/23

Övre gräns för optimala koder, forts. Gränser Vad har denna kod för kodordsmedellängd? L l = p i l i = = < p i ( log p i + s i ) p i log p i + p i log p i + p i s i p i = H(X j )+1 Den optimala koden kan ju inte vara sämre än denna kod, då vore det ingen optimal kod. Alltså gäller även för en optimal kod att l <H(X j )+1. OBS: Om p i l = H(Xj ). = 2 k i, i för heltal k i, så kan vi konstruera en kod med Vi har alltså visat att för en minnesfri källa där vi kodar en symbol i taget existerar det prefixkoder som uppfyller H(X j ) R = l <H(X j )+1 Resultatet kan enkelt generaliseras till källor med minne där vi kodar n symboler i taget. Datatakten uppfyller då R = l n 1 n H(X jx j+1...x j+n 1 ) R< 1 n H(X jx j+1...x j+n 1 )+ 1 n Genom att koda många symboler med varje kodord kan vi alltså komma godtyckligt nära entropigränsen, både då källan har minne och då den är minnesfri. Krav på optimala koder Källkodning fö 3 p.17/23 Krav på optimala koder, forts. Källkodning fö 3 p.18/23 Antag att vi kodar en symbol från alfabetet A = {a 1,...,a L } med varje kodord, och att kodordslängderna är l 1,...,l L. Nödvändiga villkor för att koden ska vara optimal är 1. Om p(a i ) p(a j ) så måste l i l j. 2. De två minst sannolika symbolerna har kodord med samma längd. 3. I kodträdet för en optimal kod måste det gå ut två grenar från varje inre nod. 4. Antag att vi ändrar en inre nod i trädet till ett löv genom att slå ihop all löv som utgår ifrån det till en enda symbol i ett reducerat alfabet. Om originalträdet var optimalt för originalalfabetet så är det reducerade trädet optimalt för det reducerade alfabetet. Källkodning fö 3 p.19/23 1. Om inte kunde vi bara byta kodord mellan de två symbolerna och få en kod med lägre kodordsmedellängd. 2. Antag att vi har en prefixkod där de två minst sannolika symbolerna har olika kodordslängd. Vi kan skapa en ny kod genom att ta bort de sista bitarna i det längre kodordet så att de två kodorden är lika långa. Den nya kodorden är fortfarande en prefixkod, eftersom det enligt 1 inte finns några kodord som är längre. Den nya koden har en lägre kodordsmedellängd, alltså är den ursprungliga koden inte optimal. 3. Antag att en prefixkod har en inre nod med bara en gren. Vi kan då ta bort den grenen och flytta upp delträdet därunder ett steg. Denna nya kod är fortfarande en prefixkod, och den har en lägre kodordsmedellängd. Alltså kan den ursprungliga koden inte vara optimal. 4. Om den reducerade koden inte var optimal skulle vi kunna konstruera en ny kod för det reducerade alfabetet och sen expandera den reducerade symbolen igen så att vi får en ny kod med lägre kodordsmedellängd än originalkoden. Källkodning fö 3 p.20/23

Huffmankodning Huffmankoder, forts. Enkel metod för att konstruera optimala trädkoder. Börja med enstaka symboler som löv. Slå i varje steg ihop de två minst sannolika noderna till en inre nod. Sannolikheten för den nya noden är summan av de två ursprungliga noderna. Om det finns fler noder med samma sannolikhet att välja mellan spelar det ingen roll vilken vi väljer. När vi konstruerat hela kodträdet, skapar vi kodorden genom att sätta 0 resp. 1 på de utgående grenarna i varje nod. Vilken gren som sätts till 0 resp. 1 spelar ingen roll. Antag att den mest sannolika symbolen för en källa X k har sannolikheten p max. Man kan visa att kodordsmedellängden för en en huffmankod uppfyller { H(X k )+p max ; p max 0.5 l < H(X k )+p max +0.086 ; p max < 0.5 Jämför med vår tidigare övre gräns l <H(Xk )+1 Källkodning fö 3 p.21/23 Källkodning fö 3 p.22/23 Utvidgade huffmankoder För små alfabet med skeva fördelningar, eller för källor med minne, kan en huffmankod vara ganska långt från entropigränsen. Detta kan ofta förbättras om man utvidgar källan, dvs man kodar fler symboler i taget med varje kodord. Den maximala redundansen (skillnanden mellan datatakten och entropin) minskar då som 1 n när vi kodar n symboler i taget. Notera att utvidgning inte garanterar att datatakten minskar, bara att den övre gränsen kommer närmare den undre gränsen. Källkodning fö 3 p.23/23