Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.
|
|
- Henrik Alf Mattsson
- för 5 år sedan
- Visningar:
Transkript
1 Datakompression fö 3 p.3 Datakompression fö 3 p.4 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. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or. Även koder med olika uppsättning kodordslängder kan ha samma kodordsmedellängd. Givet att vi kodar en symbol i taget, så uppfyller en optimal kod l <H(Xj )+1 Låt l i = log p i = log p i + s i där 0 s i < 1 2 l i = = 2 log p i s i p i 2 s i p i = 1 Krafts olikhet är uppfylld, alltså existerar en trädkod med de givna kodordslängderna Datakompression fö 3 p.1 Övre gräns för optimala koder, forts. Gränser Datakompression fö 3 p.2 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 En optimal kod 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 =2 k i, i för heltal k i, så kan vi konstruera en kod med l = H(Xj ). 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. Vi får då H(X j X j+1...x j+n 1 ) l <H(X j X j+1...x j+n 1 )+1 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.
2 Datakompression fö 3 p.7 Datakompression fö 3 p.8 Krav på optimala koder Krav på optimala koder, forts. 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. 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. Huffmankodning Datakompression fö 3 p.5 Huffmankoder, forts. Datakompression fö 3 p.6 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 vilka 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 minnesfri källa X k har sannolikheten p max. Man kan visa att kodordsmedellängden för en en huffmankod uppfyller l < { Jämför med vår tidigare övre gräns H(X k )+p max ; p max 0.5 H(X k )+p max ; p max < 0.5 l <H(Xk )+1
3 Datakompression fö 3 p.11 Datakompression fö 3 p.12 Utvidgade huffmankoder Sidoinformation 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. Normalt måste man skicka över huffmankodens utseende till mottagaren, vilket kommer att kräva extra data (sidoinformation). Vi har hittills antagit att vi kodar en så lång sekvens från källan att den extra kostnaden för huffmanträdet är försumbar. I praktiska tillämpningar är dock detta inte alltid fallet. Rättfram metod: För varje symbol i alfabetet skickas först kodordslängden och sedan själva kodordet. Med ett alfabet av storlek L och med maximal kodordslängd l max går det då åt L log l max + i l i extra bitar. Smartare metod: Ta bara fram kodordslängder l i med huffmanalgoritmen. Givet dessa längder konstrueras en trädkod. Avkodaren kan använda samma metod för att konstruera en trädkod, så vi behöver bara skicka över kodordslängden för varje symbol, vilket kräver L log l max extra bitar. Datakompression fö 3 p.9 Datakompression fö 3 p.10 När man konstruerar kodträd utgående från kodordslängder så måste man alltid tilldela kodorden i stigande längdordning. Typiskt så tilldelar man kodorden i lexikografisk ordning, så att det första kodordet består av bara nollor. Betrakta ett huffmanträd där kodorden tilldelats enligt denna princip. T.ex. om vi har fyra symboler och kodordslängderna 1, 2, 3 och 3 så blir kodorden 0, 10, 110, 111 vilket motsvarar trädet om vi låter 0-grenarna gå åt vänster och 1-grenarna åt höger. Om vi betecknar varje nod med vägen dit från roten eller, om vi skriver de binära talen decimalt
4 Datakompression fö 3 p.15 Datakompression fö 3 p.16 Att gå ett steg till höger i trädet på samma nivå ger att värdet på noden ökar med ett. Att ta ett steg neråt längs 0-grenen dubblar värdet. En algoritm som delar ut kodord givet kodordslängder kan beskrivs så här: Fördela kodorden i stigande längdordning. Vi börjar med att ge det kortaste kodordet värdet 0. Vi lägger oss alltså längst till vänster på det djup i trädet som motsvarar kodordslängden. För varje nytt kodord tar vi ett steg till höger på samma nivå i trädet, dvs vi ökar värdet med 1. Om det nya kodordet har samma längd som det föregående så är kodordet det nya värdet. Om inte, så går vi neråt längs 0-grenen tills vi kommer till rätt djup. Varje steg neråt i trädet motsvaras av att vi multiplicerar värdet med 2. Repetera tills vi tagit hand om alla kodord. I pseudokod, givet sorterade kodordslängder length[ ] = {l 0 l 1 l 2... l L 1 } 1. i=0, c=0, ll=length[0] 2. code[i]=c 3. i=i+1, c=c+1 4. if i==l goto 8 5. if length[i]==ll goto 2 6. c=c*2, ll=ll+1 7. if length[i]==ll goto 2 else goto 6 8. done Kodordet för k är alltså code[k] skrivet som ett binärt tal med length[k] bitar. Observera att algoritmen utgår från sorterade längder, man måste också hålla reda på vilka symboler som kodorden motsvarar. Adaptiv huffmankodning Datakompression fö 3 p.13 Adaptiv huffmankodning, forts. Datakompression fö 3 p.14 Om vi vill koda en sekvens från en okänd källa med huffmankodning, måste vi känna till sannolikheterna för de olika symbolerna. Rättframmast är då att vi gör två pass över sekvensen. Först beräknar vi statistik på de olika symbolerna och sen använder vi de sannolikheterna för att koda källan. Istället skulle vi vilja göra allt i ett pass. Dessutom skulle vi vilja ha en metod som automatiskt anpassar sig om statistiken för källan ändrar sig under tiden. Enkel metod: 1. Börja med ett maximalt platt kodträd. 2. Koda N symboler från källan och beräkna samtidigt statistik, dvs räkna hur många gånger varje symbol uppträder. Bygg ett nytt huffmanträd med hjälp av de nya skattade sannolikheterna. 3. Repetera från 2. Ingen sidoinformation om trädets utseende måste skickas, eftersom avkodaren har tillgång till samma data som kodaren. Ju mindre N väljs, ju snabbare anpassar sig källan till ändrad statistik, å andra sidan måste vi konstruera om huffmanträdet mycket oftare vilket tar tid.
5 Adaptiv huffmankodning, forts Adaptiv huffmankodning, forts Smartare metod: Justera kodträdet efter varje kodad symbol. Vi behöver hålla reda på lite extra information i varje nod i trädet. Ett binärt träd med L löv har 2L 1 noder. Ge varje nod ett nummer mellan 1 och 2L 1. Varje nod har en vikt. För ett löv (yttre nod) är vikten antalet gånger den motsvarande symbolen har uppträtt (jfr. sannolikhet). För en inre nod är vikten summan av barnens vikter. Om nod j har vikten w j så ska det gälla att w 1 w 2... w 2L 1 Noder med nummer 2j 1 och 2j ska ha samma förälder och föräldern ska ha högre nummer än barnen. Träd med dessa egenskaper är huffmanträd. Börja med ett maximalt platt kodträd (motsvarande en fixlängdskod om L =2 k ). Vikten i varje löv sätts till 1, och vikten i varje inre nod sätts till summan av barnens vikter. Numrera noderna så att kraven uppfylls. För varje symbol som ska kodas: 1. Skicka kodordet motsvarande symbolen. 2. Gå till symbolens motsvarande nod. 3. Betrakta alla noder som har samma vikt som den nuvarande noden. Om den nuvarande noden inte är den nod med högst nummer byter vi plats på (dvs flyttar vikt, pekare till barnen och eventuell symbol) den nuvarande noden och den med högst nummer. 4. Öka den nuvarande nodens vikt med Om vi står i rotnoden är vi klara, annars går vi till nuvarande nodens förälder och repeterar från punkt 3. Adaptiv huffmankodning, forts Datakompression fö 3 p.17 Modifierad algoritm Datakompression fö 3 p.18 Eftersom uppdateringen av trädet sker efter att vi har kodat en symbol, kan vi på avkodarsidan göra samma uppdatering av trädet efter att vi avkodat en symbol. Ingen sidoinformation om trädet behöver skickas. En variant är att inte starta med ett fullt träd. Istället inför man en extra symbol (NYT, Not Yet Transmitted) och startar med ett träd som bara innehåller den symbolen, med vikt 0. När man kodar en symbol som ännu inte skickats kodas den med kodordet för NYT, följt av ett fixlängdskodord för den nya symbolen. Den gamla NYT-noden splittras därefter upp i två grenar, en för NYT-symbolen och en för den nya symbolen. NYT-noden behåller vikten 0, den nya symbolnoden får vikten 1. Om den nya symbolen är den sista ännu ej kodade symbolen ur alfabetet behöver vi inte splittra, utan ersätter bara NYT med den nya symbolen. Datakompression fö 3 p Om symbolen inte kodats tidigare, skicka kodord för NYT följt av fixlängdskodord för den nya symbolen, annars skickas kodordet motsvarande symbolen. 2. Om vi kodade en NYT så splittras NYT-noden i två nya löv, en för NYT med vikt 0 och en för den nya symbolen med vikt 1. Nodnumren för de nya noderna ska vara de två största oanvända numren. Om det var den sista ännu ej kodade symbolen, så behöver vi inte splittra, utan ersätter bara NYT med den nya symbolen. 3. Gå till symbolens motsvarande nod (gamla NYT-noden om vi splittrade). 4. Betrakta alla noder som har samma vikt som den nuvarande noden, utom dess förälder. Om den nuvarande noden inte är den nod med högst nummer byter vi plats på (dvs flyttar vikt, pekare till barnen och eventuell symbol) den nuvarande noden och den med högst nummer. 5. Öka den nuvarande nodens vikt med Om vi står i rotnoden är vi klara, annars går vi till nuvarande nodens förälder och repeterar från punkt 4. Datakompression fö 3 p.20
6 Glömskefaktor Om man vill att kodningen ska bero mer av de senare symbolerna än av tidigare symboler kan man använda en glömskefaktor. När vikten i rotnoden är större än N delar man vikten i alla noder med K. Om man vill behålla vikterna som heltal får man dela vikten i alla löv med K (avrunda uppåt) och sen addera ihop vikterna från barnen till föräldrarna, hela vägen till rotnoden. Beroende på hur man väljer N och K så glömmer vi tidigare värden olika snabbt, d.v.s. vi får olika snabb adaptering till ändrad statistik. Datakompression fö 3 p.21
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.
Datakompression fö 3 p.1 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. Det existerar förstås
Läs merKällkodning. Egenskaper hos koder. Några exempel
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
Läs merAritmetisk kodning. F (0) = 0 Exempel: A = {1, 2, 3} k=1. Källkodning fö 5 p.1/12
Aritmetisk kodning Vi identifierar varje sekvens av källsymboler med ett tal i intervallet [0, 1). Vi gör det med hjälp av fördelningsfunktionen (cumulative distribution function) F. För enkelhets skull
Läs merKrafts olikhet. En momentant avkodbar kod (prefixkod) med kodordslängderna l 1,...,l N existerar om och endast om. 2 l i. 1 i=1
Datakompression fö 2 p.1 Krafts olikhet En momentant avkodbar kod (prefixkod) med kodordslängderna l 1,...,l N existerar om och endast om N 2 l i 1 Bevis: Antag att vi har en trädkod. Låt l max =max{l
Läs merShannon-Fano-Elias-kodning
Datakompression fö 5 p.1 Shannon-Fano-Elias-kodning Antag att vi har en minnesfri källa X i som tar värden i {1, 2,...,L}. Antag att sannolikheterna för alla symboler är strikt positiva: p(i) > 0, i. Fördelningsfunktionen
Läs merAdaptiv aritmetisk kodning
Datakompression fö 8 p.1 Adaptiv aritmetisk kodning Aritmetisk kodning är väldigt enkel att göra adaptiv, eftersom vi bara behöver göra en adaptiv sannolikhetsmodell, medan själva kodaren är fix. Till
Läs merSkurlängdskodning. aaaabbbbbbbccbbbbaaaa. Man beskriver alltså sekvensen med ett annat alfabet än det ursprungliga.
Datakompression fö 4 p1 Skurlängdskodning Ibland har man källor som producerar långa delsekvenser av samma symbol Det kan då vara praktiskt att istället för att beskriva sekvensen som en följd av enstaka
Läs merOrdbokskodning. Enkel variant av kodning med variabelt antal insymboler och fixlängds kodord. (Jfr tunstallkodning)
Datakompression fö 6 p.1 Ordbokskodning Enkel variant av kodning med variabelt antal insymboler och fixlängds kodord. (Jfr tunstallkodning) Man skapar en ordbok som innehåller 2 b olika sekvenser av symboler
Läs merExempel, minnesfri binär källa. Ordbokskodning. Lempel-Zivkodning. Lempel-Zivkodning, forts.
Datakompression fö 6 p.3 Datakompression fö 6 p.4 Ordbokskodning Exempel, minnesfri binär källa Enkel variant av kodning med variabelt antal insymboler och fixlängds kodord. (Jfr tunstallkodning) Man skapar
Läs merTSBK04 Datakompression. Övningsuppgifter
TSBK04 Datakompression Övningsuppgifter Innehåll 1 Informationsteoretiska begrepp........................ 1 2 Källkodning................................... 4 Copyright c 2004 Bildkodningsgruppen, Linköpings
Läs merTSBK04 Datakompression Övningsuppgifter
TSBK04 Datakompression Övningsuppgifter Innehåll 1 Informationsteoretiska begrepp........................ 1 2 Källkodning................................... 4 Copyright c 2004 Bildkodningsgruppen, Linköpings
Läs merFLAC (Free Lossless Audio Coding)
Datakompression fö 9 p.1 FLAC (Free Lossless Audio Coding) Distorsionsfri kodning av ljud Ljudsignalen delas in i block (typiskt några tusen sampel). Koda summa/skillnad av de två stereokanalerna om det
Läs merBurrows-Wheelers transform
Datakompression fö 7 p.1 Burrows-Wheelers transform Transformen själv ger ingen kompression, men gör det lättare att koda signalen med en enkel kodare. Antag att vi vill koda en sekvens av längd n. Skapa
Läs merTräd och koder. Anders Björner KTH
27 Träd och koder Anders Björner KTH 1. Inledning. Det är i flera sammanhang viktigt att representera information digitalt (d.v.s omvandla till sviter av nollor och ettor). Beroende på vilka villkor som
Läs merÖvning 6 - Tillämpad datalogi 2012
/home/lindahlm/activity-phd/teaching/12dd1320/exercise6/exercise6.py October 2, 20121 0 # coding : latin Övning 6 - Tillämpad datalogi 2012 Sammanfattning Idag gick vi igenom komprimering, kryptering och
Läs merFöreläsning 7. Felrättande koder
Föreläsning 7 Felrättande koder Antag att vi vill skicka ett meddelande som består av bokstäver a,b,c,d. Vi kan koda a,b,c,d. Antag att det finns en viss sannolikhet att en bit i ett meddelande som skickas
Läs merEn generell prediktiv kodare utnyttjar signalens utseende N steg tillbaka i tiden för kodningen, dvs vi kodar efter den betingade fördelningen
Prediktiv kodning Närliggande sampel i en signal är oftast starkt korrelerade med varandra, det kan därför vara en bra ide att försöka utnyttja denna korrelation (minnet) innan kvantiseringen för att få
Läs merLinjär prediktion. Prediktiv kodning. Linjär prediktion. Prediktiv kodare och avkodare
Prediktiv kodning Linjär prediktion Närliggande sampel i en signal är oftast starkt korrelerade med varandra, det kan därför vara en bra ide att försöka utnyttja denna korrelation (minnet) innan kvantiseringen
Läs merLab 3 Kodningsmetoder
Lab 3. Kodningsmetoder 15 Lab 3 Kodningsmetoder Starta Matlab och ladda ner följande filer från kurswebben till er lab-katalog: lab3blocks.mdl okodat.mdl repetitionskod.mdl hammingkod.mdl planet.mat Denna
Läs merFöreläsning 5: Grafer Del 1
2D1458, Problemlösning och programmering under press Föreläsning 5: Grafer Del 1 Datum: 2006-10-02 Skribent(er): Henrik Sjögren, Patrik Glas Föreläsare: Gunnar Kreitz Den här föreläsningen var den första
Läs merKompression av ljud och bild
Kompression av ljud och bild Harald Nautsch harna@isy.liu.se ISY Informationskodning, Linköpings universitet http://www.icg.isy.liu.se/courses/tsbk35/ Kurslitteratur Rekommenderad bok: Khalid Sayood, Introduction
Läs merKurslitteratur. Kompression av ljud och bild. Föreläsningar, preliminärt program. Laborationer
TSBK35 källkodning p.3/89 TSBK35 källkodning p.4/89 Kurslitteratur Kompression av ljud och bild Harald Nautsch harna@isy.liu.se http://www.icg.isy.liu.se/courses/tsbk35/ ISY Informationskodning, Linköpings
Läs merBINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X
Algoritmer och Datastrukturer Kary FRÄMLING/Göran PULKKIS (v23) Kap. 7, Sid 1 BINÄRA TRÄD Träd används för att representera olika slags hierarkier som ordnats på något sätt. Den mest använda trädstrukturen
Läs merDetta ger oss att kanalkapaciteten för den ursprungliga kanalen är C = q 1 C 1 + q 2 C C =1 h ( ) 0.30.
Lösning på problem a) Kanalen är symmetrisk och vi gör nedanstående uppdelning av den. Vi får två starkt symmetriska kanaler vilkas kanalkapacitet ges av C och C 2. Kanalerna väljes med sannolikheterna
Läs merFöreläsning 4 Datastrukturer (DAT037)
Föreläsning 4 Datastrukturer (DAT07) Fredrik Lindblad 1 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat07 1 Innehåll
Läs merDatakompression. Harald Nautsch ISY Bildkodning, Linköpings universitet.
Datakompression fö 1 p.1 Datakompression Harald Nautsch harna@isy.liu.se http://www.icg.isy.liu.se/courses/tsbk04/ ISY Bildkodning, Linköpings universitet Datakompression fö 1 p.2 Kursinnehåll Källmodellering:
Läs merKursinnehåll. Datakompression. Föreläsningar, preliminärt program. Examination
Datakompression fö 1 p.3 Datakompression fö 1 p.4 Kursinnehåll Datakompression Harald Nautsch harna@isy.liu.se http://www.icg.isy.liu.se/courses/tsbk04/ ISY Bildkodning, Linköpings universitet Källmodellering:
Läs merKurslitteratur. Kompression av ljud och bild. Föreläsningar, preliminärt program. Laborationer. Khalid Sayood, Introduction to Data Compression
TSBK35 fö 1 p.3 TSBK35 fö 1 p.4 Kurslitteratur Kompression av ljud och bild Harald Nautsch harna@isy.liu.se http://www.icg.isy.liu.se/courses/tsbk35/ ISY Bildkodning, Linköpings universitet Khalid Sayood,
Läs merTentamen, Algoritmer och datastrukturer
UNDS TEKNISKA ÖGSKOA (6) Institutionen för datavetenskap Tentamen, Algoritmer och datastrukturer 23 8 29, 8. 3. Anvisningar: Denna tentamen består av fem uppgifter. Totalt är skrivningen på 36 poäng och
Läs merTDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Träd Traversering Insättning, borttagning
Läs merInformationsteknologi Tom Smedsaas 19 augusti 2016
Informationsteknologi Tom Smedsaas 19 augusti 016 VL-träd Definition Ett VL-träd är ett binärt sökträd där det för varje nod gäller att skillnaden i höjd mellan nodens vänster och höger subträd är högst
Läs merDatastrukturer. föreläsning 10. Maps 1
Datastrukturer föreläsning 10 Maps 1 Minsta uppspännande träd Maps 2 Minsta uppspännande träd Uppspännande träd till graf fritt delträd innehåller alla noderna Minsta uppspännande träd (MST) är det uppspännande
Läs merSpeciell användning av heltalsvariabler. Heltalsprogrammering. Antingen-eller-villkor: Exempel. Speciell användning av heltalsvariabler
Heltalsprogrammering Speciell användning av heltalsvariabler max z = då c j x j j= a ij x j b i j= x j 0 x j heltal i =,..., m j =,..., n j =,..., n ofta x j u j j =,..., n Oftast c, A, b heltal. Ibland
Läs merAlgoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 9 oktober 2015 Anton Grensjö ADK Övning 6 9 oktober 2015 1 / 23 Översikt Kursplanering Ö5: Grafalgoritmer och undre
Läs merFöreläsning 9 Innehåll
Föreläsning 9 Innehåll Träd, speciellt binära träd egenskaper användningsområden implementering Datavetenskap (LTH) Föreläsning 9 HT 2017 1 / 31 Inlämningsuppgiften De föreläsningar som inlämningsuppgiften
Läs merDigital- och datorteknik
Digital- och datorteknik Föreläsning #7 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Aritmetik i digitala system Speciella egenskaper: Systemet
Läs merFöreläsning 5: Dynamisk programmering
Föreläsning 5: Dynamisk programmering Vi betraktar en typ av problem vi tidigare sett: Indata: En uppsättning intervall [s i,f i ] med vikt w i. Mål: Att hitta en uppsättning icke överlappande intervall
Läs merDigital- och datorteknik
Digital- och datorteknik Föreläsning #7 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Speciella egenskaper: Systemet arbetar med kodord (s k
Läs merFöreläsning 4 Datastrukturer (DAT037)
Föreläsning 4 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-10 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 Förra
Läs merDatastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5
Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5? FORTSÄTTNING TRÄD RECAP (förra föreläsningen) RECAP (förra föreläsningen) Träd är icke-linjära datastrukturer som ofta
Läs merInnehå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
Innehåll Föreläsning 12 Sökträd Sökning Sökning och Sökträd 383 384 Binärt sökträd Används för sökning i linjära samlingar av dataobjekt, specifikt för att konstruera tabeller och lexikon. Organisation:
Läs merEtt generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn
Träd allmänt Träd allmänt Ett generellt träd är Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn där t1,..., tn i sin tur är träd och kallas subträd, vars rotnoder kallas
Läs merFöreläsningsanteckningar F6
Föreläsningsanteckningar F6 Martin Andersson & Patrik Falkman Kortaste vägen mellan en nod och alla andra noder Detta problem innebär att givet en graf G = (E,V) hitta den kortaste vägen över E från en
Läs merAlgoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 4 oktober 2017 1 Idag Algoritmkonstruktion (lite blandat) Redovisning och inlämning av labbteori 3 2 Uppgifter Uppgift
Läs merÖvning 6. Komprimering, kryptering, dokumentering & testning
Per Sedholm DD1320 (tilda11) 2011-10-05 1. Smittskydd Övning 6 Komprimering, kryptering, dokumentering & testning Du har fått ett mail som innehåller tips mot spridning av virus. Informationen är komprimerad
Läs merDD1320 Tillämpad datalogi. Lösning (skiss) till tenta 20 okt 2011
DD1320 Tillämpad datalogi Lösning (skiss) till tenta 20 okt 2011 1 KMP P I P P I N i 1 2 3 4 5 6 Next[i] 0 1 0 2 1 3 2 Huffmankodning: Algoritmen 1. Sortera tecknen som ska kodas i stigande förekomstordning.
Läs merUppgift 1 ( Betyg 3 uppgift )
2008-03-12.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Du skall skriva ett program som läser igenom en textfil som heter FIL.TXT och skriver ut alla rader där det står ett decimaltal först på raden. Decimaltal
Läs merDatastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd
Föreläsning 8 Innehåll Datastrukturer i kursen Träd, speciellt binära träd egenskaper användningsområden implementering Undervisningsmoment: föreläsning 8, övningsuppgifter 8, lab 4 Avsnitt i läroboken:
Läs merLösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl
Matematiska Institutionen KTH Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL och Media, SF60 och 5B8, onsdagen den 7 augusti 0, kl 4.00-9.00. Examinator: Olof Heden Hjälpmedel: Inga
Läs merInlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen
Föreläsning 9 Innehåll Inlämningsuppgiften De föreläsningar som inlämningsuppgiften bygger på är nu klara. Det är alltså dags att börja arbeta med inlämningsuppgiften. Träd, speciellt binära träd egenskaper
Läs merFöreläsning 4: Giriga algoritmer. Giriga algoritmer
Föreläsning 4: Giriga algoritmer Giriga algoritmer Denna typ av algoritmer arbetar efter följande princip: Gör i varje situation det som är lokalt optimalt, d.v.s. bäst för stunden. Några exempel vi redan
Läs merGrundläggande logik och modellteori
Grundläggande logik och modellteori Kapitel 6: Binära beslutsdiagram (BDD) Henrik Björklund Umeå universitet 22. september, 2014 Binära beslutsdiagram Binära beslutsdiagram (Binary decision diagrams, BDDs)
Läs merInom datalogin brukar man använda träd för att beskriva vissa typer av problem. Om man begränsar sig till träd där varje nod förgrenar sig högst två
Binära träd Inom datalogin brukar man använda träd för att beskriva vissa typer av problem. Om man begränsar sig till träd där varje nod förgrenar sig högst två gånger, talar man om binära träd. Sådana
Läs merTSBK35 Kompression av ljud och bild
TSBK35 Kompression av ljud och bild Övningshäfte 0 februari 013 Innehåll I Problem 1 1 Informationsteori................................ 1 Källkodning................................... 3 3 Kvantisering...................................
Läs merInformationsteori. Repetition Kanalkapaciteten C. Repetition Källkodhastigheten R 2. Repetition Kanalkodhastigheten R 1. Huffmans algoritm: D-när kod
Informationsteori Repetition Kanalkapaciteten C Källkodare Kanalkodare X Kanal Mats Cedervall Mottagare vkodare Kanalavkodare Y Kanalkodningssatsen C =supi(x; Y ) p(x) Informationsteori, fl#7 1 Informationsteori,
Läs merFöreläsninsanteckningar till föreläsning 3: Entropi
Föreläsninsanteckningar till föreläsning 3: Entropi Johan Håstad, transkriberat av Pehr Söderman 2006-01-20 1 Entropi Entropi är, inom kryptografin, ett mått på informationsinnehållet i en slumpvariabel.
Läs merFredag 10 juni 2016 kl 8 12
KTH CSC, Alexander Baltatzis DD1320/1321 Lösningsförslag Fredag 10 juni 2016 kl 8 12 Hjälpmedel: En algoritmbok (ej pythonkramaren) och ditt eget formelblad. För betyg E krävs att alla E-uppgifter är godkända,
Läs merRekursiva algoritmer sortering sökning mönstermatchning
Anders Haraldsson 1 Anders Haraldsson 2 Dagens föreläsning Programmering i Lisp Fö 6-7 Rekursiva strukturer rekursiva definitioner rekursiva funktioner rekursiva bevis: induktion - rekursion strukturell
Läs merInnehåll. Föreläsning 11. Organisation av Trie. Trie Ytterligare en variant av träd. Vi har tidigare sett: Informell specifikation
Innehåll Föreläsning 11 Trie Sökträd Trie och Sökträd 356 357 Trie Ytterligare en variant av träd. Vi har tidigare sett: Oordnat träd där barnen till en nod bildar en mängd Ordnat träd där barnen till
Läs merLinjärt minne. Sammanhängande minne är ej flexibelt. Effektivt
Binära träd (forts) Ett binärt träd kan lagras i ett enda sammanhängande minne Roten har index 1 Vänster barn till nod i har index 2*i Höger barn till nod i har index 2*i + 1 Föräldern till nod i har index
Läs merFöreläsning 13. Dynamisk programmering
Föreläsning 13 Dynamisk programmering Föreläsning 13 Dynamisk programmering Fibonacci Myntväxling Floyd-Warshall Kappsäck Handelsresandeproblemet Uppgifter Dynamisk programmering Dynamisk programmering
Läs merLösningar Datastrukturer TDA
Lösningar Datastrukturer TDA416 2016 12 21 roblem 1. roblem 2. a) Falskt. Urvalssortering gör alltid samma mängd av jobb. b) Sant. Genom att ha en referens till sista och första elementet, kan man nå både
Läs merTentamen Datastrukturer (DAT036/DAT037/DIT960)
Tentamen Datastrukturer (DAT036/DAT037/DIT960) Datum och tid för tentamen: 2016-04-07, 14:00 18:00. Författare: Nils Anders Danielsson. (Tack till Per Hallgren och Nick Smallbone för feedback.) Ansvarig:
Läs merProgrammering II (ID1019)
ID1019 Johan Montelius Instruktioner Betyg Programmering II (ID1019) 2019-03-08 Svaren skall lämnas på dessa sidor, använd det utrymme som nns under varje uppgift för att skriva ner ditt svar (inte på
Läs merDigital- och datorteknik
Digital- och datorteknik Föreläsning #2 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Talomvandling Principer för omvandling mellan olika talsystem:
Läs merFöreläsning Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-11-23 Idag Mer om grafer: Minsta uppspännande träd (för oriktade grafer). Djupet först-sökning. Minsta uppspännande träd Träd (utan rot)
Läs merOptimeringslära 2013-11-01 Kaj Holmberg
Tekniska Högskolan i Linköping Optimering för ingenjörer Matematiska Institutionen Lösning till tentamen Optimeringslära 23-- Kaj Holmberg Uppgift a: Problemet skrivet i standardform är: Lösningar min
Läs merFöreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer
Föreläsning 5: Giriga algoritmer Kruskals och Prims algoritmer Spännande träd: Om G är en sammanhängande graf så är ett spännande träd ett träd som innehåller alla noder i V (G). Viantarattviharkantvikterw(e)
Läs merKodning med distorsion
Kodning med distorsion Vi har en signal x n, n = 1... N som ska kodas. Alfabetet är en delmängd av de reella talen A R. Alfabetet kan vara kontinuerligt. Om vi inte har kravet att den avkodade signalen
Läs merDatastrukturer och algoritmer. Innehåll. Trie. Informell specifikation. Organisation av Trie. Föreläsning 13 Trie och Sökträd.
Datastrukturer och algoritmer Föreläsning 13 rie och ökträd Innehåll rie rådar rie ökträd tterligare en variant av träd. Vi har tidigare sett: Oordnat träd där barnen till en nod bildar en mängd Ordnat
Läs merInternational Olympiad in Informatics 2011 22 29 July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor
Papegojor Yanee är fågelentusiast. Sedan hon läst om IP over Avian Carriers (IPoAC), har hon spenderat mycket tid med att träna en flock papegojor att leverera meddelanden över långa avstånd. Yanees dröm
Läs merTuringmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.
Turingmaskiner och oavgörbarhet Turingmaskinen Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen. Data är ett oändligt långt band där nollor och ettor står skrivna: Oändligt
Läs merFöreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.
Föreläsning 9: Turingmaskiner och oavgörbarhet Turingmaskinen Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen. Data är ett oändligt långt band där nollor och ettor står
Läs merTildatenta Lösningsskiss
Tildatenta 2017-10-20 Lösningsskiss E-delen 1. KMP PAPPAPARTY next[i] = 0 1 0 2 1 0 4 3 1 1 2. Parent-pekare Utskriftfunktionen fungerar så här: 1. Om noden inte är None a. gör vi först ett rekursivt anrop
Läs merDIGITAL KOMMUNIKATION
EN KOR SAMMANFANING AV EORIN INOM DIGIAL KOMMUNIKAION Linjär kod En binär linjär kod kännetecknas av att summan av två kodord också är ett kodord. Ett specialfall är summan av ett kodord med sig själv
Läs merFöreläsning 9 Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT07) Fredrik Lindblad 27 november 207 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/20/course/dat07 Innehåll 2
Läs merKontinuitet och gränsvärden
Kapitel Kontinuitet och gränsvärden.1 Introduktion till kontinuerliga funktioner Kapitlet börjar med allmänna definitioner. Därefter utvidgar vi successivt familjen av kontinuerliga funktioner, genom specifika
Läs merProblem: BOW Bowling. Regler för Bowling. swedish. BOI 2015, dag 1. Tillgängligt minne: 256 MB. 30.04.2015
Problem: BOW Bowling swedish BOI 0, dag. Tillgängligt minne: 6 MB. 30.04.0 Byteasar tycker om både bowling och statistik. Han har skrivit ner resultatet från några tidigare bowlingspel. Tyvärr är några
Läs merTrädstrukturer och grafer
Översikt Trädstrukturer och grafer Trädstrukturer Grundbegrepp Binära träd Sökning i träd Grafer Sökning i grafer Programmering tillämpningar och datastrukturer Varför olika datastrukturer? Olika datastrukturer
Läs merInstruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python
Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,
Läs merTuringmaskinen - en abstrakt datormodell
Turingmaskinen - en abstrakt datormodell Modeller är viktiga hjälpmedel vid studiet av många fenomen. En bra modell fyller oftast följande krav: Den fångar upp det centrala i sin fysiska motsvarighet Den
Läs merIntroduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4
Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 014-015 Denna lektion ska vi studera rekursion. Lektion 4 Principen om induktion Principen om induktion är ett vanligt sätt att bevisa
Läs merFöreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer
Föreläsning 5: Giriga algoritmer Kruskals och Prims algoritmer Spännande träd: Om G är en sammanhängande graf så är ett spännande träd ett träd som innehåller alla noder i V (G). Viantarattviharkantvikterw(e)
Läs merDatastrukturer. föreläsning 10. Maps 1
Datastrukturer föreläsning 10 Maps 1 AVL-träd 1 2 5 2 0 4 1 8 3 2 1 11 1 7 Lecture 6 2 Insättning i AVL-träd Sätt först in det nya elementet på samma sätt som i ett vanligt BST! Det nya trädet kan bli
Läs merProgramkonstruktion och. Datastrukturer
Programkonstruktion och Datastrukturer Repetitionskurs, sommaren 2011 Datastrukturer (Listor, Träd, Sökträd och AVL-träd) Elias Castegren elias.castegren.7381@student.uu.se Datastrukturer Vad är en datastruktur?
Läs merTeoretisk del. Facit Tentamen TDDC (6)
Facit Tentamen TDDC30 2014-08-29 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är skillnaden mellan synligheterna public, private och protected? (1p) Svar:public: Nåbar för
Läs merTDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find
TDDI16 Datastrukturer och algoritmer Prioritetsköer, heapar, Union/Find Prioritetsköer En vanligt förekommande situation: Väntelista (jobbhantering på skrivare, simulering av händelser) Om en resurs blir
Läs merDekomposition och dynamisk programmering
Algoritmer, datastrukturer och komplexitet, hösten 2016 Uppgifter till övning 3 Dekomposition och dynamisk programmering Max och min med dekomposition I vektorn v[1..n] ligger n tal. Konstruera en dekompositionsalgoritm
Läs merFöreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-18 Idag Mer om grafer: Minsta uppspännande träd (för oriktade grafer). Prims algoritm. Kruskals algoritm. Djupet först-sökning. Cykel
Läs merUpplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)
Binära träd Algoritmer och Datastrukturer Markus Saers markus.saers@lingfil.uu.se Upplägg Binära träd (9) Binära sökträd (0.) Träd Många botaniska termer Träd, rot, löv, gren, Trädets rot kan ha ett antal
Läs merProv i DAT 312: Algoritmer och datastrukturer för systemvetare
Prov i DAT 312: Algoritmer och datastrukturer för systemvetare Jacek Malec Datavetenskap, LU 11 april 2003 Datum 11 april 2003 Tid 14 19 Ansvarig lärare Jacek Malec (tel. 03 9890431) Hjälpmedel inga Antal
Läs merTräd Hierarkiska strukturer
Träd Hierarkiska strukturer a 1 a 2 a 3 a 4 a 2 a 5 a 6 a 7 Hierarki: Korta vägar till många Hur korta? Linjär lista: n 2 Träd: Antal element på avståndet m: g m a 1 a 3 a 8 a 12 m = log g n a 9 a 10 Väglängden
Läs merFöreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-27 Idag Balanserade sökträd Splayträd Skipplistor AVL-träd AVL-träd Sökträd Invariant (för varje nod): Vänster och höger delträd har samma
Läs merSjälvbalanserande träd AVL-träd. Koffman & Wolfgang kapitel 9, avsnitt 1 2
Självbalanserande träd AVL-träd Koffman & Wolfgang kapitel 9, avsnitt 1 2 1 Balanserade träd Nodbalanserat träd: skillnaden i antalet noder mellan vänster och höger delträd är högst 1 Höjdbalanserat träd:
Läs mer13 Prioritetsköer, heapar
Prioritetsköer, heapar 31 13 Prioritetsköer, heapar U 101. En prioritetskö är en samling element där varje element har en prioritet (som används för att jämföra elementen med). Elementen plockas ut i prioritetsordning
Läs merTDDC74 Programmering, abstraktion och modellering DUGGA 2
AID-nummer: Datum: 2011-02-18 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering DUGGA 2 Fredag 18 feb 2011
Läs merTentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl
1 Matematiska Institutionen KTH Tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl 14.00-19.00. Examinator: Olof Heden Hjälpmedel: Inga hjälpmedel är tillåtna
Läs merAutomatateori (2) Idag: Sammanhangsfria språk. Dessa kan uttryckas med Grammatik PDA
Automatateori (2) Idag: Sammanhangsfria språk Dessa kan uttryckas med Grammatik PDA Grammatik = språkregler Ett mer kraftfullt sätt att beskriva språk. En grammatik består av produktionsregler (andra ord
Läs mer