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

Relaterede dokumenter
Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden

Sortering af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave.

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

Algoritmer og invarianter

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

Sortering i lineær tid

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

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

Datastrukturer (recap)

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

Datastrukturer (recap)

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

DM507 Algoritmer og datastrukturer

Datastrukturer (recap) Datastruktur = data + operationer herpå

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

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 7 n 1 7 7/n. 7nlogn. 7n 7nlogn n7

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

Sammenhængskomponenter i grafer

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

Opgave 1 (10%) I det følgende angiver log n 2-tals-logaritmen af n. Ja Nej. n+3n er O(2n)? n 6 er O(n 5 )? nlogn er O(n 2 /logn)? 4n 3 er O(3n 4 )?

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

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.

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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

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

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

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

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

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

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

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

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:

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

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

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

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: (logn) 2 2 n 1/n (logn) n. n 2

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

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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

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)

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

22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned.

Danmarks Tekniske Universitet

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

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

DM507 Algoritmer og datastrukturer

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet

Mm6: More sorting algorithms: Heap sort and quick sort - October 29, 2008

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

DM507 Algoritmer og datastrukturer

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

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

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

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Bevisteknikker. Bevisteknikker (relevant både ved design og verifikation) Matematisk induktion. Matematisk induktion uformel beskrivelse

Danmarks Tekniske Universitet

DM507 Algoritmer og datastrukturer

Danmarks Tekniske Universitet

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

Grafer og graf-gennemløb

Grafer og graf-gennemløb

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET

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

BRP Sortering og søgning. Hægtede lister

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

DM507 Algoritmer og datastrukturer

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Danmarks Tekniske Universitet

Divide-and-Conquer algoritmer

Bevisteknikker (relevant både ved design og verifikation)

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Danmarks Tekniske Universitet

Vejledende løsninger

Søgning og Sortering. Søgning og Sortering. Søgning. Linæer søgning

Danmarks Tekniske Universitet

DM13-1. Obligatorisk opgave E.05. Jacob Aae Mikkelsen

Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed

Algoritmisk geometri

Analyse af ombytningspuslespil

DM02 Kogt ned. Kokken. Januar 2006

Grafer og graf-gennemløb

Analyse af ombytningspuslespil

Danmarks Tekniske Universitet

Rolf Fagerberg. Forår 2013

Transkript:

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

Invariant: Et forhold, som vedligeholdes af algoritmen gennem (dele af) dens udførelse. Udgør ofte kernen af ideen bag algoritmen. Eksempel: Insertionsort: Invariant: Alt til venstre for det sorte felt er sorteret.

Invariant: Et forhold, som vedligeholdes af algoritmen gennem (dele af) dens udførelse. Udgør ofte kernen af ideen bag algoritmen. Eksempel: Insertionsort: Invariant: Alt til venstre for det sorte felt er sorteret. Eksempel: Partition fra Quicksort: Invariant: Lysegrå del x < mørkegrå del.

Eksempel: Build-Heap: Invariant: Undertræer, hvis rod har indeks større end den mørke knude, overholder heaporder.

Eksempel: Heapsort (og enhver Selectionsort-baseret sortering): Invariant: Det mørke er sorteret, og alt i det lyse er det mørke.

Eksempler fra søgetræer: Invariant under søgning: Hvis søgte element findes, er det i det undertræ, vi er kommet til. Invariant under rebalancering efter indsættelse i et rød-sort træ: Der kan være to røde knuder i træk på en rod-blad sti højst ét sted i træet, men bortset herfra er de rød-sorte krav overholdt. Invariant under rebalancering efter sletning i et rød-sort træ: Der kan være én sværtet knude et sted i træet, og hvis sværtningen tælles med, er de rød-sorte krav overholdt.

, mere formelt Invariant for algoritme: et udsagn om indholdet af hukommelsen (variable, arrays,... ) som: Er sandt efter alle skridt. Ved algoritmens afslutning kan korrekthed af output udledes af udsagnet (samt de omstændigheder som fik algoritmen til at stoppe). I praksis ofte én invariant for én samling skridt (f.eks. 0 eller flere gennemløb af en while eller for løkke). En anden invariant kan så om nødvendigt bruges for næste samling skridt af algoritmen.

Induktion At en invariant gælder efter alle skridt vises ved hjælp af induktion: 1) Invariant overholdt i starten 2) Invariant overholdt før et skridt overholdt efter Invariant altid overholdt (hvor skridt ofte er en iteration af en løkke). Dvs: Vis 1) og 2).

Induktion At en invariant gælder efter alle skridt vises ved hjælp af induktion: 1) Invariant overholdt i starten 2) Invariant overholdt før et skridt overholdt efter Invariant altid overholdt (hvor skridt ofte er en iteration af en løkke). Dvs: Vis 1) og 2). Induktion Dominoprincippet : 1) Brik 1 falder 2) Brik k falder brik k + 1 falder Alle brikker falder

Brug af invarianter kan bruges på to forskellige detalje-niveauer (med en glidende overgang imellem dem): 1. Som værktøj til at udvikle algoritme-ideer: Med den rette invariant fanges essensen af metoden, og algoritmen skal blot skrives ud fra at denne invariant skal vedligeholdes. 2. Som værktøj til at nedskrive kode (eller detaljeret pseudo-kode) og vise den konkrete kode korrekt. I første anvendelse er blødere beskrivelser (tekst, figur) passende, jvf. eksemplerne tidligere. I anden anvendelse må man nedskrive invarianten præcist i termer af konkrete variable fra koden, samt argumentere via den konkrete kodes ændringer af disse. Eksemplet nedenfor med af finde største element i et array illustrerer dette.

Eksempel Find største element i array: max = A[0] i = 1 while i < A.length if A[i] > max max = A[i] i++ Invariant S(k): Efter den k te iteration af while-løkken indeholder max den største værdi af A[0..(i 1)].

Eksempel Find største element i array: max = A[0] i = 1 while i < A.length if A[i] > max max = A[i] i++ Invariant S(k): Efter den k te iteration af while-løkken indeholder max den største værdi af A[0..(i 1)]. 1 i 2 i 3 i 4 i 5 i 6 i 5 max 12 max 12 max 15 max 15 max 15 max 5 0 5 5 5 5 5 5 12 1 12 12 12 12 12 12 9 2 9 9 9 9 9 9 15 3 15 15 15 15 15 15 4 4 4 4 4 4 4 4 1 5 1 1 1 1 1 1 0 1 2 3 4 5 Iterationer af while-løkke