Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Relaterede dokumenter
Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal Aarhus Universitet

Grundlæggende Algoritmer og Datastrukturer

Analyse af ombytningspuslespil

Analyse af ombytningspuslespil

Rolf Fagerberg. Forår 2013

Rolf Fagerberg. Forår 2012

Rolf Fagerberg. Forår 2015

Rolf Fagerberg. Forår 2014

DM507 Algoritmer og datastrukturer

Rolf Fagerberg. Forår 2015

Introduktion til DM507

Perspektiverende Datalogikursus

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

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

Perspektiverende Datalogikursus

Programmering 2. dprog2 E

Perspektiverende Datalogikursus

Programmering 2. dprog2 E

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Perspektiverende Datalogikursus Uge 1 - Algoritmer og kompleksitet

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grundlæggende Algoritmer og Datastrukturer. Analyseværktøjer [CLRS, 1-3.1]

Dynamisk programmering

Sortering. Eksempel: De n tal i sorteret orden

Sammenhængskomponenter i grafer

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet

Sortering af information er en fundamental og central opgave.

Sortering. Eksempel: De n tal i sorteret orden

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Perspektiverende Datalogi Klassiske Algoritmer

Perspektiverende Datalogikursus

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Sortering af information er en fundamental og central opgave.

Perspektiverende Datalogikursus

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

Algoritmer og Datastrukturer 1

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Dynamisk programmering

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

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

Perspektiverende Datalogi Klassiske Algoritmer. Gerth Stølting Brodal

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

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

BRP Sortering og søgning. Hægtede lister

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

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

Grafer og graf-gennemløb

Dynamisk programmering

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

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

Oplæg og øvelser, herunder frugt og vand Gerth Stølting Brodal

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 7 n 1/ log n. (log n) 4

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

Invarianter og kombinatoriske beviser

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2.

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

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

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

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

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

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

Danmarks Tekniske Universitet

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

Danmarks Tekniske Universitet

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

DM507 Algoritmer og datastrukturer

28 Algoritmedesign. Noter. PS1 -- Algoritmedesign

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Danmarks Tekniske Universitet

DM507 Algoritmer og datastrukturer

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

Minutes AARHUS UNIVERSITY. 4.1 Ny specialisering på kandidatuddannelsen i datalogi.

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Grafer og graf-gennemløb

Grafer og graf-gennemløb

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

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

Prioritetskøer og hobe. Philip Bille

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Grundlæggende køretidsanalyse af algoritmer

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

Fysisk Design. Peter Gall Krogh Professor Arkitektskolen Aarhus. INTERACTIVE SPACES.net

Divide-and-Conquer algoritmer

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Science and Technology EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

Grafer og graf-gennemløb

Divide-and-Conquer algoritmer

Grafer og graf-gennemløb

Algoritmer og invarianter

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

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

dpersp Uge 40 - Øvelser Internetalgoritmer

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Transkript:

Algoritmer og Datastrukturer 1 Gerth Stølting Brodal

Kursusbeskrivelsen

Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle beregningsprocesser og som basis for formelle korrekthedsbeviser og analyse af ressourceforbrug ved beregningerne, samt detaljeret kendskab til adskillige konkrete implementationer af fundamentale datastrukturer. Indhold Datastrukturer: Lister, træer, hashtabeller; Dataabstraktioner: Stakke, køer, prioritetskøer, ordbøger, mængder; Algoritmer: Søgning, sortering, selektion, fletning; Analyse og syntese: Worst-case, amortiseret og forventet udførelsestid, udsagn, invarianter, gyldighed, terminering og korrekthed. Læringsmål Deltagerne skal ved afslutningen af kurset kunne: formulere og udføre algoritmer og datastrukturer i pseudo code. analysere og sammenligne tid og pladsforbruget af algoritmer. identificere gyldige invarianter for en algoritme. bevise korrektheden af simple programmer og transitionssystemer.

Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Forudsætningskrav dintprog Vi kan antage at I ved hvordan Undervisningsformer man programmerer detaljerne Forelæsninger: 4 timer/uge så (2+2). dem Øvelser: springer 3 vi timer/uge over Obligatorisk program 6 opgaver Evalueringsform Der stilles 6 opgaver alle skal 2 timers Forelæsningerne skriftlig eksamen, gemmengår være intern godkendt censur, 7-skala for at kunne gå til Omfang stoffet fra bogen. I øvelserne eksamen. Opgaverne afleveres i 5 ECTS arbejder man med stoffet. grupper - 1-3 personer. Sprog Dansk Eksamensterminer Eksamen: 3. kvarter Reeksamen: August Eksamen består af ca. 25 korte spørgsmål se eksempler på kursushjemmesiden

DatLab + KAGE! Fælles studiecafé i Babbage-0 hver fredag kl. 13-15 Webteknologi Interaktionsdesign Algoritmer og Datastrukturer 1 Første gang 1. februar kl. 13:00! Relevante workshops og introduktioner til værktøjer vil desuden blive afholdt i forbindelse med DatLab. Følg med på cs.au.dk/datlab

Spørgsmål?

2005

Lokes Høj 64 brikker Hiscore 450 Antal ombytninger 500-450 = 50 Hvordan opnår man et lavt antal ombytninger held eller dygtighed?

Cykler (Permutationer) Hver pil peger på brikkens korrekte plads Definerer en mængde af cykler (fx cyklerne A,B,C,D)

Ombytninger og Cykler Lemma En ombytning af to brikker i samme cykel øger antallet af cykler med én. En ombytning af to brikker fra to forskellige cykler reducerer antallet af cykler med én.

Lemma Når alle n brikker er korrekt placeret er der præcis n cykler. Lemma For at løse et puslespil med n brikker og k cykler I starten kræves n k ombytninger. Har vist en nedre grænse for ALLE algoritmer der løser problemet

En (grådig) algoritme

Lemma Algoritmen bytter aldrig om på brikker der står korrekt. Lemma Algoritmen udfører n -1 ombytninger Lemma For at løse et puslespil med n brikker og k cykler I starten udfører algoritmen præcis n k ombytninger. Har vist en øvre grænse for en konkret algoritme Algoritmen er optimal da antal ombytninger er bedst mulig

Sætning For at løse et puslespil med n brikker og k cykler i starten kræves præcis n k ombytninger

Fordelingen af antal cykler n = 64, 10.000.000 permutationer

Hvad har vi så lært?

Algoritmisk indsigt Matematisk indsigt (cykler) Resourceforbrug (antal ombytninger) Nedre grænse ( n - k ombytninger) Grådig algoritme Analyseret algoritmen ( n - k ombytninger) Optimal algoritme (argumenteret bedst mulig) Input afhængig resourceforbrug

Tilfældige permutationer Yderligere information kan findes i David J.C. MacKay, tillæg til Information Theory, Inference, and Learning Algorithms, om "Random Permutations, 4 sider. http://www.inference.phy.cam.ac.uk/mackay/itila/cycles.pdf

Et andet eksempel på en beregningsprocess

Max-Delsum

Algoritme 1 1 2 3 4 5 6 7 8 Antal additioner: n l=1 l(n l + 1) n = n + 1 l l=1 n l 2 l=1 = n + 1 n(n + 1) 2 n(n + 1)(2n + 1) 6 = n3 + 3n 2 + 2n 6 www.cs.au.dk/~gerth/slides/math.pdf

Algoritme 2 1 2 3 4 5 6 7

1 2 3 4 5 6 7 8 9 Algoritme 2b

1 2 3 4 5 6 Algoritme 3 7 8 9 10 11 12 13 14 15 16 17 18 maxsum3(l,m)=7 l -1 2 5-8 4-2 m m+1-2 3-9 maxsum3(m+1,u)=10 3 2 5-3 u lmax=2 rmax=2

Algoritme 3 : Analyse Rekursionstræet Observation Samlet mængde additioner per lag er ~ n Additioner # additioner ~ n # lag ~ n log 2 n

Algoritme 4 1 2 3 4 5 6 7 x 0 1 2 3 i-1 i -3 2 4-7 3-2 5 6-4 3-1 maxsofar = 12 maxendinghere = 10 Invariant

Max-Delsum: Algoritmiske idéer Algoritme # additioner Idé 1 ~ n 3 Naive løsning 2 + 2b ~ n 2 Genbrug beregninger 3 ~ n log n Del-og-kombiner 4 ~ n Inkrementel

Sammenligning

Sammenligning: n 3 og n

Sammenligning 2009 maxsum1 n 3 x-akse = n, y = sekunder, hvert eksperiment gennemsnit af 10 kørsler (gcc 4.1.2, C, Linux 2.6.18, Intel Xeon 3 GHz)

Sammenligning 2009 maxsum2a og maxsum2b n 2 x-akse = n, y = sekunder, hvert eksperiment gennemsnit af 10 kørsler (gcc 4.1.2, C, Linux 2.6.18, Intel Xeon 3 GHz)

Sammenligning 2009 maxsum3 og maxsum4 n??? x-akse = n, y = sekunder, hvert eksperiment gennemsnit af 10 kørsler (gcc 4.1.2, C, Linux 2.6.18, Intel Xeon 3 GHz)

Sammenligning 2009 maxsum4 n x-akse = n, y = sekunder, hvert eksperiment gennemsnit af 10 kørsler (gcc 4.1.2, C, Linux 2.6.18, Intel Xeon 3 GHz)

Sammenligning 2009 maxsum3 c 1 n log n+c 2 n x-akse = n, y = sekunder, hvert eksperiment gennemsnit af 10 kørsler (gcc 4.1.2, C, Linux 2.6.18, Intel Xeon 3 GHz)

Algoritmisk indsigt... Gode idéer kan give hurtige algoritmer Generelle algoritme teknikker Del-og-kombiner Inkrementel Analyse af udførelsestid (her additioner) Argumenteret for korrektheden Invarianter