Introduktion til DM507

Relaterede dokumenter
DM507 Algoritmer og datastrukturer

Rolf Fagerberg. Forår 2015

Rolf Fagerberg. Forår 2015

Rolf Fagerberg. Forår 2014

Rolf Fagerberg. Forår 2013

Rolf Fagerberg. Forår 2012

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Introduktion til Datalogi

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

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Introduktion til Datalogi

Sortering. Eksempel: De n tal i sorteret orden

Grundlæggende Algoritmer og Datastrukturer

Asymptotisk analyse af algoritmers køretider

DM507 Algoritmer og datastrukturer

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

DM507 Algoritmer og datastrukturer

Algoritmedesign med internetanvendelser ved Keld Helsgaun

DM507 Algoritmer og datastrukturer

Sortering af information er en fundamental og central opgave.

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

Sortering. Eksempel: De n tal i sorteret orden

DM507 Algoritmer og datastrukturer

Sortering af information er en fundamental og central opgave.

DM507 Algoritmer og datastrukturer

Programmering, algoritmik og matematik en nødvendig sammenblanding?

Danmarks Tekniske Universitet

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

DM507 Algoritmer og datastrukturer

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Bits DM534. Rolf Fagerberg, 2012

DM507 Algoritmer og datastrukturer

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

DM02 Kogt ned. Kokken. Januar 2006

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

Datastrukturer (recap)

Analyse af ombytningspuslespil

Danmarks Tekniske Universitet

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

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

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Sandsynlighed (DM538)

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

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

Analyse af ombytningspuslespil

Perspektiverende Datalogi Klassiske Algoritmer

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

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

Skriftlig Eksamen Diskret Matematik (DM528)

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

Skriftlig Eksamen Algoritmer og sandsynlighed (DM538)

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

Forelæserne har alle virket meget engagerede og generelt set været gode til at formidle deres respektive emner.

Perspektiverende Datalogikursus

Introduktion. Philip Bille

Datalogistudiet. Rolf Fagerberg. Institut for Matematik og Datalogi Syddansk Universitet. Studiestart, 1. september 2014

DM507 Algoritmer og datastrukturer

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

Danmarks Tekniske Universitet

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

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

Sortering i lineær tid

Læseplan for Foråret 2017, Odense

Perspektiverende Datalogikursus

Undervisningsbeskrivelse

CPUer og maskinkode DM534. Rolf Fagerberg

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Grundlæggende køretidsanalyse af algoritmer

Danmarks Tekniske Universitet

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

Danmarks Tekniske Universitet

DM507 Eksamen Obligatorisk Opgave Rejseplanlægning

DM507 Algoritmer og datastrukturer

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

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

Software Engineering 11 28,9% Matematik-Økonomi 9 23,7% Datalogi 14 36,8% Fysik 2 5,3% Andet (angiv herunder) 2 5,3% I alt ,0%

DM507 Algoritmer og datastrukturer

Perspektiverende Datalogi Klassiske Algoritmer. Gerth Stølting Brodal

Datastrukturer (recap) Datastruktur = data + operationer herpå

Symmetrisk Traveling Salesman Problemet

Repræsentation af tal

Indhold. Maskinstruktur Kapitel 1. Assemblersprog Indledning Hop-instruktioner Input og output...

Analyse af algoritmer

Prioritetskøer og hobe. Philip Bille

Datalogistudiet. Institut for Matematik og Datalogi (IMADA) SDU. Information til kommende studerende

Der er overensstemmelse mellem kursets målbeskrivelse, undervisningen og de faktiske eksamenskrav.

Danmarks Tekniske Universitet

IMADAs Fagråd. Evalueringsrapport. Matematik & Datalogi. 16. november Kontaktpersoner

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

Asymptotisk analyse af algoritmers køretider

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

Dynamisk programmering

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

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion

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

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

Transkript:

Introduktion til DM507 Rolf Fagerberg Forår 2017 1 / 20

Hvem er vi? Underviser: Rolf Fagerberg, IMADA Forskningsområde: algoritmer og datastrukturer 2 / 20

Hvem er vi? Underviser: Rolf Fagerberg, IMADA Forskningsområde: algoritmer og datastrukturer Deltagere: BA i Datalogi BA i Software Engineering BA i Matematik-Økonomi BA i Anvendt Matematik BA sidefag i Datalogi 2 / 20

Hvem er vi? Underviser: Rolf Fagerberg, IMADA Forskningsområde: algoritmer og datastrukturer Deltagere: BA i Datalogi BA i Software Engineering BA i Matematik-Økonomi BA i Anvendt Matematik BA sidefag i Datalogi Stor diversitet: forskellige semestre (2./4./6.) i uddannelsen, forskellige mængder af programmering og af matematiske fag på uddannelsen. 2 / 20

Kursets format 3 / 20

Kursets format Forudsætninger: Programmering i Java, lidt matematik 3 / 20

Kursets format Forudsætninger: Format: Programmering i Java, lidt matematik Forelæsninger (I-timer). Ofte 3 x 30 min. Opgaveregning (TE-timer). Med instruktor. Arbejde selv og i studiegrupper 3 / 20

Kursets format Forudsætninger: Format: Programmering i Java, lidt matematik Forelæsninger (I-timer). Ofte 3 x 30 min. Opgaveregning (TE-timer). Med instruktor. Arbejde selv og i studiegrupper Eksamenform: Skriftlig eksamen (juni): Multiple-choice (med bøger, noter, computer). efter 7-skala. Mål: check af kendskab til stoffet. Projekt undervejs: Karakter I flere dele. Karakter B/IB. Skal bestås for at gå til skriftlig eksamen. Mål: træne overførsel af stoffet til praksis (programmering). 3 / 20

Materialer Lærebog: Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms, 3rd edition, 2009. 4 / 20

Materialer Lærebog: Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms, 3rd edition, 2009. 4 / 20

Materialer Lærebog: Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms, 3rd edition, 2009. Andet læremateriale på kursets webside: Slides fra forelæsninger Links til videoer Opgaver til øvelsestimer Tidligere eksamenssæt Projektet 4 / 20

Materialer Lærebog: Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms, 3rd edition, 2009. Andet læremateriale på kursets webside: Slides fra forelæsninger Links til videoer Opgaver til øvelsestimer Tidligere eksamenssæt Projektet Stoffet findes i fuld detalje i tre udgaver: lærebog, slides, video. Brug de dele, som virker bedst for dig (gerne flere dele). 4 / 20

Forventet arbejdsindsats Skim stof før forelæsning: 0,5 timer Forelæsning: 2 timer Læs stof efter forelæsning: 1,5 timer Opgaveregning (forberedelse): 3 timer Opgaveregning (klasse): 2 timer 5 / 20

Forventet arbejdsindsats Skim stof før forelæsning: 0,5 timer mindst vigtig Forelæsning: 2 timer Læs stof efter forelæsning: 1,5 timer Opgaveregning (forberedelse): 3 timer mest vigtig Opgaveregning (klasse): 2 timer 5 / 20

Forventet arbejdsindsats Skim stof før forelæsning: 0,5 timer mindst vigtig Forelæsning: 2 timer Læs stof efter forelæsning: 1,5 timer Opgaveregning (forberedelse): 3 timer mest vigtig Opgaveregning (klasse): 2 timer Projektet: 15+15+25 timer Eksamenslæsning: 40 timer Spørgetime og eksamen: 6 timer 5 / 20

Forventet arbejdsindsats Skim stof før forelæsning: 0,5 timer mindst vigtig Forelæsning: 2 timer Læs stof efter forelæsning: 1,5 timer Opgaveregning (forberedelse): 3 timer mest vigtig Opgaveregning (klasse): 2 timer Projektet: 15+15+25 timer Eksamenslæsning: 40 timer Spørgetime og eksamen: 6 timer I alt: 21 9 + 55 + 40 + 6 = 290 timer 5 / 20

Forventet arbejdsindsats Skim stof før forelæsning: 0,5 timer mindst vigtig Forelæsning: 2 timer Læs stof efter forelæsning: 1,5 timer Opgaveregning (forberedelse): 3 timer mest vigtig Opgaveregning (klasse): 2 timer Projektet: 15+15+25 timer Eksamenslæsning: 40 timer Spørgetime og eksamen: 6 timer I alt: 21 9 + 55 + 40 + 6 = 290 timer 10 ECTS = 1/6 årsværk = 1650/6 timer = 275 timer 5 / 20

Kursets formål og plads i det store billede 6 / 20

Kursets formål og plads i det store billede Generelt mål i IT: Få computer til at udføre en opgave. 6 / 20

Kursets formål og plads i det store billede Generelt mål i IT: Få computer til at udføre en opgave. Relaterede spørgsmål: 6 / 20

Kursets formål og plads i det store billede Generelt mål i IT: Få computer til at udføre en opgave. Relaterede spørgsmål: Hvordan skrives programmer? Programmering, programmeringssprog, software engineering. 6 / 20

Kursets formål og plads i det store billede Generelt mål i IT: Få computer til at udføre en opgave. Relaterede spørgsmål: Hvordan skrives programmer? Programmering, programmeringssprog, software engineering. Hvordan skal programmet løse opgaven? Algoritmer og datastrukturer, lineær programmering, databasesystemer. 6 / 20

Kursets formål og plads i det store billede Generelt mål i IT: Få computer til at udføre en opgave. Relaterede spørgsmål: Hvordan skrives programmer? Programmering, programmeringssprog, software engineering. Hvordan skal programmet løse opgaven? Algoritmer og datastrukturer, lineær programmering, databasesystemer. (Hvor godt) er det overhovedet muligt at løse opgaven? Nedre grænser, kompleksitet, beregnelighed. 6 / 20

Kursets formål og plads i det store billede Generelt mål i IT: Få computer til at udføre en opgave. Relaterede spørgsmål: Hvordan skrives programmer? Programmering, programmeringssprog, software engineering. Hvordan skal programmet løse opgaven? Algoritmer og datastrukturer, lineær programmering, databasesystemer. (Hvor godt) er det overhovedet muligt at løse opgaven? Nedre grænser, kompleksitet, beregnelighed. Hvordan fungerer maskinen der udfører opgaven? Baggrundsviden om computerarkitektur og operativsystemer. 6 / 20

Kursets formål og plads i det store billede Generelt mål i IT: Få computer til at udføre en opgave. Relaterede spørgsmål: Hvordan skrives programmer? Programmering, programmeringssprog, software engineering. Hvordan skal programmet løse opgaven? DM507 Algoritmer og datastrukturer, lineær programmering, databasesystemer. (Hvor godt) er det overhovedet muligt at løse opgaven? Nedre grænser, kompleksitet, beregnelighed. Hvordan fungerer maskinen der udfører opgaven? Baggrundsviden om computerarkitektur og operativsystemer. 6 / 20

Fokus: Hvordan skal programmet løse opgaven? 7 / 20

Fokus: Hvordan skal programmet løse opgaven? Algoritme = løsningsmetode. 7 / 20

Fokus: Hvordan skal programmet løse opgaven? Algoritme = løsningsmetode. Tilpas præcist skrevet ned: præcis tekst, pseudo-kode, flow-diagrammer, formler,... 7 / 20

Fokus: Hvordan skal programmet løse opgaven? Algoritme = løsningsmetode. Tilpas præcist skrevet ned: præcis tekst, pseudo-kode, flow-diagrammer, formler,... Datastruktur = data + effektive operationer herpå. 7 / 20

Fokus: Hvordan skal programmet løse opgaven? Algoritme = løsningsmetode. Tilpas præcist skrevet ned: præcis tekst, pseudo-kode, flow-diagrammer, formler,... Datastruktur = data + effektive operationer herpå. Forskellige datastrukturer gemmer forskellige typer data og/eller tilbyder forskellige operationer. Har stor anvendelse som delelement i algoritmer. 7 / 20

Fokus: Hvordan skal programmet løse opgaven? Algoritme = løsningsmetode. Tilpas præcist skrevet ned: præcis tekst, pseudo-kode, flow-diagrammer, formler,... Datastruktur = data + effektive operationer herpå. Forskellige datastrukturer gemmer forskellige typer data og/eller tilbyder forskellige operationer. Har stor anvendelse som delelement i algoritmer. Relevante opgaver for ethvert beregningsproblem: 1. Find (mindst) én algoritme der løser problemet. 7 / 20

Fokus: Hvordan skal programmet løse opgaven? Algoritme = løsningsmetode. Tilpas præcist skrevet ned: præcis tekst, pseudo-kode, flow-diagrammer, formler,... Datastruktur = data + effektive operationer herpå. Forskellige datastrukturer gemmer forskellige typer data og/eller tilbyder forskellige operationer. Har stor anvendelse som delelement i algoritmer. Relevante opgaver for ethvert beregningsproblem: 1. Find (mindst) én algoritme der løser problemet. 2. Sammenlign flere algoritmer der løser problemet. 7 / 20

Fokus: Hvordan skal programmet løse opgaven? Algoritme = løsningsmetode. Tilpas præcist skrevet ned: præcis tekst, pseudo-kode, flow-diagrammer, formler,... Datastruktur = data + effektive operationer herpå. Forskellige datastrukturer gemmer forskellige typer data og/eller tilbyder forskellige operationer. Har stor anvendelse som delelement i algoritmer. Relevante opgaver for ethvert beregningsproblem: 1. Find (mindst) én algoritme der løser problemet. 2. Sammenlign flere algoritmer der løser problemet. 3. Hvad er den bedste algoritme der kan findes? 7 / 20

Udvikling og vurdering af algoritmer 1. Find (mindst) én algoritme der løser problemet. 2. Sammenlign flere algoritmer der løser problemet. 3. Hvad er den bedste algoritme der kan findes? 8 / 20

Udvikling og vurdering af algoritmer 1. Find (mindst) én algoritme der løser problemet. 2. Sammenlign flere algoritmer der løser problemet. 3. Hvad er den bedste algoritme der kan findes? Punkt 1: Kræver ideer, tænkearbejde, erfaring, og en værktøjskasse af kendte algoritmer. Korrekthed: ved analyse eller implementation/afprøvning? 8 / 20

Udvikling og vurdering af algoritmer 1. Find (mindst) én algoritme der løser problemet. 2. Sammenlign flere algoritmer der løser problemet. 3. Hvad er den bedste algoritme der kan findes? Punkt 1: Kræver ideer, tænkearbejde, erfaring, og en værktøjskasse af kendte algoritmer. Korrekthed: ved analyse eller implementation/afprøvning? Punkt 2: Kræver definition af hvad er kvalitet. Sammenligning: ved analyse eller implementation/afprøvning? 8 / 20

Udvikling og vurdering af algoritmer 1. Find (mindst) én algoritme der løser problemet. 2. Sammenlign flere algoritmer der løser problemet. 3. Hvad er den bedste algoritme der kan findes? Punkt 1: Kræver ideer, tænkearbejde, erfaring, og en værktøjskasse af kendte algoritmer. Korrekthed: ved analyse eller implementation/afprøvning? Punkt 2: Kræver definition af hvad er kvalitet. Sammenligning: ved analyse eller implementation/afprøvning? Analyse: Giver høj sikkerhed for korrekthed. Sparer implementationsarbejde. Sammenligning upåvirket af: maskine, sprog, programmør, konkrete input. 8 / 20

Udvikling og vurdering af algoritmer 1. Find (mindst) én algoritme der løser problemet. 2. Sammenlign flere algoritmer der løser problemet. 3. Hvad er den bedste algoritme der kan findes? Punkt 1: Kræver ideer, tænkearbejde, erfaring, og en værktøjskasse af kendte algoritmer. Korrekthed: ved analyse eller implementation/afprøvning? Punkt 2: Kræver definition af hvad er kvalitet. Sammenligning: ved analyse eller implementation/afprøvning? Analyse: Giver høj sikkerhed for korrekthed. Sparer implementationsarbejde. Sammenligning upåvirket af: maskine, sprog, programmør, konkrete input. I alle byggefag analyserer og planlægger man før man bygger (tænk storebæltsbro). Din fremtidige chef vil forlange det! 8 / 20

Udvikling og vurdering af algoritmer 1. Find (mindst) én algoritme der løser problemet. 2. Sammenlign flere algoritmer der løser problemet. 3. Hvad er den bedste algoritme der kan findes? Punkt 1: Kræver ideer, tænkearbejde, erfaring, og en værktøjskasse af kendte algoritmer. Korrekthed: ved analyse eller implementation/afprøvning? Punkt 2: Kræver definition af hvad er kvalitet. Sammenligning: ved analyse eller implementation/afprøvning? Analyse: Giver høj sikkerhed for korrekthed. Sparer implementationsarbejde. Sammenligning upåvirket af: maskine, sprog, programmør, konkrete input. I alle byggefag analyserer og planlægger man før man bygger (tænk storebæltsbro). Din fremtidige chef vil forlange det! (Bemærk: Punkt 3 kan kun afklares med analyse.) 8 / 20

Målsætning for kurset 9 / 20

Målsætning for kurset DM507 giver dig en værktøjskasse af algoritmer for fundamentale problemer, samt metoder til at udvikle og analysere nye algoritmer og varianter af eksisterende. 9 / 20

Målsætning for kurset Regneøvelser og programmeringsprojekter øger din forståelse for værktøjerne og træner dig i brug af værktøjskassen. 10 / 20

Målsætning for kurset Regneøvelser og programmeringsprojekter øger din forståelse for værktøjerne og træner dig i brug af værktøjskassen. Undervejs begejstres du måske også over smarte og elegante ideer i algoritmer og analyser. 10 / 20

Konkret indhold af kurset 11 / 20

Konkret indhold af kurset Algoritmer: Analyse af algoritmer: korrekthed og køretid Del og hersk algoritmer Grådige algoritmer Dynamisk programmering Sortering Graf-algoritmer Huffman-kodning Datastrukturer: Ordbøger (søgetræer og hashing) Prioritetskøer (heaps) Disjunkte mængder 11 / 20

Algoritmeanalyse 12 / 20

Algoritmeanalyse Mindstekrav til algoritmer for at løse et problem: Stopper for alle input. Korrekt output når stopper. 12 / 20

Algoritmeanalyse Mindstekrav til algoritmer for at løse et problem: Stopper for alle input. Korrekt output når stopper. Kvalitet af algoritmer som opfylder mindstekrav: Hastighed Pladsforbrug Kompleksitet af implementation Ekstra egenskaber (problemspecifikke), f.eks. stabilitet af sortering. 12 / 20

Algoritmeanalyse Mindstekrav til algoritmer for at løse et problem: Stopper for alle input. Korrekt output når stopper. Kvalitet af algoritmer som opfylder mindstekrav: Hastighed Pladsforbrug Kompleksitet af implementation Ekstra egenskaber (problemspecifikke), f.eks. stabilitet af sortering. For dette kræves følgende ingredienser: klar beskrivelse af problem og maskine (modeller), en definition af kvalitet, samt en værktøjskasse af analyseredskaber. 12 / 20

Ingredienser i algoritmeanalyse 13 / 20

Ingredienser i algoritmeanalyse Model af problem. Individuelt for hvert problem. 13 / 20

Ingredienser i algoritmeanalyse Model af problem. Individuelt for hvert problem. Model af maskine. Ofte RAM-modellen (alias von Neumann modellen). 13 / 20

Ingredienser i algoritmeanalyse Model af problem. Individuelt for hvert problem. Model af maskine. Ofte RAM-modellen (alias von Neumann modellen). Mål for ressourceforbrug (tid og plads). 13 / 20

Ingredienser i algoritmeanalyse Model af problem. Individuelt for hvert problem. Model af maskine. Ofte RAM-modellen (alias von Neumann modellen). Mål for ressourceforbrug (tid og plads). Analyseværktøjer: Løkkeinvarianter, induktion, rekursionsligninger. 13 / 20

RAM-modellen 14 / 20

RAM-modellen En CPU En hukommelse ( uendeligt array af celler). Et antal basale operationer: add, sub, mult, shift, compare, flyt dataelement, jump i program (løkke, forgrening, metodekald). Disse antages alle at tage samme tid. Tid for en algoritme: antal basale operationer udført. Plads for en algoritme: maks antal optagne hukommelsesceller. 14 / 20

Måle ressourceforbrug 15 / 20

Måle ressourceforbrug For en givet størrelse n af input er der ofte mange forskellige input instanser. Algoritmen har som regel forskelligt ressourceforbrug på hver af disse. Hvilket skal vi bruge til at vurdere ressourceforbruget? 15 / 20

Måle ressourceforbrug For en givet størrelse n af input er der ofte mange forskellige input instanser. Algoritmen har som regel forskelligt ressourceforbrug på hver af disse. Hvilket skal vi bruge til at vurdere ressourceforbruget? Worst case (max over alle input af størrelse n) Average case (gennemsnit over en fordeling af input af størrelse n) Best case (min over alle input af størrelse n) Køretid for de forskellige input af størrelse n 15 / 20

Worst case ressourceforbrug Worst case giver garanti. Ofte repræsentativ for average case (men nogen gange betydeligt mere pessimistisk). 16 / 20

Worst case ressourceforbrug Worst case giver garanti. Ofte repræsentativ for average case (men nogen gange betydeligt mere pessimistisk). Average case: Hvilken fordeling? Er den realistisk? Ofte svær analyse at gennemføre (matematisk svær). 16 / 20

Worst case ressourceforbrug Worst case giver garanti. Ofte repræsentativ for average case (men nogen gange betydeligt mere pessimistisk). Average case: Hvilken fordeling? Er den realistisk? Ofte svær analyse at gennemføre (matematisk svær). Best case: Giver som regel ikke megen relevant information. 16 / 20

Worst case ressourceforbrug Worst case giver garanti. Ofte repræsentativ for average case (men nogen gange betydeligt mere pessimistisk). Average case: Hvilken fordeling? Er den realistisk? Ofte svær analyse at gennemføre (matematisk svær). Best case: Giver som regel ikke megen relevant information. Næsten alle analyser i dette kursus er worst case. 16 / 20

Forskellige inputstørrelser Worstcase køretid er normalt en voksende funktion af inputstørrelsen n: Køretid for de forskellige input af stigende størrelse n 17 / 20

Voksehastighed Forbruget skal derfor ses som en funktion f (n) af inputstørrelsen n. 18 / 20

Voksehastighed Forbruget skal derfor ses som en funktion f (n) af inputstørrelsen n. Vi har derfor brug for at sammenligne funktioner. Det relevante mål er voksehastighed - en hurtigere voksende funktion vil altid overhale en langsomt voksende funktion når n bliver stor nok. Og for små n er (næsten) alle algoritmer hurtige. 18 / 20

Voksehastighed Eksempler (stigende voksehastighed): 1, log n, n, n/ log n, n, n log n, n n, n 2, n 3, n 10, 2 n 19 / 20

Voksehastighed Eksempler (stigende voksehastighed): 1, log n, n, n/ log n, n, n log n, n n, n 2, n 3, n 10, 2 n Næste gang: mere præcis definition af asymptotisk voksehastighed og sammenligninger heraf. 19 / 20

Konkret eksempel på algoritmeanalyse Ombytningspuslespil... 20 / 20