Søgning og Sortering. Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering. Philip Bille

Relaterede dokumenter
Søgning og Sortering. Søgning og Sortering. Søgning. Linæer søgning

Søgning og Sortering. Philip Bille

Introduktion. Introduktion. Algoritmer og datastrukturer. Eksempel: Maksimalt tal

Introduktion. Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3. Philip Bille

Introduktion. Philip Bille

Dynamisk programmering

Divide-and-Conquer algoritmer

Dynamisk programmering

Divide-and-Conquer algoritmer

Dynamisk programmering

BRP Sortering og søgning. Hægtede lister

Divide-and-Conquer algoritmer

Algoritmer og invarianter

Divide-and-Conquer algoritmer

Sortering. Eksempel: De n tal i sorteret orden

Sortering af information er en fundamental og central opgave.

28 Algoritmedesign. Noter. PS1 -- Algoritmedesign

Sortering af information er en fundamental og central opgave.

Sortering. Eksempel: De n tal i sorteret orden

Orienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk

Sortering. Sortering ved fletning (merge-sort) Del-og-hersk. Merge-sort

Sortering ved fletning (merge-sort)

Danmarks Tekniske Universitet

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm3: More about recurrences - October 10, 2008

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

Danmarks Tekniske Universitet

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer:

Geometrisk skæring. Afgørelse af om der findes skæringer blandt geometriske objekter Bestemmelse af alle skæringspunkter

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

Programmering og Problemløsning, 2017

Forelæsning 17, tirsdag 2. november 1999 Søgning efter en given værdi i en tabel. Programmering 1999

Orienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer.

Binære søgetræer. Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Trægennemløb. Philip Bille

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Prioritetskøer. Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering. Philip Bille

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Prioritetskøer og hobe. Philip Bille

Danmarks Tekniske Universitet

Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed

Algoritmisk geometri

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm2: Rekursive algoritmer og rekurrens - October 12, 2010

DM02 Kogt ned. Kokken. Januar 2006

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet. Mandag den 22. marts 2004, kl

Danmarks Tekniske Universitet

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Algorithms & Architectures I 2. lektion

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Danmarks Tekniske Universitet

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm2: Rekursive algoritmer og rekurrens - October 10, 2008

Skriftlig eksamen i Datalogi

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Mm7: A little bit more about sorting - and more times for exercises - November 4, 2008

Mm6: More sorting algorithms: Heap sort and quick sort - October 29, 2008

DM507 - Algoritmer og datastrukturer

Analyse af algoritmer

Danmarks Tekniske Universitet

Grundlæggende køretidsanalyse af algoritmer

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jens Myrup Pedersen (JMP) Mm4: Sorting algorithms - October 23, 2009

MM4. Algoritmiske grundprincipper. Lister, stakke og køer. Hash-tabeller og Træer. Sortering. Søgning.

Introduktion til datastrukturer

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.

Danmarks Tekniske Universitet

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer

Sortering i lineær tid

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer.

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n+logn logn (logn) 7 (3/2) n

Introduktion til datastrukturer. Philip Bille

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Introduktion Til Konkurrenceprogrammering

DM507 Algoritmer og datastrukturer

Hanne Niels Edith Harald Carsten Jørgen Henrik.

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

DM507 Algoritmer og datastrukturer

Invarianter. Invariant: Et forhold, som vedligeholdes af algoritmen gennem (dele af) dens udførelse. Udgør ofte kernen af ideen bag algoritmen.

Opgave 1 (10%) I det følgende angiver log n 2-tals-logaritmen af n. Ja Nej. n+3n er O(2n)? n 6 er O(n 5 )? nlogn er O(n 2 /logn)? 4n 3 er O(3n 4 )?

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox

Analyse af algoritmer. Analyse af algoritmer. Analyse af algoritmer. Køretid

Majoritetsproblemet Problem Præcisering af inddata Præcisering af uddata

Grafer og graf-gennemløb

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 5n 4. logn. n 4n 5 n/logn. n n/logn 5n

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Hashing. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Philip Bille

Hashing. Hashing. Ordbøger. Ordbøger. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Ordbøger Hægtet hashing Hashfunktioner Lineær probering

Parallelle algoritmer

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm1: Introduction to analysis and design of algorithms - October 11, 2010

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 4 n n 3n n 2 /logn 5 n n (logn) 3n n 2 /logn 4 n n 5 n

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (key, nøgle) for dataelementer.

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 7 n 1 7 7/n. 7nlogn. 7n 7nlogn n7

Transkript:

Søgning og Sortering Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering Philip Bille

Søgning og Sortering Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering

Søgning Søgning. Givet en sorteret tabel A og et tal x, afgør om der findes indgang i, så A[i] = x. Sorteret tabel. En tabel A[0..n-1] er sorteret hvis A[0] A[1] A[n-1] (ikkefaldende rækkefølge). 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 4 7 12 16 18 25 28 31 33 36 42 45 47 50

Linæer søgning Lineær søgning. Undersøg for alle indgange i om A[i] = x. Tid. Θ(n) Udfordring. Kan vi udnytte at tabellen er sorteret til at gøre det bedre? 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 4 7 12 16 18 25 28 31 33 36 42 45 47 50

Binær søgning Binær søgning (binary search). Kig på midterste indgang m i A. hvis A[m] = x returner sand og stop. hvis A[m] < x fortsæt rekursivt på højre halvdel. hvis A[m] > x fortsæt rekursivt på venstre halvdel. Stop hvis tabellen har størrelse 0 og returner falsk. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 4 7 12 16 18 25 28 31 33 36 42 45 47 50

Binær søgning BINÆRSØGNING(A,i,j,x) if j < i return false m = i+j/2 if A[m] = x return true elseif A[m] < x return BINÆRSØGNING(A,m+1,j,x) else return BINÆRSØGNING(A,i,m-1,x) // A[m] > x 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 4 7 12 16 18 25 28 31 33 36 42 45 47 50 Tid. Hvor hurtigt kører den? Analyse 1. Analog til analyse af rekursiv toppunktsalgoritme. Et rekursivt kald tager konstant tid. Hvert rekursivt kald halverer tabellen vi kigger på. Vi stopper når tabellen har størrelse 0. Køretiden er Θ(log n)

Binær søgning Analyse 2. Lad T(n) være køretiden for binær søgning. Opskriv og udregn rekursionsligningen for T(n). T (n) = ( T (n/2) + c hvis n>1 d hvis n =1 T (n) =T = T = T n 2 n 4 n 8 + c + c + c + c + c + c. n = T 2 k + ck. n = T 2 log 2 n + c log 2 n = T (1) + c log 2 n = d + c log 2 n = (log n)

Søgning Vi kan søge i en sorteret tabel i Θ(n) tid med lineær søgning. Θ(log n) tid med binær søgning.

Søgning og Sortering Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering

Sortering Sortering. Givet en tabel A[0..n-1] returner en tabel B[0..n-1] med samme værdier som A men i sorteret orden. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 33 4 25 28 45 18 7 12 36 1 47 42 50 16 31 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 4 7 12 16 18 25 28 31 33 36 42 45 47 50

Anvendelser Oplagte. Sortere en liste af navne, organisere et MP3 bibliotek, vise Google PageRank resultater, vise Facebook feed i kronologisk rækkefølge. Ikke oplagte. Datakompression, computergrafik, bioinformatik, anbefalingssystemer (film på Netflix, bøger på Amazon, reklamer på Google,..). Nemme problemer for sorteret data. Binær søgning, find median, identificer duplikater, find tætteste par, find statistiske perifere observationer (outliers).

Indsættelsessortering (insertion-sort) Indsættelsessortering. Start med en usorteret tabel A. Kig på indgangene fra venstre til højre i n runder. Ved runde i: Deltabel A[0..i-1] er sorteret. Indsæt A[i] i A[0..i-1] så A[0..i] er sorteret. For at finde rette sted til A[i] sammenligner vi med indgangene fra højre til venstre. 4 18 25 28 33 45 7 12 36 1 47 42 50 16 31

Indsættelsessortering INDSÆTTELSESSORTERING(A, n) for i = 1 to n-1 j = i while j > 0 and A[j-1] > A[j] ombyt A[j] og A[j-1] j = j - 1 4 18 25 28 33 45 7 12 36 1 47 42 50 16 31 Tid. Hvad er køretiden T(n)? Hvad er tiden for at indsætte A[i] i sorteret rækkefølge blandt A[0..i-1]? c i tid for en konstant c. samlet tid: T (n) = nx ci = c i=1 Udfordring. Kan vi sortere hurtigere? nx i = i=1 (n + 1) 2 = (n 2 )

Flettesortering (mergesort) Flettesortering. Hurtig sorteringsalgoritme. Ide. Rekursiv sortering vha. fletning af sorterede deltabeller.

Fletning (merge) Mål. Kombiner to sorterede tabeller til én sorteret tabel. Ide. Gennemløb begge sorterede tabeller i stigende rækkefølge: I hvert skridt indsæt det mindste af de to nuværende elementer fra tabellerne i en ny tabel. Ryk frem i tabellen med det mindste element. Gentag indtil alle elementer er indsat i ny tabel. 1 12 16 31 36 42 47 50 4 7 18 25 28 33 45 51 1 4 7 12 16

Fletning Tid. Hvor hurtigt kører fletning på to tabeller A1 og A2? Hvert skridt i algoritmen tager Θ(1) tid. I hvert skridt flytter vi en indgang frem i en af tabellerne. Θ( A1 + A2 ) tid. 1 12 16 31 36 42 47 50 4 7 18 25 28 33 45 51 1 4 7 12 16

Flettesortering (mergesort) Flettesortering. Hvis A 1, returner A. Ellers: Del A i to halvdele. Sorter hver halvdel rekursivt. Flet de to halvdele sammen. 16 31 1 36 47 50 42 12 7 4 51 28 45 25 18 33 1 4 7 12 16 18 25 28 31 33 36 42 45 47 50 51 16 31 1 36 47 50 42 12 1 12 16 31 36 42 47 50 7 4 51 28 45 25 18 33 4 7 18 25 28 33 45 51

16 31 1 36 47 50 42 12 7 4 51 28 45 25 18 33 1 4 7 12 16 18 25 28 31 33 36 42 45 47 50 51 16 31 1 36 47 50 42 12 1 12 16 31 36 42 47 50 7 4 51 28 45 25 18 33 4 7 18 25 28 33 45 51 16 31 1 36 47 50 42 12 7 4 51 28 45 25 18 33 1 16 31 36 12 42 47 50 4 7 28 51 18 25 33 45 16 31 1 36 47 50 42 12 7 4 51 28 45 25 18 33 16 31 1 36 47 50 12 42 4 7 28 51 25 45 18 33 16 31 1 36 47 50 42 12 7 4 51 28 45 25 18 33

Flettesortering (mergesort) 16 31 1 36 47 50 42 12 7 4 51 28 45 25 18 33 FLETTESORTERING(A,i,j) if i < j m = i+j/2 1 4 7 12 16 18 25 28 31 33 36 42 45 47 50 51 16 31 1 36 47 50 42 12 7 4 51 28 45 25 18 33 1 12 16 31 36 42 47 50 4 7 18 25 28 33 45 51 FLETTESORTERING(A,i,m) FLETTESORTERING(A,m+1,j) FLET(A, i, m, j) 16 31 1 36 1 16 31 36 16 31 1 36 16 31 1 36 47 50 42 12 12 42 47 50 47 50 42 12 47 50 12 42 7 4 51 28 4 7 28 51 7 4 51 28 4 7 28 51 45 25 18 33 18 25 33 45 45 25 18 33 25 45 18 33 16 31 1 36 47 50 42 12 7 4 51 28 45 25 18 33 Tid. Lad T(n) være køretiden af flettesortering. Hvordan kan vi udregne T(n)? Ide. Opstil rekursionstræ og udregn samlet tid for alle rekursive kald.

Flettesortering 2 2 4 4 4 4 log 2 n 8 8 8 8 8 8 8 8 d d d d dn T (n) = log 2 n + dn = (n log 2 n)

Sortering Vi kan sortere en tabel i Θ(n 2 ) tid med indsættelsessortering. Θ(nlog n) tid med flettesortering.

Del og hersk (divide-and-conquer) Flettesortering er eksempel på en del-og-hersk algoritme. Del-og-hersk. algoritmisk designparadigme. Del. Opdel problemet i et eller flere delproblemer Hersk. Løs delproblemerne rekursivt Kombiner. Sæt løsningerne til delproblemerne sammen til en samlet løsning for problemet. Flettesortering. Del. Del A i to halvdele. Hersk. Sorter hver halvdel rekursivt. Kombiner. Flet de to halvdele sammen.

Søgning og Sortering Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering