Sortering. Her: sortering af arrays af objekter

Størrelse: px
Starte visningen fra side:

Download "Sortering. Her: sortering af arrays af objekter"

Transkript

1 Datalogi C Forelæsning 19/ MED RETTELSE s. 16 Henning Christiansen Sortering Her: sortering af arrays af objekter Hvorfor beskæftige sig med sortering? Væsentligt til effektiv implementation af metoder på samlinger af objekter o Søgning, jvf. binær søgning o Sammenligning o... Præsentation af store mænger output o søgesresultater efter prioritet o postsystem, efter data, alfabetisk afsender, emne, længde,... Et af de ældste og bedst undersøgte områder i datalogien Et lærestykke i algoritmekonstruktion & -analyse Indhold Insertionsort, sortering ved indsættelse o m. kompleksitetsanalyse Shellsort interessant optimering af Insertionsort Mergesort eksempel på del-og-hersk m. stort lagerforbrug Quicksort del-og-hersk o sorteringsalgoritmen o eksempel på meget elegant algoritme (1)

2 Insertionsort; sortering ved indsættelse Simpel, effektiv for små datasæt, god introduktion til emnet Princippet: Som du sorterer en håndfuld spillekort Billede midtvejs: sorteret del usorteret del ^ 3 5<--> ^ Næste skridt: ^ 3 5<--> ^ At skrive det som generisk algoritme i Java: anvender på objekter som er underklasse af Comparable datastrukturen er arrays, dvs. o man kan ikke møve sig til plads, o elementerne må flyttes enkeltvis o der er ikke globalt overblik (som kortspilleren tror at have) (2)

3 Hvordan var det nu med de der Comparable?? package java.lang; public interface Comparable{ int CompareTo(Object other); } Konvention x.compareto(y) < 0 x.compareto(y) = 0 x.compareto(y) > 0 repræsenterer intuitivt x < y x = y x > y Nu koder vi lige ud af landevejen: public static void insertionsort( Comparable [ ] a ) { for( int p = 1; p < a.length; p++ ) { Comparable tmp = a[ p ]; int j = p; } for( ; j > 0 && tmp.compareto( a[ j - 1 ] ) < 0; j-- ) a[ j ] = a[ j - 1 ]; a[ j ] = tmp; Teknikken: Flytning af elementer og sammenligninger for at finde ny plads slået sammen, så tom plads til nyt element ruller nedefter. Tidsforbrug: værste = gennemsnit = O(n 2 ) bedste = O(n) (når sorteret i forvejen) (3)

4 Nu kan vi sortere lystigt derudaf: class RumskibFraMars implements Comparable{ [»ŒÂ Œ ; int CompareTo(Object other); { Ÿ fi &\ # \ } } marsflåde = new RumskibFraMars [];... insertionsort(marsflåde); minlisteaftalceller = new Integer [];... minlisteaftalceller[17] = 534; insertionsort(listeaftalceller) Men... minlisteaftal = new int [];... insertionsort(minlisteaftal); TYPEFEJL INGEN METODE insertionsort( int [] ) For effektiv repræsentation og sortering af arrays af tal er vi nødt til at skrive en ny: public static void insertionsort( int [ ] a ) {for( int p = 1; p < a.length; p++ ) { Comparable tmp = a[ p ]; int j = p; for( ; j > 0 && tmp < a[ j - 1 ] ) < 0; j-- ) a[ j ] = a[ j - 1 ]; a[ j ] = tmp; } og også public static void insertionsort( byte [ ] a ) {...}; public static void insertionsort( short [ ] a ) {...}; public static void insertionsort( long [ ] a ) {...};... og for hver af de 4 øvrige primitive typer Se selv tilsvarende eksempler i Java API... (suk) (4)

5 Shellsort: Optimering af insertionsort vha. insertionsort Tidsforbrug for insertionsort værste = gennemsnit = O(n 2 ) bedste = O(n) (når sorteret i forvejen) Generelt: O(n) for næsten sorterede arrays. Tricket i Shellsort: Sorterer du delarrays bestående af hvert h te element, bliver arrayet lidt tættere på næsten-sorteret (h et eller anden tal). Eksempel h = Betragt som 4 sammenvævede delarrays: Sortér hver af disse indbyrdes insertionsort (hvor +1 erstattes af +4 og -1 af -4 ): Sortering med h = 3 må forventes at gå lidt hurtigere end O(n 2 ) Observation: h=1, så er vi tilbage ved insertionsort Shellsort: udføre en række insertionsort-eringer med h er h t > h t-1 > h t-2 >... > h 2 > h 1 = 1 (5)

6 Varianter over Shellsort = forskellige sekvenser af h er: Forskellige strategier: worst case gennemsnit /2 O(n 2 ) O(n 3/2 ) = O(n 1,5 ) /2 og +1 hvis lige O(n 3/2 ) = O(n 1.5 )??O(n 5/4 ) = O(n 1.25 ) /2.2??O(n 7/6 ) = O(n 1.17 ) Ifølge vor bog :) (6)

7 Shellsort stammer fra 1959, men tidskompleksitet stadig mål for ny forskning: Search Title Keyword: shellsort Submit Reset DBLP: [Home Search: Author, Title Conferences Journals] Resultat: Robert S. Roos, Tiffany Bennett, Jennifer Hannon, Elizabeth Zehner: A Genetic Algorithm For Improved Shellsort Sequences. GECCO 2002: 694 Bronislava Brejová: Analyzing variants of Shellsort. Information Processing Letters 79(5): (2001) Marcin Ciura: Best Increments for the Average Case of Shellsort. FCT 2001: Tao Jiang, Ming Li, Paul M. B. Vitányi: A lower bound on the average-case complexity of shellsort. JACM 47(5): (2000) Svante Janson, Donald E. Knuth: Shellsort with three increments. Random Structures and Algorithms 10(1-2): (1997) Renren Liu: An Improved Shellsort Algorithm. TCS 188(1-2): (1997) og mange-mange flere Søgning på Shell<mellemrum>sort: Robert T. Smythe, J. Wellner: Stochastic Analysis of Shell Sort. Algorithmica 31(3): (2001) Robert T. Smythe, J. A. Wellner: Asymptotic analysis of (3, 2, 1)-shell sort. Random Structures and Algorithms 21(1): (2002) (7)

8 Mergesort del-og-hersk med O(n log n) Baseret på fletning af allerede sorterede sekvenser. En billede fra dengang mor var dreng: Eksempel: Store datamængder opbevaredes på bånd! Altid sorterede! Tre båndstationer: bånd 1: status fra igår bånd 2: transaktioner fra idag sorteret! bånd 3: her skrives status i dag ved lukketid Bånd 1: Bånd 2: Bånd 3: Bånd 1: Bånd 2: Bånd 3: 8 Bånd 1: Bånd 2: Bånd 3: 8 11 Bånd 1: Bånd 2: Bånd 3: Bånd 1: Bånd 2: 47 Bånd 3: Bånd 3: (8)

9 Fletning af to arrays over i et tredje; som før men med tællere private static void merge( Comparable [ ] a, Comparable [ ] tmparray, int leftpos, int rightpos, int rightend ) // [] a indeholder to sorterede sekvenser // 1. fra position leftpos til rightpos-1 // 2. fra position rightpos til rightend // De to sekvenser flettes over i tmparray // og kopieres tilbage i a {...}; Mergesort lige ud ad landevejen: public static void mergesort( Comparable [ ] a ) {Comparable [ ] tmparray = new Comparable[ a.length ]; mergesort( a, tmparray, 0, a.length - 1 ); } private static void mergesort( Comparable [ ] a, Comparable [ ] tmparray, int left, int right ) { if( left < right ) { int center = ( left + right ) / 2; mergesort( a, tmparray, left, center ); mergesort( a, tmparray, center + 1, right ); merge( a, tmparray, left, center + 1, right ); }} Tidsforbrug: Værst = Bedst = Gennemsnit = O(n log n) Problemer: Kræver et ekstra array + kopiering frem og tilbage En anden, Quicksort, = O(n log n) ca. 3 gange så hurtig (?) (9)

10 Quicksort. Grundrincippet er meget enkelt, del-og-hersk At sortere en sekvens af elementer S: 1. Hvis længden af S er 0 eller 1, så er vi færdige, ellers 2. Vælg et element v i S kaldet omdrejningspunkt ( pivot ) 3. Flyt rundt på elementerne i S, så S kommer til at se ud som: x1, x2,..., xk, v, y1, y2,... ym hvor alle x erne v og y erne v 4. Sortér x1, x2,..., xk på deres pladser i S 5. Sortér y1, y2,... ym på deres pladser i S For at vurdere tidsforbrug. Skridt 3 er kritisk: vi påstår O(n) (10)

11 Tegninger fra bogen (11)

12 Princip for»pivotering«: Kør tællere ind fra højre og venstre, så snart fejl opdages, byt om; Blive ved med det til tællerne mødes; Komplikation: Pivoteringselementet må typisk også flyttes Trick: Pivoteringselementet flyttes hen i den ene ende, og på plads igen til sidst. Antag følgende array, og 6 på magisk vis er valgt som pivot.element \ / for( i = low, j = high; ; ) { while( a[ ++i ].compareto( pivot ) < 0 ) ; while( pivot.compareto( a[ --j ] ) < 0 ) ; if( i >= j ) break; swapreferences( a, i, j ); } // Restore pivot swapreferences( a, i, high ); \-----/ Værst=Bedst=Gennemsnit = O(n). (12)

13 Quicksort. Grundrincippet er meget enkelt, del-og-hersk (gentaget) At sortere en sekvens af elementer S: 1. Hvis længden af S er 0 eller 1, så er vi færdige, ellers 2. Vælg et element v i S kaldet omdrejningspunkt ( pivot ) 3. Flyt rundt på elementerne i S, så S kommer til at se ud som: x1, x2,..., xk, v, y1, y2,... ym hvor alle x erne v og y erne v 4. Sortér x1, x2,..., xk på deres pladser i S 5. Sortér y1, y2,... ym på deres pladser i S Vi ved nu skridt 3 er O(længde S). Definition: Medianen for z1, z2,..., zn er et zi, så ca. halvdelen af z er zi og ca. halvdelen af z er zi Obs: I de tilfælde, hvor vi på magisk vis er heldige at ramme (ca.) medianen som omdrejningspunkt, har vi O(n log n): et balanceret binært træ som kaldetræ med dybde n og halvering af arbejde hver gang. (eller check generel formel, argument som ved maximum contiguous subsequence sum) Obs: Værste tilfælde O(n 2 ) er hvis vi altid er uheldige og rammer det største element som omdrevningspunkt: et skævt træ af dybde n og n-1, n-2,..., 1, 0 arbejde på hvert niveau Det kan bevises (vi gider ikke): gennemsnit O(n log n) Tommelfingerregel: Hvis omdrejningspunktet vælges ca. midt går det ikke galt med i forvejen næsten sorterede data. Obs: Vi kunne i princippet godt beregne den sande median medianen hvergang, men tung beregning og ikke sikkert det giver noget... (13)

14 Tommelfingerregel: Vælg som pivoteringselement det medianen af første, midterste og sidste arrayelement F.eks. 8 x x x 6 x x x x 0 Disse»sorteres«ved test og ombytninger: // Sort low, middle, high int middle = ( low + high ) / 2; if( a[ middle ].compareto( a[ low ] ) < 0 ) swapreferences( a, low, middle ); if( a[ high ].compareto( a[ low ] ) < 0 ) swapreferences( a, low, high ); if( a[ high ].compareto( a[ middle ] ) < 0 ) swapreferences( a, middle, high ); Dvs. vi får 0 x x x 6 x x x x 8 Medianen (6) står altså i midten, og første (0) og sidste (8) er på ret plads. Ergo, se bort fra første og sidste i pivoteringen: 0 x x x x x x x 6 8 ============= Og forsæt med pivotering som før. (14)

15 Så mangler vi blot indsætte rekursive kald + optimere med en enklere metode for små del-arrays: private static void quicksort( Comparable [ ] a, int low, int high ) { if( low + CUTOFF > high ) insertionsort( a, low, high ); else { // Sort low, middle, high int middle = ( low + high ) / 2; if(a[middle].compareto(a[low])<0) swapreferences(a,low,middle); if(a[high].compareto(a[low])<0) swapreferences(a,low,high); if(a[high].compareto(a[middle])<0) swapreferences(a,middle,high); // Place pivot at position high - 1 swapreferences( a, middle, high - 1 ); Comparable pivot = a[ high - 1 ]; // Begin partitioning int i, j; for( i = low, j = high - 1; ; ) { while( a[ ++i ].compareto( pivot ) < 0 ) ; while( pivot.compareto( a[ --j ] ) < 0 ); if( i >= j ) break; swapreferences( a, i, j );} // Restore pivot swapreferences( a, i, high - 1 ); quicksort( a, low, i - 1 ); // Sort small elements quicksort( a, i + 1, high ); // Sort large elements } } (15)

16 Afsluttende øvelse: QuickSelect At finde det k te største element i array a 1. Sortér 2. Find svaret i a[k-1] ( -1 fordi arrays starter med nul) Benyt quicksort, men drop det ene rekursive kald: private static void quickselectsort( Comparable [ ] a, int low, int high, int Position_in_Order ) { if( low + CUTOFF > high ) insertionsort( a, low, high ); else { // Sort low, middle, high... // Place pivot at position high // Begin partitioning... // Restore pivot... if ( Position_in_Order <= i) quickselectsort( a, low, i - 1, Position_in_Order ); else if ( Position_in_Order > i+1) quickselectsort( a, i + 1, high, Position_in_Order ); } } Dvs. gennemsnitsopførsel falder fra O(N log N) til O(N), men værste fald stadig O(N 2 ) [Prøv at gennemføre argumenterne hvorfor] (16)

17 S L U T (17)

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

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 af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave. Sortering 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 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

Læs mere

Sortering af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave. Sortering 1 / 36 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, 6, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

Læs mere

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

Rekursion og dynamisk programmering

Rekursion og dynamisk programmering Rekursion og dynamisk programmering Datastrukturer & Algoritmer, Dat C Forelæsning 12/10-2004 Henning Christiansen Rekursion: at en procedure kalder sig selv eller et antal metoder kalder hinanden gensidigt.

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

BRP Sortering og søgning. Hægtede lister

BRP Sortering og søgning. Hægtede lister BRP 18.10.2006 Sortering og søgning. Hægtede lister 1. Opgaver 2. Selection sort (udvælgelsessortering) 3. Kompleksitetsanalyse 4. Merge sort (flettesortering) 5. Binær søgning 6. Hægtede lister 7. Øvelser:

Læs mere

Sortering. Sortering ved fletning (merge-sort) Del-og-hersk. Merge-sort

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

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

Datalogi C + Datastrukturer og Algoritmer

Datalogi C + Datastrukturer og Algoritmer Datalogi C + Datastrukturer og Algoritmer Velkommen til DatC erne Dagens emne: Hvad er D&A, mål for effektivitet Kursuslærer: Henning Christiansen henning@ruc.dk, http://www.ruc.dk/~henning Hjælpelærer

Læs mere

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

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer (2. semester). Mål

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

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

Invarianter. 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. Invariant: Et forhold, som vedligeholdes af algoritmen gennem (dele af)

Læs mere

Skriftlig eksamen i Datalogi

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

Læs mere

Prioritetskøer ved»heap«, simulering

Prioritetskøer ved»heap«, simulering Datastrukturer & Algoritmer, Datalogi C Forelæsning 25/11-2003 Prioritetskøer ved»heap«, simulering Yet another teknik til at repræsentere mængder Hvor hashtabellen fremviste: Konstant tid for finde og

Læs mere

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 Flettesortering Philip Bille Søgning og Sortering Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering

Læs mere

Sortering ved fletning (merge-sort)

Sortering ved fletning (merge-sort) Sortering 1 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 2 Del-og-hersk Del-og-hersk er et generelt paradigme til algoritmedesign Del: opdel input-data S i to disjunkte

Læs mere

DM507 Algoritmer og datastrukturer

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

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

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

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer

Læs mere

Rolf Fagerberg. Forår 2013

Rolf Fagerberg. Forår 2013 Forår 2013 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: DM536 og DM537 Timer: 50% forelæsninger, 50% øvelser Forudsætninger: DM536 og DM537 Eksamenform: Skriftlig eksamen: Timer: 50% forelæsninger,

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

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 Tirsdag den 24. juni 2014, kl. 10:00 14:00 Besvarelsen skal afleveres elektronisk. Se

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 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 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3 DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget

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

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 7 n 1 7 7/n. 7nlogn. 7n 7nlogn n7 Side af 0 sider Opgave (%) Ja Nej /n er O(n )? n (logn) er O(n 3 )? n + n er O(3 n )? n er O((logn) 3 )? nlogn er Ω(n)? Opgave (%) Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen:

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

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

Læs mere

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (key, nøgle) for dataelementer.

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (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 (key, nøgle) for dataelementer. API for sekventiel tilgang (API = Application

Læs mere

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

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet. Mandag den 22. marts 2004, kl Skriftlig Eksamen Algoritmer og Datastrukturer 1 Datalogisk Institut Aarhus Universitet Mandag den. marts 00, kl..00 11.00 Navn Gerth Stølting Brodal Årskort 1 Dette eksamenssæt består af en kombination

Læs mere

Rolf Fagerberg. Forår 2012

Rolf Fagerberg. Forår 2012 Forår 2012 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: DM502 og DM503 Timer: 50% forelæsninger, 50% øvelser Forudsætninger: DM502 og DM503 Eksamenform: Skriftlig eksamen: Timer: 50% forelæsninger,

Læs mere

Algoritmedesign med internetanvendelser ved Keld Helsgaun

Algoritmedesign med internetanvendelser ved Keld Helsgaun Algoritmedesign med internetanvendelser ved Keld Helsgaun 1 Analyse af algoritmer Input Algoritme Output En algoritme er en trinvis metode til løsning af et problem i endelig tid 2 Algoritmebegrebet D.

Læs mere

Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser.

Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser. 25 Sortering III. Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser. Sortering ved fletning, med fire bånd, i én fase (balanceret fletning). Polyfase fletning med tre bånd. Generaliseret

Læs mere

DM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/

DM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ DM502 Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ 1 DM502 Bog, ugesedler og noter De første øvelser Let for nogen, svært for andre Kom til øvelserne! Lav opgaverne!

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

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 15. marts, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

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

Algoritmisk geometri

Algoritmisk geometri Algoritmisk geometri 1 Intervalsøgning 2 Motivation for intervaltræer Lad der være givet en database over ansatte i en virksomhed Ansat Alder Løn Ansættelsesdato post i databasen Antag, at vi ønsker at

Læs mere

Stakke, køer og lidt om hægtede lister - kapitel 16 og 17

Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Datastrukturer & Algoritmer, Datalogi C Forelæsning 2/11-2004 Henning Christiansen Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Fundamentale datastrukturer man får brug for igen og igen Et

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

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

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

Læs mere

Programmering og Problemløsning, 2017

Programmering og Problemløsning, 2017 Programmering og Problemløsning, 2017 Martin Elsman Datalogisk Institut Københavns Universitet DIKU 10. Oktober, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017 10. Oktober, 2017 1 / 15

Læs mere

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

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

Læs mere

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 Philip Bille Introduktion Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3 Algoritmer

Læs mere

28 Algoritmedesign. Noter. PS1 -- Algoritmedesign

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

Læs mere

DANMARKS TEKNISKE UNIVERSITET

DANMARKS TEKNISKE UNIVERSITET DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler

Læs mere

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox

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

Læs mere

Stakke, køer og lidt om hægtede lister

Stakke, køer og lidt om hægtede lister Datastrukturer & Algoritmer, Datalogi C Forelæsning 4/11-2003 Henning Christiansen Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Hvorfor? Fundamentale datastrukturer man får brug for igen og

Læs mere

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer.

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 =

Læs mere

Hanne Niels Edith Harald Carsten Jørgen Henrik.

Hanne Niels Edith Harald Carsten Jørgen Henrik. Programmering 1999 Forelæsning 18, fredag 5 november 1999 Anvendelse af udvalgssortering Quicksort Rapportopgave Programmering 1999 KVL Side 18-1 Eksempel 2 på anvendelse af udvalgssortering Sortering

Læs mere

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer BRP 13.9.2006 Tal. Om computer-repræsentation og -manipulation. Logaritmer 1. Opgaverne til i dag dækker det meste af stoffet 2. Resten af stoffet logaritmer binære træer 3. Øvelse ny programmeringsopgave

Læs mere

Træer. Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/

Træer. Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/ Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/11-2004 Træer En meget vigtig datastruktur Repræsentation af sprog (i meget generel betydning), syntakstræer: Java (i en compiler), SQL (i et databasesystem),

Læs mere

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

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

Læs mere

Søgetræer: Generel repræsentation af (sorterede) mængder og funktioner Databasesystemer...

Søgetræer: Generel repræsentation af (sorterede) mængder og funktioner Databasesystemer... Datastrukturer & Algoritmer, Datalogi C Forelæsning 11/11-2003 Træer En meget vigtig datastruktur Repræsentation af sprog (i meget generel betydning), syntakstræer: Java (i en compiler), SQL (i et databasesystem),

Læs mere

Mm7: A little bit more about sorting - and more times for exercises - November 4, 2008

Mm7: A little bit more about sorting - and more times for exercises - November 4, 2008 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm: A little bit more about sorting - and more times for exercises - November 4, 2008 1 Algorithms and Architectures

Læs mere

Forelæsning 17, tirsdag 2. november 1999 Søgning efter en given værdi i en tabel. Programmering 1999

Forelæsning 17, tirsdag 2. november 1999 Søgning efter en given værdi i en tabel. Programmering 1999 sammenligninger, hvor Programmering 1999 Forelæsning 17, tirsdag 2 november 1999 Søgning efter en given værdi i en tabel Lineær søgning og binær søgning Effektivitet: maskinuafhængig vurdering af køretid

Læs mere

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 5n 4. logn. n 4n 5 n/logn. n n/logn 5n Algoritmer og Datastrukturer (-ordning) Side af sider Opgave (%) n er O(n 7 )? (logn) er O( n)? n(logn) er O(n)? n er O( n )? n er Ω(n )? Opgave (%) Opskriv følgende funktioner efter stigende orden med

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

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

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

Læs mere

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer Philip Bille (priority-queues). Vedligehold en dynamisk mængde S af elementer. Hver element x er tilknyttet en nøgle x.key og satellitdata x.data. MAX(): returner element med største nøgle. EXTRACTMAX():

Læs mere

Danmarks Tekniske Universitet

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

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

Datastrukturer (recap)

Datastrukturer (recap) Dictionaries Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data. Operationer: Datastrukturens egenskaber udgøres af de tilbudte operationer (API for adgang

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4 DM502 Forelæsning 4 Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens

Læs mere

Sortering i lineær tid

Sortering i lineær tid Sortering i lineær tid Nedre grænse for sammenligningsbaseret sortering Nedre grænser kræver en præcis beregningsmodel. Nedre grænse for sammenligningsbaseret sortering Nedre grænser kræver en præcis beregningsmodel.

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 26. maj 2009. Kursusnavn Algoritmik og datastrukturer I Kursus nr. 0205. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning

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

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Torsdag den 26. marts 2009, kl.

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

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 Onsdag den 0. juni 009, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)

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

Prioritetskøer. Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering. Philip Bille

Prioritetskøer. Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering. Philip Bille Prioritetskøer Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering Philip Bille Prioritetskøer Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer

Læs mere

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel: Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel: Opbyg løsningen skridt for skridt ved hele tiden af vælge lige

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 I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af opgaverne:

Læs mere

Datastrukturer (recap)

Datastrukturer (recap) Dictionaries Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data. Operationer: Datastrukturens egenskaber udgøres af de tilbudte operationer (API for adgang

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

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

Grundlæggende Algoritmer og Datastrukturer. Analyseværktøjer [CLRS, 1-3.1] Grundlæggende Algoritmer og Datastrukturer Analyseværktøjer [CLRS, 1-3.1] Eksempler på en beregningsprocess Puslespil ved ombytninger Maximum delsum Hvad er udførselstiden for en algoritme? Maskinkode

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

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal Aarhus Universitet

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal Aarhus Universitet Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet Kursusbeskrivelsen Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer

Læs mere

Find største element, sæt det på sidste plads. Grundidé i hobsortering. er er

Find største element, sæt det på sidste plads. Grundidé i hobsortering. er er Programming 1999 KVL Side 19-2 Tidsforbruget, dvs asymptotisk proportionalt med Sorting af element: Tidsforbrug de mindste element, sortet øvrige element 0 Løkkeinvariant for udvalgssorting osv Find tredjemindste

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 I Kursus nr. 0205. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af

Læs mere

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n+logn logn (logn) 7 (3/2) n Side af sider Opgave (%) Ja Nej n er O( n )? n er O(log n)? n er O(n )? n + er O(0n)? nlogn er O(n / )? Opgave (%) Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: nlogn logn

Læs mere

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Kursusbeskrivelsen Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle

Læs mere

Majoritetsproblemet Problem Præcisering af inddata Præcisering af uddata

Majoritetsproblemet Problem Præcisering af inddata Præcisering af uddata Majoritetsproblemet Problem: Til præsidentvalget i Frankrig har cirka 20 millioner vælgere afgivet deres stemme på et antal præsidentkandidater. Afgør om en af kandidaterne har opnået mere end halvdelen

Læs mere

Datastrukturer (recap) Datastruktur = data + operationer herpå

Datastrukturer (recap) Datastruktur = data + operationer herpå Dictionaries Datastrukturer (recap) Datastruktur = data + operationer herpå Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data (ofte underforstået, også

Læs mere

Algoritmer og Datastrukturer 1

Algoritmer og Datastrukturer 1 Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Analyseværktøjer [CLRS, 1-3.1] Eksempler på en beregningsprocess Puslespil ved ombytninger Maximum delsum Hvad er udførselstiden for en algoritme? Maskinkode

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

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer Philip Bille. Vedligehold en dynamisk mængde S af elementer. Hver element x er tilknyttet en nøgle x.key og satellitdata x.data. MAX(): returner element med største nøgle. EXTRACTMAX(): returner og fjern

Læs mere

Løsning af møntproblemet

Løsning af møntproblemet Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet

Læs mere

A Profile for Safety Critical Java

A Profile for Safety Critical Java A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2 DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld

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

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

Mm6: More sorting algorithms: Heap sort and quick sort - October 29, 2008 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm6: More sorting algorithms: Heap sort and quick sort - October 9, 008 Algorithms and Architectures II. Introduction

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

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Kursusbeskrivelsen Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer som model for sekventielle

Læs mere

Løsning af skyline-problemet

Løsning af skyline-problemet Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle

Læs mere