TILLÄMPAD DATALOGI
This presentation is the property of its rightful owner.
Sponsored Links
1 / 19

TILLÄMPAD DATALOGI (TILDA) Övning 4 nada.kth.se/~mhj/tilda PowerPoint PPT Presentation


  • 108 Views
  • Uploaded on
  • Presentation posted in: General

TILLÄMPAD DATALOGI (TILDA) Övning 4 www.nada.kth.se/~mhj/tilda. Hashning Sortering. Listor: O(n) Binärträd: O(log n) Kan vi söka ännu snabbare?. 4. 8. 5. 17. 7. 4. 11. 2. 5. 9. 17. Hashning. Iden med hashning. first. Björn. Agnetha. Benny. Anni-Frid. firstA.

Download Presentation

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

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

TILLÄMPAD DATALOGI

(TILDA)

Övning 4

www.nada.kth.se/~mhj/tilda


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

Hashning

Sortering


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

Listor:

O(n)

Binärträd:

O(log n)

Kan vi söka ännu snabbare?

4

8

5

17

7

4

11

2

5

9

17


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

Hashning


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

Iden med hashning

first

Björn

Agnetha

Benny

Anni-Frid

firstA

Agneta

Anni-Frid

firstB

Björn

Benny

table [ ]

Agneta

0

hash betyder:

hackmat, röra

Björn

1

Benny

2

Anni-Frid

3


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

Insättning (put)

hashfunktion

tabellstorlek

f( ) = 2 + 10 + 29 + 18 + 14 = 73

mod 4

Björn

1

mod 4

3

f( ) = 1 + 7 + 14 + 5 + 20 + 7 + 1 = 55

Agnetha

mod 4

0

f( ) = 2 + 5 + 14 + 14 + 25 = 60

Benny

mod 4

f( ) = 1 + 14 + 14 + 9 + 30 + 6 + 18 + 9 + 4 = 105

Anni-Frid

1

table [ ]

Benny

0

Björn

Björn

Anni-Frid

1

2

Agnetha

3


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

Sökning (get)

f( ) = 2 + 5 + 14 + 14 + 25 = 60

Benny

mod 4

0

mod 4

f( ) = 2 + 10 + 29 + 18 + 14 = 73

Björn

1

mod 4

f( ) = 13 + 1 + 18 + 9 + 5 = 46

Marie

2

mod 4

f( ) = 2 + 15 = 17

Bo

1

table [ ]

Benny

Benny

0

Björn

Björn

Björn

Anni-Frid

Anni-Frid

1

2

Agnetha

3


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

Tabellstorlek

table [ ]

0

…..

Agnetha

55

mod 10000

…..

73

f(Björn) = 73

Benny

mod 10000

60

55

f(Agnetha) = 55

…..

mod 10000

60

f(Benny) = 60

Björn

73

mod 10000

105

f(Anni-Frid) = 105

…..

Anni-Frid

105

…..

9999


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

Tabellstorlek

table [ ]

0

Björn

Anni-Frid

1

2

mod 8

1

3

f(Björn) = 73

Benny

mod 8

4

7

f(Agnetha) = 55

5

mod 8

4

f(Benny) = 60

6

mod 8

1

f(Anni-Frid) = 105

Agnetha

7

Tumregel: 50% luft


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

Tabellstorlek

table [ ]

0

…..

Agnetha

55

…..

Benny

60

…..

Björn

73

…..

Anni-Frid

105

…..

9999


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

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


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

Krockhantering med ”linear probing”

table [ ]

0

Björn

1

kluster

Anni-Frid

2

mod 8

1

3

f(Björn) = 73

Benny

mod 8

4

7

f(Agnetha) = 55

5

mod 8

4

f(Benny) = 60

6

mod 8

1

Krock!

f(Anni-Frid) = 105

Agnetha

7

2


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

Krockhantering med ”quadratic probing”

table [ ]

Anni-Frid

0

Björn

1

2

mod 8

1

3

f(Björn) = 73

Benny

mod 8

4

7

f(Agnetha) = 55

5

mod 8

4

f(Benny) = 60

6

mod 8

1

Krock!

f(Anni-Frid) = 105

Agnetha

7

22 = 4

Krock!

mod 8

32 = 9

1

Krock!

mod 8

42 = 16

0


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

Perfekt hashfunktion

false

0

Spara kort som dragits ur en kortlek.

false

1

…..

false

true

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

…..

false

true

32

klöver 8:

f(klöver, 8) = 13 * 0 + 8-1 = 7

f(hjärter, 7) = 13 * 2 + 7-1 = 32

hjärter 7:

…..

ruter knekt:

false

f(ruter, knekt) = 13 * 1 + 11-1 = 23

50

false

51


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

Bloomfilter

false

true

0

Stavningskontrollprogram:

true

false

1

mod 60000

…..

f(”hej”) = 103181

43181

70012

false

true

fortsätt med samtliga ord…

……………

50 % att ett felstavat ord, t.ex. ”heej”, godkänns.

…..

43181

103181

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…

179998

59998

false

12.5 % att ett felstavat ord, t.ex. ”heej”, godkänns.

179999

true

false

59999

I Viggos Stava används 14 hashfunktioner 0.006 %


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

Sortering


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

Quicksort

pivot

pivot

1

1

5

3

2

9

2

2

3

4

3

3

9

4

4

9

4

2

5

1

5

7

10

6

9

2

8

7

1

Komplexiteten blir i allmänhet O(n log n)

pivot

pivot

1

1

2

2

3

4

5

6

7

8

9

10

Komplexiteten blir O(n2) om redan sorterad


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

Röster för fred 030426:7

Körledaren förvarar sina noter sorterade i en tjock pärm. Till varje repetition plockar han ut några noter och efteråt sorteras de in i pärmen igen med quicksort. Som pivotelement väljs elementet längst till höger i varje delvektor. I kören finns en tildaelev som påpekar att det går att göra mycket enklare och effektivare. Hur då? Ange komplexiteten då m noter plockas ut från den n tjocka pärmen?

1

2

3

4

5

6

7

8

9

10

m

1

2

3

4

5

6

7

8

9

10

Komplexitet: O(m log m + n)


Till mpad datalogi tilda vning 4 nada kth se mhj tilda

Dokusåpan 040313:7

En populär kanadensisk dokusåpa söker deltagare. Flera (243 personer) vill vara med och arrangörerna sorterar de sökande i en lång rad efter näslängd. När programledaren öppnar dörren för att släppa in den första sökanden får en handfull av dem som står först i kön syn på honom och blir så skraja att de springer och gömmer sig i kön. Beskriv en smart algoritm för att sortera om kön. Antag att det visade sig vara tre personer som blev skrämda, hur många näsjämförelser behövs det då med din algortitm för att sortera om kön?

2

3

1

1

4

2

5

3

6

4

7

5

6

8

7

8

9

9

10

10

4

5

6

7

8

9

10

9

10

Antal jämförelser: (10-1) + (2 + 1) = 12

Antal jämförelser: (243-1) + (2 + 1) = 245


  • Login