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

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öruv, påå Vanliga tecken tar lika mycket minne som ovanliga tecken: T, S, E,., AW, Z, }, £

8 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 TeckenSannolikhet.0.05 I !0.1 A0.15 B H0.2 U0.3 UHBA!I BU!HAHIHAHA.BUUU!BUU

10 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) CLIEUK TeckenHuffman C 000 L 001 I 010 E 011 U 10 K 11 KUCKELIKU

11 EN_ANANAS Lempel-Ziv KodningTecken- Kombination 1 2E 3N 4_ 5A 6NA 7NAS 1N1E1_1A3A6S

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

13 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 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: 01011H: 10010E: 01110J: Felkorrektion 0 HEJ 1

15 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 Kryptering (tyvärr inte i denna kurs)

16 Abstraktion

17 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 m 2 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) Båtvård (020406:8)

18 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. Båtvård (020406:8)

19 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); Båtvård (020406:8)

20 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) Abstrakta julgransnummer (010116:8)

21 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(); Abstrakta julgransnummer (010116:8)

22 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) Verbal magi i gamla brev (001216:8)

23 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(); Verbal magi i gamla brev (001216:8)


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

Liknande presentationer


Google-annonser