20
Övning 4 www.nada.kth.se/~mhj/tilda

Övning 4 nada.kth.se/~mhj/tilda

Embed Size (px)

DESCRIPTION

Övning 4 www.nada.kth.se/~mhj/tilda. Problemträd Bredden först Djupet först Sortering. Problemträd. -. 4. *. 4. +. 4. -. *. -. *. -. +. +. +. *. 4. 4. 4. 4. 4. 4. 4. 4. 4. Problem: - PowerPoint PPT Presentation

Citation preview

Page 1: Övning 4 nada.kth.se/~mhj/tilda

Övning 4

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

Page 2: Övning 4 nada.kth.se/~mhj/tilda

ProblemträdBredden förstDjupet först

Sortering

Page 3: Övning 4 nada.kth.se/~mhj/tilda

Problemträd

Page 4: Övning 4 nada.kth.se/~mhj/tilda

Problem:Erhåll talet (100) på kortast sätt med hjälp av talet fyra (4) och de tre räknesätten addition (+), subtraktion (-) och multiplikation (*).

Exempel: 4 * 4 + 4 + 4 * 4 + 4 = 100

Problemträd:

4

8 160

12 324 20 64124 0-4

44 4

4 4 4 4 4 4 4 4 4

Page 5: Övning 4 nada.kth.se/~mhj/tilda

Problem:En teknolog som glömt sin tresiffriga portkod tryckte sej igenom alla tusen kombinationer så här:

000001002003004005006007008009010011012...999

Det kräver 3000 tryckningar. Man kan dock börja med 000 och sedan klara sig med 999 tryckningar om man har en supersmart sekvens där varje tresiffrigt tal förekommer någonstans. Hur ser sekvensen ut?

Problemträd: 000

0005 0006 0007 0008 00090004000300020001

00055 00056 00057 00058 0005900054000530005100050 00052

54321 9876

5 98760 4321

Page 6: Övning 4 nada.kth.se/~mhj/tilda

Sökning i problemträd

Bredden först

Page 7: Övning 4 nada.kth.se/~mhj/tilda

Djupet först

Sökning i problemträd

Page 8: Övning 4 nada.kth.se/~mhj/tilda

Hitta lösning på minimalt avstånd

Bredden först

Page 9: Övning 4 nada.kth.se/~mhj/tilda

Hitta lösning på minimalt avståndDjupet först

Page 10: Övning 4 nada.kth.se/~mhj/tilda

Hitta en lösning då de finns långt ner i trädetBredden först

Page 11: Övning 4 nada.kth.se/~mhj/tilda

Hitta en lösning då de finns långt ner i trädetDjupet först

Page 12: Övning 4 nada.kth.se/~mhj/tilda

1

3 42

9875 131211106

27242116 38333018 31282519 4039373422 232014 3532292615 36

1

2

5

3 4

Bredden först görs oftast med en kö

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

17

6

17 18

Page 13: Övning 4 nada.kth.se/~mhj/tilda

1

3 42

9875 131211106

27242116 38333018 31282519 4039373422 232014 3532292615 36

1

2

5

Djupet först görs oftast med rekursion

17

6

1614 15 17

Page 14: Övning 4 nada.kth.se/~mhj/tilda

Problem:Erhåll talet (100) på kortast sätt med hjälp av talet fyra (4) och de tre räknesätten addition (+), subtraktion (-) och multiplikation (*).

Exempel: 4 * 4 + 4 + 4 * 4 + 4 = 100

4

8 160

12 324 20 64124 0-4

44 4

4 4 4 4 4 4 4 4 4

4 0 8 16 -4 4 0 4 12 32 12 20 64 -8 0 -16

4

0 8 16

-4

Page 15: Övning 4 nada.kth.se/~mhj/tilda

Problem:En teknolog som glömt sin tresiffriga portkod tryckte sej igenom alla tusen kombinationer så här:

000001002003004005006007008009010011012...9999

Det kräver 3000 tryckningar. Man kan dock börja med 000 och sedan klara sig med 999 tryckningar om man har en supersmart sekvens där varje tresiffrigt tal förekommer någonstans. Hur ser sekvensen ut?

000

0005 0006 0007 0008 00090004000300020001

00055 00056 00057 00058 0005900054000530005100050 00052

54321 9876

5 98760 4321

Page 16: Övning 4 nada.kth.se/~mhj/tilda

000100200300400500600700800901101201301401501601701801902102202302402502602702802903103203303403503603703803904104204304404504604704804905105205305405505605705805906106206306406506606706806907107207307407507607707807908108208308408508608708808909109209309409509609709809911121131141151161171181191221231241251261271281291321331341351361371381391421431441451461471481491521531541551561571581591621631641651661671681691721731741751761771781791821831841851861871881891921931941951961971981992223224225226227228229233234235236237238239243244245246247248249253254255256257258259263264265266267268269273274275276277278279283284285286287288289293294295296297298299333433533633733833934434534634734834935435535635735835936436536636736836937437537637737837938438538638738838939439539639739839944454464474484494554564574584594654664674684694754764774784794854864874884894954964974984995556557558559566567568569576577578579586587588589596597598599666766866967767867968768868969769869977787797887897987998889899900

Page 17: Övning 4 nada.kth.se/~mhj/tilda

Sortering

Page 18: Övning 4 nada.kth.se/~mhj/tilda

Quicksort

5 9 3 4 7 10 6 2 8 1

pivot

93 94 92 7151 51

pivot

4232 3 42

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

6 7 98 1051 3 42

pivot

1

pivot

2

Komplexiteten blir O(n2) om redan sorterad

Page 19: Ö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?

6 98 10541 2 73

m

6 98 10541 2 73

Komplexitet: O(m log m + n)

Page 20: Övning 4 nada.kth.se/~mhj/tilda

Dokusåpan 040313:7En 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?

6 9 10541 2 73 86 9 1054 7 832 1

654 7 8 9 10

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