DM507 Algoritmer og datastrukturer

Relaterede dokumenter
Introduktion til DM507

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

Grundlæggende Algoritmer og Datastrukturer

Introduktion til Datalogi

Sortering. Eksempel: De n tal i sorteret orden

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Algoritmedesign med internetanvendelser ved Keld Helsgaun

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

Programmering, algoritmik og matematik en nødvendig sammenblanding?

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

Asymptotisk analyse af algoritmers køretider

Sortering af information er en fundamental og central opgave.

Sortering. Eksempel: De n tal i sorteret orden

Sortering af information er en fundamental og central opgave.

DM507 Algoritmer og datastrukturer

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

DM507 Algoritmer og datastrukturer

Danmarks Tekniske Universitet

DM507 Algoritmer og datastrukturer

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

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

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

DM507 Algoritmer og datastrukturer

Bits DM534. Rolf Fagerberg, 2012

DM02 Kogt ned. Kokken. Januar 2006

Datastrukturer (recap)

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

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

Skriftlig Eksamen Diskret Matematik (DM528)

Skriftlig Eksamen Algoritmer og Sandsynlighed (DM538)

Skriftlig Eksamen Algoritmer og sandsynlighed (DM538)

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

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

Analyse af ombytningspuslespil

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

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

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Analyse af ombytningspuslespil

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

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

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

Introduktion. Philip Bille

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

DM507 Eksamen Obligatorisk Opgave Rejseplanlægning

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

DM507 Algoritmer og datastrukturer

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Sortering i lineær tid

CPUer og maskinkode DM534. Rolf Fagerberg

Danmarks Tekniske Universitet

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

Danmarks Tekniske Universitet

Perspektiverende Datalogi Klassiske Algoritmer

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

Læseplan for Foråret 2017, Odense

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

Grundlæggende køretidsanalyse af algoritmer

DM507 Algoritmer og datastrukturer

Undervisningsbeskrivelse

Datastrukturer (recap) Datastruktur = data + operationer herpå

Prioritetskøer og hobe. Philip Bille

DM507 Algoritmer og datastrukturer

Perspektiverende Datalogikursus

Danmarks Tekniske Universitet

Repræsentation af tal

Symmetrisk Traveling Salesman Problemet

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%

IMADAs Fagråd. Evalueringsrapport. Matematik & Datalogi. 2. juni Kontaktpersoner

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

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

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet

Perspektiverende Datalogikursus

Perspektiverende Datalogi Klassiske Algoritmer. Gerth Stølting Brodal

Perspektiverende Datalogikursus

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

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

Selvstudium 1, Diskret matematik

Dynamisk programmering

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

Perspektiverende Datalogikursus

Algoritmer og Datastrukturer 1

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

Transkript:

DM507 Algoritmer og datastrukturer Introduktion til kurset Rolf Fagerberg Forår 2019 1 / 20

Hvem er vi? Underviser: Rolf Fagerberg, Institut for Matematik og Datalogi (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 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. 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 mindst vigtig Forelæsning: 2 timer Læs stof efter forelæsning: 1,5 timer Opgaveregning (forberedelse): 3 timer Opgaveregning (klasse): 2 timer mest vigtig Ovenstående i gennemsnit 1.5 gang per uge over 14 uger. Dertil følgende én gang: Projektet: 15+15+25 timer Eksamenslæsning: 40 timer Spørgetime og eksamen: 6 timer I alt: 14 1.5 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 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, databasesystemer, lineær algebra med anvendelser, data mining og machine learning. (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? 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 enhver beregningsopgave: 1. Find (mindst) én algoritme der løser opgaven. 2. Sammenlign flere algoritmer der løser opgaven. 3. Hvad er den bedste algoritme der kan findes? 7 / 20

Udvikling og vurdering af algoritmer 1. Find (mindst) én algoritme der løser opgaven. 2. Sammenlign flere algoritmer der løser opgaven. 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.) DM507 vil have mest fokus på analyse, lidt mindre på implementation. 8 / 20

Målsætning for kurset DM507 giver dig en værktøjskasse af algoritmer for fundamentale opgaver, 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. Undervejs begejstres du måske også over smarte og elegante ideer i algoritmer og analyser. 10 / 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 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 Model af problem. Individuelt for hvert problem. Model af maskine. Ofte RAM-modellen (alias von Neumann modellen). Mål for ressourceforbrug (tid og plads). Matematiske analyseværktøjer: Løkkeinvarianter, induktion, rekursionsligninger. 13 / 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 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). Average case: Hvilken fordeling? Er den realistisk? Ofte svær analyse at gennemføre (matematisk svær). Best case: Giver ofte ikke så 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. 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 Næste gang: mere præcis definition af asymptotisk voksehastighed og sammenligninger heraf. 19 / 20

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