Divide-and-Conquer algoritmer
|
|
|
- Carl Fog
- 8 år siden
- Visninger:
Transkript
1 Divide-and-Conquer algoritmer
2 Divide-and-Conquer algoritmer Det samme som rekursive algoritmer.
3 Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer (af samme type). 2. Løs delproblemerne ved rekursion (dvs. kald algoritmen selv, men med de mindre input). 3. Konstruer en løsning til problemet ud fra løsningen af delproblemerne. Basistilfælde: Problemer af størrelse O(1) løses direkte (uden rekursion).
4 Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer (af samme type). 2. Løs delproblemerne ved rekursion (dvs. kald algoritmen selv, men med de mindre input). 3. Konstruer en løsning til problemet ud fra løsningen af delproblemerne. Basistilfælde: Problemer af størrelse O(1) løses direkte (uden rekursion). NB: dette er en generel algoritme-udviklingsmetode, med mange anvendelser.
5 Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer (af samme type). 2. Løs delproblemerne ved rekursion (dvs. kald algoritmen selv, men med de mindre input). 3. Konstruer en løsning til problemet ud fra løsningen af delproblemerne. Basistilfælde: Problemer af størrelse O(1) løses direkte (uden rekursion). NB: dette er en generel algoritme-udviklingsmetode, med mange anvendelser. For rekursive algoritmer: korrekthed bevises via induktion på inputstørrelse. I detaljer: Korrekthed af store størrelser følger af korrekthed for små størrelser, samt handlingerne involveret i at konstruere en løsning for den store størrelse ud fra løsningerne for de mindre størrelser. Basistilfældet for rekursionen er også basistilfældet for induktionsbeviset.
6 Divide-and-Conquer eksempler
7 Divide-and-Conquer eksempler Mergesort: Del input op i to dele X og Y (trivielt). Sorter hver del for sig (rekursion). Merge de to sorterede dele til én sorteret del (reelt arbejde). Basistilfælde: n 1 (trivielt).
8 Divide-and-Conquer eksempler Mergesort: Del input op i to dele X og Y (trivielt). Sorter hver del for sig (rekursion). Merge de to sorterede dele til én sorteret del (reelt arbejde). Basistilfælde: n 1 (trivielt). Quicksort: Del input op i to dele X og Y så X Y (reelt arbejde). Sorter hver del for sig (rekursion). Returner X efterfulgt af Y (trivielt) Basistilfælde: n 1 (trivielt).
9 Divide-and-Conquer eksempler Mergesort: Del input op i to dele X og Y (trivielt). Sorter hver del for sig (rekursion). Merge de to sorterede dele til én sorteret del (reelt arbejde). Basistilfælde: n 1 (trivielt). Quicksort: Del input op i to dele X og Y så X Y (reelt arbejde). Sorter hver del for sig (rekursion). Returner X efterfulgt af Y (trivielt) Basistilfælde: n 1 (trivielt). Et andet eksempel er inorder gennemløb af et binært søgetræ.
10 Divide-and-Conquer mere generelt Del problem op i del-problemer (nyt hver gang) Løs del-problemer med rekursion (fast del) Konstruer løsning til problem ud fra løsningerne til del-problemerne (nyt hver gang). Basistilfælde n = O(1): Løs direkte (nyt hver gang, men altid simpelt).
11 Divide-and-Conquer mere generelt Del problem op i del-problemer (nyt hver gang) Løs del-problemer med rekursion (fast del) Konstruer løsning til problem ud fra løsningerne til del-problemerne (nyt hver gang). Basistilfælde n = O(1): Løs direkte (nyt hver gang, men altid simpelt). Vi vil nu kigge på hvordan man vurderer køretiden for Divide-and-Conquer algoritmer (rekursive algoritmer).
12 Divide-and-Conquer, udført arbejde Hvis basistilfælde (n = O(1)): Arbejde Hvis ikke basistilfælde: Arbejde Rekursivt kald Arbejde Rekursivt kald Arbejde (Der behøver ikke altid være to rekursive kald. Nogle rekursive algoritmer har bare eet, og nogle har flere end to).
13 Divide-and-Conquer, udført arbejde Flow of control (lokalt for eet kald af algoritmen): Basistilfælde Ikke basistilfælde
14 Divide-and-Conquer, udført arbejde Globalt flow of control: Vi ønsker af finde samlet arbejde = sum af blå bidder.
15 Rekursionstræer Globalt flow of control = rekursionstræer: Én knude = ét kald af algoritmen. Alle kald på en sti mod roden er i gang samtidig hvert kalds variable og state opbevares (af operativsystemet) på en stak, så kaldenes udførsel blandes ikke sammen. Kald af barn i rekursionstræet = push på stak. Afslutning af et barns udførsel = pop fra stak.
16 Rekursionsligninger Køretiden for rekursive algoritmer kan beskrives ved rekursionsligninger.
17 Rekursionsligninger Køretiden for rekursive algoritmer kan beskrives ved rekursionsligninger. Hvis en rekursiv algoritme for problemer af størrelse n laver a rekursive kald, alle på delproblemer af størrelse n/b, og laver Θ(f (n)) lokalt arbejde, må der for køretiden T (n) gælde: T (n) = { at (n/b) + Θ(f (n)) hvis n > 1 Θ(1) hvis n 1
18 Rekursionsligninger Køretiden for rekursive algoritmer kan beskrives ved rekursionsligninger. Hvis en rekursiv algoritme for problemer af størrelse n laver a rekursive kald, alle på delproblemer af størrelse n/b, og laver Θ(f (n)) lokalt arbejde, må der for køretiden T (n) gælde: T (n) = { at (n/b) + Θ(f (n)) hvis n > 1 Θ(1) hvis n 1 Sidste linie er altid den samme og udelades derfor ofte.
19 Rekursionsligninger Køretiden for rekursive algoritmer kan beskrives ved rekursionsligninger. Hvis en rekursiv algoritme for problemer af størrelse n laver a rekursive kald, alle på delproblemer af størrelse n/b, og laver Θ(f (n)) lokalt arbejde, må der for køretiden T (n) gælde: T (n) = { at (n/b) + Θ(f (n)) hvis n > 1 Θ(1) hvis n 1 Sidste linie er altid den samme og udelades derfor ofte. Eksempel: Mergesort har to rekursive kald af størrelse n/2 og laver Θ(n) lokalt arbejde. Dens rekursionsligning er derfor T (n) = 2T (n/2) + Θ(n)
20 Rekursionstræer og beregning af køretid For en rekursiv algoritme (eller en rekursionsligning), annoter knuderne i rekursionstræet (for algoritmen eller ligningen) med Input størrelsen for kaldet til knude. Det resulterende arbejde udført i denne knude (men ikke i rekursive kald under knuden de bliver selv annoteret med deres udførte arbejde).
21 Rekursionstræer og beregning af køretid For en rekursiv algoritme (eller en rekursionsligning), annoter knuderne i rekursionstræet (for algoritmen eller ligningen) med Input størrelsen for kaldet til knude. Det resulterende arbejde udført i denne knude (men ikke i rekursive kald under knuden de bliver selv annoteret med deres udførte arbejde). Find derefter summen af alt arbejde i knuder. Ofte: Sum hvert lag i rekursionstræet sammen for sig. Sum de resulterende værdier for alle lag. Find først højden af træet (antal lag). Eksempler følger.
22 Divide-and-Conquer eksempler T (n) = 2T (n/2) + cn
23 Divide-and-Conquer eksempler T (n) = 3T (n/4) + cn2
24 Divide-and-Conquer eksempler T (n) = T (n/3) + T (2n/3) + cn
25 Divide-and-Conquer eksempler Ofte gælder én af flg.: Alle lag har lige stor sum, hvorved den samlede sum er antal lag (træets højde) gange denne sum. Lagenes sum aftager eksponentiel nedad gennem lagene, hvorved øverste lag dominerer. Lagenes sum vokser eksponentiel nedad gennem lagene (aftager eksponentielt opad gennem lagene), hvorved nederste lag dominerer. For at finde dette lags sum, skal man kende træets højde.
26 Divide-and-Conquer eksempler Ofte gælder én af flg.: Alle lag har lige stor sum, hvorved den samlede sum er antal lag (træets højde) gange denne sum. Lagenes sum aftager eksponentiel nedad gennem lagene, hvorved øverste lag dominerer. Lagenes sum vokser eksponentiel nedad gennem lagene (aftager eksponentielt opad gennem lagene), hvorved nederste lag dominerer. For at finde dette lags sum, skal man kende træets højde. En generisk løsning af disse tre cases er præcis indholdet af bogens sætning side 94, kaldet Master Theorem. De fleste rekursive algoritmer har en køretid, som beskrives ved en rekursionsligning, der passer ind i Master Theorem. Ellers må man ræsonnere ud fra rekursionstræet (det kan man også gøre selv om Master Theorem kan bruges, naturligvis).
Divide-and-Conquer algoritmer
Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer (af samme type). 2. Løs delproblemerne ved rekursion (dvs. kald algoritmen
Divide-and-Conquer algoritmer
Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer
Divide-and-Conquer algoritmer
Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer
Sortering. De n tal i sorteret orden. Eksempel: Kommentarer:
Sortering Sortering Input: Output: n tal De n tal i sorteret orden Eksempel: Kommentarer: 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Sorteret orden kan være stigende eller faldende. Vi vil i dette kursus
Sortering. Eksempel: De n tal i sorteret orden
Sortering 1 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden
Sortering. Eksempel: De n tal i sorteret orden
Sortering 1 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden
Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)
Algoritmeanalyse Identificer essentiel(le) operation(er) Øvre grænse for algoritme Find øvre grænse for antallet af gange de(n) essentielle operation(er) udføres. Øvre grænse for problem Brug øvre grænse
Dynamisk programmering
Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur blandt mange mulige. Dynamisk programmering Optimeringsproblem: man ønsker at finde
Dynamisk programmering
Dynamisk programmering Dynamisk programmering Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Har en hvis lighed med divide-and-conquer: Begge opbygger løsninger til større problemer
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 Philip Bille Søgning og Sortering Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering
Søgning og Sortering. Philip Bille
Søgning og Sortering Philip Bille Plan Søgning Linæer søgning Binær søgning Sortering Indsættelsesortering Flettesortering Søgning Søgning 1 4 7 12 16 18 25 28 31 33 36 42 45 47 50 1 2 3 4 5 6 7 8 9 10
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 29. april, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Søgning og Sortering. Søgning og Sortering. Søgning. Linæer søgning
Søgning og Sortering Søgning og Sortering Philip Bille 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]
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2010 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 24. april, 2010 (let justeret 10. maj og 21. maj 2010) Dette projekt udleveres i tre
Danmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning
Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012
Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012 May 15, 2012 1 CONTENTS 2012 CONTENTS Contents 1 Kompleksitet 3 1.1 Køretid................................................ 3 1.2 Asymptotisk
Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox
Martin Olsen DM0 Projekt 0 Del I. marts 0 FOTO: Colourbox Indhold Indledning... Opgave... Opgave... Opgave... Opgave... Opgave... Opgave... Opgave... Kildekode til SimpleInv.java... Kildekode til MergeSort.java...
Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed
Algoritmisk geometri Intervalsøgning 1 2 Motivation for intervaltræer Intervalsøgning Lad der være givet en database over ansatte i en virksomhed Ansat Alder Løn Ansættelsesdato post i databasen Vi kan
Danmarks Tekniske Universitet
Eksamen 005, F side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed:
Grafer og graf-gennemløb
Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Figur: Terminologi: n = V, m = E (eller V og E (mis)bruges som V og E ).
Danmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne: Opgave
02105 Eksamensnoter. Lasse Herskind S maj Sortering 3
02105 Eksamensnoter Lasse Herskind S153746 12. maj 2017 Indhold 1 Sortering 3 2 Analyse af algoritme 4 2.1 Køretid.......................................... 4 2.2 Pladsforbrug.......................................
Sortering. Sortering ved fletning (merge-sort) Del-og-hersk. Merge-sort
Sortering Sortering ved fletning (merge-sort) 7 2 9 4! 2 4 7 9 7 2! 2 7 9 4! 4 9 7! 7 2! 2 9! 9 4! 4 1 2 Del-og-hersk Merge-sort Del-og-hersk er et generelt paradigme til algoritmedesign Del: opdel input-data
Algoritmer og invarianter
Algoritmer og invarianter Iterative algoritmer Algoritmen er overordnet set een eller flere while eller for-løkker. Iterative algoritmer Algoritmen er overordnet set een eller flere while eller for-løkker.
Danmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning
Dynamisk programmering. Flere eksempler
Dynamisk programmering Flere eksempler Eksempel 1: Længste fælles delstreng Alfabet = mængde af tegn: {a,b,c,...,z}, {A,C,G,T}, {,1} Eksempel 1: Længste fælles delstreng Alfabet = mængde af tegn: {a,b,c,...,z},
Danmarks Tekniske Universitet
side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer Kursus nr. 02326. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne:
Dynamisk programmering. Flere eksempler
Dynamisk programmering Flere eksempler Eksempel 1: Længste fælles delstreng Alfabet = mængde af tegn: {a,b,c,...,z}, {A,C,G,T}, {,1} Streng = sekvens x 1 x 2 x 3... x n af tegn fra et alfabet: helloworld
Induktive og rekursive definitioner
Induktive og rekursive definitioner Denne note omhandler matematiske objekter, som formelt er opbygget fra et antal basale byggesten, kaldet basistilfælde eller blot basis, ved gentagen brug af et antal
Skriftlig Eksamen DM507 Algoritmer og Datastrukturer
Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 6. juni 2016, kl. 15:00 19:00 Besvarelsen skal afleveres elektronisk. Se
Sammenhængskomponenter i grafer
Sammenhængskomponenter i grafer Ækvivalensrelationer Repetition: En relation R på en mængde S er en delmængde af S S. Når (x, y) R siges x at stå i relation til y. Ofte skrives x y, og relationen selv
28 Algoritmedesign. Noter. PS1 -- Algoritmedesign
28 Algoritmedesign. Algoritmeskabelon for Del og Hersk. Eksempler på Del og Hersk algoritmer. Binær søgning i et ordnet array. Sortering ved fletning og Quicksort. Maksimal delsums problem. Tætteste par
1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer
1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer på disse. Typer af lister: Array Enkelt linket liste Dobbelt linket Cirkulære lister Typer af køer: FILO FIFO
Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer.
Merging og Hashing Tilgang til data To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer. API for sekventiel tilgang (API =
Danmarks Tekniske Universitet
Eksamen 0205, Forår 205 side af 5 Danmarks Tekniske Universitet Skriftlig prøve, den 22. maj 205. Kursusnavn: Algoritmer og datastrukturer Kursusnummer: 0205 Hjælpemidler: Skriftlige hjælpemidler. Det
Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)
Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 7. juni 00, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo
Philip Bille Nærmeste naboer. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle key[] og satellitdata data[]. operationer. PREDECESSOR(k): returner element med største nøgle k.
Skriftlig Eksamen DM507 Algoritmer og Datastrukturer
Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Tirsdag den 24. juni 2014, kl. 10:00 14:00 Besvarelsen skal afleveres elektronisk. Se
Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo
Philip Bille er. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle x.key og satellitdata x.data. operationer. PREDECESSOR(k): returner element x med største nøgle k. SUCCESSOR(k):
Grådige algoritmer. Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.
Grådige algoritmer Grådige algoritmer Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.
Rekursion C#-version
Note til Programmeringsteknologi Akademiuddannn i Informationsteknologi Rekursion C#-version Finn Nordbjerg 1 Rekursion Rekursionsbegrebet bygger på, at man beskriver noget ved "sig selv". Fx. kan tallet
Introduktion Til Konkurrenceprogrammering
Introduktion Til Konkurrenceprogrammering Søren Dahlgaard og Mathias Bæk Tejs Knudsen {soerend,knudsen}@di.ku.dk Version 0.1 Indhold Indhold i Introduktion 1 1 Palindromer 3 1.1 Introduktion til Python...............
Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomiel tid
6 april Løsning af N P -hårde problemer Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomiel tid Oversigt Grænseværdier (repetition) Branch-and-bound algoritmens komponenter Eksempler
Introduktion. Introduktion. Algoritmer og datastrukturer. Eksempel: Maksimalt tal
Philip Bille Algoritmer og datastrukturer Algoritmisk problem. Præcist defineret relation mellem input og output. Algoritme. Metode til at løse et algoritmisk problem. Beskrevet i diskrete og entydige
Introduktion. Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3. Philip Bille
Introduktion Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3 Philip Bille Introduktion Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3 Algoritmer
22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned.
22 Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned. Indsættelse i hobe. Sletning af minimalt element i hobe. Repræsentation. 327
Danmarks Tekniske Universitet
Eksamen 02105, F14 side 1 af 14 Danmarks Tekniske Universitet Skriftlig prøve, den 22. maj 2014. Kursusnavn: Algoritmer og datastrukturer 1 Kursusnummer: 02105 Hjælpemidler: Skriftlige hjælpemidler. Det
