Presentation laddar. Vänta.

Presentation laddar. Vänta.

TILLÄMPAD DATALOGI (TILDA) Övning 6 www.nada.kth.se/~mhj/tilda.

Liknande presentationer


En presentation över ämnet: "TILLÄMPAD DATALOGI (TILDA) Övning 6 www.nada.kth.se/~mhj/tilda."— Presentationens avskrift:

1 TILLÄMPAD DATALOGI (TILDA) Övning 6

2 Komprimering Abstraktion

3 Abstraktion

4 Varför komprimera? Komprimerade filer tar mindre plats på datorn.
Komprimerade filer går snabbare att hämta/skicka över nätet. Ex) Ovning6.ppt bytes bytes komprimerad

5 Varför EJ komprimera? Filer måste packas upp innan de kan användas
Man måste ha tillgång till rätt program för att kunna packa upp en komprimerad fil Vissa filer ger dåligt komprimeringsratio Ex) Equation.ppt bytes bytes komprimerad

6 En komprimeringsidè Antag att ett mening på finska i regel kräver fler bokstäver än motsvarande mening på svenska. Komprimera finska texter genom att översätta de till svenska Ex) Text på Oboj-paketen Paina läppaä sisään ja avaa = 27 tecken Tryck in fliken och öppna = 25 tecken

7 Varför går det att komprimera?
Informationen i en fil sparas inte på det ”snålaste” sättet. Ex) Textfiler vanliga ord kodas längre än mindre vanliga ord: kanske, varför uv, påå Vanliga tecken tar lika mycket minne som ovanliga tecken: T, S, E, ., A W, Z, }, £

8 (RLE – Run Length Encoding)
Följdlängdskodning (RLE – Run Length Encoding) ÅÅÅÅH! JAAAAAAA! AAAAAAAAAAAAH. 4ÅH! J7A! 12AH. Om texten innehåller siffror… #4ÅH! J#7A! #12AH.

9 Huffmankodning U H B A ! I . B U ! H A H I H A H A . B U U U ! B U U
Tecken Sannolikhet . 0.05 I ! 0.1 A 0.15 B H 0.2 U 0.3 1.0 1 0.6 0.4 0.2 1 1 0.3 1 0.1 1 1 U H B A ! I . B U ! H A H I H A H A . B U U U ! B U U 101 11 001 01 100 01 0001 01 100 01 100 0000 101 11 11 11 001 101 11 11

10 Fågelkomprimering (041019:6)
Fågelinformationen nedan är komprimerad med ett Huffmanträd där nollor motsvarar vänster och ettor motsvarar höger (se figur, ’K’ kodas t.ex. som 11). Skriv upp hur alla bokstäver kodas och tala om vad det står i meddelandet: Fågelkomprimering (041019:6) Tecken Huffman C 000 L 001 I 010 E 011 U 10 K 11 1 1 1 1 1 C L I E U K K U C K E L I K U

11 Lempel-Ziv 1E 1N 1_ 1A 3A 6S EN_ANANAS Kodning Tecken- Kombination 1 2
4 _ 5 A 6 NA 7 NAS 1E 1N 1_ 1A 3A 6S

12 Förstörande komprimering
Vi kan inte återskapa orginalet från det som komprimerats Ex) JPEG (bilder), mp3 (ljud)

13 Lasse Svensson, övning Algebra D2 921109
hacks på Nada > module add hacks > lsvensson Jag förstår inte hur folk törs ha CD-bandspelare utan att kunna BCH-koder. Det är knappt att jag törs sätta på en CD-bandspelare. Man vet ju inte med vilken sannolikhet det man hör är korrekt. Lasse Svensson, övning Algebra D

14 Felkorrektion Vill man gardera sig mot fel kan man lägga till
redundans (motsatsen till komprimering) Kontrollsiffra (t ex sista siffran i ett personnummer) Skicka kopior av hela meddelandet, minst tre behövs om man ska kunna korrigera. Paritetsbitar, att man lägger till en etta eller nolla till ett binärt tal för att göra det udda. Ett jämnt tal innebär att nån bit är fel. Ex) Hammingavstånd, att man lägger till så många extrabitar till koden så att varje enbitsfel ger ett kodord som skiljer sig i en bit från det korrumperade kodordet, men i flera bitar från alla övriga kodord. Ex) A: H: E: J: 10101 Felkorrektion 1 H E J

15 (tyvärr inte i denna kurs)
Kryptering (tyvärr inte i denna kurs) Meddelande: Vi anfaller inatt Krypterar: f(Vi anfaller inatt) = Wj bogbmmfs jobuu Mottar: Wj bogbmmfs jobuu Dekrypterar: f-1(Wj bogbmmfs jobuu) = Vi anfaller inatt

16 Abstraktion

17 Båtvård (020406:8) Fråga) Seglingen är över och det är dags att ta hand om seglen. Hur lagras egentligen information om ett segel? Räcker ett tal med segelytan i m2 eller ska det kanske vara kvadratfot? Motivera varför det är bäst med en abstrakt datatyp för ett segel (3p). Ange också exempel på metoder med deras namn, in- och utdatatyper, t ex: public utdatatyp segelmetod(indatatyp variabelnamn) (2p)

18 Båtvård (020406:8) Svar) Abstraktion är bra eftersom:
- Användaren behöver inte bry sig om detaljer. En abstrakt datatyp avslöjar inte lagringssättet. - Användaren kan inte missbruka detaljinformation och därmed inte misstolka konstruktörens avsikter. Konstruktören kan specificera operationer för åtkomst och ändring. - Konstruktören kan anpassa den abstrakta datatypen/algoritmen till olika användare utan att förstöra en bra konstruktion. - Konstruktören kan förbättra konstruktionen utan att användarens användning behöver ändras.

19 Båtvård (020406:8) Svar forts)
Ett abstrakt Segel kan vara en klass med till exempel följande innehåll: Segel(); // Konstruktor int compareTo(Segel segel); double getSqFeet(); double getSqMeter(); void setSqFeet(double area); void setSqMeter(double area); boolean equals(Segel segel);

20 Abstrakta julgransnummer (010116:8)
Fråga) Det kommer nya EU-regler om att alla träd, även julgranar, ska märkas med ett tolvsiffrigt tal ur vilket man kan avläsa planteringsår (två siffror), region (tre siffror) och ett exemplarnummer (sju siffror). Vilken datatyp bör ett program använda för trädnumren? Förklara varför varken String, int eller int[ ] är idealiska och ange dom viktigaste metoderna i en abstrakt trädnummerdatatyp. (5p)

21 Abstrakta julgransnummer (010116:8)
Svar) Antal siffror i datum osv kan komma att ändras. För att inte låsa sej i en viss implementering bör man ha en abstrakt trädtyp Träd med följande metoder: int year(); int region(); int number(); void setYear(int year); void setRegion(int region); void setNumber(int number); String toString();

22 Verbal magi i gamla brev (001216:8)
Fråga) August Strindberg skrev flera brev om dagen och litteraturforskarna vill databehandla breven. Men vilken datatyp är ett brev? En bild i gif-format? En lång String? En array av typen String[ ]? Förklara varför det är bättre med en abstrakt datatyp och ge förslag på vilka metoder man kan vilja ha till den abstrakta brevtypen. (5p)

23 Verbal magi i gamla brev (001216:8)
Svar) Olika forskare kan tänkas behöva olika information om breven. Vissa kanske behöver titta på brevens utseende (då är en bild bra), andra behöver bara brevens text (då passar en String), och åter andra behöver veta hur texten brutits på rader (då är en String[ ] lämplig). Om man använder en abstrakt datatyp behöver man inte skriva om forskarnas program varje gång en forskare får behov av någon information som inte enkelt kan fås fram ur den aktuella brevrepresentationen. Några metoder för den abstrakta brevtypen: Date datum(); String adressat(); String text(); String rad(int nummer); int antalRader(); Image bild();


Ladda ner ppt "TILLÄMPAD DATALOGI (TILDA) Övning 6 www.nada.kth.se/~mhj/tilda."

Liknande presentationer


Google-annonser