Grafer / Otto Knudsen

Størrelse: px
Starte visningen fra side:

Download "Grafer / Otto Knudsen 20-11-06"

Transkript

1 Grafer / Otto Knudsen -- Grafer Definition En graf er pr. definition et par G = (V, E). Grafen består af en mængde knuder V (eng: vertices) og en mængde kanter E (eng: edges), som forbinder knuderne. A B C G D E F H I Fig: Ikke-orienteret graf I ikke-orienterede grafer benævnes kanterne ( u, v), u, v V og ( u, v) = ( v, u). For orienterede grafer spiller retningen derimod en rolle, og vi anvender derfor ofte en anden notation: u, v. Orienterede grafer kaldes også for digrafer (Directed Graphs). Ofte tilknyttes der en vægt eller omkostning til kanterne, og grafen benævnes da en vægtet graf. Vægten kan beskrive enhver metrik: Omkostning Afstand Tid Straf Tab Eller en anden kvantitativ størrelse, som akkumulerer lineært langs stien, som vi ønsker at optimere. Anvendelse Grafer anvendes til at modellere problemer, hvor nogle objekter er indbyrdes forbundne. Fx kan et jernbanenet beskrives vha. en ikke-orienteret graf, hvor knuderne er stationer, og kanterne er banestrækninger. Afstanden mellem to stationer kan beskrives vha. vægten på den tilhørende kant. Grafer, hvor objekterne afhænger af hinanden, modelleres vha. orienterede grafer. Fx kan et projekt med dets indbyrdes forbundne aktiviteter med fordel beskrives som en orienteret graf. Her kan vægten på kanten mellem to aktiviteter fx beskrive udstrækningen i tid af den første aktivitet. Begreber Grafteorien indeholder en righoldig nomenklatur, og herunder listes de væsentligste begreber. Definitionerne gives hvor andet ikke er nævnt ud fra ikke-orienterede grafer; men side

2 Grafer / Otto Knudsen -- definitionerne kan umiddelbart overføres til orienterede grafer. Bemærk tillige, at en del begreber kan være defineret forskelligt i forskellig litteratur. En sti (path) er en følge af knuder v, v,..., v n, hvor ( vi, vi+ ) E, i n Stiens længde er antallet af kanter = n ; medens stiens vægt er summen af kanternes vægte. En simpel sti er en sti, hvor alle knuder evt. på nær den første og den sidste er forskellige. En kreds eller cykel er i en orienteret graf er en sti med længde mindst én, hvor v = vn Kredsen er simpel, hvis stien er simpel For ikke-orienterede grafer vil vi kræve, at kanterne i en kreds skal være forskellige. Hvis vi tillader en sti fra en knude til sig selv, så er denne stis længde lig (nul) En sådan kant (v, v) kaldes også en løkke (eng: loop) En graf uden kredse kaldes en acyklisk graf En graf kaldes en fuldstændig graf, hvis ethvert par af knuder er forbundet med en kant En graf kaldes en sammenhængende graf, hvis ethvert par af knuder er forbundet med en sti. En orienteret graf kaldes stærkt sammenhængende, hvis ethvert knudepar er forbundet med en (orienteret) sti. Bemærk tillige, at der således må være en sti begge veje! Graden af en knude er dens antal forbindelser til kanter. I orienterede grafer taler man tillige om udgraden (antallet af kanter ud fra knuden) og indgraden (antallet af kanter ind i knuden). Graden af en knude i en orienteret graf er da summen af indgraden og udgraden. Det er oplagt, at summen af indgrader må være lig summen af udgrader i en orienteret graf, altså: indgrad ( v) = v = E v V udgrad( ), hvor E er antallet af kanter i v V grafen. Da hver kant således bidrager med grader, vil summen af alle grader i grafen være et lige tal, udtrykt ved: grad( v) = E v V Knuder med grad (nul) kaldes isolerede knuder En sammenhængende acyklisk graf kaldes også for et frit træ Hvis vi fjerner betingelsen om sammenhæng får vi i stedet for en skov (af træer) De træer, vi kender fra tidligere, kan betragtes som orienterede grafer, idet kanterne går fra forælder til børn. Man bruger betegnelsen orienterede træer om disse for at skelne dem fra de frie træer defineret ovenfor. Orienterede træer er tillige kendetegnet ved at have en rod (en forælderløs knude). side

3 Grafer / Otto Knudsen -- Repræsentation af grafer Grafer kan repræsenteres på flere forskellige måder. Herunder vil vi se på to klassiske måder: Adjacency Matrix- og Adjacency List-repræsentationen. Adjacency Matrix Betragt følgende ikke-orienterede graf, hvis knuder er nummererede, og grafens tilhørende adjacency matrix-repræsentation Orienteret graf Adjacency Matrix Matricens celler indeholder (sand), hvis kanten findes og (falsk), hvis kanten ikke findes. Hvis det drejer sig om vægtede grafer, så indsættes vægtene på ernes plads i matricen. erne vil blive erstattet af ± som indikation på, at kanten ikke findes. Kanten bliver med andre ord for dyr at passere. Hvis grafen er fuldstændig haves: E = Θ( V ) hvor E er antallet af kanter og V er antallet af knuder i grafen. Den tilhørende adjacency matrix bliver således tæt (eng: dense). Hvis grafen derimod ikke er fuldstændig og fx indeholder knuder med en konstant grad, så bliver den tilhørende adjacency matrix tynd (eng: sparse), hvilket vil sige, at den får et stort indhold af er. Dette er ikke hensigtmæssigt. Betragt følgende vejnet a la Manhattan: Manhattan -vejnet Lad knuder agere vejkryds og lad kanterne være vejstrækninger. I en sådan graf vil antallet af kanter være: E V Hvis en sådan graf består af knuder (vejkryds), så vil den tilhørende adjacency matrix indeholde % ere. Består grafen af 8 knuder, så er antallet reduceret til %, osv. Pointen er, at hvis antallet af kanter i grafen vokser lineært med antallet af knuder, så vil den tilhørende side

4 Grafer / Otto Knudsen -- adjacency matrix indeholder en tiltagende andel af er og dermed blive mere og mere tynd. For at afhjælpe denne problemstilling vil vi vende os mod en anden grafrepræsentation, nemlig adjacency-listen: Adjacency List I adjacency listen opretholdes til hver knude en lænket liste bestående af naboknuder. Bemærk, at hvis grafen er ikke-orienteret, så vil alle kanter ( u, v) forekomme i to lister. Herunder er adjacency-listen for grafen tidligere i afsnittet vist: Adjacency list Pladskompleksiteten for denne type grafrepræsentation er O ( E + V ), og den er således lineær i forhold til grafens størrelse. Dette gør den anvendelig til grafer, der ikke er fuldstændige, hvorimod matrix-repræsentationen er god, når det drejer sig om fuldstændige eller næstenfuldstændige grafer. Eksempel Orienteret graf Orienteret graf Adjacency Matrix Adjacency List Eksempel Ikke-orienteret graf Ikke-orienteret graf Adjacency Matrix Adjacency List Bemærk, at i adjacency matrix-repræsentationen er det reelt kun den øvre (eller nedre) matrix, der anvendes, idet celleværdierne spejles i diagonalen. Man kan betragte en ikke-orienteret kant som to parallelle og modsatrettede orienterede kanter. Dette forhold betyder desuden, at knuderne optræder to gange i adjacency list repræsentationen. side

5 Grafer / Otto Knudsen -- Grafgennemløb Da grafer er meget mere komplicerede objekter, skulle man tro, at der var et væld af gennemløbsmetoder. Litteraturen indskrænker sig dog sædvanligvis til to typer: Bredde-førstsøgning (BFS) og Dybde-først-søgning (DFS). BFS Med udgangspunkt i en given knude besøger bredde-først-søgningen først sine naboer, (dvs. de knuder, hvortil den aktuelle knude er forbundet), og derefter sine naboers naboer. På denne vis breder søgningen sig som ringe i vandet, indtil alle grafens knuder er besøgt. Om grafen skal naturligvis gælde, at den er sammenhængende. Den resulterende graf er et træ, der udspænder alle de knuder, det er muligt at nå fra udgangspunktet. A B C G E D F H I Fig: Ikke-orienteret graf Når algoritmen bevæger sig gennem en graf ( V, E), så udgør E E mængden af kanter, som er besøgt. Vi vil for illustrationens skyld udstyre knuderne med en attribut farve, hvor hvid angiver, at knuden er ubesøgt; grå at knuden er opdaget, men ikke undersøgt; og endelig sort, som angiver, at knuden er færdigbehandlet. Præ: G=(V, E) er en sammenhængende graf, s er startknuden BFS(s) Q for alle knuder u V\{s} u.farve hvid s.farve grå Q.enqueue(s) sålænge Q u Q.dequeue() for alle knuder v Adj(u) // alle naboer til u hvis v.farve = hvid v.farve grå Q.enqueue(v) u.farve sort side

6 Grafer / Otto Knudsen -- Tidskompleksiteten for løkken, hvor nabolisten til hver knude inspiceres, er O ( E ), da den samlede længde af disse lister er Θ ( E ). Med initialiseringen bliver algoritmens tidskompleksitet i alt O ( V + E ) Dybde-først-søgning Når dybde-først-algoritmen bevæger sig gennem en graf ( V, E), så udgør E E mængden af kanter, som er besøgt. Vi vil også her udstyre knuderne med en attribut farve, som angiver, hvorvidt knuden er hhv. ubesøgt, opdaget eller færdigbehandlet. Bemærk, at dybde-først-algoritmen skynder sig at komme så langt væk fra sit udgangspunkt som muligt, idet den gemmer de nære knuder til sidst. DFS Dybde-først-søgning formuleres bedst rekursivt. Se følgende pseudokode: Præ: (V, E) er en ikke-orienteret, sammenhængende graf DFS(u) u.farve grå for alle knuder v Adj(u) // alle naboer til u hvis v.farve = hvid DFS(v) u.farve sort Traverseringen startes med følgende initialiseringer: For alle knuder u V u.farve hvid u vilkårlig knude DFS(u) Bemærk, at algoritmen besøger samtlige knuder i grafen, da den er sammenhængende. Tidskompleksiteten for DFS-algoritmen, er O ( V + E ). Ligesom ved BFS er tidskompleksiteten for løkken, hvor nabolisten til hver knude inspiceres Θ ( E ), medens initialiseringen tager O (V ). Algoritmen udført på grafen fra tidligere kunne fx beskrives ved følgende sekvens, hvor indrykningen beskriver rekursionsdybden. DFS(A) DFS(B) DFS(C) DFS(D) DFS(E) DFS(F) DFS(G) DFS(H) DFS(I) Algoritmen besøger samtlige knuder i grafen, hvis den er sammenhængende. side

7 Grafer / Otto Knudsen -- Såfremt vi ikke ved, om grafen er sammenhængende, så vil vi i stedet for foretage følgende initialiseringer: Eulergraf For alle knuder u V u.farve hvid For alle knuder u V Hvis u.farve = hvid DFS(u) En Euler-graf er en graf, der indeholder en Euler-tur, som defineres ved følgende: Eulertur En Euler-tur er en kreds i en sammenhængende orienteret graf G = (V, E), som gennemløber hver kant netop én gang. Knuderne må gerne passeres flere gange. Det kan vises, at G har en Euler-tur, hvis og kun hvis der for alle knuder i grafen gælder, at: indgrad(v) = udgrad(v) Det følger endvidere af ovenstående, at en Euler-tur kun kan starte og slutte i samme knude, hvis samtlige knuder har lige grad. Hvis der findes knuder af ulige grad i grafen, så må der maksimalt være to (Der vil altid være et lige antal!) og turen må så nødvendigvis starte i den ene og ende i den anden. Baggrund Gennem byen Königsberg i Østprøjsen, (nu Kaliningrad, Rusland), løber floden Prengel. I 7- tallet var der syv broer, som forbandt byen, og det var blandt det bedre borgerskab en yndet tradition at lægge sin spadseretur rundt i byen, så man krydsede alle syv broer. Herved opstod spørgsmålet, om det var muligt at tilrettelægge sin tur, så man passerede hver bro netop én gang. Dette problem var i mange år uløst, indtil man rådspurgte matematikeren Leonhard Euler, der på det tidspunkt (7) arbejdede i Skt. Petersborg. Han viste ovenstående, og er siden blevet betragtet som den moderne grafteoris fader. Prengel Kneiphoff Floden Prengels løb gennem Königsberg, som det så ud på Eulers tid (77-8) Graf, hvor knuderne illustrerer de fire landmasser og kanterne de syv broer. Tallene angiver knudernes grader side 7

8 Grafer / Otto Knudsen -- Topologisk sortering For orienterede grafer er kravet om (stærk) sammenhæng meget restriktivt, idet en stærkt sammenhængende orienteret graf nødvendigvis indeholder kredse. Topologisk Sortering Algoritme nr. Vi skal herunder se på en modificeret DFS, hvor vi vil sørge for, at skoven kommer til at bestå af orienterede træer. Dette opnås ved at lade de nye skud være orienterede. Præ: (V, E) er en orienteret, acyklisk graf Post: Stak af knuder, der er topologisk ordnet DFS(u) u.farve grå for alle v Adj(u) // alle naboer til u hvis v.farve = hvid DFS(v) S.push(u) u.farve sort Traverseringen startes med følgende initialiseringer: S for alle knuder u V u.farve hvid for alle knuder u V Hvis u.farve = hvid DFS(u) Tidskompleksiteten for denne algoritme, er ligesom for dybde først-søgningen på ikkeorienterede grafer O ( V + E ). Stakken indeholder nu en ordning af grafens elementer. Denne ordning eller sortering kaldes, (uvist af hvilken grund), for topologisk sortering. Om topologisk sortering kan følgende siges: Givet en orienteret graf, der fx beskriver afhængighederne mellem grafens elementer udtrykt i orienteringen af kanterne mellem knuderne. En topologisk sortering er en følge af knuder, der ikke bryder med disses afhængigheder. En topologisk sortering er ikke mulig, hvis grafen indeholder kredse, da der for to knuder u og v, således må gælde, at u kommer før v, og v samtidig kommer før u. En topologisk sortering er ikke nødvendigvis entydig, se følgende eksempel: V V V V V V V 7 side 8

9 Grafer / Otto Knudsen -- Begge følger: v, v og v, v, v, v, v7,, v, v, v, v7, v, v v udgør en topologisk ordning af knuderne i ovenstående graf. Topologisk Sortering Algoritme nr. Hvis den forrige algoritme synes kompliceret, så gives herunder en særdeles simpel algoritme:. Find en knude med indgrad (nul). Udskriv knuden. Fjern knuden sammen med dens kanter. Gentag, indtil alle knuder er fjernet Knuderne er nu udskrevet i en topologisk ordning. Omkostningen forbundet med punkt er O (V ), da alle knuder nødvendigvis må gennemløbes for at finde en knude med indgrad =. Punkterne gennemføres i alt V gange, hvorfor algoritmens samlede tidskompleksitet må være O(V ). Topologisk Sortering Algoritme nr. Vi ved, det kan gøres bedre, så lad os se på følgende forbedrede version af sidste algoritme:. Saml alle knuder med indgrad = i en kø. Fjern én knude ad gangen, og opdatér samtidig indgraden på dens naboer. Hvis en knudes indgrad falder til nul, så placeres den i køen Hvis det antages, at knuderne allerede findes i en adjacency-liste, og at indgraderne på forhånd er beregnet, så fås en tidskompleksitet på O ( V + E ). side 9

10 Grafer / Otto Knudsen -- Korteste sti Problemet med at finde den korteste sti mellem to vilkårlige knuder i en graf er et af de klassiske problemer inden for grafalgoritmer. Problemet kan beskrives på følgende måde: Givet en vægtet orienteret graf G = (V, E) med en vægtfunktion w, som afbilder kantmængden over i de reelle tal. Vægten af en sti p v, v,..., er lig med summen af kanternes vægte: = vk k i i ) w( p) = w v v = ( i, Hvis grafen ikke er vægtet er summen lig med k, (antallet af kanter mellem knuderne). Korteste sti fra knude u til v defineres ved: p δ ( u, v) = min{ w( p) : u v} hvor u p v angiver stien mellem u og v, hvis denne findes. Korteste sti fra u til v defineres således som enhver sti p med w( p) = δ ( u, v). Der findes adskillige algoritmer til at løse korteste sti-problemet, alt efter hvorledes grafen er defineret. Problemet findes i flere variationer: Variationer af korteste sti-problemet Single source shortest path Givet en graf G = ( V, E) og en knude s (source). Find korteste sti fra s til enhver anden knude v V i grafen. Single destination shortest path Givet en graf G = ( V, E) og en knude t (sink). Find korteste sti til t fra enhver anden knude v V i grafen. Problemet løses ved at vende retningen på alle kanter og anvende single source shortest path-algoritmen med t som argument. Single pair shortest path Givet en graf G = ( V, E). Find korteste sti fra u til v for et givent knudepar (u, v). Dette problem løses også vha. single source shortest path-algoritmen. Der kendes ingen algoritmer, der kører asymptotisk bedre end single source shortest path-algoritmen All pairs shortest path Givet en graf G = ( V, E). Find korteste sti fra u til v for alle par (u, v). Problem løses ved at løse single source shortest path-problemet på hver knude. Problemet kan også løses som et selvstændigt problem. Negative kredse Hvis grafen indeholder kredse med negativ vægt, så er korteste sti-problemet udefineret. side

11 Grafer / Otto Knudsen -- Korteste sti-træ Et korteste sti-træ er en orienteret delgraf G = ( V, E ), hvor V V og E E, hvor følgende gælder: G er et træ med rod i s V er mængden af knuder, som kan nås fra s For enhver knude v V gælder, at den entydige simple sti fra s til v i G er en korteste sti fra s til v i G. Korteste stier er ikke nødvendigvis entydige, ej heller korteste sti-træer. Algoritmerne Bredde først søgning (Moore) BFS (Moore s algoritme) er en korteste sti-algoritme, som virker på ikke-vægtede sammenhængende grafer eller grafer, hvor hver kant er vægtet med én. Dijkstra Dijkstra s algoritme forudsætter, at grafen ikke indeholder negative vægte. Bellman-Ford Bellman-Ford s algoritme kan godt håndtere negative vægte; men den tillader ikke negative kredse. Ydermere kan algoritmen detektere og rapportere negative kredse, hvis disse forefindes. Floyd-Warshall Floyd-Warchall s algoritme kan også håndtere negative vægte, og kan i lighed med Bellman- Ford s algoritme detektere negative kredse. side

12 Grafer / Otto Knudsen -- Moore s algoritme Den første algoritme, som vi skal kigge på går ofte under navnet Moore s algorime. Algoritmen finder den korteste sti i en ikke-orienteret og ikke-vægtet graf og er blot en modifikation af BFSalgoritmen. Modifikationen går ud på, at man tillige vedligeholder en afstands- og forgængerattribut på knuden, hvor værdien af afstandsattributten angiver knudens afstand fra udgangsknuden; medens den korteste sti kan findes vha. backtracking gennem forgængerattributterne: Præ: G=(V, E) er en ikke-vægtet graf, s er startknuden Post: Alle knuder er mærket med afstanden fra s Moore(G, s) Q for alle knuder u V\{s} u.farve hvid u.afstand u.forgænger null s.farve grå s. afstand s.forgænger null Q.enqueue(s) sålænge Q u Q.dequeue() for alle v Adj(u): hvis v.farve = hvid v.farve grå v.afstand u.afstand + v.forgænger u Q.enqueue(v) u.farve sort Tidskompleksiteten for Moore s algoritme er med samme argumenter som for BFS lig med O ( V + E ). Det vil sandsynligvis være sværere at finde den korteste sti i en vægtet graf, så derfor må vi være forberedte på, at den algoritme, vi finder frem til, har en større tidskompleksitet. Dijkstra Dijkstra s algoritme anvender en teknik, der kaldes relaxering. Relaxeringsteknikken går ud på, at man løbende på hver knude nedskriver den øvre grænse på værdien af den korteste sti fra udgangsknuden s til den givne knude. Denne proces fortsætter indtil den øvre grænse er lig med den korteste sti. Relaxering Relaxér(u, v) hvis v.afstand > u.afstand + w(u, v) v.afstand u.afstand + w(u, v) v.forgænger u hvor w betegner kantvægten. Teknikken går som sagt ud på, at man vedligeholder en attribut afstand, som er et estimat en øvre grænse på værdien af den korteste sti fra s til v. side

13 Grafer / Otto Knudsen -- u v u v 9 Relaxér(u,v) Relaxér(u,v) u v u v 7 Fig: Relaxering På ovenstående figur er relaxeringen på kanten (u, v) vist. Tallet inde i knuden angiver det aktuelle korteste sti-estimat, medens tallet på kanten angiver vægten w. Da v.afstand > u.afstand + w(u, v) i figuren til venstre, så relaxeres estimatet på knude v fra 9 til 7. I figuren til højre er v.afstand u.afstand + w(u, v) og estimatet forbliver uændret. Initialisering Initialisér(G, s) for alle knuder u V u.afstand u.forgænger null s.afstand Initialiseringen sætter afstands-attributten på alle knuder til, på nær startknuden selv, som har afstands-attributten. Forgænger-attributten anvendes også her til slutteligt at afrapportere den korteste sti vha. backtracking. Dijkstra Præ: G=(V, E) er en vægtet graf uden negative vægte. Vægtfunktionen er givet ved w, s er startknuden Post: Alle knuder er mærket med afstanden fra s Dijkstra(G, s) Initialisér(G, s) Q V // liste indeholdende alle grafens knuder sålænge Q u Q.deleteMin() // udtræk knuden med mindste afstand for alle v Adj(u) // alle naboer til u Relaxér(u, v) Algoritmen arbejder sig gennem grafens knuder ved altid grådigt at vælge den forhåndenværende bedste knude, dvs. knuden med det mindste estimat i afstands-attributten. Derefter relaxeres kanterne til knudens naboer. På denne vis relaxeres hver kant i grafen netop én gang. Dette grådige valg tvinger algoritmen mod en hurtig terminering, men det er på den anden side også dette valg, der fratager algoritmen evnen til at håndtere negative vægte Tidskompleksiteten for algoritmen er O ( E + V ) = O( V ), da Q.deleteMin() koster O (V ), og denne operation foretages i alt V gange; dernæst gennemløbes samtlige kanter i for-løkken. Hvis Q implementeres som en prioritetskø, kan tidskomplesiteten mindskes til O ( E + V logv ). side

14 Grafer / Otto Knudsen -- Bellman-Ford. I lighed med Dijkstra s algoritme, så anvender Bellman-Ford s algoritme også relaxeringsteknikken, hvor man løbende estimerer den øvre grænse på værdien af den korteste sti mellem knuderne. Proceduren fortsætter, indtil grænsen er lig med den korteste sti, og dette er opnået efter V iterationer, under forudsætning af, at grafen ikke indeholder negative kredse. Algoritmen kan desuden udvides, så den detekterer og rapporterer, hvis grafen indeholder negative kredse. Bellman-Ford Præ: G=(V, E) er en vægtet graf med vægtfkt. w, s er startknuden Post: Alle kanter er mærket med afstanden fra s. Bellman-Ford(G, s) Initialisér(G, s) for i til V - for alle (u, v) E Relaxér(u, v) Algoritmen kan udvides med følgende linjer, således at den returnerer den boolske værdi FALSK, hvis grafen indeholder negative kredse: for alle (u, v) E hvis v.afstand > u.afstand + w(u, v) returnér FALSK returnér SAND Algoritmens tidskompleksitet er O ( V E ), hvilket er dårligere end Dijkstra s. Floyd-Warshall (All pair shortest path) Herunder gives en algoritme til beregning af den korteste afstand mellem alle par af knuder i en graf. Lad V = { v, v,..., vn}. Vi vil definere dst (k), k>, som vægten af den korteste sti mellem s og t blandt de stier mellem s og t, der kun indeholder kanter fra v, v,..., v }, men ikke { k { v k+, vk+,..., vn}. For k = er dst (k) vægten af kanten mellem s og t, hvis en sådan eksisterer, ellers. Floyd-Warshall Præ: G=(V, E) er en vægtet graf med vægtfunktion w d () ij = w(v i, v j ) - vægten af kanten mellem v i og v j: ellers Post: d (k) ij er vægten af korteste sti mellem v i og v j Floyd-Warshall(G) for i til V for j til V for k til V d ij (k) min{d ij (k-), d ik (k-) + d kj (k-) } Der er negative kredse i grafen, hvis d ii (k) <. Algoritmens tidskompleksitet er ikke overraskende O ( V ). side

15 Grafer / Otto Knudsen -- Minimum udspændende træ Et ofte stillet spørgsmål i forbindelse med grafer er: Hvorledes kan man forbinde samtlige grafens knuder, med den mindste omkostning til følge?. For at svare på spørgsmålet, skal vi først have et par definitioner på banen: Udspændende træ (definition) Et træ, der indeholder alle knuder V fra en graf G=(V, E), og hvis kanter E tilhører E kaldes et udspændende træ for G. Minimum udspændende træ Som det måske antydes i definitionen, så kan der findes flere sådanne træer i en given graf. Det træ blandt disse udspændende træer, der har den mindste længde (vægt), kaldes for et minimum udspændende træ, MST fra engelsk: minimum spanning tree. Dette træ er heller ikke entydigt; der kan godt være flere udspændende træer med minimal længde. Et MST er netop det, vi søgte efter, da vi stillede vores oprindelige spørgsmål. Vi skal herunder se på to af de mest prominente algoritmer til at finde et MST i en graf. Inden da vil vi definere et MST mere formelt: Definition på et MST Givet en sammenhængende og ikke-orienteret graf G=(V, E) En acyklisk delgraf T E, som forbinder alle knuder i grafen G, med en samlet vægt på w( T ) = w( u, v), som er minimal, kaldes et MST. u v T (, ) Bemærk, at et MST indeholder V kanter. En generel metode til at finde et MST kan gives ved følgende pseudo-kode, der så at sige gror et træ: MST() A // A er en delmængde af et udspændende træ Sålænge A ikke er et udspændende træ find (u, v) E, som er en sikker kant til A A A {(u, v)} returnér A Mængden A er på ethvert tidspunkt i løbet af algoritmens afvikling en delmængde af et udspændende træ. Et sådant udsagn, der er statisk kaldes for en invariant. Invariant: A er en delmængde af et udspændende træ Ovenstående pseudokode fordrer nok en forklaring på begrebet en sikker kant. En sikker kant er en kant, med minimum vægt, der kan føjes til mængden A, således at A stadig udgør en delmængde af et udspændende træ. Se figur. side

16 Grafer / Otto Knudsen -- S a 8 7 b c d i 9 e V \ S 8 7 h g f Fig: Mængden A er de tykke grå streger. En kant med minimum vægt, som krydser adskillelsen mellem S og S\V kaldes en sikker kant. En metode til at finde et MST skyldes Kruskal. Han anvender en grådig strategi, idet han hele tiden udvælger en kant med minimal vægt, og lader den indgå i løsningen, såfremt den ikke skaber en kreds. Kruskal Kruskal() A // A er en delmængde af et udspændende træ for alle knuder u V MakeDisjointSet(u) sortér grafens kanter efter ikke-faldende orden for alle kanter (u, v) E efter ikke-faldende orden hvis find(u) find(v) A A {(u, v)} union(u, v) returnér A Med henvisning til ovenstående pseudokode, så kan følgende siges om Kruskal: Invarianten A er en skov En sikker kant er en kant med mindst vægt, der forbinder to uafhængige dele af grafen Kruskal vedligeholder således en skov at træer. Til at starte med er der V træer, der hver især består af én knude. Når en kant tilføjes, så samles to træer til ét, og algoritmen terminerer, når der kun er ét træ i skoven. Prim Prim() Q V // Placér alle knuder i en prioritetskø for alle knuder u Q u.nøgle rod.nøgle rod.forgænger null sålænge Q u Q.deleteMin() for alle knuder v Adj(u) hvis v Q AND w(u, v) < v.nøgle v.nøgle w(u, v) v.forgænger u Med henvisning til ovenstående pseudokode, så kan følgende siges om Prim: side

17 Grafer / Otto Knudsen -- Invarianten A er et træ En sikker kant er en kant med mindst vægt, der forbinder træet med en knude, som ikke i forvejen er i træet Prim gror således et træ én kant ad gangen med udgangspunkt i en vilkårlig knude. For hvert skridt vælges en kant med minimal vægt fra en knude i træet til en knude, der ikke indgår i træet. Algoritmen terminerer, når alle knuder i grafen er repræsenteret i træet. side 7

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

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

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

Minimum udspændende Træer (MST)

Minimum udspændende Træer (MST) Minimum udspændende Træer (MST) Træer Et (frit/u-rodet) træ er en uorienteret graf G = (V, E) som er Sammenhængende: der er en sti mellem alle par af knuder. Acyklisk: der er ingen lukket kreds af kanter

Læs mere

Minimum udspændende Træer (MST)

Minimum udspændende Træer (MST) Minimum udspændende Træer (MST) Træer Et (frit/u-rodet) træ er en uorienteret graf G = (V, E) som er Sammenhængende: der er en sti mellem alle par af knuder. Acyklisk: der er ingen kreds af kanter. Træ

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. Figur: Terminologi: n = V, m = E (eller V og E (mis)bruges som V og E ).

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

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

P2-projektforslag Kombinatorik: grafteori og optimering.

P2-projektforslag Kombinatorik: grafteori og optimering. P2-projektforslag Kombinatorik: grafteori og optimering. Vejledere: Leif K. Jørgensen, Diego Ruano 1. februar 2013 1 Indledning Temaet for projekter på 2. semester af matematik-studiet og matematikøkonomi-studiet

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

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET INSTITUT FOR ATALOGI, AARHUS UNIVERSITET Science and Technology EKSAMEN Algoritmer og atastrukturer (00-ordning) Antal sider i opgavesættet (incl. forsiden): (elleve) Eksamensdag: Fredag den. august 0,

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

DMG Bachelor Maj/Juni 2002

DMG Bachelor Maj/Juni 2002 Indholdsfortegnelse 1 INDLEDNING... 2 1.1 PROBLEMFORMULERING... 2 1.2 FORMÅL... 2 1.3 MÅL... 2 2 PROBLEMANALYSE... 3 2.1 INDLEDNING... 3 2.2 TRANSPARENTE BROER I COMPUTERNETVÆRK... 3 2.3 ROUTERE I COMPUTERNETVÆRK...

Læs mere

Minimum udspændende Træer (MST)

Minimum udspændende Træer (MST) Minimum udspændende Træer (MST) Træer Et (frit/u-rodet) træ er en uorienteret graf G = (V, E) som er Sammenhængende: der er en sti mellem alle par af knuder. Acyklisk: der er ingen kreds af kanter. Træer

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

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

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

Mindste udspændende træ

Mindste udspændende træ Mindste udspændende træ Introduktion Repræsentation af vægtede grafer Egenskaber for mindste udspændende træer Prims algoritme Kruskals algoritme Philip Bille Mindste udspændende træ Introduktion Repræsentation

Læs mere

P (n): rekursiv beregning af f n kræver f n beregninger af f 1. P (n) er sand for alle n 2.

P (n): rekursiv beregning af f n kræver f n beregninger af f 1. P (n) er sand for alle n 2. P (n): rekursiv beregning af f n kræver f n beregninger af f 1. P (n) er sand for alle n 2. Bevis ved stærk induktion. Basisskridt: P (2) er sand og P (3) er sand. Induktionsskridt: Lad k 2 og antag P

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

Et udtrykstrç med de ære regnearter, heltalskonstanter og variabler beskrives. Type Expr = Sumèplus, minus, times, div: Args, const: Int, name: Textè

Et udtrykstrç med de ære regnearter, heltalskonstanter og variabler beskrives. Type Expr = Sumèplus, minus, times, div: Args, const: Int, name: Textè Opgave 1 è20èè Et udtrykstrç med de ære regnearter, heltalskonstanter og variabler beskrives af fçlgende rekursive Trine-type: Type Expr = Sumèplus, minus, times, div: rgs, const: Int, name: Textè Type

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

Oplæg og øvelser, herunder frugt og vand Gerth Stølting Brodal

Oplæg og øvelser, herunder frugt og vand Gerth Stølting Brodal Oplæg og øvelser, herunder frugt og vand Gerth Stølting Brodal Datalogisk Institut Aarhus Universitet MasterClass Matematik, Mærsk Mc-Kinney Møller Videncenter, Sorø, 29-31. oktober 2009 Algoritmer: Matricer

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

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

18 Multivejstræer og B-træer.

18 Multivejstræer og B-træer. 18 Multivejstræer og B-træer. Multivejs søgetræer. Søgning i multivejssøgetræer. Pragmatisk lagring af data i multivejstræer. B-træer. Indsættelse i B-træer. Eksempel på indsættelse i B-træ. Facts om B-træer.

Læs mere

Hamilton-veje og kredse:

Hamilton-veje og kredse: Hamilton-veje og kredse: Definition: En sti x 1, x 2,...,x n i en simpel graf G = (V, E) kaldes en hamiltonvej hvis V = n og x i x j for 1 i < j n. En kreds x 1, x 2,...,x n, x 1 i G kaldes en hamiltonkreds

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET INSTITUT FOR DATALOGI, AARHUS UNIVERSITET Science and Technology EKSAMEN Antal sider i opgavesættet (incl. forsiden): 6 (seks) Eksamensdag: Fredag den 22. juni 2012, kl. 9.00-13.00 Eksamenslokale: Finlandsgade

Læs mere

Lineære ligningssystemer

Lineære ligningssystemer enote 2 1 enote 2 Lineære ligningssystemer Denne enote handler om lineære ligningssystemer, om metoder til at beskrive dem og løse dem, og om hvordan man kan få overblik over løsningsmængdernes struktur.

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

Grafteori, Kirsten Rosenkilde, september 2007 1. Grafteori

Grafteori, Kirsten Rosenkilde, september 2007 1. Grafteori Grafteori, Kirsten Rosenkilde, september 007 1 1 Grafteori Grafteori Dette er en kort introduktion til de vigtigste begreber i grafteori samt eksempler på opgavetyper inden for emnet. 1.1 Definition af

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

Et udtryk på formena n kaldes en potens med grundtal a og eksponent n. Vi vil kun betragte potenser hvor grundtallet er positivt, altså a>0.

Et udtryk på formena n kaldes en potens med grundtal a og eksponent n. Vi vil kun betragte potenser hvor grundtallet er positivt, altså a>0. Konkrete funktioner Potenser Som udgangspunkt er brugen af potenser blot en forkortelse for at gange et tal med sig selv et antal gange. Hvis a Rskriver vi a 2 for a a a 3 for a a a a 4 for a a a a (1).

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

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

DATALOGI 0GB. Skriftlig eksamen tirsdag den 6. januar 2004

DATALOGI 0GB. Skriftlig eksamen tirsdag den 6. januar 2004 Københavns Universitet bacheloruddannelsen i datalogi side 1 af 6 DATALOGI 0GB Skriftlig eksamen tirsdag den 6. januar 2004 Dette opgavesæt består af 6 nummererede sider. Eksamensdeltagerne bør straks

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

9.1 Egenværdier og egenvektorer

9.1 Egenværdier og egenvektorer SEKTION 9.1 EGENVÆRDIER OG EGENVEKTORER 9.1 Egenværdier og egenvektorer Definition 9.1.1 1. Lad V være et F-vektorrum; og lad T : V V være en lineær transformation. λ F er en egenværdi for T, hvis der

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

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

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

Højere Teknisk Eksamen maj 2008. Matematik A. Forberedelsesmateriale til 5 timers skriftlig prøve NY ORDNING. Undervisningsministeriet

Højere Teknisk Eksamen maj 2008. Matematik A. Forberedelsesmateriale til 5 timers skriftlig prøve NY ORDNING. Undervisningsministeriet Højere Teknisk Eksamen maj 2008 HTX081-MAA Matematik A Forberedelsesmateriale til 5 timers skriftlig prøve NY ORDNING Undervisningsministeriet Fra onsdag den 28. maj til torsdag den 29. maj 2008 Forord

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

Matematik A. Studentereksamen. Ny ordning. Forberedelsesmateriale. ny-stx191-mat/a

Matematik A. Studentereksamen. Ny ordning. Forberedelsesmateriale. ny-stx191-mat/a Matematik A Studentereksamen Ny ordning Forberedelsesmateriale ny-stx191-mat/a-24042019 Onsdag den 24. april 2019 Forberedelsesmateriale til stx-a MATEMATIK Der skal afsættes 6 timer af holdets sædvanlige

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

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

Dansk Datalogi Dyst 2015 DDD Runde 2

Dansk Datalogi Dyst 2015 DDD Runde 2 . 19. februar, 2015 linetest DK v1.0 Line Test Sigurd er begyndt i gymnasiet og har lært om linjer på formen f(x) = ax + b. Han har prøvet at tegne nogle linjer på papir for at finde ud af hvilke koordinater

Læs mere

Førsteårsprojekt F2008 Flere grafalgoritmer, og visualisering SØGES

Førsteårsprojekt F2008 Flere grafalgoritmer, og visualisering SØGES Førsteårsprojekt F2008 Flere grafalgoritmer, og visualisering Peter Sestoft 2008-03-11* SØGES 1-2 studerende til Åbent Hus torsdag 10. april kl 1700-1800 Skal kunne fortælle 5-10 minutter om hvad hvordan

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet ksamen 06, F side af sider anmarks Tekniske Universitet Skriftlig prøve, den 9. maj 0. ursusnavn: lgoritmer og datastrukturer ursus nr. 06. jælpemidler: Skriftlige hjælpemidler. et er ikke tilladt at medbringe

Læs mere

Sommeren 2001, opgave 1

Sommeren 2001, opgave 1 Sommeren 2001, opgave 1 Vi antager at k 3, da det ellers er uklart hvordan trekanterne kan sættes sammen i en kreds. Vi ser nu at for hver trekant er der en knude i kredsen, og en spids. Derfor er n =

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

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

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

DM02 Kogt ned. Kokken. Januar 2006

DM02 Kogt ned. Kokken. Januar 2006 DM02 Kogt ned Kokken Januar 2006 1 INDHOLD Indhold 1 Asymptotisk notation 2 2 Algoritme analyse 2 3 Sorterings algoritmer 2 4 Basale datastrukturer 3 5 Grafer 5 6 Letteste udspændende træer 7 7 Disjunkte

Læs mere

Vægtede grafer. I en vægtet graf har enhver kant tilknyttet en numerisk værdi, kaldet kantens vægt

Vægtede grafer. I en vægtet graf har enhver kant tilknyttet en numerisk værdi, kaldet kantens vægt Korteste veje 1 Vægtede grafer HNL I en vægtet graf har enhver kant tilknyttet en numerisk værdi, kaldet kantens vægt Vægte kan repræsentere afstande, omkostninger, o.s.v. Eksempel: I en flyrutegraf repræsenterer

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET INSTITUT FOR DATALOGI, AARHUS UNIVERSITET Science and Technology EKSAMEN Antal sider i opgavesættet (incl. forsiden): (fjorten) Eksamensdag: Mandag den. juni 0, kl. 9.00-.00 Tilladte medbragte hjælpemidler:

Læs mere

Førsteårsprojekt F2008. Nogle algoritmer på grafer

Førsteårsprojekt F2008. Nogle algoritmer på grafer Førsteårsprojekt F2008 Nogle algoritmer på grafer Peter Sestoft 2008-02-19 Oversigt for i dag Definition: graf og orienteret graf Repræsentation ved kantlister Bredde-først gennemløb Dybde-først gennemløb

Læs mere

Grafteori. 1 Terminologi. Grafteori, Kirsten Rosenkilde, august fra V. (Engelsk: subgraph, spanning subgraph, the subgraph

Grafteori. 1 Terminologi. Grafteori, Kirsten Rosenkilde, august fra V. (Engelsk: subgraph, spanning subgraph, the subgraph Grafteori, Kirsten Rosenkilde, august 2010 1 Grafteori Dette er en introduktion til de vigtigste begreber i grafteori, udvalgt teori samt eksempler på opgavetyper inden for emnet med fokus på den type

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Algoritmer og Datastrukturer (00-ordning) Antal sider i opgavesættet (incl. forsiden): 6 (seks) Eksamensdag:

Læs mere

DM72 Diskret matematik med anvendelser

DM72 Diskret matematik med anvendelser DM72 Diskret matematik med anvendelser En hurtig gennemgang af de vigtigste resultater. (Dvs. ikke alle resultater). Logik Åbne udsagn 2 + 3 = 5 Prædikater og kvantorer P (x) := x er et primtal x N : n

Læs mere

i x-aksens retning, så fås ). Forskriften for g fås altså ved i forskriften for f at udskifte alle forekomster af x med x x 0

i x-aksens retning, så fås ). Forskriften for g fås altså ved i forskriften for f at udskifte alle forekomster af x med x x 0 BAndengradspolynomier Et polynomium er en funktion på formen f ( ) = an + an + a+ a, hvor ai R kaldes polynomiets koefficienter. Graden af et polynomium er lig med den højeste potens af, for hvilket den

Læs mere

Differentialregning Infinitesimalregning

Differentialregning Infinitesimalregning Udgave 2.1 Differentialregning Infinitesimalregning Noterne gennemgår begreberne differentialregning, og anskuer dette som et derligere redskab til vækst og funktioner. Noterne er supplement til kapitel

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

Grafteori. 1 Terminologi. Indhold

Grafteori. 1 Terminologi. Indhold Grafteori Dette er en introduktion til de vigtigste begreber i grafteori, udvalgt teori samt eksempler på opgavetyper inden for emnet med fokus på de opgavetyper der typisk er til internationale matematikkonkurrencer.

Læs mere

Eksempler på elevbesvarelser af gådedelen:

Eksempler på elevbesvarelser af gådedelen: Eksempler på elevbesvarelser af gådedelen: Elevbesvarelser svinger ikke overraskende i kvalitet - fra meget ufuldstændige besvarelser, hvor de fx glemmer at forklare hvad gåden går ud på, eller glemmer

Læs mere

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs Philip Bille Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje

Læs mere

Synopsis: Titel: Flugtveje. Tema: Algoritmer og netværk. Projektperiode: P2, forårssemesteret 2010. Projektgruppe: A312

Synopsis: Titel: Flugtveje. Tema: Algoritmer og netværk. Projektperiode: P2, forårssemesteret 2010. Projektgruppe: A312 Flugtveje [1] A312 Jens Stokholm Høngaard Kristian Pilegaard Jensen Thomas Birch Mogensen Niels Asger Aunsborg Nicolai Vesterholt Søndergaard Daniel Agerskov Heidemann Jensen 18. maj 2010 I II Det Teknisk-Naturvidenskabelige

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

Reeksamen i Diskret Matematik

Reeksamen i Diskret Matematik Reeksamen i Diskret Matematik Første Studieår ved Det Teknisk-Naturvidenskabelige Fakultet 21. august 2015 Nærværende eksamenssæt består af 10 nummererede sider med ialt 17 opgaver. Tilladte hjælpemidler:

Læs mere

Reeksamen i Diskret Matematik

Reeksamen i Diskret Matematik Reeksamen i Diskret Matematik Første Studieår ved Det Teknisk-Naturvidenskabelige Fakultet Torsdag den 9. august, 202. Kl. 9-3. Nærværende eksamenssæt består af 9 nummererede sider med ialt 2 opgaver.

Læs mere

Eksamen i Diskret Matematik

Eksamen i Diskret Matematik Eksamen i Diskret Matematik Første Studieår ved Det Teknisk-Naturvidenskabelige Fakultet 10. juni, 2016. Kl. 9-13. Nærværende eksamenssæt består af 11 nummererede sider med ialt 16 opgaver. Alle opgaver

Læs mere

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs Philip Bille Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje

Læs mere

Mindste udspændende træ

Mindste udspændende træ Mindste udspændende træ Introduktion Repræsentation af vægtede grafer Egenskaber for mindste udspændende træer Prims algoritme Kruskals algoritme Philip Bille Mindste udspændende træ Introduktion Repræsentation

Læs mere

Kom/IT rapport Grafisk design Anders H og Mikael

Kom/IT rapport Grafisk design Anders H og Mikael Kom/IT rapport Grafisk design Anders H og Mikael Denne rapport i grafisk design, vil tage udgangspunkt i den PowerPoint præsentation vi lavede i forbindelse med en opgave i samfundsfag. Rapporten er inddelt

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

Bjælkeoptimering. Opgave #1. Afleveret: 2005.10.03 Version: 2 Revideret: 2005.11.07. 11968 Optimering, ressourcer og miljø. Anders Løvschal, s022365

Bjælkeoptimering. Opgave #1. Afleveret: 2005.10.03 Version: 2 Revideret: 2005.11.07. 11968 Optimering, ressourcer og miljø. Anders Løvschal, s022365 Bjælkeoptimering Opgave # Titel: Bjælkeoptimering Afleveret: 005.0.0 Version: Revideret: 005..07 DTU-kursus: Underviser: Studerende: 968 Optimering, ressourcer og miljø Niels-Jørgen Aagaard Teddy Olsen,

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET INSTITUT FOR DTLOGI, RHUS UNIVERSITET Science and Technology EKSMEN ntal sider i opgavesættet (incl. forsiden): (elleve) Eksamensdag: Mandag den. august 07, kl. 9.00-.00 Tilladte medbragte hjælpemidler:

Læs mere

Definition (Pseudo-graf): En pseudo-graf G = (V, E) består af V, en ikke-tom mængde hvis elementer kaldes punkter, en mængde E samt en funktion f : E

Definition (Pseudo-graf): En pseudo-graf G = (V, E) består af V, en ikke-tom mængde hvis elementer kaldes punkter, en mængde E samt en funktion f : E Grafteori Definition (Simpel graf): En simpel graf G = (V, E) består af V, en mængde hvis elementer kaldes punkter, og E, en mængde af uordnede par af forskellige elementer fra V. Et element fra E kaldes

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

Eksempel på muligt eksamenssæt i Diskret Matematik

Eksempel på muligt eksamenssæt i Diskret Matematik Eksempel på muligt eksamenssæt i Diskret Matematik Første Studieår ved Det Teknisk-Naturvidenskabelige Fakultet???dag den?.????, 20??. Kl. 9-13. Nærværende eksamenssæt består af 13 nummererede sider med

Læs mere

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET STTUT FR DTG, RUS UVERSTET Science and Technology ESE ntal sider i opgavesættet (incl. forsiden): (elleve) Eksamensdag: Fredag den. juni 0, kl. 9.00-.00 Tilladte medbragte hjælpemidler: lle sædvanlige

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

Deskriptiv statistik. Version 2.1. Noterne er et supplement til Vejen til matematik AB1. Henrik S. Hansen, Sct. Knuds Gymnasium

Deskriptiv statistik. Version 2.1. Noterne er et supplement til Vejen til matematik AB1. Henrik S. Hansen, Sct. Knuds Gymnasium Deskriptiv (beskrivende) statistik er den disciplin, der trækker de væsentligste oplysninger ud af et ofte uoverskueligt materiale. Det sker f.eks. ved at konstruere forskellige deskriptorer, d.v.s. regnestørrelser,

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

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

Appendiks 1: Om baggrund og teori bag valg af skala

Appendiks 1: Om baggrund og teori bag valg af skala Appendiks 1: Om baggrund og teori bag valg af skala De nationale test gav i 2010 for første gang danske lærere mulighed for at foretage en egentlig måling på en skala af deres elevers præstationer på grundlag

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

M=3 kunde forbindelse. oprettet lokation Steinerkant

M=3 kunde forbindelse. oprettet lokation Steinerkant M=3 åben facilitet kunde forbindelse lukket facilitet oprettet lokation Steinerkant v Connected facility location-problemet min i f i y i + d j c ij x ij + M c e z e (1) j i e hvorom gælder: x ij 1 j (2)

Læs mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Algoritmer og Datastrukturer (00-ordning) Antal sider i opgavesættet (incl. forsiden): 7 (syv) Eksamensdag:

Læs mere

Fig. 1 Billede af de 60 terninger på mit skrivebord

Fig. 1 Billede af de 60 terninger på mit skrivebord Simulation af χ 2 - fordeling John Andersen Introduktion En dag kastede jeg 60 terninger Fig. 1 Billede af de 60 terninger på mit skrivebord For at danne mig et billede af hyppighederne flyttede jeg rundt

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

Algorithms & Architectures I 2. lektion

Algorithms & Architectures I 2. lektion Algorithms & Architectures I 2. lektion Design-teknikker: Divide-and-conquer Rekursive algoritmer (Recurrences) Dynamisk programmering Greedy algorithms Backtracking Dagens lektion Case eksempel: Triple

Læs mere