Övning 5 www.nada.kth.se/~mhj/tilda.

Slides:



Advertisements
Liknande presentationer
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Advertisements

Klasser och objekt.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Fortsättningskurs i Programmering lektion 3 Johan Hjerling
Klassarv och inkapsling
Objektorienterad utveckling Lektion 2 Objekt, överlagring, överskuggning, klasshierarkier och dynamisk bindning KTH Peter Mozelius.
Om Java C =>Java syntax variabler metoder färdiga klasser
Övning5 Så här ska man tänka när man löser uppgift 1 på tentan lite grafik, så här söker man genom en lista så här läser man från en fil i java lösa uppgift.
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik för K och Media
Programkodens uppbyggnad
Att programmera i språket Java
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser (som används i marginalen)
Hashing / Hash tabeller -- Kapitel 20. Hash? Varför en annan datastruktur? Konstant tid för både insert- och find- operationer.
TNSL04 – IT grundkurs. VT2008. Föreläsning nr 3, torsdag 7 feb. kl Del 1. Klasser, objekt, metoder, konstruktorer, samlingar och tillstånd. Hur.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Repetition inför slutprovet
Datasamlingar och generiska enheter
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
OOP Objekt-orienterad programmering
Programmeringsteknik för Media1 & K1
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Föreläsning 5, Kapitel 5 Använda Java-bibliotek för att få avancerad funktionalitet Kursbok: “Objects First with Java - A Practical Introduction using.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 10 Stränghantering.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
1 Programmera med strängar nr 9 Tal till sträng Sträng till tal Grep Sträng till lista av ord.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
TILLÄMPAD DATALOGI (TILDA) Övning 3
DD1320/25 TILDA Lösningsskiss tenta 31 oktober 2013.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Sökträd, naiva och balancerade lösningar -HashTable -- Kapitel.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Introduktion till programmeringsspråket Java -Den allmänna.
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
1. Skriv programmet Fetkoll som läser igenom valfri webbsida och skriver ut alla ord och fraser som står med fetstil. I HTML anges det med starttaggen.
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
TILLÄMPAD DATALOGI (TILDA) Övning 4
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Programmeringsteknik
TILLÄMPAD DATALOGI (TILDA) Övning 2
TILLÄMPAD DATALOGI (TILDA) Övning 2
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 14.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Sökning, Symbol tabeller Binära sökträd.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Hash Tabeller och Graf.
., nm,,.. nmlnbb Lnkbhbc v s.
Utspel och spelteknik Lektion 4.
Presentationens avskrift:

Övning 5 www.nada.kth.se/~mhj/tilda

Hashning Textsökning Hemtal KMP-automat Hemtal Bilarna

Hashning

Iden med hashning hash betyder: hackmat, röra first Björn Agnetha Benny Anni-Frid firstA Agneta Anni-Frid firstB Björn Benny table [ ] Agneta hash betyder: hackmat, röra Björn 1 Benny 2 Anni-Frid 3

Insättning (put) f( ) = 2 + 10 + 29 + 18 + 14 = 73 Björn 1 hashfunktion tabellstorlek f( ) = 2 + 10 + 29 + 18 + 14 = 73 Björn mod 4 1 f( ) = 1 + 7 + 14 + 5 + 20 + 7 + 1 = 55 Agnetha mod 4 3 f( ) = 2 + 5 + 14 + 14 + 25 = 60 Benny mod 4 f( ) = 1 + 14 + 14 + 9 + 30 + 6 + 18 + 9 + 4 = 105 Anni-Frid mod 4 1 table [ ] Benny Anni-Frid Björn Björn 1 2 Agnetha 3

Sökning (get) f( ) = 2 + 5 + 14 + 14 + 25 = 60 Benny mod 4 f( ) = 2 + 10 + 29 + 18 + 14 = 73 Björn mod 4 1 f( ) = 13 + 1 + 18 + 9 + 5 = 46 Marie mod 4 2 f( ) = 2 + 15 = 17 Bo mod 4 1 table [ ] Benny Benny Anni-Frid Björn Anni-Frid Björn Björn 1 2 Agnetha 3

Tabellstorlek 73 f(Björn) = 73 55 f(Agnetha) = 55 60 f(Benny) = 60 105 table [ ] ….. Agnetha 55 ….. mod 10000 73 f(Björn) = 73 Benny 60 mod 10000 55 f(Agnetha) = 55 ….. mod 10000 60 f(Benny) = 60 Björn 73 mod 10000 105 f(Anni-Frid) = 105 ….. Anni-Frid 105 ….. 9999

Tabellstorlek 1 f(Björn) = 73 7 f(Agnetha) = 55 4 f(Benny) = 60 1 table [ ] 1 Anni-Frid Björn 2 mod 8 3 1 f(Björn) = 73 Benny 4 mod 8 7 f(Agnetha) = 55 5 mod 8 4 f(Benny) = 60 6 mod 8 1 f(Anni-Frid) = 105 7 Agnetha Tumregel: 50% luft

Tabellstorlek table [ ] Agnetha Benny Björn Anni-Frid ….. ….. ….. ….. ….. Agnetha 55 ….. Benny 60 ….. Björn 73 ….. Anni-Frid 105 ….. 9999

Hashfunktion god spridning snabb att beräkna Hashning av strängar i Java: public static void main(String [] args) { String s1 = ”hej”; int code = s1.hashCode(); System.out.println(code); } 103181 f(s) = s[0] * 31(n-1) + s[1] * 31(n-2) + ... + s[n-1] f(s1) = 104 * 312 + 101 * 31 + 106 = 103181

Krockhantering med ”linear probing” table [ ] Björn 1 kluster Anni-Frid 2 mod 8 3 1 f(Björn) = 73 Benny 4 mod 8 7 f(Agnetha) = 55 5 mod 8 4 f(Benny) = 60 6 mod 8 f(Anni-Frid) = 105 1 Krock! 7 Agnetha 2

Krockhantering med ”quadratic probing” table [ ] Anni-Frid Björn 1 2 mod 8 3 1 f(Björn) = 73 Benny 4 mod 8 7 f(Agnetha) = 55 5 mod 8 4 f(Benny) = 60 6 mod 8 f(Anni-Frid) = 105 1 Krock! 7 Agnetha 22 = 4 Krock! mod 8 32 = 9 1 Krock! mod 8 42 = 16

Perfekt hashfunktion f(färg, nr) = 13 * färg + nr-1 false Spara kort som dragits ur en kortlek. false 1 ….. true false 7 klöver = 0, ruter = 1, hjärter = 2, spader = 3 ess = 1, knekt = 11, dam = 12, kung = 13 ….. false true 23 f(färg, nr) = 13 * färg + nr-1 ….. true false 32 klöver 8: f(klöver, 8) = 13 * 0 + 8-1 = 7 ….. hjärter 7: f(hjärter, 7) = 13 * 2 + 7-1 = 32 false ruter knekt: 50 f(ruter, knekt) = 13 * 1 + 11-1 = 23 false 51

Bloomfilter true false Stavningskontrollprogram: true false true false Stavningskontrollprogram: true false 1 ….. mod 60000 f(”hej”) = 103181 43181 70012 true false fortsätt med samtliga ord… …………… ….. 50 % att ett felstavat ord, t.ex. ”heej”, godkänns. 103181 43181 false true mod 180000 f1(”hej”) = 103181 103181 ….. mod 180000 f2(”hej”) = 430012 70012 143229 false true …………… mod 180000 f3(”hej”) = 1043229 143229 ….. fortsätt med samtliga ord… 179999 59999 false 12.5 % att ett felstavat ord, t.ex. ”heej”, godkänns. 180000 false true 60000 I Viggos Stava används 14 hashfunktioner 0.006 %

Textsökning KMP-automat

F F Y Y R R T T I I O O T T V V Å Å , S A D J U P A T A N K E N T T T m Komplexitet: O(nm)

A A G A A T A A C A T C A A A A G C T A A G A A T T A A A C A A C A A C A A A A A C A C C A A C A A C

KMP automat: O(n) Morris Pratt Knuth

F Y R T I O T V Å , S A D J U P A T A N K E N i 1 2 3 next[i] 1 1 T T 1 2 3 next[i] 1 1

A D A D A M A A D D A A M M i 1 2 3 4 next[i] 1 2

i 1 2 3 4 next[i] 1 2 A A D D A A M M 1. next[1] = 0 2. Om ingen upprepning: next[i] = 1 Optimering: Men om bokstav i är samma som första bokstaven: next[i]=0 3. Om j>0 bokstäver är upprepade: next[i] = j+1 Optimering: Men om dessutom bokstav i och j+1 är samma: next[i]=next[j+1] A A D D A A M M i 1 2 3 4 next[i] 1 2