Øvingsforelesning 4. Martin Aasen

Like dokumenter
Øvingsforelesning 6. Sorteringsalgoritmer. Martin Kirkholt Melhus Basert på foiler av Kristian Veøy 30/09/14 1

INF2220: Time 12 - Sortering

Øvingsforelesning 6. Sorteringsalgoritmer. Kristian Veøy

Datastrukturer. Stakker (Stacks) Hva er en datastruktur? Fordeler / Ulemper. Generelt om Datastrukturer. Stakker (Stacks) Elementære Datastrukturer

deeegimnoorrrsstt Sjette forelesning

n/b log b n = (lg n) a log b n = n log b a

Prioritetskøer. Prioritetskøer. Binære heaper (vanligst) Prioritetskøer

Grunnleggende Datastrukturer

Prioritetskøer. Binære heaper Venstrevridde heaper (Leftist) Binomialheaper Fibonacciheaper

INF1020 Algoritmer og datastrukturer

Løsningsforslag for Obligatorisk Oppgave 2. Algoritmer og Datastrukturer ITF20006

Alg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing

Alg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing. Børge Rødsjø

7) Radix-sortering sekvensielt kode og effekten av cache

Heapsort. Lars Vidar Magnusson Kapittel 6 Heaps Heapsort Prioritetskøer

Sortering i Lineær Tid

Ekstra ark kan legges ved om nødvendig, men det er meningen at svarene skal få plass i rutene på oppgavearkene. Lange svar teller ikke positivt.

Lars Vidar Magnusson

Datastrukturer. Algoritmer og datastrukturer. Øvingsforelesning 2

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Definisjon av binært søketre

EKSAMEN. Emne: Algoritmer og datastrukturer

Generelle Tips. INF Algoritmer og datastrukturer. Åpen og Lukket Hashing. Hashfunksjoner. Du blir bedømt etter hva du viser at du kan

INF Algoritmer og datastrukturer

deeegimnoorrrsstt Sjette forelesning

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

Eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

UNIVERSITETET I OSLO

Øvingsforelesning 3: Splitt og hersk. Daniel Solberg

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

Sorteringsproblemet. Gitt en array A med n elementer som kan sammenlignes med hverandre:

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

PG4200 Algoritmer og datastrukturer Forelesning 10

ALGORITMER OG DATASTRUKTURER

IN Algoritmer og datastrukturer

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013

Hashtabeller. Lars Vidar Magnusson Kapittel 11 Direkte adressering Hashtabeller Chaining Åpen-adressering

Sist gang (1) IT1101 Informatikk basisfag. Sist gang (2) Oppgave: Lenket liste (fysisk) Hva menes med konseptuelt og fysisk i forb med datastrukturer?

TDT4105 Informasjonsteknologi, grunnkurs

Lars Vidar Magnusson

O(V 2 ) bwfs(v, i=1) λ[v] = i for each neighbor u of v if 0 < λ[u] < i. bwfs(u, i+1) if λ[u] = 0

INF2220: Gruppe me 2. Mathias Lohne Høsten 2017

PQ: HEAP. Heap. Er disse heap er? Hvordan implementere heap:

ALGORITMER OG DATASTRUKTURER

INF Algoritmer og datastrukturer

Lineær sortering. Radix sort

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

Programmering i C++ Løsningsforslag Eksamen høsten 2005

INF Algoritmer og datastrukturer

INF2220: Forelesning 2

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Høgskolen i Gjøvik. Avdeling for elektro- og allmennfag E K S A M E N. EKSAMENSDATO: 12. desember 1995 TID:

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

INF Algoritmer og datastrukturer

Definisjon: Et sortert tre

Lenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Løsningsforslag EKSAMEN

Grunnleggende Grafteori

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!

Øvingsforelesning 7 i Python (TDT4110)

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

Logaritmiske sorteringsalgoritmer

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes

Øvingsforelesning 2 - TDT4120. Grafer og hashing. Benjamin Bjørnseth

Liste som abstrakt konsept/datatype

Først litt praktisk info. Sorteringsmetoder. Nordisk mesterskap i programmering (NCPC) Agenda

Dagens tema. Sortering. Fortsettelse om programmering vha tråder.

Eksamen iin115 og IN110, 15. mai 1997 Side 2 Oppgave 1 Trær 55 % Vi skal i denne oppgaven se på en form for søkestrukturer som er spesielt godt egnet

Hvor raskt klarer vi å sortere?

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Løsningsforslag til eksamen i PG4200 Algoritmer og datastrukturer 10. desember 2014

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

TDT4225 Lagring og behandling av store datamengder

Eksamen i tdt4120 Algoritmer og datastrukturer

Løsningsforslag eksamen in105, høsten 2000

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013

Definisjon. I et binært tre har hver node enten 0, 1 eller 2 barn

Algoritme-Analyse. Asymptotisk ytelse. Sammenligning av kjøretid. Konstanter mot n. Algoritme-kompeksitet. Hva er størrelsen (n) av et problem?

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

UNIVERSITETET I OSLO

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.4

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

INF2220: Time 8 og 9 - Kompleksitet, beregnbarhet og kombinatorisk søk

Dagens tema. Sortering. Fortsettelse om programmering vha tråder.

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre:

INF2220: Time 4 - Heap, Huffmann

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

IN3030 Uke 12, v2019. Eric Jul PSE, Inst. for informatikk

Pensum: 3. utg av Cormen et al. Øvingstime: I morgen, 14:15

Algdat Eksamensforelesning. Nils Barlaug

Rekursiv programmering

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

Transkript:

Øvingsforelesning 4 Martin asen

2 Først en kjapp recap av øving 2

verage-case vs. amortisert analyse verage-case mortisert analyse Forventet kjøretid over instanser Snitt over operasjoner 3

mortisert analyse mortisert analyse ser på gjennomsnitts «kostnaden» over n operasjoner ltså: regn ut «kostnaden» av å utføre n operasjoner, og del på n Gir et mer helhetlig bilde av hva du kan forvente når du gjør én ekstra operasjon. 4

5 Spørsmål 18 (øving 2)

Sletting i lenkede lister Enkel-lenket liste Dobbel-lenket liste 1 2 3 4 1 2 3 4 Delete(L,x) har worst-case Delete(L,x) har worst-case 6

Sletting i enkel lenket liste Delete(L, 3) 1 2 3 4 7

Sletting i enkel lenket liste Delete(L, 3) 3s peker til 4 må slettes Vi har tilgang til objekte 3, dermed tar dette O(1) 1 2 3 4 8

Sletting i enkel lenket liste Delete(L, 3) 3s peker til 4 må slettes Vi har tilgang til objektet 3, dermed tar dette 1 2 3 4 1 2 3 4 9

Sletting i enkel lenket liste Delete(L, 3) 3s peker til 4 må slettes Vi har tilgang til objektet 3, dermed tar dette Så må 2s peker til 3 endres til å peke til 4 1 2 3 4 1 2 3 4 10

Sletting i enkel lenket liste Delete(L, 3) 3s peker til 4 må slettes Vi har tilgang til objektet 3, dermed tar dette Så må 2s peker til 3 endres til å peke til 4 Vi må finne 2, dette tar i worst-case 4 kjenner vi fra 3 1 2 3 4 1 2 3 4 1 2 4 3 11

Sletting i enkel lenket liste Delete(L, 3) 3s peker til 4 må slettes Vi har tilgang til objekte 3, dermed tar dette Så må 2s peker til tre endres til å peke til 4 Vi må finne 2, dette tar i worst-case 4 kjenner vi fra 3 Totalt i worst-case 1 2 3 4 1 2 3 4 1 2 4 3 1 2 4 12

Sletting i dobbel lenket liste Delete(L, 3) 1 2 3 4 13

Sletting i dobbel lenket liste Delete(L, 3) 1 2 3 4 14

Sletting i dobbel lenket liste Delete(L, 3) Slette 3s pekere tar Delete tar inn objektet 3, ikke kun verdien til noden 1 2 3 4 1 2 3 4 15

Sletting i dobbel lenket liste Delete(L, 3) Slette 3s pekere tar Delete tar inn objektet 3, ikke kun verdien til noden Oppdatere 2 og 4s pekere kan gjøres i Vi kjenner nodene fra 3s pekere 1 2 3 4 1 2 3 4 1 2 4 3 16

Sletting i dobbel lenket liste Delete(L, 3) Slette 3s pekere tar Delete tar inn objektet 3, ikke kun verdien til noden Oppdatere 2 og 4s pekere kan gjøres i Vi kjenner nodene fra 3s pekere Totalt i worst-case 1 2 3 4 1 2 3 4 1 2 4 3 1 2 4 17

genda Tellesortering Radix sort øttesortering Streng sortering 18

Tellesortering Counting-Sort(,, k) la C[0.. k] være et nytt array for i = 0 til k C[ i ] = 0 For j = 1 til.length C[ [ j ] ] = C[ [ j ] ] + 1 // C[i] inneholder nå antall elementer lik i for i = 1 til k C[ i ] = C[ i ] + C[ i-1 ] // C[i] inneholder nå antall elementer mindre eller lik i for j =.length ned til 1 [ C[ [ j ] ] ] = [ j ] C[ [ j ] ] = C[ [ j ] ] 1 19

Tellesortering Counting-Sort(,, k) la C[0.. k] være et nytt array for i = 0 til k C[ i ] = 0 For j = 1 til.length C[ [ j ] ] = C[ [ j ] ] + 1 // C[i] inneholder nå antall elementer lik i for i = 1 til k C[ i ] = C[ i ] + C[ i-1 ] // C[i] inneholder nå antall elementer mindre eller lik i for j =.length ned til 1 [ C[ [ j ] ] ] = [ j ] C[ [ j ] ] = C[ [ j ] ] 1 20

Tellesortering Counting-Sort(,, k) la C[0.. k] være et nytt array for i = 0 til k C[ i ] = 0 For j = 1 til.length C[ [ j ] ] = C[ [ j ] ] + 1 // C[i] inneholder nå antall elementer lik i for i = 1 til k C[ i ] = C[ i ] + C[ i-1 ] // C[i] inneholder nå antall elementer mindre eller lik i for j =.length ned til 1 [ C[ [ j ] ] ] = [ j ] C[ [ j ] ] = C[ [ j ] ] 1 21

Tellesortering Counting-Sort(,, k) la C[0.. k] være et nytt array for i = 0 til k C[ i ] = 0 For j = 1 til.length C[ [ j ] ] = C[ [ j ] ] + 1 // C[i] inneholder nå antall elementer lik i for i = 1 til k C[ i ] = C[ i ] + C[ i-1 ] // C[i] inneholder nå antall elementer mindre eller lik i for j =.length ned til 1 [ C[ [ j ] ] ] = [ j ] C[ [ j ] ] = C[ [ j ] ] 1 22

Tellesortering Counting-Sort(,, k) la C[0.. k] være et nytt array for i = 0 til k C[ i ] = 0 For j = 1 til.length C[ [ j ] ] = C[ [ j ] ] + 1 // C[i] inneholder nå antall elementer lik i for i = 1 til k C[ i ] = C[ i ] + C[ i-1 ] // C[i] inneholder nå antall elementer mindre eller lik i for j =.length ned til 1 [ C[ [ j ] ] ] = [ j ] C[ [ j ] ] = C[ [ j ] ] 1 Totalt 23

Tellesortering med nøkkel! Counting-Sort(,, k) la C[0.. k] være et nytt array for i = 0 til k C[ i ] = 0 For j = 1 til.length C[ Key([ j ]) ] = C[ Key([ j ]) ] + 1 // C[i] inneholder nå antall elementer lik i for i = 1 til k C[ i ] = C[ i ] + C[ i-1 ] // C[i] inneholder nå antall elementer mindre eller lik i for j =.length ned til 1 [ C[ Key([ j ]) ] ] = [ j ] C[ Key([ j ]) ] = C[ Key([ j ]) ] 1 24

La oss sortere på siffer nr. 2 bakfra! 1234 4321 3213 9999 4332 7401 5441 25

26 Eksamensoppgave (H15)

genda Tellesortering Radix sort øttesortering Streng sortering 27

Radix sort Radix-Sort(, d) for i = 1 til d stabil sorter på d-te minst signifikante siffer Kjøretid med bruk av tellesortering d: ntallet siffer, k: antallet verdier et siffer kan ta n: ntallet tall/elementer i 28

La oss sortere! 1234 4 33 9999 433 7401 544 10 29

genda Tellesortering Radix sort øttesortering Streng sortering 30

øttesortering sortere på [0, 1) ucket-sort() La [ 0.. n 1] være et nytt array n =.length for i = 0 til n 1 gjør [ i ] til en tom liste for i = 1 til n legg [ i ] inn i liste [ floor( n [ i ] ) ] for i = 0 til n 1 sorter liste [ i ] med insertion sort konkatiner listene [ 0 ], [ 1 ],., [ n-1 ] i rekkefølge est case verage case Worst case 31

32 Eksamensoppgave (H16)

genda Tellesortering Radix sort ucket sort Streng sortering 33

Streng sortering Vi kan enten begynne forfra eller bakfra Som mennesker begynner vi intuitivt forfra Den «enkleste» radix sort varianten begynner bakfra 34

La oss sortere J D E K U N U S T L G D M I L S T K Y M S K I E R G N 35

Først dele i båser på lengde M J D E K U L G D S K I N U S T M I L E R G S T N K Y 36

Så begynne bakfra! M K U L G D S K I S T N J D E N U S T M I L E R G For korte strenger K Y 37

Sorter bakerste! M S K I L G D K U N T S J D E N U S T M I L E R G For korte strenger K Y 38

Gå til neste bokstav! M S K I N L G D T J K U N U S S Inkluder fortløpende strengene som blir lange nok D E T M I L For korte strenger E R G K Y 39

Gå til neste bokstav! Sorter Stabilt! M J L G D S K I N U S K U T N S D E T M I L E R G For korte strenger K Y 40

Gå til neste bokstav! L G D T M J S K I N U S N Legg merke til at vi nå har alfabetisk sortert på strengene i de to bakerste kolonene K U S D T E M I L E R G K Y For kort streng 41

Gå til neste bokstav! Sorter stabilt! D T L G D T E R G M S K I K U N S MSKIN kommer før KUS pga. stabil sortering. E M I L J N U S K Y For kort streng 42

Gå til neste bokstav! D M E J T L G D E R G S K I K U M I L N U S T N S K Y 43

Gå til neste bokstav! Sorter stabilt! K U S K Y E J M D L G D M I L N U S E R G S K I T T N 44

Gå til neste bokstav! K U S K Y E J M D L G D M I L N U S E R G S K I T T N 45

Gå til neste bokstav! Sorter stabilt! J M D E N U S S K I T K U E R G L G D M I L N S T K Y 46

Gå til neste bokstav! J M D E N U S S K I T K U E R G L G D M I L N S T K Y 47

Gå til neste bokstav! Sorter stabilt! D E J K U L G D E R G T M I L N U S S T K Y M S K I N 48

lfabetisk sortert! D E J K U L G D E R G T M I L N U S S T K Y M S K I N 49