Perspektiverende Datalogi Klassiske Algoritmer Gerth Stølting Brodal
Ugens Program Mandag 10.15‐12.00 Introduktion til Algoritmik Gerth Stølting Brodal Tirsdag 9.15‐12.00 Øvelser ‐ Open Learning Center 12.15‐13.00 Opgave 11: Længste voksende delsekvens Gerth Stølting Brodal 13.15‐16.15 Øvelser ‐ Open Learning Center Onsdag 14.15‐16.00 Historisk perspektiv Erik Meineche Schmidt
Algoritmer Algoritme Klart beskrevet metode til løsning af en opgave Eksempler Madopskrift Strikkeopskrift Computerprogram 50-35-30 g Tvinni to-trådet grøn Pinde nr. 3 Slå 38-28-20 m op, strik 4-3-3 p glatstr, start med r p. Lav raglan-indtag 2 r 2 dr r sm. 2 dl havregryn 4 dl vand Hæld alt i gryde. Kog 3 min. Smag til med salt. int i,k; for (i=0;i<N;i++){ C[A[i]]++; k = k+i; } Hver algoritme er beskrevet i sit eget sprog. Hvordan ”smag”er man til med salt?
Beregningsmodeller Formel model: Beskriver præcis hvad en algoritme kan gøre, præcis definition af resourceforbrug Turing maskine Boolske netværk Aritmetiske netværk Sorterings netværk ( Øvelse 6 )
= designe og analysere algoritmer Algoritmik = designe og analysere algoritmer Kvalitet af algoritme: Korrekt, d.v.s. løser bevisligt problemet Effektiv - lavt ressourceforbrug, f.eks. – Tid – Plads Nem at programmere Problem-specifikke egenskaber
Teltstangsfoldning, øvre og nedre grænser
Søgning i Sorteret Liste 3 7 9 11 13 27 33 37 42 89 Sorteringsnetværk 1+ log2 n sammenligninger
Sortering 11 42 16 7 16 29 11 42 29 7 Sorteringsnetværk ( Øvelser 1-10 )
Begreber Analyse af algoritme Analyse af problem Modeller assymptotisk tid øvre grænse worst-case best-case Analyse af problem nedre grænse (alle algoritmer tager lang tid) adversary/modspiller (strategi for at finde et dårligt input for en given algoritme) Modeller sorteringsnetværk ( øvelser 6 ) beslutningstræer ( øvelser 9 )
Matematik repetition x 1 2 4 8 ∙∙∙ 64 80 128 log2(x) 3 6 6.3219 7 3 6 6.3219 7 e = 2,71828183 26 = 64 log(x) = log2(x) log(x) ≠ log10(x) log(x) ≠ loge(x) = ln(x) y = log2(x) x = 2 y log2(x ∙ y) = log2(x) + log2(y) NB: Ascii notation ofte 23=2^3 NB: I datalogi...
Husk Hver læsegruppe skal tirsdag medbringe: en saks, to-tre ure med sekundvisere, skriveredskaber og lidt kladdepapir, evt. en lommeregner (gerne grafisk)
Indhold Eksempler på beregningsproblemer Algoritmer og deres analyse Korrekthed af algoritmer Ressourceforbrug for algoritmer Kompleksitet af beregningsproblemer
Beregningsproblemer Sortering Søgning Grafer Strenge Geometri Numeriske beregninger Kombinatorisk optimering …
Sortering Problem Stil en mængde elementer i orden 110 755 766 51 652 28 729 713 681 407 28 51 110 407 652 681 713 729 755 766 Data er meget bekvemmere hvis de er sorterede. Specielt er det nemmere at lede i dem (ordbøger, telefonbøger, eksamensopslag, ... ) Brugt som rutine i mange andre algoritmer Meget velstuderet problem Mange algoritmer ( øvelser 1-10 + QuickSort + . . . )
Søgning Problem: Gem data så de kan findes igen effektivt Find(x) Insert(x) Delete(x) Successor(x), RangeSearch(x1, x2), ... Et andet meget fundamentalt problem (jvf. databaser) Brugt som rutine i mange andre algoritmer Meget velstuderet, mange algoritmer To grundgrupper: søgetræer og hashing
Grafer Knuder (punkter) og kanter (streger mellem punkter) Ekstra struktur: orientering af kanter, vægte på kanter En meget anvendt model: Flyruter, veje, el/vand/computer netværk, bekendtskaber og andre relationer, weblinks, ...
Problemer på grafer Løb grafen igennem (besøge alle knuder) Sammenhæng, k-sammenhæng (Mindste) udspændende træ Hamilton tur, rejsende sælger Korteste veje Euler tur Graffarvning Klike …
Strenge Alfabet = mængde af tegn som kan bruges Streng = sekvens af tegn fra alfabetet Eksempler: “To be or not to be” 10001100110001110 ACCCATTCCGTAA
Problemer på Strenge Mønster genkendelse Regulære udtryk Afstandsmål (Hamming, edit) Længste fælles delstreng Længste fælles delsekvens …
Kombinatorisk Optimering Spande pakning (1D, 2D, 3D) Rygsæk Delmængde sum Job-skemaplanlægning Crew-skemaplanlægning …
Geometri Konvekse hylster Nærmeste naboer Krydsninger af ortogonale linjesegmenter 2D område søgninger …
Numeriske Beregninger Polynomieevaluering Matrixmultiplikation Løsning af ligningssystemer Løsning af differentialligninger … (6/7-1)*7+1 = -4.44089209850063e-16 ?
Indhold Eksempler på beregningsproblemer Algoritmer og deres analyse Korrekthed af algoritmer Ressourceforbrug for algoritmer Kompleksitet af beregningsproblemer
Invarianter Udsagn I som gælder efter alle skridt i algoritmen Vælges så: Man kan vise at I gælder ved starten Man kan vise at hvis I gælder før et skridt, så gælder det efter Man kan vise af I samt omstændigheder ved algoritmens afslutning implicerer det ønskede slutresultat Eksempler: Binær søgning, RadixSort (øvelse 7), ... 3 7 9 11 13 27 33 37 42 89
Indhold Eksempler på beregningsproblemer Algoritmer og deres analyse Korrekthed af algoritmer Ressourceforbrug for algoritmer Kompleksitet af beregningsproblemer
Ressourceforbrug, målestok RAM-modellen Tidsmåling vs. analyse Voksehastighed, asymptotisk notation Worst case, best case, average case … Først vælge (eller designe) algoritme efter forskelle i asymptotisk ressourceforbrug Ved lighed, vælg dernæst efter konstanter (tidsmåling nu relevant)
Indhold Eksempler på beregningsproblemer Algoritmer og deres analyse Korrekthed af algoritmer Ressourceforbrug for algoritmer Kompleksitet af beregningsproblemer
= studere problemers iboende sværhedsgrad Kompleksitet Kompleksitetsteori = studere problemers iboende sværhedsgrad Kompleksitetsklasser: Klasse(X,Y) = De problemer, som kan løses i model X med ressourceforbrug Y. Mål Øvre grænser (d.v.s. algoritmer) og nedre grænser (d.v.s. beviser for at ingen algoritme i model X kan løse problemet med ressourceforbrug mindre end Y). wikipedia.org
Nedre Grænser Beviser for at ingen algoritme (blandt en stor klasse af algoritmer for en given beregnings-model) kan løse problemet bedre end angivet Eksempler: Søgning og Sortering Øvre og nedre grænser ens problemets kompleksitet kendt
Eksempel: sortering vs. brute-force løsning af puslespil ( øvelse 17 ) P EXP Meget grov inddeling af algoritmer i gode og dårlige: P = problemer med polynomiel tids algoritme v.s. EXP = problemer med eksponentiel tids algoritme Eksempel: sortering vs. brute-force løsning af puslespil ( øvelse 17 )
NP NP = ja/nej-problemer, hvor en ja-løsning kan kontrolleres (men ikke nødvendigvis findes) i polynomiel tid Eksempel: Hamilton tur Det er nemt at se at P NP EXP Formodning: P NP
Hvis ingen polynomiel algoritme... Heuristisk søgning Algoritmer for specielle instanser (jvf. “The Eternity Puzzle”) Approximationsalgoritmer Eternity is a tiling puzzle created by Christopher Monckton and launched by the Ertl Company in June 1999. Consisting of 209 pieces, it was marketed as being practically unsolveable, with a £1 million prize on offer for whoever could solve it within four years. The prize was paid out in October 2000 for a winning solution arrived at by two mathematicians from Cambridge.
Flere modeller og cost-funktioner Online algoritmer Randomiserede algoritmer Parallelisme Hukommelseshierarkier ...
Algoritmik Designe algoritmer Analysere algoritmer Analysere problemer David Harel “Algorithmics is more than a branch of computer science. It is the core of computer science, and, in all fairness, can be said to be relevant to most of science, business, and technology.”
Øvelse 11 (Længste voksende delsekvens) Betragt følgende liste af tal. 30 83 73 80 59 63 41 78 68 82 53 31 22 74 6 36 99 57 43 60 Øvelsen er at slette så få af disse tal som muligt, så de resterende tal står i voksende orden. Hvis for eksempel alt på nær de første to tal slettes, har man en voksende følge tilbage af længde 2 (30 83). Ved at slette alt på nær det første, tredie, ottende og tiende opnår man det samme, men har slettet færre tal og har en voksende følge tilbage af længde 4 (30 73 78 82). Spørgsmål Hvor lang er den længste voksende følge man kan opnå ?