Udtømmende søgning 1

Størrelse: px
Starte visningen fra side:

Download "Udtømmende søgning 1"

Transkript

1 Udtømmende søgning

2 Udtømmende søgning (kombinatorisk søgning) Systematisk gennemsøgning af alle potentielle løsninger Den rejsende sælgers problem (TSP): En sælger skal besøge N byer Find den korteste rundtur B C D Eksempel med 7 byer A F G E 2

3 Problem med 446 byer Find den korteste rundtur 3

4 Udtømmende søgning i grafer Mulig metode til løsning af TSP: () Generer samtlige rundture (Hamilton-cykler) i grafen (2) Vælg den korteste af disse Samtlige rundture kan bestemmes således: (a) Generer systematisk samtlige simple veje i grafen (b) Vælg heraf dem, der omfatter samtlige grafens knuder, og hvor første og sidste knude er forbundet med en kant 4

5 Systematisk generering af alle simple veje i en graf Kan opnås ved en lille ændring af metoden DFS til dybde-først-søgning i en graf Kald: DFS(G, v) hvor v er en vilkårlig knude i G Algorithm DFS(G, v) setlabel(v, VISITED) for all e G.incidentEdges(v) w opposite(v,e) if getlabel(w) = UNEXPLORED DFS(G, w) setlabel(v, UNEXPLORED) Metoden rydder op efter sig selv, således at alternative veje kan undersøges 5

6 Eksempel på søgning A 2 F 6 3 B C G 2 4 H D E J L 2 I K A M B F G C D D E E H E F B C G L C F L I F G L E C B H J M B D J M K D H J M C G L E D I K M J D B K M J J I K M J H J M G L K I K F C I K L M K I K I K M J H J M J H I H I E M L J H I K I K I K M J L M G H H C F E L M G H J H I K I K M L G B D C F M L G L M G H J H I D B B D 53 knuder (kald af DFS) M L G L M G H F C D B M L G F C rundtur rundtur 6

7 Generering af alle simple veje i en graf repræsenteret ved en nabomatrix w[k][t] betegner vægten på kanten (k, t). Værdien 0 angiver, at kanten ikke findes level angiver antallet af knuder på den aktuelle vej pos[k]angiver positionen for knude k på denne vej void dfs(int k) { pos[k] = ++level; for (int t = ; t <= V; t++) if (w[k][t]!= 0 && pos[t] == 0) dfs(t); level--; pos[k] = 0; level = 0; for (int k = ; k <= V; k++) pos[k] = 0; dfs(); 7

8 Løsning af TSP level = 0; for (int k = ; k <= V; k++) pos[k] = 0; cost = 0; best_cost = Integer.MAX_VALUE; dfs(); void dfs(int k) { pos[k] = ++level; if (level == V && w[k][]!= 0 && cost < best_cost) { best_cost = cost; System.arraycopy( best_pos,, pos,, V); for (int t = ; t <= V; t++) if (w[k][t]!= 0 && pos[t] == 0) { cost += w[k][t]; dfs(t); cost -= w[k][t]; level--; pos[k] = 0; 8

9 Beskæring af søgetræet Beskæring: fjernelse af undertræer Eksempel: fjernelse af symmetrier: Forlang, at 3 knuder kommer i en bestemt rækkefølge Kravet A ->... -> C ->... -> B ->... beskærer træet A F G D E E H C G L C F L I B H J M B D J M K D I K M J D K M J J K I K F I K L M J H I H I E M L L M G H H C F E M L G B D C F D B B D Besparelse: 8 kald af dfs F C D rundtur F 9

10 Implementering af beskæring void dfs(int k) { pos[k] = ++level; for (int t = ; t <= V; t++) if (w[k][t]!= 0 && pos[t] == 0 && (t!= 3 pos[2]!= 0)) dfs(t); level--; pos[k] = 0; Besøg kun knude 3, hvis knude 2 er besøgt 0

11 Yderligere beskæring Beskær en gren, hvis de ubesøgte knuder ikke er forbundne F A F G D E E H I K J L M L E C F B D D Besparelse: yderligere 52 kald af dfs rundtur A B C G F D E H I J K L M

12 Forgren-og-begræns (branch-and-bound) En metode til reduktion af søgningen ved løsning af optimeringsproblemer De partielle løsningers omkostninger beregnes og benyttes til beskæring af søgetræet Eksempel: Hvis alle omkostninger for TSP er positive, kan en søgningen ad en vej afbrydes, hvis omkostningen for vejen er større end eller lig med den hidtil korteste rundtur for (int t = ; t <= V; t++) { if (w[k][t]!= 0 && pos[t] == 0 && cost + w[k][t] < best_cost) { cost += w[k][t]; dfs(t); cost -= w[k][t]; 2

13 Generel beskæringsmetode Hvis omkostningen for en partiel løsning, plus en nedre grænse for omkostningen for en færdiggørelse til en komplet løsning, er større end en øvre grænse for en løsning, så vil den partielle løsning ikke kunne færdiggøres til en optimal løsning En nedre grænse for TSP udgør omkostningen af et MST (Minimal Spanning Tree) for de ubesøgte knuder, plus de to korteste kanter, der forbinder de to endeknuder i den partielle tur med to ubesøgte knuder MST Partiel tur 3

14 Baksporing (backtracking) En problemløsningmetode til systematisk generering af alle mulige løsninger Sålænge det er muligt, udvides en partiel løsning Hvis en partiel løsning ikke kan udvides, bakspores, d.v.s. vendes tilbage til en tidligere partiel løsning, for hvilken der findes en uprøvet udvidelsesmulighed På denne måde bevæger algoritmen sig forlæns og baglæns, indtil en løsning er fundet, eller alle muligheder er udtømte. 4

15 Skabelon til baksporing void try(...) { for (alle_kandidater) if (kandidat_acceptabel) { registrer_kandidat; if (ufuldstændig_løsning) try(...); if (løsning_fundet) return; slet_registrering; 5

16 8-dronningeproblemet Placer 8 dronninger på et skakbræt, således at der ikke findes to dronninger, der kan slå hinanden (d.v.s. der er ikke to dronninger i samme række, søjle eller diagonal)

17 Ineffektiv og ufleksibel løsningsmetode Search: for (c = ; c <= 8; c++) for (c2 = ; c2 <= 8; c2++) for (c3 = ; c3 <= 8; c3++) for (c4 = ; c4 <= 8; c4++) for (c5 = ; c5 <= 8; c5++) for (c6 = ; c6 <= 8; c6++) for (c7 = ; c7 <= 8; c7++) for (c8 = ; c8 <= 8; c8++) if (issolution(c, c2, c3, c4, c5, c6, c7, c8)) { printsolution(); break Search; 7

18 Løsning med baksporing void try(int row) { for (int col = ; col <= 8; col++) { if (!underattack(row, col)) { setqueen(row, col); if (row == 8) solutionfound = true; else try(row + ); if (solutionfound) return; removequeen(row, col); solutionfound = false; try(); if (solutionfound) printsolution(); 8

19 Datastrukturer Repræsentation af aktuel stilling: int q[]; boolean up[], down[]; q[col] == row, hvis der er placeret en dronning i søjlen col med rækkenummeret row; ellers 0 up[col+row-2] == true, hvis og kun hvis der er placeret en dronning på opad-diagonalen ( ) med nummer col+row-2 down[col-row+7] == true, hvis og kun hvis der er placeret en dronning på nedad-diagonalen ( ) med nummer col-row

20 Færdig udgave af try void try(int row) { for (int col = ; col <= 8; col++) { if (q[col] == 0 &&!up[row+col-2] &&!down[col-row+7]) { q[col] = row; up[row+col-2] = down[col-row+7] = true; if (row == 8) solutionfound = true; else try(row+); if (solutionfound) return; q[col] = 0; up[row+col-2] = down[col-row+7] = false; 20

21 Primitiver til baksporing choice(n) repræsenterer et valg imellem n alternativer Metoden returnerer heltal imellem og n backtrack() signalerer, at problemet ikke kan løses med de hidtil trufne valg Er implementeret til C, C++, Pascal og Simula af Keld Helsgaun Findes ikke til Java 2

22 Løsning ved brug af primitiverne for (int row = ; row <= 8; row++) { int col = choice(8); if (q[col]!= 0 up[row+col-2] down[col-row+7]) backtrack(); q[col] = row; up[row+col-2] = down[col-row+7] = true; printsolution(); 22

23 Approksimative algoritmer Køretiden for baksporingsalgoritmer er eksponentiel Hvis hver knude i gennemsnit har α sønner, og længden af en løsningsvej er N, så er køretiden α N I nogle tilfælde behøves ikke en optimal løsning - en rimelig god løsning er tilstrækkelig En approksimativ algoritme tilstræber at opnå en rimelig god løsning på kort tid - sædvanligvis med et polynomielt tidsforbrug 23

24 Permutationer En algoritme til systematisk generering af samtlige permutationer af tallene fra til N kan udledes direkte fra algoritmen til udtømmende søgning i en graf Når udtømmende søgning anvendes på en komplet graf, så gennemløbes alle knuder i enhver mulig rækkefølge void dfs(int k) { perm[k] = ++level; if (level == V) use(perm); for (int t = ; t <= V; t++) if (perm[t] == 0) dfs(t); level--; perm[k] = 0; 24

Udtømmende søgning. Udtømmende søgning (kombinatorisk søgning) Problem med 4461 byer Udtømmende søgning i grafer. Find den korteste rundtur

Udtømmende søgning. Udtømmende søgning (kombinatorisk søgning) Problem med 4461 byer Udtømmende søgning i grafer. Find den korteste rundtur Udtømmende søgning Udtømmende søgning (kombinatorisk søgning) Systematisk gennemsøgning af alle potentielle løsninger Den rejsende sælgers problem (TSP): En sælger skal besøge N byer ind den korteste rundtur

Læs mere

Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomiel tid

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

Læs mere

Symmetrisk Traveling Salesman Problemet

Symmetrisk Traveling Salesman Problemet Symmetrisk Traveling Salesman Problemet Videregående Algoritmik, Blok 2 2008/2009, Projektopgave 2 Bjørn Petersen 9. december 2008 Dette er den anden af to projektopgaver på kurset Videregående Algoritmik,

Læs mere

Tirsdag 12. december David Pisinger

Tirsdag 12. december David Pisinger Videregående Algoritmik, DIKU 2006/07 Tirsdag 12. december David Pisinger Resume sidste to gang Sprog L : mængden af instanser for et afgørlighedsproblem hvor svaret er 1. P = {L : L genkendes af en algoritme

Læs mere

Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomielt tid Optimeringsproblemer kan ikke altid verificeres i polynomiel

Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomielt tid Optimeringsproblemer kan ikke altid verificeres i polynomiel I dag Løsning af NP -hårde optimeringsproblemer Repetition: branch-and-bound Flere begreber Konkret eksempel: TSP Lagrange relaxering Parallel branch-and-bound 1 Opsummering Løsning af NP -hårde optimeringsproblemer

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

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

Sidste gang Motivation Definitioner Approximations-algoritme for knudeoverdækning Approximations-algoritme for TSP med trekantsulighed

Sidste gang Motivation Definitioner Approximations-algoritme for knudeoverdækning Approximations-algoritme for TSP med trekantsulighed Approximations-algoritmer Sidste gang Motivation Definitioner Approximations-algoritme for knudeoverdækning Approximations-algoritme for TSP med trekantsulighed Negativt resultat om generel TSP Approximations-algoritme

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

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

DRONNINGER (QUEENS) Opgave 1

DRONNINGER (QUEENS) Opgave 1 DRONNINGER (QUEENS) I denne opgave vil vi beskæftige os med det såkaldte 8-dronningeproblem, hvor man skal placerede 8 dronninger på et 8 x 8 skakbræt, således at ingen af dronningerne kan slå hinanden.

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

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

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

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur (struktur opbygget af et endeligt antal enkeltdele) blandt mange mulige. Eksempler:

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 23. maj 20. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 0205. Varighed: 4 timer 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 I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af opgaverne:

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

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

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

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

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

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

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

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

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti. Korteste veje Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. δ(u, v) = længden af en korteste

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

Orienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk

Orienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk Philip Bille Orienteret graf (directed graph). Mængde af knuder forbundet parvis med orienterede kanter. Vejnetværk Knude = vejkryds, kant = ensrettet vej. deg + (6) =, deg - (6) = sti fra til 6 8 7 9

Læs mere

Graf PVD ORD SFO LGA HNL LAX DFW MIA 2

Graf PVD ORD SFO LGA HNL LAX DFW MIA 2 Grafer 1 Graf En graf er et par (V, E), hvor V er en mængde af knuder (vertices) E er en samling af par af knuder, kaldet kanter (edges) Eksempel: En knude repræsenterer en lufthavn og har tilknyttet en

Læs mere

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

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti. Korteste veje Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. δ(u, v) = længden af en korteste

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

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

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti. Korteste veje Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. δ(u, v) = længden af en korteste

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

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 3. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Varighed: timer Tilladte hjælpemidler: Alle skriftlige hjælpemidler.

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

.. if L(u) + w(u, v) < L(v) then.. begin... L(v) := L(u) + w(u, v)... F (v) := u.. end. med længde L(z)}

.. if L(u) + w(u, v) < L(v) then.. begin... L(v) := L(u) + w(u, v)... F (v) := u.. end. med længde L(z)} Procedure Dijkstra(G = (V, E): vægtet sh. graf,. a, z: punkter) { Det antages at w(e) > 0 for alle e E} For alle v V : L(v) := L(a) := 0, S := while z / S begin. u := punkt ikke i S, så L(u) er mindst

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

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

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

Netværksalgoritmer 1

Netværksalgoritmer 1 Netværksalgoritmer 1 Netværksalgoritmer Netværksalgoritmer er algoritmer, der udføres på et netværk af computere Deres udførelse er distribueret Omfatter algoritmer for, hvorledes routere sender pakker

Læs mere

Orienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer.

Orienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer. Orienterede grafer Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer Philip Bille Orienterede grafer Introduktion Repræsentation Søgning Topologisk

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

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 3 sider anmarks Tekniske Universitet Skriftlig prøve, den 29. maj 203. ursusnavn: lgoritmer og datastrukturer ursus nr. 02326. jælpemidler: Skriftlige hjælpemidler. et er ikke tilladt at medbringe

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

Ideer til datalogiprojekter. Keld Helsgaun

Ideer til datalogiprojekter. Keld Helsgaun Ideer til datalogiprojekter Keld Helsgaun 1 Keld Helsgaun Forskning: kombinatorisk optimering heuristisk søgning (kunstig intelligens) programmeringsværktøjer Undervisning: programmering, datastrukturer

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

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer Philip Bille Orienteret graf. Mængde af knuder forbundet parvis med orienterede kanter. deg + (7) =, deg - (7) = Lemma. v V deg - (v) = v V deg + (v) = m. Bevis. Hver kant har netop en startknude og slutknude.

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 og hobe. Philip Bille

Prioritetskøer og hobe. Philip Bille Prioritetskøer og hobe Philip Bille Plan Prioritetskøer Træer Hobe Repræsentation Prioritetskøoperationer Konstruktion af hob Hobsortering Prioritetskøer Prioritetskø Vedligehold en dynamisk mængde S af

Læs mere

Perspektiverende Datalogikursus

Perspektiverende Datalogikursus Perspektiverende Datalogikursus Uge 1 - Algoritmer og kompleksitet Gerth Stølting Brodal 2. september 2005 1 Afleveringsopgaver... /\.. // \\ / \ / [] \ \\_// / \ / \ []._. ---------------- _ 2 Øvelse

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

Grafer og graf-gennemløb

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. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

Læs mere

Grafer og graf-gennemløb

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. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

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

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

Grafer og graf-gennemløb

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. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

Læs mere

Den rejsende sælgers problem. Den rejsende sælgers problem. Første omtale af problemet 1832

Den rejsende sælgers problem. Den rejsende sælgers problem. Første omtale af problemet 1832 Den rejsende sælgers problem? En sælger skal besøge n byer og vende tilbage til sit udgangspunkt I hvilken rækkefølge skal han besøge byerne, hvis han ønsker at minimere sine rejseomkostninger? Den rejsende

Læs mere

Perspektiverende Datalogikursus

Perspektiverende Datalogikursus Perspektiverende Datalogikursus Uge 1 - Algoritmer og kompleksitet Gerth Stølting Brodal 27. august 2004 1 Indhold Mere om Eksempler på beregningsproblemer Algoritmer og deres analyse Korrekthed af algoritmer

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

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning) Datalogisk Institut Aarhus Universitet Fredag den 28. maj 2004, kl. 9.00 13.00 Opgave 1 (20%) En (r, k) kryds-graf er en orienteret graf

Læs mere

Perspektiverende Datalogi Klassiske Algoritmer

Perspektiverende Datalogi Klassiske Algoritmer Perspektiverende Datalogi Klassiske Algoritmer Gerth Stølting Brodal 1 Indhold Eksempler på beregningsproblemer Algoritmer og deres analyse Korrekthed af algoritmer Ressourceforbrug for algoritmer Kompleksitet

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider anmarks Tekniske Universitet Skriftlig prøve, den 23. maj 20. Kursusnavn: lgoritmer og datastrukturer Kursus nr. 02326. Varighed: 4 timer Tilladte hjælpemidler: lle skriftlige hjælpemidler.

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

Grafer og graf-gennemløb

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. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

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

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt

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

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

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

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

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet ksamen 06, side af sider anmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. ursusnavn: lgoritmer og datastrukturer ursus nr. 06. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer

Læs mere

Den rejsende sælgers problem. ved Keld Helsgaun

Den rejsende sælgers problem. ved Keld Helsgaun ? Den rejsende sælgers problem ved Keld Helsgaun 1 Den rejsende sælgers problem En sælger skal besøge n byer og vende tilbage til sit udgangspunkt I hvilken rækkefølge skal han besøge byerne, hvis han

Læs mere

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt

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

Vejledende løsninger

Vejledende løsninger Roskilde Universitetscenter side 1 af 8 sider Vejledende løsninger Opgave 1 Spørgsmål 1.1 a = b - a; b = b - a; a = b + a; Opgaven har flere løsninger. En anden løsning er: a = b + a; b = a - b; a = a

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

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

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Onsdag den. august 200, kl. 9.00.00 Opgave (25%) Lad A = A[] A[n] være et array af heltal. Længden af det længste

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

Skriftlig Eksamen Introduktion til lineær og heltalsprogrammering (DM515)

Skriftlig Eksamen Introduktion til lineær og heltalsprogrammering (DM515) Skriftlig Eksamen Introduktion til lineær og heltalsprogrammering (DM55) Institut for Matematik & Datalogi Syddansk Universitet Tirsdag den Juni 009, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater

Læs mere

Sprog L : mængden af instanser for et afgørlighedsproblem

Sprog L : mængden af instanser for et afgørlighedsproblem 26. marts Resume sidste to gang Sprog L : mængden af instanser for et afgørlighedsproblem hvor svaret er 1. P NP L : L genkendes af en algoritme i polynomiel tid L : L verificeres af en polynomiel tids

Læs mere

Kapitel 9: Netværksmodeller

Kapitel 9: Netværksmodeller Kapitel 9: Netværksmodeller Terminologi: Et netværk eller en graf bestar af et sæt punkter samt et sæt linier, der forbinder par af punkter; netværket betegnes som komplet, hvis ethvert par af punkter

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet ksamen 036, side af sider anmarks Tekniske Universitet Skriftlig prøve, den 3. maj 0. Kursusnavn: lgoritmer og datastrukturer Kursus nr. 036. Varighed: timer Tilladte hjælpemidler: lle skriftlige hjælpemidler.

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

Introduktion til datastrukturer

Introduktion til datastrukturer Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Philip Bille Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller

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

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

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

Kapitel 9: Netværksmodeller

Kapitel 9: Netværksmodeller Kapitel 9: Netværksmodeller Terminologi: Et netværk eller en JUDI bestar af et sæt punkter samt et sæt linier, der forbinder par af punkter; netværket betegnes som komplet, hvis ethvert par af punkter

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

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

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

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

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