Induktive og rekursive definitioner

Størrelse: px
Starte visningen fra side:

Download "Induktive og rekursive definitioner"

Transkript

1 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 regler. Vi starter med nogle eksempler: Sandhedsværdierne er opbygget fra de to basistilfælde TRUE og FALSE uden brug af regler. Derfor er der kun to sandhedsværdier, nemlig TRUE og FALSE selv. De skrives ofte også true og false. De naturlige tal er opbygget fra basis ZERO ved brug af én regel: hvis n er et naturligt tal, så ersucc(n) det også. De naturlige tal ser derfor således ud: ZERO SUCC(ZERO) SUCC(SUCC(ZERO)) SUCC(SUCC(SUCC(ZERO))) (1) SUCC(SUCC(SUCC(SUCC(ZERO)))). Standard-notationen er velkendt: ZERO skrives 0 og SUCC(n) skrives 1 + n, ligesom vi normalt bruger decimal notation for hvert af tallene. SUCC(SUCC(SUCC(ZERO))) skrives f.eks. 3. Sekvenser over en mængde A er opbygget fra basis NIL, den tomme sekvens, ved brug af én regel: hvis a A, ogser en sekvens over A, såercons(a, s), dvs. a efterfulgt af s, også en sekvens over A. Hvis A={a, b} ser sekvenserne over A således ud: NIL CONS(a, NIL) CONS(b, NIL) CONS(a, CONS(a, NIL)) CONS(a, CONS(b, NIL)) CONS(b, CONS(a, NIL)) CONS(b, CONS(b, NIL)) CONS(a, CONS(a, CONS(a, NIL))) CONS(a, CONS(a, CONS(b, NIL))). For den tomme sekvens bruges også notationen Λ (stort lambda), λ (lille lambda) eller ɛ (epsilon) kært barn har mange navne. Sekvensen CONS(a, s) skrives normalt blot as. Den sidste sekvens ovenfor skrives normalt aab, idet også det afsluttende NIL udelades. 1 (2)

2 Binære træer er opbygget fra basis EMPTY, det tomme træ, ved brug af én regel: hvis t 1 og t 2 er binære træer, så ernode(t 1,t 2 ) det også. Dette træ består af en knude, kaldet roden, oghart 1 som venstre undertræ og t 2 som højre undertræ. Normalt beskrives binære træer med figurer så som EMPTY NODE(t 1,t 2 ) t1 t2 Det binære træ NODE(EMPTY, NODE(EMPTY, EMPTY)) afbildes som på figuren forneden til venstre. Det større træ til højre på figuren skrives formelt NODE(NODE(NODE(EMPTY, EMPTY), NODE(NODE(EMPTY, EMPTY), NODE(EMPTY, EMPTY))), NODE(NODE(EMPTY, EMPTY), NODE(EMPTY, NODE(EMPTY, EMPTY)))) (3) Bemærk, hvorledes de 10 forekomster af NODE svarer til de 10 hvide cirkler i figuren, mens de 11 forekomster af EMPTY svarer til de 11 sorte firkanter. 2

3 Sandhedsværdier I programmeringssproget SML kan sandhedsværdierne defineres som følger: datatype bool = TRUE FALSE (4) Datatypen bool har nu to værdier og svarer til mængden B = {true, false}. I SML kan datatypen bruges til at definere de logiske operationer: fun Not(TRUE) =FALSE Not(FALSE)=TRUE fun Or(TRUE, TRUE) =TRUE Or(TRUE, FALSE)=TRUE Or(FALSE, TRUE) =TRUE Or(FALSE, FALSE)=FALSE (5) Dette ligner jo til forveksling sandhedstabellerne fra Martin. SML svarer: val Not = fn : bool bool val Or = fn : bool bool bool (6) Dvs. Not er en funktion bool bool,mensor er en funktion bool bool bool. Som en sidebemærkning kan vi notere os at funktionen Or kan defineres mere kortfattet således: fun Or(TRUE,b)=TRUE Or(FALSE,b)=b (7) I denne definition splittes der kun op i de to tilfælde, som første argument giver anledning til. Som vi vil se nedenfor er denne form typisk. Opgave 1 Definer operationerne And ( ) og Implies ( ). Begge skal være funktioner af samme type som Or. Afprøv funktionerne, f.eks. ved at udføre kaldet Implies(FALSE, FALSE);. 3

4 Naturlige tal De naturlige tal defineres i SML som følger: datatype nat = ZERO SUCC of nat (8) Datatypen nat omfatter nu værdien ZERO og alle værdier på formen SUCCessor of a nat, dvs. SUCC(ZERO), SUCC(SUCC(ZERO)), osv. Dermed svarer værdierne i nat til mængden N af naturlige tal. Opgave 2 Definer funktionen Iszero : nat bool, der returnerer TRUE på input ZERO og FALSE på input, der ikke er ZERO. Afprøv definitionen. Vi definerer fordobling således: fun Double(ZERO) =ZERO (9) Double(SUCC(n)) = SUCC(SUCC(Double(n))) Dette skal forstås som følger: Vi vil gerne fordoble et naturligt tal. Hvis vores naturlige tal er 0, bliver resultatet 0. Hvis vores naturlige tal er efterfølger til tallet n, altså1+n, bliver resultatet efterfølgeren til efterfølgeren til det dobbelte af n, altså2 + 2 n. Med almindelig matematisk notation ville definitionen se således ud: Double(0) = 0 (10) Double(1 + n) =2+(Double(n)) Bemærk at funktionen Double : N N, som vi er ved at definere, forekommer igen ( it recurs ) på højre-siden af lighedstegnet. Derfor kaldes definitionen rekursiv. Her skal man naturligvis være varsom. Ikke alle rekursive forskrifter som den ovenfor giver anledning til veldefinerede funktioner. Det er afgørende, at (i) Funktionen defineres direkte, dvs. uden rekursive kald, på basis(her: ZERO eller 0). (ii) Når funktionen defineres på en værdi, der er opstået ved brug af en regel (her: SUCC(n) for n af type nat eller 1 + n for n N), så sker eventuelle rekursive kald på n. Dette sikrer, at rekursionen i hvert trin nærmer sig basis, hvor den stopper pga. punkt (i). F.eks. kaldes Double rekursivt på værdien 2, så på1ogtilsidstpå 0 under udregning af at Double(3) = 6. For datatypen ser beregningen sådan ud: Double(SUCC(SUCC(SUCC(ZERO)))) = SUCC(SUCC(Double(SUCC(SUCC(ZERO))))) = SUCC(SUCC(SUCC(SUCC(Double(SUCC(ZERO)))))) = SUCC(SUCC(SUCC(SUCC(SUCC(SUCC(Double(ZERO))))))) = SUCC(SUCC(SUCC(SUCC(SUCC(SUCC(ZERO)))))) 4

5 Sammenlign med hvad der sker, hvis vi forsøger at definere Double som følger Double(0) = 0 Double(1 + n) =Double(1 + n) (11) Disse ligninger er også sande, men som en definition går det ikke: Opgave 3 Skriv den tilsvarende definition i SML og prøv at udføre kaldet Double(SUCC(SUCC(SUCC(ZERO)))); (12) Hvad sker der og hvorfor? Ret definitionen til den korrekte (9) og afprøv den. Operationer som addition og multiplikation kan defineres på samme måde som Or (jf. (7)): fun Add (ZERO,m)=m Add (SUCC(n), m)=succ(add (n, m)) fun Mult(ZERO,m)=ZERO Mult(SUCC(n), m)=add (m, Mult(n, m)) (13) Vi siger, at Add og Mult er definerede rekursivt på første argument, fordi vi splitter op i to tilfælde alt efter formen på første argument. Opgave 4 Definer fakultetsfunktionen Fac rekursivt, således at Fac(n) = n!. Afprøv definitionen. Opgave 5 Definer potensopløftning Pow rekursivt på andet argument, således at Pow(m, n) =m n. Afprøv definitionen. Opgave 6 Definer funktionen Equal : nat nat bool,derpå input (n, m) returnerer TRUE præcis hvis m og n er det samme tal. Hint: brug rekursion på begge argumenter. Afprøv definitionen. Opgave 7 Betragt definitionen af de såkaldte Fibonacci-tal: Fib(0) = 1 Fib(1) = 1 Fib(2 + n) =Fib(1 + n)+fib(n) (14) Giv en tilsvarende definition i SML. Kontroller at Fib(6) = 13. 5

6 Sekvenser Sekvenser af naturlige tal kan i SML defineres som følger: datatype seq = NIL CONS of nat seq (15) Datatypen seq omfatter nu værdien NIL og alle værdier der er CONS-tructed from a nat and a seq, f.eks: CONS(ZERO, NIL) og CONS(ZERO, CONS(ZERO, NIL)). (16) Dermed svarer værdierne i seq til mængden N af sekvenser af naturlige tal. Vi definerer længde og sammensætning som følger: fun Length(NIL) =ZERO Length(CONS(n, s)) = SUCC(Length(s)) fun Concat(NIL,s )=s Concat(CONS(n, s),s )=CONS(n, Concat(s, s )) (17) Opgave 8 Definer funktionen Sum : seq nat rekursivt, således at Sum(s) returnerer summen af tallene i s. Afprøv definitionen. Opgave 9 Definer funktionen Rev rekursivt, således at Rev (s) returnerer sekvensen s vendt om (reverseret). Afprøv definitionen. Opgave 10 Definer funktionen Contains : nat seq bool rekursivt på andet argument. Funktionen skal på input (n, s) returnere TRUE præcis hvis s indeholder n. Afprøv definitionen. Opgave 11 Definer funktionen Prefix : seq seq bool rekursivt på begge argumenter. Funktionen skal på input (s, s ) returnere TRUE præcis hvis s er et præfiks af s. Afprøv definitionen. Opgave 12 Definer funktionen SeqEqual : seq seq bool,der på input (s, s ) returnerer TRUE præcis hvis s og s er den samme sekvens. Afprøv definitionen. Opgave 13 Definer en datatype bseq svarende til mængden B af sekvenser af sandhedsværdier. Definer også funktionerne SeqOr : bseq bool og SeqAnd : bseq bool. Argumenter for værdien af disse to funktioner på den tomme sekvens af sandhedsværdier. 6

7 Binære træer Binære træer kan i SML defineres som følger: datatype tree = EMPTY NODE of tree tree (18) Værdierne af typen tree svarer til mængden af binære træer. Da reglen for konstruktion af det binære træ NODE(t 1,t 2 ) fra de binære træer t 1 og t 2 involverer to mindre værdier i stedet for kun en som hidtil, vil rekursive funktioner på binære træer normalt involvere to rekursive kald. Vi definerer størrelse og spejlvending som følger: fun Size(EMPTY) =ZERO Size(NODE(t 1,t 2 )) = SUCC(Add (Size(t 1 ), Size(t 2 ))) (19) fun Mirror(EMPTY) =EMPTY Mirror(NODE(t 1,t 2 )) = NODE(Mirror(t 2 ), Mirror(t 1 )) Opgave 14 Betragt definitionen af højden af et binært træ: Height(EMPTY) =0 (20) Height(NODE(t 1,t 2 )) = 1 + Max(Height(t 1 ), Height(t 2 )) Giv en tilsvarende definition i SML. Du får brug for at definere operationen Max på naturlige tal. Binære træer bliver mere interessante, hvis deres knuder indeholder information. Vi vil derfor ændre vores definition af binære træer, så defår naturlige tal i knuderne: datatype tree = EMPTY NODE of tree nat tree (21) Opgave 15 Ret i definitionerne af Size, Mirror og Height så de passer til den nye version af tree. Opgave 16 Definer funktionen TreeSum : tree nat således at TreeSum(t) returnerer summen af tallene i t. Afprøv definitionen. Opgave 17 Definer funktionen TreeContains : nat tree bool sådenpå input (n, t) returnerer TRUE præcis hvis t indeholder n. Afprøv definitionen. Opgave 18 Definer funktionen Flatten : tree seq, der returnerer en sekvens indeholdende de naturlige tal, der forekommer i t. Hvordan skal din definition ændres for at opnå forskellige rækkefølger af tallene i t? (Hint/udfordring: der er 6 naturlige rækkefølger). Opgave 19 Skriv en funktion TreeAdd : nat tree tree der på input (n, t) returnerer træet, der opnås ved at lægge n til tallene i alle t s knuder. 7

8 Udtryk Udsagnslogiske udtryk kan i SML defineres som datatypen datatype prop = BOOL of bool NOT of prop OR of prop prop AND of prop prop IMPLIES of prop prop (22) Vi kan beregne sandhedsværdien af et udsagnslogisk udtryk med funktionen Value : prop bool. Denne funktion defineres ved hjælp af vores operationer på sandhedsværdier: fun Value(BOOL(b)) = b Value(NOT(p)) = Not(Value(p)) Value(OR(p, q)) = Or(Value(p), Value(q)) Value(AND(p, q)) = And(Value(p), Value(q)) Value(IMPLIES(p, q)) = Implies(Value(p), Value(q)) (23) Opgave 20 Definer en funktion RemoveImp : prop prop, der omskriver et logisk udtryk vha. ækvivalensen p q p q sådan at resultatet bliver et logisk udtryk uden implikation. Kontroller at funktionen på input (false false) false returnerer udtrykket ( false false) false. Opgave 21 Definer en datatype, der beskriver aritmetiske udtryk over naturlige tal, fordobling, addition og multiplikation. Definer også en rekursiv funktion, der beregner værdien af et aritmetisk udtryk. 8

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

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

Læs mere

Sortering. Eksempel: De n tal i sorteret orden

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

Læs mere

Sortering. Eksempel: 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

Læs mere

Divide-and-Conquer algoritmer

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

Læs mere

Divide-and-Conquer algoritmer

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

Læs mere

Divide-and-Conquer algoritmer

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

Læs mere

Divide-and-Conquer algoritmer

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

Læs mere

Baggrundsnote om logiske operatorer

Baggrundsnote om logiske operatorer Baggrundsnote om logiske operatorer Man kan regne på udsagn ligesom man kan regne på tal. Regneoperationerne kaldes da logiske operatorer. De tre vigtigste logiske operatorer er NOT, AND og. Den første

Læs mere

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

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):

Læs mere

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

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.

Læs mere

Om binære søgetræer i Java

Om binære søgetræer i Java Om binære søgetræer i Java Mads Rosendahl 7. november 2002 Resumé En fix måde at gemme data på er i en træstruktur. Måden er nyttig hvis man får noget data ind og man gerne vil have at det gemt i en sorteret

Læs mere

Danmarks Tekniske Universitet

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

Læs mere

3 Algebraisk Specifikation af Abstrakte Datatyper.

3 Algebraisk Specifikation af Abstrakte Datatyper. 3 Algebraisk Specifikation af Abstrakte Datatyper. Specifikation kontra program. Bestanddele af en algebraisk specifikation. Klassificering af funktioner i en ADT. Systematisk definition af ligninger.

Læs mere

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

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.

Læs mere

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. 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

Læs mere

Danmarks Tekniske Universitet

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:

Læs mere

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

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

Læs mere

Rekursion C#-version

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

Læs mere

Danmarks Tekniske Universitet

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

Læs mere

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

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

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Tirsdag den 27. maj 2003, kl. 9.00 3.00 Opgave (25%) For konstanten π = 3.4592... gælder identiteten π 2 6 =

Læs mere

Dynamisk programmering

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

Læs mere

Danmarks Tekniske Universitet

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

Læs mere

Programmering og Problemløsning, 2017

Programmering og Problemløsning, 2017 Programmering og Problemløsning, 2017 Martin Elsman Department of Computer Science University of Copenhagen DIKU September 27, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017 September

Læs mere

Danmarks Tekniske Universitet

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:

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Mandag den 27. maj 2002, kl. 9.00 13.00 Opgave 1 (25%) Denne opgave handler om multiplikation af positive heltal.

Læs mere

t a l e n t c a m p d k Matematiske Metoder Anders Friis Anne Ryelund 25. oktober 2014 Slide 1/42

t a l e n t c a m p d k Matematiske Metoder Anders Friis Anne Ryelund 25. oktober 2014 Slide 1/42 Slide 1/42 Hvad er matematik? 1) Den matematiske metode 2) Hvad vil det sige at bevise noget? 3) Hvor begynder det hele? 4) Hvordan vælger man et sæt aksiomer? Slide 2/42 Indhold 1 2 3 4 Slide 3/42 Mængder

Læs mere

Danmarks Tekniske Universitet

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

Læs mere

Danmarks Tekniske Universitet

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

Læs mere

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

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

Læs mere

Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012

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

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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.)

Læs mere

Dynamisk programmering

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

Læs mere

Elementær Matematik. Mængder og udsagn

Elementær Matematik. Mængder og udsagn Elementær Matematik Mængder og udsagn Ole Witt-Hansen 2011 Indhold 1. Mængder...1 1.1 Intervaller...4 2. Matematisk Logik. Udsagnslogik...5 3. Åbne udsagn...9 Mængder og Udsagn 1 1. Mængder En mængde er

Læs mere

Omskrivningsregler. Frank Nasser. 10. december 2011

Omskrivningsregler. Frank Nasser. 10. december 2011 Omskrivningsregler Frank Nasser 10. december 2011 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Indhold 1 Introduktion

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Sommer 1999 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 15% Opgave 2 15% Opgave 3 8% Opgave

Læs mere

Mandags Chancen. En optimal spilstrategi. Erik Vestergaard

Mandags Chancen. En optimal spilstrategi. Erik Vestergaard Mandags Chancen En optimal spilstrategi Erik Vestergaard Spilleregler denne note skal vi studere en optimal spilstrategi i det spil, som i fjernsynet går under navnet Mandags Chancen. Spillets regler er

Læs mere

Programmering og Problemløsning, 2017

Programmering og Problemløsning, 2017 Programmering og Problemløsning, 2017 Typer og Mønstergenkendelse Martin Elsman Datalogisk Institut Københavns Universitet DIKU 23. Oktober, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017

Læs mere

Dynamisk programmering. Flere eksempler

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},

Læs mere

Algoritmer og invarianter

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.

Læs mere

Dynamisk programmering. Flere eksempler

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

Læs mere

ALMINDELIGT ANVENDTE FUNKTIONER

ALMINDELIGT ANVENDTE FUNKTIONER ALMINDELIGT ANVENDTE FUNKTIONER I dette kapitel gennemgås de almindelige regnefunktioner, samt en række af de mest nødvendige redigerings- og formateringsfunktioner. De øvrige redigerings- og formateringsfunktioner

Læs mere

Grundlæggende køretidsanalyse af algoritmer

Grundlæggende køretidsanalyse af algoritmer Grundlæggende køretidsanalyse af algoritmer Algoritmers effektivitet Størrelse af inddata Forskellige mål for køretid Store -notationen Klassiske effektivitetsklasser Martin Zachariasen DIKU 1 Algoritmers

Læs mere

Programmering for begyndere Lektion 2. Opsamling mm

Programmering for begyndere Lektion 2. Opsamling mm Lektion 2 Opsamling mm God tone Der er indlagt spørge sessioner Lektion 2 - Agenda Programmering for Lidt ændringer til teknikken, herunder hvordan du genser en lektion Lidt generelle tilbagemeldinger

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2

Læs mere

Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er

Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er en unik simpel vej mellem ethvert par af punkter i

Læs mere

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

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte

Læs mere

Boolsk algebra For IT studerende

Boolsk algebra For IT studerende Boolsk algebra For IT studerende Henrik Kressner Indholdsfortegnelse 1 Indledning...2 2 Logiske kredsløb...3 Eksempel:...3 Operatorer...4 NOT operatoren...4 AND operatoren...5 OR operatoren...6 XOR operatoren...7

Læs mere

DM13-1. Obligatoriske Opgave - Kredsløbs design

DM13-1. Obligatoriske Opgave - Kredsløbs design DM13-1. Obligatoriske Opgave - Kredsløbs design Jacob Christiansen [email protected] Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense 1. Opgaven Opgaven består i at designe et kredsløb,

Læs mere

Indhold. Kontrol af resultater, skrivemåder osv.

Indhold. Kontrol af resultater, skrivemåder osv. Indhold Kontrol af resultater, skrivemåder osv.... 1 Om materialer:... 2 Om opgaverne... 2 1.0 Om regningsarternes hierarki og talforståelse... Opgave 1.1... 4 Opgave 1.2... 4 Opgave 1.... 4 R1 Kortfattet

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

Søgning og Sortering. Philip Bille

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

Læs mere

Boolsk algebra For IT studerende

Boolsk algebra For IT studerende Boolsk algebra For IT studerende Henrik Kressner Indholdsfortegnelse Indledning...3 Logiske kredsløb...4 Eksempel:...4 Operatorer...4 NOT operatoren...5 AND operatoren...5 OR operatoren...6 XOR operatoren...7

Læs mere

Bits, bit operationer, integers og floating point

Bits, bit operationer, integers og floating point Denne guide er oprindeligt udgivet på Eksperten.dk Bits, bit operationer, integers og floating point Denne artikel beskriver hvordan data gemmes som bits og hvordan man kan manipulere med bits. Den forudsætter

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

Sammenhængskomponenter i grafer

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

Læs mere

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

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]

Læs mere

Noter til C# Programmering Selektion

Noter til C# Programmering Selektion Noter til C# Programmering Selektion Sætninger Alle sætninger i C# slutter med et semikolon. En sætning kontrollerer sekvensen i programafviklingen, evaluerer et udtryk eller gør ingenting Blanktegn Mellemrum,

Læs mere

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

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen Programmering Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen Oversigt Undervisningen Hvad er programmering Hvordan er et program organiseret? Programmering og fysik Nobelprisen

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet Eksamen 005, F09 side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 009. Kursusnavn Algoritmik og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler.

Læs mere

Grundlæggende Matematik

Grundlæggende Matematik Grundlæggende Matematik Hayati Balo, AAMS August 2012 1. Matematiske symboler For at udtrykke de verbale udsagn matematisk korrekt, så det bliver lettere og hurtigere at skrive, indføres en række matematiske

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2017 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 6. april, 2017 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere