DMG Bachelor Maj/Juni 2002

Størrelse: px
Starte visningen fra side:

Download "DMG Bachelor Maj/Juni 2002"

Transkript

1 Indholdsfortegnelse 1 INDLEDNING PROBLEMFORMULERING FORMÅL MÅL PROBLEMANALYSE INDLEDNING TRANSPARENTE BROER I COMPUTERNETVÆRK ROUTERE I COMPUTERNETVÆRK INTRODUKTION TIL EMNER INDENFOR DISKRET MATEMATIK BIG-O NOTATION FORSKELLIGE GRADER AF BIG-O ESTIMATER INDUKTIONSBEVIS KORTEST VEJ ANALYSE AF DIJKSTRAS ALGORITME Beskrivelse af algoritmen Eksempel på algoritmen Induktionsbevis for algoritmens rigtighed Tidskompleksitet for algoritmen ANALYSE AF BELLMAN-FORDS ALGORITME Beskrivelse af algoritmen Eksempel på algoritmen Induktionsbevis for algoritmens rigtighed Tidskompleksitet for algoritmen ANALYSE AF FLOYD-WARSHALL Beskrivelse af algoritmen Eksempel på algoritmen Induktionsbevis for algoritmens rigtighed Tidskompleksitet for algoritmen SPANNING TREE Minimum spanning trees ANALYSE AF PRIMS ALGORITME Beskrivelse af algoritmen Eksempel på algoritmen Bevis for algoritmens rigtighed Tidskompleksitet for algoritmen OPTIMERING AF ALGORITMER Prioritetskø Optimering af Dijkstras algoritme BESKRIVELSE AF IMPLEMENTERING AF DIJKSTRAS ALGORITME OPTIMERING AF DIJKSTRAS ALGORITME APPLET TIL DEMONSTRATION AF ALGORITMERNE Demonstration af Dijkstras algoritme Demonstration af Prims algoritme Demonstration af Bellman-Fords algoritme Generering af tilfældig graf KONKLUSION

2 1 Indledning 1.1 Problemformulering I forbindelse med routere og broer i computer netværk, bliver der anvendt nogle matematiske algoritmer, såsom shortest path og spanning tree. Routere, som sender datapakker til andre netværk, bruger shortest path algoritmer til at bestemme den korteste vej til modtageren af pakkerne. I netværk kobles ofte to transparente broer imellem netværkssegmenter, for at sikre en høj fejltolerance. Det kan give nogle problemer mht. oplæringsprocessen af broerne. Der benyttes spanning tree algoritmer til at undgå disse. Vi vil bevise rigtigheden og analysere kompleksiteten i tre udformninger af shortest path og en udformning af spanning tree algoritmen samt give eksempler på implementering af algoritmerne. 1.2 Formål Formålet med projektet er, at udforme en matematisk analyse af algoritmer, som benyttes i netværkskomponenter i et netværk. Projektet skal benyttes til at udvide projektdeltagernes kendskab til emner indenfor diskret matematik. 1.3 Mål De valgte algoritmer beskrives og deres korrekthed og tidskompleksitet analyseres. Der beskrives minimum to kortest vej algoritmer Der beskrives minimum en udspændende træ algoritme Algoritmerne opstilles og sammenholdes og det vurderes, om de kan optimeres 2

3 2 Problemanalyse 2.1 Indledning Problemanalysen vil kort introducere læseren for problemstillingerne i det valgte område og vise løsningsmulighederne på problemerne, som senere i rapporten vil blive analyseret. 2.2 Transparente broer i computernetværk En bro i et computernetværk forbinder to eller flere netværkssegmenter af samme type (f.eks. Ethernet). Overordnet benyttes en bro til at separere trafik, således at trafik på et segment holdes lokalt og ikke belaster det andet segment. Derved sikrer broen, at trafik fra et segment 1 kun bliver transmitteret til segment 2, hvis det er tiltænkt en modtager på segmentet. I netværk hvor oppetiden er essentiel, kan der indsættes to eller flere broer imellem 2 segmenter for at forøge fejltolerancen, sådan at hvis en bro får en defekt kan den anden tage over. Dette skaber nogle problemer, som vi vil beskrive herunder. PC Salgsassistent Salgsafdeling Segment Salgsafdeling Server Port 1/1 Port 2/1 Port 1/2 Bro 1 Bro 2 Port 2/2 Serviceafdeling Segment PC Servicemedarbejder Serviceafdeling server Figur 2-1 Brokoblet netværk I et kritisk netværk (Figur 2-1), er der koblet to broer imellem to segmenter, for at sikre en høj fejltolerance. Idet de to broer kobles til netværket igangsættes en oplæringsproces. Da broerne er transparente, skal de opretholde en database (FDB), som fortæller hvilket segment de forskellige computere er tilsluttet. Denne database initialiseres når broerne tilsluttes segmenterne. 3

4 Broerne opfanger trafikken på segmenterne og opbygger FDB en udfra dette. Initialiseringen indebærer, at en bro broadcaster 1 sin FDB til andre broer på netværket, således at broerne kan opdatere hinandens FDB. Som man kan se i figuren er der en kreds imellem bro 1 og bro 2, som indebærer at broerne vil opdatere hinanden i en uendelighed. F.eks. kunne computeren Salgsassistent sende en frame 2 på netværket, som modtages af bro 1 på port 1/2. Samtidig modtager bro 2 den samme frame på port 2/1. Bro 1 og bro 2 vil opdatere deres FDB og broadcaste den på netværket. Når broerne modtager hinandens FDB vil de opdatere deres egen og igen broadcaste FDB en ud på nettet. Derved er der opstået en kreds imellem broerne. Hvis man betragter netværket som en graf, skal alle kredse i grafen fjernes. Det kan gøres ved at omforme grafen til et udspændende træ, så der er en unik vej imellem punkterne i grafen. Der findes såkaldte spanning tree algoritmer, som bruges af broerne for at undgå det ovenstående problem. Vi ønsker at vise et eksempel på en spanning tree algoritme, som udfra en graf fjerner eventuelle kredse. 2.3 Routere i computernetværk Når der skal sendes pakker mellem flere computere i et internetbaseret netværk, skal pakkerne routes imellem forskellige netværk, indtil de når bestemmelsesstedet. Denne routning af pakker foregår ved hjælp af routere, som forbinder netværk med hinanden. Router Router Router Router Router Router Router Router Router Figur 2-2 Routerkoblet netværk Figur 2-2 viser hvorledes en pakke fra computeren med IP adresse skal sendes til en server med IP adresse igennem netværket. Men hvilken vej skal den benytte? Hver router er nødt til at kende vejen til de andre netværk, som den kan sende pakker videre til. Derfor har en router en routningstabel, som indeholder vejen til et givent netværk og den pris, som vejen koster. Dette kunne være antal hops 3 eller beregnet udfra Quality of Service, hvor prisen er delt op i 4 faktorer: Kapacitet, forsinkelse, faktisk pris og fejlhyppighed. Der benyttes to typer interior routerprotokoller: Link State og Distance Vector. Link State protokollen benytter sig af Dijkstras kortest vej algoritme til at finde den korteste vej igennem netværket, mens Distance vector protokollen benytter sig af Bellman-Ford algoritmen. Fælles for begge typer er, at routningstabellen opbygges ved at routerne deler informationer om de veje, som de er bekendt med. 1 Netværksinformation som modtages alle enheder på et netværk 2 Netværkspakke 3 Antal routere på vejen til det andet netværk 4

5 Vi ønsker at analysere kortest vej algoritmerne, som udfra en graf og et udgangspunkt finder den korteste vej igennem grafen. 5

6 3 Introduktion til emner indenfor diskret matematik 3.1 Big-O notation Når man skal vurdere hvor hurtigt en funktion vokser, benytter man sig af Big-O notationen. Man anvender f.eks. Big-O notation, hvis man skal give et estimat af, hvor lang tid det tager at udføre en bestemt mængde instruktioner. Notationen har været kendt siden 12. Det var dog først senere, at Donald Knuth gjorde Big-O kendt i forbindelse med computervidenskab. Det var ligeledes ham, der introducerede Big-Omega og Big-Theta notation, som vi beskriver senere i dette afsnit. Definitionen af Big-O er som følger: Lad f og g være funktioner givet ved den reelle talmængde. Vi siger, at f(x) er O(g(x) hvis der forefindes konstanter C og k således, at f(x) C g(x), for x>k (man siger at f(x) er Big-O af g(x)) Som vi kan se af definitionen, er alle funktioner som overholder definitionen Big-O af f(x). Dvs. hvis f(x) er x 2 + 2x, så er f(x) både O(x 2 ) og O(x 3 ). Dette kan illustreres på følgende måde. x 2 + 2x x 2 + x 2 O(x 2 ) Dvs. C=2 k=2 Tilsvarende for O(x 3 ): x 2 + 2x x 2 * x + 2x* x 2 3 x 3 (x 3 ) Dvs C=3 og k=2 Typisk vil man, når man søger at finde frem til kompleksiteten af en algoritme, finde frem til hvilke delprocedurer algoritmen er udgjort af. Dette gøres ved først at udregne kompleksiteten for hver enkel delprocedure. Dernæst kombineres den udregnede kompleksitet, ligeledes for hver enkelt delprocedure. For at muliggøre dette, er man nødt til at kende nogle specifikke regneregler for Big-O. Eksempel: f 1 (x) er O(g 1 (x)) og f 2 er O(g 2 (x)). Så vil (f 1 + f 2 )(x) være O(max(g 1 (x), g 2 (x))) Heraf følger at såfremt både f 1 og f 2 er O(g(x)), så er (f 1 +f 2 )(x) O(g(x)). Eksempel: Hvis f 1 (x) er O(g 1 (x)) og f 2 (x) er O(g 2 (x)). Så vil (f 1 f 2 ) være O(g 1 (x)g 2 (x)). 3.2 Forskellige grader a f Big-O estimater Graden på den algoritme, som angiver vores estimat, afgør naturligvis kompleksiteten. Man kan derfor lave en inddeling af tidskompleksiteten ud fra graden på algoritmen. Nedenstående figur viser de forskellige grader af kompleksitet, hvor dem med den laveste tidskompleksitet er listet øverst. Kompleksitet O(1) O(log n) O(n) O(n log n) O(n b ) O(b n ) for b>1 O(n!) Terminologi Konstant kompleksitet Logaritmisk kompleksitet Linear kompleksitet n log n kompleksitet Polynomiel kompleksitet Eksponentiel kompleksitet Fakultet kompleksitet 6

7 Man taler som oftest om, at en algoritme, der kan løses med polynomiel Worst-Case kompleksitet, er traceable. Dvs. at man kan forvente, at man kan få et resultat på baggrund af input inden for relativt kort tid. Det er dog imidlertid ikke givet, idet graden af vores polynomium kan være ekstremt højt. Derudover kan mængden af input være ekstremt stort. Tilsvarende er algoritmer, med en Worst-case kompleksitet der er værre end polynomiel intraceable, dvs. at kompleksiteten er så stor, at algoritmen først vil producere et resultat efter en ekstrem lang tidsperiode (f.eks. 112 milliarder år). Udover det findes NP komplette problemer, dvs. problemer som der ikke er fundet nogle algoritmer som kan løse et problem inden for polynomial tid. De forskellige grader af kompleksitet, kan illustreres via en graf, hvor x-linien angiver input, og y-linen angiver tidskompleksiteten. Som man kan se på ovenstående figur, vokser O(n!) mest, og derved tager funktioner med denne kompleksitet lang tid at løse. O(1) er en konstant og vokser derved ikke, og den er udtryk for den laveste kompleksitet. 7

8 Big-Omega og Big-Theta: Hvor Big-O beskriver hvordan en funktion vokser i kraft af en øvre grænse, angiver Big-Omega præcist det modsatte, hvilket vil sige en nedre grænse. Lad f og g være funktioner givet ved den reelle talmængde. Vi siger, at f(x) er Ω(g(x) hvis der forefindes konstanter C og k således, at f(x) C g(x), for x>k (man siger at f(x) er Big-Omega af g(x)) Dvs. alle de funktioner som man ved at gange en konstant på, er mindre end en anden given funktion f(x) er Big-Omega til f(x). Med udgangspunkt i ovenstående definition kan vi se, at hvis en funktion f(x) er givet ved f(x)= x 2 + 2x, så er f(x) både O(x 2 ) og Ω(x 2 ). Vi viste før, at f(x) er O(x 2 ) og nu vil vi vise, at f(x) er Ω(x 2 ). x 2 + 2x >0,5 x 2 Ω(x 2 ) dvs. C= 0,5 og k=1 Big-Omega blev som nævnt introduceret af Donald Knuth i 1970 erne. Årsagen hertil var, at Big-O notationen tit blev brugt i situationer, hvor man egentlig ønskede både en øvre og nedre grænse. Det vil sige, at man ønsker at finde frem til en funktion g(x), som opfylder, at den givne funktion f(x), er både O(g(x)) og Ω(g(x)). Denne notation kaldes for Big-Theta og er givet ved flg.: Lad f og g være funktioner givet ved den reelle talmængde. Vi siger, at f(x) er Θ(g(x)) såfremt f(x) er O(g(x)) og f(x) er Ω(g(x)). Når f(x) er f(x) er Θ(g(x)), siger vi, at f(x) er Big-Theta af g(x). Man siger også, at f(x) er Order of g(x). Grunden til, at man ønsker en øvre og en nedre grænse er, at man på den måde mere præcist, kan definere hvordan en funktion vokser. Derfor vil man som oftest, når man arbejder med Big-O, analysere de funktioner, som ligner mest muligt den funktion man tager udgangspunkt i. Dvs. er f(x)= x n + x 7 + x 4, vil man angive O(x n ) som er Big-O af f(x). x n er også Big-Theta til f(x), hvilket vi blandt andet viste for f(x)= x 2.

9 Nedenstående viser en figur, over de funktioner som vi anvendte i ovenstående i forbindelse med vores eksempel. Dvs. f(x) = x 2 + 2x, O(x 2 ) for C=2, k=2, og endelig Ω(x 2 ) for C= 0,5 og k=1. Figur 3-1 Big-O og Big-Omega Bemærk, at funktionen f(x)=x 2 + 2x også er Θ(x 2 ), eftersom f(x) er både O(x 2 ) og Ω(x 2 ). 9

10 3.3 Induktionsbevis Princippet om matematisk induktion er en bevisteknik, som bruges til at bevise påstande om diskrete objekter. At bevise noget induktivt betyder, at hvis en påstand P gælder for f.eks. tallet n, så gælder det også for n+1 og alle efterfølgende positive heltal. Korrektheden af et induktivt bevis hænger sammen med princippet om well-ordering. Princippet om well-ordering siger at: Enhver mængde af positive heltal har et tal med en mindste værdi. Denne grundsætning gælder ikke for en mængde, som ikke består af heltal. F.eks. følger mængden af tal givet af udsagnet: (n+1)/n hvor (n 2) ikke princippet om well-ordering, da mængden af tal som udsagnet resulterer i ikke er heltal. Lad mængden S, vores resultat af en påstand, være en delmængde af N, som alle er positive heltal. Målet er nu at bevise at S = N, dvs. at alle vore resultater tilhører mængden N og derved bevise at princippet om det induktive bevis er gyldigt. Først opstilles nogle antagelser om S: 1. 1 tilhører S. 2. for hver k der tilhører N, hvis k tilhører S da vil k+1 tilhøre S. Altså hvis k er et heltal og det tilhører mængden S, så tilhører alle efterfølgende heltal også S. Hvis ovenstående antagelser er sande, da kan det konkluderes at S = N. Man kan prøve at bevise det modsatte: nemlig at S N. Da vil komplementærmængden af S, S'' være defineret som: hvis r tilhører N da tilhører r ikke S. Ifølge princippet om well-ordering har mængden S'' et heltal med mindste værdi m. Antagelse 1 siger at tallet 1, tilhører S og derved kan m altså ikke være 1. Heltallet m-1 tilhører N og da m-1 er en mindre m, må det tilhøre S. Hvis k sættes lig m-1, i antagelse 2 må det konkluderes at m tilhører S og derved modsiger det at m tilhører S''. Derved er det også vist at S = N. Der er to trin i et induktionsbevis. Basistrinnet, hvor det bevises om P gælder for f.eks. P(1). Induktionstrinnet hvor det bevises om P(n+1) gælder. F.eks. kan påstanden summen af de første n positive tal er lig n(n+1)/2, bevises vha. induktion. Først udføres basistrinnet: P(n): n = n(n+1)/2 P(1): 1 = 1(1+1)/2 P(1): 1 = 1 Basistrinnet er altså sandt. 10

11 Induktionstrinnet skal bevise at påstanden også gælder for n+1, hvis det antages at P(n) er sand. Derfor adderes 1 nu for hvert n. P(n+1): (n+1) = (n+1)(n+2)/2 Hvis (n+1)(n+2)/2 kan udledes af P(n) da er udtrykket bevist. (n+1) lægges nu til hver side af lighedstegnet i P(n). P(n): n+(n+1) = n (n+1)/2+(n+1) Da der i begge led kan findes udtrykket (n+1) sættes dette nu uden for en parentes. = (n+1)(n/2 + 1) For at få sat n/2 og 1 på samme brøkstreg ganger og dividerer vi 1 med 2. Hermed fås: = (n+1)(n/2 + (1*2)/2) Hvilket gør at vi kan finde det søgte udtryk, nemlig: = (n+1)(n+2)/2 11

12 4 Kortest vej Grafer kan i mange situationer bruges til at lave modeller af situationer fra det virkelige liv. Et eksempel på dette er en graf, som bruges til at vise et routerkoblet netværk. I en sådan graf vil punkterne gengive forskellige netværk og kanterne gengive routere, som forbinder netværkene. Hver kant kan være forsynet med en vægt, som f.eks. kan være omkostningen ved at benytte denne router. For at gøre kommunikationen mellem netværk så effektiv som muligt ønsker vi at finde den korteste vej fra et netværk til et andet. Det vil altså sige, at finde ud af hvilken vej gennem en graf, der har den mindste totale vægt, når kanternes vægt adderes. Nedenstående eksempel viser en graf over et routerkoblet netværk og den korteste vej fra netværk n1 til n. Graf over routerkoblet netværk Kortest vej fra n1 til n r (6) n7 r (6) n7 r1 (10) n2 r5 (2) r6 (1) n5 r9 (7) r10 (10) r1 (10) n2 r5 (2) r6 (1) n5 r9 (7) r10 (10) n1 r3 (15) n4 r7(11) n n1 r3 (15) n4 r7(1) n r2 (5) n3 r4 (7) n6 r11 (1) r2 (5) n3 r4 (7) n6 r11 (1) I orienterede grafer er der på alle kanter blevet tilføjet pile. Disse pile indikerer hvilken vej det er tilladt at bevæge sig hen ad en kant. Hvis der f.eks. er en pil på kanten fra n1 til n2, som peger mod n2, så vil det kun være muligt at bruge kanten til at komme fra n1 til n2, og altså ikke til at komme fra n2 til n1. I ikke orienterede grafer kan man derimod bruge kanter som man vil. Det vil altså sige, at hvis det er muligt at komme fra n1 til n2, så er det også muligt at komme fra n2 til n1. Endvidere gælder det, at vægten på en kant vil være den samme, lige meget hvilken vej du bevæger dig hen ad kanten. I visse grafer kan der indgå kanter med negative vægte. Ikke alle algoritmer kan arbejde med grafer, hvori der indgår kanter med negative vægte. I de der kan, skal man dog stadig være opmærksom på, om der i grafen findes en negativt kreds. En negativ kreds vil sige, afstanden til et punkt i den negative kreds, kan gøres mindre og mindre ved at gennemløbe kredsen flere og flere gange. Hvis der eksisterer en negativ kreds i en graf, kan den korteste vej mellem to punkter aldrig bestemmes, da den vil gå mod minus uendelig. Dette beskrives yderligere i afsnit 4.2. Vi vil i de følgende afsnit beskrive forskellige algoritmer, som alle finder den korteste vej i en graf. 12

13 4.1 Analyse af Dijkstras algoritme Beskrivelse af algoritmen Nedenstående pseudokode viser Dijkstras algoritme. 1 Procedure Dijkstra (Graph G, StartVertex s, EndVertex e) 2 Set S = empty Set 3 Queue Q = empty Queue 4 For each G(v) 5 d[v] = 6 insert into Q v, d[v] 7 end d[s] = 0 9 while S e 10 u = Q(v) with minimum d[v] 11 add u, d[u] to S 12 for each neighbor to u in Q 13 d[v] = min{d[v], d[u] + weight(u, v)} 14 end 15 end Figur 4-1 Pseudokode for Dijkstras algoritme Dijkstras algoritme bruges til at finde den korteste afstand mellem to punkter (s og e) i en vægtet sammenhængende graf. Afstanden beregnes iterativt, hvor man gennem hver iteration bevæger sig tættere og tættere på det punkt, man ønsker at beregne afstanden til. Ved hver iteration vil et punkt blive tilføjet en mængde S, hvorom man ved, at den korteste vej fra startpunktet og til dette punkt er blevet beregnet. Hvert punkt fra S vil kunne tildeles navnet V k, hvor k angiver nummeret på den iteration, hvori punktet blev tilføjet S Først udvælges hvilket punkt fra grafen afstanden skal beregnes fra (i pseudokoden kaldet s). Dette punkt V 0 får tildelt distancen 0, da afstanden fra et punkt til sig selv er nul. Alle andre punkter får påtrykt distancen uendelig, da vi ikke kender denne endnu. Hver gang vi tilføjer et punkt u til S, ser vi på, om vejen gennem punktet til dennes naboer, medfører en kortere vej fra de enkelte nabopunkter til s. Hvis det er tilfældet opdateres distancen. Dvs. at afstanden opdateres ved flg. : d[v] = min{d[v], d[u] + weight(u, v)}. I iteration nul tilføjes s (V 0 ) til mængden S. Nu opdateres afstanden fra V 0 til sine naboer. Dette gøres ud fra de pågældende vægte, som er tildelt hver enkelt kant. I første iteration udvælges det punkt, som ikke er indeholdt i mængden S og som har den korteste afstand til V 0. Dette punkt kaldes V 1 (iteration 1). V 1 tilføjes nu til S. Herefter findes afstanden fra V 0 gennem V 1 til alle dennes naboer. Såfremt den udregnede afstand er lavere end de afstande allerede påtrykt naboernes navne, opdateres disse punkter med den netop udregnede afstand. I anden iteration vælges igen det punkt, som ikke er med i S, og som har den laveste distance til s. Herefter opdateres de påtrykte distancer, ud fra det tilføjede punkt. Dette fortsættes indtil endepunktet er blevet tilføjet S og dennes naboer er opdateret. Da der herefter ikke vil være flere punkter at opdatere ud fra, kender vi den korteste vej mellem de to punker s og e. 13

14 4.1.2 Eksempel på algoritmen 4 15 A B C E G D F Vi skal finde den korteste vej mellem A og F i ovenstående graf. Initialisering Q A B C D E F G d[v] 0 Path * D[v] angiver distancen mellem Vo og det pågældende punkt, og Vk er det punkt, som er udvalgt i den k ende iteration. Q er en kø, der indeholder alle punhkter i grafen. S d[v] S er mængden af punkter, hvorom vi ved, at vi har fundet den korteste vej fra V0 til dette punkt. Ved initialiseringen udvælges vores udgangsposition. Afstanden fra V 0 (A) til V 0 vil være nul, hvorimod afstanden fra A til alle andre punkter endnu ikke er kendt, da der endnu ikke er nogle punkter i S og derfor vil afstanden være uendelig. Iteration 0 : S A B C D E F G d[v] 0 4 Path * A V0(*, o) 5 A 4 10 B E C S A d[v] 0 G 7 2 D Vi tilføjer nu A til vores mængde S, og kan derefter udregne afstanden til As naboer. F 14

15 Iteration 1 : V0(*, o) 4 V1(A, 4) 15 S A B C D E F G d[v] Path * A B B B 5 A 10 B E 5 50 C 1 S A B d[v] 0 4 G 7 2 D Da B er det punkt uden for S med den korteste afstand til V 0, tilføjer vi B til S, og opdaterer herefter Bs naboer ud fra B. F Iteration 2 : S A B C D E F G d[v] Path * A B E B E B S A B E d[v] V0(*, o) 4 V1(A, 4) 15 A B G E 5 50 V2(B, 9) 2 C D 1 Da E nu er det punkt uden for S med den korteste F afstand til V 0, tilføjer vi E til S, og opdaterer herefter Es naboer ud fra E. Selvom vi nu har fundet en vej fra V 0 til F, er det ikke nødvendigvis den korteste vej vi har fundet og vi fortsætter derfor indtil slutpunktet er blevet tilføjet S. Iteration 3 : S A B C D E F G d[v] Path * A B E B E B S A B E D d[v] V0(*, o) 4 V1(A, 4) 5 A G 10 7 B E V2(B, 9) 2 C D 1 V3(E, 11) Da D nu er det punkt uden for S med den korteste F afstand til V 0, tilføjer vi D til S, og opdaterer herefter Ds naboer ud fra D. Punktet C er det eneste punkt, der bliver påvirket af Ds tilføjelse til S. Eftersom afstanden fra C til V 0 gennem D er større end den afstand, der allerede var blevet udregnet for C, ændrer vi ikke på C, og afstanden vil derfor stadig være 19 fra V 0 til C. 15

16 Iteration 4 : S A B C D E F G d[v] Path * A B E B E B S A B E D G d[v] V0(*, o) 4 V1(A, 4) 15 A B E 5 50 V2(B, 9) 2 C 1 G V4(B, 14) D V3(E, 11) Da G nu er det punkt uden for S med den F korteste afstand til V 0, tilføjer vi G til S, og opdaterer herefter Gs naboer ud fra G. Tilføjelsen af G til S vil ikke påvirke de andre punkter, da der allerede er fundet en kortere vej til V 0, end der vil kunne opnås ved en vej gennem G. Derfor vil der ikke ske nogle påvirkning i denne iteration. Iteration 5 : S A B C D E F G d[v] Path * A B E B E B S A B E D G F d[v] V0(*, o) 4 V1(A, 4) 5 A G V4(B, 14) 10 7 B E V2(B, 9) Da F nu er det punkt uden for S med den korteste F V5(E, 17) afstand til V 0, bliver F tilføjet i S. Dette betyder, at vi nu har fundet den korteste vej fra V 0 til F, da vi ikke vil kunne finde en kortere vej til F ved at tilføje flere punkter til S. 2 C D 1 V3(E, 11) Hvis grafen i ovenstående eksempel ikke havde været orienteret, så kunne det betyde et andet resultat, da der nu ville være flere muligheder for veje igennem grafen. 16

17 4.1.3 Induktionsbevis for algoritmens rigtighed Vi antager følgende induktive hypotese: (a) Distancen påtrykt punkter i mængden S er optimale. (b) Distancen påtrykt punkter udenfor S, kaldet S, er optimale udfra punkter i S. Punktet a er startpunktet i algoritmen. Derfor gælder følgende: Basistrin Bevis for (a): Efter første iteration gælder, at S = {a} og derfor gælder (a), nemlig at den korteste vej til punkter i S er optimal, da vejen til a = 0. Bevis for (b): Det gælder ligeledes for (b) nemlig, at distancen påtrykt punkter udenfor S er optimale udfra punkter i S. Fra starten havde alle punkter påtrykt værdien uendelig og eftersom algoritmen i basistrinnet vælger punktet a, så gælder det at a s naboer får opdateret deres distance og alle andre forbliver uændret. Induktionsbevis Vi antager, at hypoteserne (a) og (b) gælder for i ende iteration. Vi vil bevise, at det også gælder for i+1. Lad v være det punkt, med den korteste distance, som algoritmen vælger ved i+1 ende iteration. a v b x c r S S' Figuren viser S og S ved i ende iteration. Bevis for (a): Ved i ende iteration gjaldt det, at distancen påtrykt punkterne udenfor S var optimale udfra punkter i S. Derfor må det også gælde, at den korteste vej til v må være defineret i punkter i S, da v nu er del af S. Det vil vi bevise ved hjælp af et modstridsbevis. 17

18 Hvis dette ikke var tilfældet, må der eksistere et punkt udenfor S, som har en kortere distance til v. Hvis vi forestiller os der findes en vej fra et punkt i S igennem punktet r i S til v, som er den korteste vej. a v b x c r S før i+1 S' før i+1 Det gælder udfra den induktive hypotese, at punkter udenfor S har den optimale distance udfra punkter i S. Derfor betyder det, at d[r] < d[v] fordi kanten mellem r og v også har en vægt, der ikke kan være negativ. Dette er i modstrid med algoritmens valg af v og derfor kan der ikke eksistere en sådan vej. Bevis for (b): Ved i+1 ende iteration er v en del af S og det gælder ifølge (a), at distancen påtrykt punkter i S er optimale. Lad x være et punkt udenfor S. a v b x c r S S' Der gælder følgende: Hvis x er nabo til v, så finder algoritmen om v kan benyttes til en kortere vej til x og opdaterer distancen påtrykt x hvis det er tilfældet. Det betyder, at distancen til x nu bliver d[v] + distancen på kanten fra v til x. Ellers gælder det fra den induktive hypotese, at den optimale vej allerede fandtes efter i ende iteration. Hvis x ikke er nabo til v, så betyder tilføjelsen af v til S ikke noget for distancen til x, da det gjaldt for i ende iteration, at den optimale distance indeholdt punkter i S. 1

19 4.1.4 Tidskompleksitet for algoritmen Tidskompleksiteten for Dijkstras algoritme, forudsat at grafen er en simpel vægtet graf, er O(V 2 ). Linie 4-7 I algoritmen gennemløbes en løkke V gange, dvs. antallet af punkter i grafen Udføres en while-løkke i værste fald V gange samt en indlejret løkke (linie 12) og en køoperation (linie 10). 10 Det element i køen med den mindste distance påtrykt vælges og fjernes fra køen og tilføjes mængden S (linie 11). Dette sker ved iteration, som i værste fald udføres V-1 gange. 12 Alle afstande til det aktuelle punkts naboer kontrolleres og iterationen udføres i værste fald V-1 gange. På baggrund af ovenstående kan følgende kompleksitet sammensættes: V+V(V-1+V-1) V+V(2V-2) V+2V 2-2V 2V 2 -V < O(2V 2 ) < O(V 2 ) for V og k > 0 og en konstant C = 2 Derfor er tidskompleksiteten for Dijkstras algoritme O(V 2 ) hvis grafen er en simpel graf. Hvis algoritmen skulle behandle en multigraf med flere kanter mellem punkterne ville iterationen i linje 12 i værste tilfælde gennemløbes E gange. Derfor bliver kompleksiteten: V + V(V-1 + E) V + VV V + VE V + V 2 V + VE O(V 2 + VE) Derfor er tidskompleksiteten for Dijkstras algoritme O(V 2 + VE) hvis grafen er en multigraf. 19

20 4.2 Analyse af Bellman-Fords algoritme Beskrivelse af algoritmen Bellman-Ford algoritmen finder den korteste vej fra et startpunkt til alle andre punkter i en vægtet sammenhængende graf. I modsætning til Dijkstras algoritme kan algoritmen også håndtere grafer med negativt vægtede kanter. En forudsætning for algoritmens korrekthed er, at der ikke eksisterer negativt vægtede kredse i grafen. En negativ vægtet kreds er en kreds, hvis distance kan opdateres med en negativ distance i det uendelige. Et eksempel på en negativ vægtet kreds: Vi skal finde den korteste vej fra a til d: Vægtene på kanterne mellem de to punkter giver i alt (a c e d ) = = - 11 Hvis vi igen forsøger at finde den korteste vej vil startpunktets vægt have ændret sig til - 1, da punktet d nu har distancen - 11 og der er en kant med vægt 10 imellem punkterne d - a. a 2-12 b c e Derfor bliver distancen til d nu (a c e d a c e d) = = d -2 Dette kan foregå i en uendelig og derfor vil distancen til d være -. Algoritmen undersøger alle kanter i grafen, ikke nødvendigvis i en bestemt rækkefølge, og opdaterer evt. afstanden til punkterne i grafen. Algoritmen starter med, som i Dijkstra, at initialisere alle punkter med en uendelig afstand. Startpunktet får dog afstanden 0. 1 PROCEDURE BellmanFord(Graph G, StartVertex s) 2 for each v 3 d[v] = Infinite; 4 d[s] = 0; 5 for i=1 to V -1 6 for each edge (u,v) E 7 if (d[v] > d[u]+w(u,v)) then d[v]=d[u]+w(u,v) 9 for each edge (u,v) E 10 if (d[v] > d[u] + w(u,v)) 11 return negative weightet cycle found ; 12 return true Figur 4-2 Pseudokode for Bellman-Ford algoritmen 20

21 Dernæst gennemløbes en løkke V-1 antal gange. I hver iteration af løkken gennemløbes alle kanterne i grafen. Hvis der findes en kant, som kan benyttes til at gøre distancen til et punkt kortere, bliver punktet opdateret med den nye distance. Dette sker ved sætningen: d[v]=d[u]+w(u,v). Den ydre løkke gennemløbes kun V-1 antal gange, da en vej til et punkt højest må bestå af V-1 kanter. Hvis der fandtes en negativt vægtet kreds i grafen, ville algoritmen kunne fortsætte med optimering i det uendelige, hvis der ikke fandtes denne stopbetingelse. Til sidst i algoritmen gennemløbes alle kanterne igen for at sikre, at ingen af dem kunne bruges til at optimere distancen til punkterne. Hvis dette sker, så indeholder grafen en negativt vægtet graf og algoritmen returnerer beskeden negative weightet cycle found. 21

22 4.2.2 Eksempel på algoritmen Vi finder den korteste vej mellem A til F, ved brug af Bellman-Ford algoritmen A B C E G D F Initialisering S A B C D E F G d[v] 0 D[v] angiver distancen mellem det søgte punkt (A) og et andet punkt. Da vi ved initialiseringen kender afstanden mellem det søgte punkt A og sig selv, angives afstanden fra A til A til at være nul. De resterende afstande angives til uendelig, eftersom vi ikke på forhånd, kender den korteste afstand til disse punkter. (a, o) 5 A G B E F C D

23 Iteration 1 : S A B C D E F G d[v] 0 4 (a, o) A 4 (a b, 4) B C Ved hver iteration gennemgås alle kanter og det undersøges, om der kan findes kortere vej til grafens punkter, end de allerede påtrykte værdier. Da vi på nuværende tidspunkt kun kan opdatere punkter, som ligger i maksimalt 1 kants afstand fra vores startpunkt, er det kun afstanden til B vi kan udregne. 5 G 10 7 E F 2 D -10 Afstanden til de af grafens resterende punkter vedbliver derfor i iteration 1 at være uendelig. Alle afstande, der findes før den sidste iteration, er ikke nødvendigvis de endelige afstande. Disse findes først med sikkerhed under den sidste iteration. (a, o) Iteration 2 : 4 15 A B C (a b, 4) (a b c, 19) S A B C D E F G d[v] E (a b e, 1) -10 I iteration 2 kan vi udregne en afstand, som ligger maksimalt to kanter fra vores startpunkt. Dette medfører, at vi kan udregne en afstand til punkterne c, e og g. G (a b g, 14) 7 F 2 D Iteration 3 : (a, o) 4 (a b, 4) 15 (a b c, 19) A B C S A B C D E F G d[v] E (a b e, 1) -10 I iteration 3 opdateres afstanden til punkter, som ligger maksimalt tre kanter væk fra startpunktet. Vi kan derfor nu udregne en afstand til punkterne d og f. G (a b g, 14) 7 F 2 (a b e f, 9) D (a b e d, 3) 23

24 Iteration 4: S A B C D E F G d[v] (a, o) A 4 (a b, 4) 15 (a be d c, -7) B C I den fjerde iteration ser vi, at afstanden til C kan gøres kortere, ved at lade vejen til C gå igennem D. Dette kan lade sig gøre, da vi nu kan benytte veje med fire kanters længde, og da vægten på vejen a-b-e-d-c er lavere end vægten på vejen a-b-c. 5 G (a b g, 14) 10 7 E F (a b e, 1) 2 (a b e f, 9) D -10 (a b e d, 3) Iteration 5: S A B C D E F G d[v] Selv om vi nu må bruge fem kanter til at udregne afstande, ser vi, at der ikke sker yderligere opdateringer. Da C var det eneste punkt under iteration 4, der blev opdateret, er det kun vejen a-b-e-d-c, der kan medføre yderligere opdateringer ved brug af endnu en kant. Den eneste kant væk fra C har dog en så stor vægt, at der ikke ved brug af denne kan opnås kortere veje til grafens andre punkter. (a, o) 5 A G (a b g, 14) (a b, 4) 15 (a be d c, -7) B E F (a b e, 1) 2 (a b e f, 9) C D -10 (a b e d, 3) Det samme vil være tilfældet under iteration 6, som vil være den sidste iteration algoritmen udfører. De korteste veje fra A og til grafens punkter vil derfor se ud som de gør efter iteration 5. Derfor kunne algoritmen stoppe når den konstaterede, at der efter to iterationer ikke skete ændringer i distancerne. 24

25 4.2.3 Induktionsbevis for algoritmens rigtighed Vi antager følgende induktive hypotese: Grafen indeholder ingen negativ kreds. L i (s,u) er længden fra et valgt startpunkt s til punktet u, som består af højest i kanter. Punktet s er startpunktet i algoritmen. Basistrin Før der foretages iterationer i algoritmen vil alle punkter blive påtrykt distancen, undtagen s som påtrykkes distancen 0. Derfor gælder den induktive hypotese for iteration 0, da kun punktet s kan nås fra s med 0 kanter. Induktionstrin Vi antager at induktionshypotesen gælder for i-1 ende iteration. Dvs. ved denne iteration kendes den bedste afstand til punktet u bestående af maksimal i-1 kanter. For i ende iteration gælder det, at der er to muligheder: Enten fandt algoritmen den bedste vej i forrige iteration, selvom vi nu kan benytte en kant mere - ellers kan en ny kant benyttes til en bedre vej til u. Det betyder, at enten er dis[u] = L i-1 (s, u) ellers kan et punkt vi kalder v benyttes til en kortere vej og derfor er dis[u] = L i-1 ( s, v) + vægten(v, u). Eftersom algoritmen i hver iteration undersøger alle kanter og eventuelt optimerer distancen til punkterne, vil algoritmen også undersøge kanten mellem punkterne v og u og derfor vil algoritmen finde den korteste vej til punktet u efter i iterationer. Hvis grafen indeholder en negativt vægtet kreds konstateres dette i sidste del af algoritmen. Dette skyldes, at hvis alle kanterne gennemløbes igen, og hvis et punkt stadig kan optimeres, så må der eksistere en negativt vægtet kreds. Derved er der fundet en vej med mere end V-1 kanter, som gør at vores vej er ugyldig. 25

26 4.2.4 Tidskompleksitet for algoritmen Tidskompleksiteten for Bellman-Ford algoritmen er O(VE). Linie 2-3 I algoritmen gennemløbes en løkke V gange, dvs. antal af punkter i grafen for at initialisere distancerne. 5 - Udføres en løkke V-1 gange samt en indlejret løkke.. Alle kanter kontrolleres i den indlejrede løkke, dvs. løkken udføre E iterationer Der udføres en løkke E gange. Dvs. alle kanter kontrolleres igen. På baggrund af ovenstående kan følgende kompleksitet sammensættes: V+(V-1)E+E V+(V-1)E+E < O(V)+O(VE)+O(E) < O(VE)+O(VE) O(2VE) O(VE) for V, E og k > 0 og C = 2 Hvis vi forestiller os, at grafen er en komplet graf, hvor alle punkter er forbundne med hinanden, så vil kompleksiteten blive O(V 3 ) som vi viser herefter: Maksimalt antal kanter E i en komplet graf = V(V-1)/2 = (V 2 -V)/2. Derfor bliver kompleksiteten, hvor E erstattes med (V 2 -V)/2. O(VE) O(V((V 2 -V)/2)) O(V 3 ) for V og k > 0 og C = 1 26

27 4.3 Analyse af Floyd-Warshall Beskrivelse af algoritmen Floyd-Warshall algoritmen bliver brugt til at finde den korteste vej imellem alle punkter i en vægtet simpel graf. I modsætning til Dijkstras algoritme kan den ikke bruges til at finde den korteste vej imellem to specifikke punkter, men vil finde den korteste vej fra alle punkter til alle punkter. Den kan også håndtere negativt vægtede kanter. Ligesom ved Bellman-Ford algoritmen kræver denne algoritme at grafen skal være fri for negative kredse. (Se afsnit 4.2). 1 PROCEDURE Floyd(Graph G) 2 for i=1 to V 3 for j=1 to V 4 if (ij connected) 5 distance(v i, v j ) = weight(v i, v j ) 6 else 7 distance(v i, v j ) = 9 for j=1 to V 10 for i=1 to V 11 for k=1 to V 12 if(distance(v i, v j ) + distance(v j, v k ) < distance(v i, v k )) 13 distance(v i, v k ) = distance(v i, v j ) + distance(v j, v k ) Figur 4-3 Pseudokode for Floyd-Warshalls algoritme Eksempel på algoritmen 5 B E 10 A F 6 C 11 D 3 Der tages udgangspunkt i ovenstående graf G ved gennemgangen af eksemplet til demonstration af Floyds algoritme. Efter initialiseringen af matrixen vil den se således ud. Punkterne i matrixen kender kun deres nabopunkter. Punkter som f.eks. A ikke er nabo til vil blive angivet med distancen uendeligt (-) i matrixen. A B C D E F A B C D E F Tabel 4-1 viser hvordan Floyds algoritme opererer på en matrix, som afspejler grafen G. 27

28 Ved iteration j=1 opdateres alle punkter udfra A, som det ses i figuren til højre. Matrixen vil dog ikke ændre sig i dette tilfælde, da distancerne til punkterne, som kan nås ved at gå igennem A allerede er optimale. Ved iteration j=2, udvides mængden af punkter som der kan opdateres udfra. Dvs. nu kan punkter, der kan nås ved at gå igennem A og B opdateres. Sådan fortsættes algoritmen til alle punkterne er gennemgået. Matrixen opdateres ved at udføre trekants operationer, som nedenstående figur viser: i d(ij) j d(ik) d(jk) k For ovenstående delgraf vil en trekants operation være: d ik = minimum(d(ik), d(ij) + d(jk)) Altså distancen på en kant sammenlignes med distancen på to kanter adderet. Den korteste vej til fra punktet i til k, kan enten gå igennem j eller også være distancen ik. Den korteste vej fra i til k findes altså ved at undersøge om distancen d(ij) + d(jk) er mindre end d(ik). Hvis det er tilfældet, så opdateres d(ik). For eksempel kan en trekants operation for j=2, se sådan ud: A B C d(ac) = minimum(d(ac), d(ab) + d(bc)) Et andet eksempel: I iteration j=2 hvor matrixen opdateres for punkt E. Der er ingen direkte vej fra A til E, dette markeres i matrixen ved en angivelse af uendeligt. A 5 B - d(ae) = minimum(d(ae), d(ab) + d(be)) E Tabel 4-1 Resultat af Floyd-Warshalls algortime k = j A B C D E F i = 1 A A B C D E F = 2 B A !13-1 B C D E! F C A 0 5 6! B !21-2 C D!17! E F D A !20 1 B !24 2 C !14 3 D E F!20!24! E A B !20!1 2 C D 17! E F 20! F A B C D E F

29 Her vil matrixen blive opdateret for distancen A til E med 13 og det markeres i figuren med tallet farvet rødt Induktionsbevis for algoritmens rigtighed Vi vil nu opstille et induktionsbevis for algoritmens rigtighed. Induktiv hypotese Hvis en trekants operation udføres n gange (antal punkter) da vil distancen imellem i og k være optimal. Basis trin I vores basistrin vil j 0 =1. Vi kan derfor kun bruge et ekstra punkt til at finde den korteste vej fra i til k. Derfor vil den korteste vej enten være d(ik) eller d(ij)+d(jk). Induktions trin Antag at den induktive hypotese er sand for j = j 0-1. d ik = minimum(d(ik), d(ij 0 ) + d(j 0 k)) Hvis den korteste vej fra i til k med de mellemliggende punkter v j 0 ikke passerer igennem j 0, da vil d(ik) forblive uændret. Udfra vores antagelse ved vi, at d(ik) er optimal fra det foregående trin. Den vil derfor være optimal for j, da d(ik) ikke blev ændret. Hvis den korteste vej passerer igennem j 0 da vil distancen d(ik) blive opdateret med d(ij 0 ) + d(j 0 k). Ifølge den induktive hypotese er d(ij 0 ) og d(j 0 k) optimale i forhold til deres mellemliggende punkter og derfor vil d(ik) blive optimal Tidskompleksitet for algoritmen Tidskompleksiteten for Floyd-Warshall's algoritme er O(V 3 ). Linie 2-7 Alle punkter gennemløbes i en løkke og for hvert punkt gennemløbes alle punkter i grafen i en indlejret løkke for at initialisere distancematrixen Der er 3 løkker, som udføres V (antal punkter) gange og de er indlejret i hinanden for at udføre trekantsoperationer på grafen. Derved kan følgende kompleksitet sammensættes: V*V+V*V*V = V 2 +V 3 O(V 3 ) for C = 2, k og V 0 29

30 B 6 B 7 DMG Bachelor Maj/Juni Spanning tree En sammenhængende graf, som består af punkter og kanter, giver mulighed for at reducere antallet af kanter i grafen, samtidig med at alle punkter stadig kan nås igennem kanterne. Resultatet af en sådan reduktion resulterer i et træ, som er kendetegnet ved at have en kant mindre end antallet af punkter. Træet kaldes et spanning tree eller et udspændende træ. Et spanning tree for en graf G er en subgraf af G som indeholder alle punkter i G og som er et træ med v-1 kanter. Et eksempel kunne være følgende: Et computernetværk er forbundet ved hjælp af broer, som er netværkskomponenter, som separerer trafik, således at trafik kun videresendes fra et netværkssegment til et andet, hvis den maskine, som skal modtage trafikken, befinder sig på dette segment. Dette betyder også, at der ikke må være to broer, som forbinder samme segment, da det betyder, at trafikken sendes igennem begge broer og på denne måde bliver duplikeret. Men for at opnå høj fejltolerance ønsker man alligevel at benytte flere broer, således at den ene kan overtage, hvis den anden bliver defekt. Det betyder i praksis, at man skaber en graf med flere kanter end punkter, men nogle af kanterne bliver slået fra, så længe de ikke er nødvendige. Graf for netværk Udspændende træ for netværk B 1 s 1 s 6 s 1 s 6 B 3 B 5 B 2 B 5 B 2 s 3 B 10 B 11 s 3 B 4 B 4 B 7 s 4 s 2 s 4 s 2 B 9 B B 9 s 5 s 5 30

31 Figuren viser et computernetværk repræsenteret som en graf hvor punkter repræsenterer netværkssegmenter og kanter repræsenterer broer. Ved siden af vises et udspændende træ for grafen, som sikrer at alle kredse i grafen bliver elimineret. Men har træet den mindste samlede vægt for kanterne? Minimum spanning trees Det minimale udspændende træ er det udspændende træ, som har den totalt korteste kantlængde, når alle kanter adderes. En vægtet graf er en graf, hvor hver kant i grafen har en vægt påtrykt. Summen af alle kanterne er grafens totale vægt. Et minimalt udspændende træ for en vægtet graf, er et udspændende træ, der har den mindste totale vægt sammenlignet med andre udspændende træer for samme graf. En metode man kunne benytte til at finde det minimalt udspændende træ er at finde alle udspændende træer og sammenligne dem, således at resultatet bliver det mindste af dem alle. Dette er dog ikke en særlig effektiv metode og der findes bedre algoritmer, som vil blive beskrevet i det efterfølgende afsnit. 31

32 5.2 Analyse af Prims algoritme Beskrivelse af algoritmen Prims algoritme finder et minimalt udspændende træ udfra en sammenhængende graf. 1 PROCEDURE Prim (Graph G) 2 T = a minimum-weight edge 3 For i = 1 to n-2 4 e = an edge of minimum weight incident to a vertex in T and one not in T 5 T = T with e added Figur 5-1 Prim algoritmen Algoritmen opbygger et minimalt udspændende træ T ved at udvælge den mindste kant, som forbinder et punkt i T med et punkt udenfor T. I linie 2 udvælges den kant med mindst vægt og denne tilføjes til T. Det betyder, at der nu eksisterer to punkter og én kant i T og derfor er T et træ. I linie 3 5 gennemløbes en løkke, der i hver iteration tilføjer den mindste kant, som forbinder T med et punkt udenfor T. Det betyder, at der i hver iteration tilføjes en ny kant og et nyt punkt og derfor er T stadig et træ. Iterationerne fortsætter indtil vi har gennemløbet alle punkter på nær to, da algoritmen startede med at udvælge en kant, som forbandt to punkter. 32

33 5.2.2 Eksempel på algoritmen Vi vil benytte Prims algoritme til at finde et minimalt udspændende træ i følgende graf: e1( 10) e5(15) A B e(30) e2( 6) C F e3() e9(17) e6(20) D E e7(4) e4() G e10(70) Initialisering T e7 D Ved initialisering vælger algoritmen kanten med lavest vægt og tilføjer denne til træet T. Det betyder, at algoritmen vælger kanten e7 med vægten 4, som forbinder punkterne D og G. e7(4) G Iteration 1 T e7 e3 e3() I iteration 1 skal algoritmen vælge mellem de kanter, som forbinder et punkt i T med et punkt udenfor T. Valget står mellem e6(20), e3(), e4() og e10(70). Da algoritmen vælger den mindste vægt, så vælges enten e3 eller e4. Hvilken af disse der vælges er ligegyldigt, så vi vælger e3. e7(4) D G E 33

34 Iteration 2 T e7 e3 e9 F I iteration 2 skal algoritmen igen vælge en kant, som forbinder et punkt i T med et punkt udenfor. Valget står mellem e9(17), e6(20) og e10(70). Den må ikke vælge e4() da den forbinder to punkter, der allerede er i T og dette vil skabe en kreds. Algoritmen vælger e9 som den korteste vægt. e7(4) D G e3() E e9(17) Iteration 3 T e7 e3 e9 e6 C F I iteration 3 står valget mellem e6(20) eller e(30). Algoritmen vælger den mindste vægt og derfor tilføjes e6 til T. e6(20) D e3() E e9(17) e7(4) G Iteration 4 T e7 e3 e9 e6 e5 A e5(15) I iteration 4 står valget mellem e5(15) eller e(30). Algoritmen vælger den mindste vægt og derfor tilføjes e5 til T. C F e3() e9(17) e6(20) D E e7(4) G Iteration 5 T e7 e3 e9 e6 e5 e2 A I iteration 5 står valget mellem e1(10), e2(6) eller e(30). Algoritmen vælger den mindste vægt og derfor tilføjes e2 til T. Da antallet af tilføjede kanter er én mindre en antal punkter i grafen, er algoritmen færdig og resultatet er et minimalt udspændende træ. e5(15) e6(20) C e7(4) D e2( 6) e3() B F e9(17) E G 34

35 5.2.3 Bevis for algoritmens rigtighed G er en sammenhængende graf, som gives som input til Prims algoritme Bevis for at algoritmen resulterer i et udspændende træ I for-løkken gælder at 0 < i n-2. Vi opstiller følgende induktive hypotese: Efter i iterationer er resultatet af algoritmen T en delgraf af G med i+1 kanter og i+2 punkter. Basistrin Inden der foretages iterationer (i=0), da har algoritmen valgt en kant og dermed to punkter. Derfor er den induktive hypotese for i=0 sand, da T består af 0+1 = 1 kant og = 2 punkter og det er derfor er træ. Induktionstrin Antag at i > 0 og induktionshypotesen for i 1 er sand. Vi vil nu bevise, at induktionshypotesen gælder for i ende iteration. Ved starten af i ende iteration gælder det, at T har i kanter og i+1 punkter og derfor er et træ. Eftersom i n-2 består T af højest n-1 punkter og derfor findes der mindst et punkt i grafen G, som ikke findes i T. G er sammenhængende og derfor findes der en vej fra punktet udenfor T og ind til et punkt i T. Mindst en kant i denne vej må have et punkt i T og et udenfor T. Det er derfor muligt at finde den kant e med mindst vægt, som opfylder den betingelse at et af kantens punkter er i T og det andet er ikke i T. Ved at tilføje denne kant, kaldet e, til T vil T stadig være en sammenhængende delgraf af G eftersom kanten forbinder et punkt allerede i T med et punkt udenfor T. T vil nu indeholde en kant mere og et punkt mere. Derfor gælder den induktive hypotese at ved i ende iteration indeholder træet T i + 1 kanter og i + 2 punkter. Når algoritmen er færdig vil T være et udspændende træ af G, indeholdende n-1 kanter og n punkter, da algoritmen forsætter til i = n-2. 35

36 Induktivt bevis for at algoritmen resulterer i et minimalt udspændende træ Vi vil ved hjælp af et induktivt bevis bevise, at algoritmen resulterer i et minimalt udspændende træ. Vi antager følgende induktive hypotese: Punkterne i træet T er forbundet med de kanter i grafen G, som har den laveste vægt. Bemærk at dette medfører, at T også har den mindste totale vægt for grafen G og derfor er et minimalt udspændende træ, da vi tidligere har bevist, at algoritmen resulterer i et træ. Basistrin Inden første iteration udvælger algoritmen den kant i grafen med den laveste vægt og derfor er den induktive hypotese sand for i=0, da algoritmen har forbundet to punkter med den laveste vægt. Induktionstrin Vi antager, at induktionshypotesen gælder for i ende iteration, nemlig at de punkter, som er udvalgt, er forbundet med den laveste vægt og at punkterne udgør et træ. Vi vil nu bevise, at det også gælder for i+1 ende iteration. Ved i+1 ende iteration udvælger algoritmen et punkt udenfor T, som er forbundet til et punkt i T med den laveste vægt. Da punkterne i T allerede ved forrige iteration var forbundet med kanter, som gav den laveste vægt, så gælder det, at tilføjelsen af det nye punkt og den nye kant ikke ændrer på kanter og punkter i T før denne iteration. Da algoritmen valgte den kant med den laveste vægt betyder det, at tilføjelsen af kanten og punktet giver, at træet T er forbundet med de kanter i G, som har den laveste vægt. 36

37 Modstridsbevis for at algoritmen resulterer i et minimalt udspændende træ Vi vil ved hjælp af et modstridsbevis bevise, at algoritmen resulterer i et minimalt udspændende træ. Lad T være det træ, som algoritmen producerer. Lad T 1 være et tilfældigt minimalt udspændende træ. T T 1 V Hvis vægten af T og T 1 ikke er ens, så betyder det, at algoritmen ikke har produceret et minimalt udspændende træ og der må minimum findes en kant i T, som ikke findes i T 1. Lad os kalde den første af disse kanter for e. Vi spoler tilbage til det tidspunkt, hvor algoritmen skabte træet T og hvor kanten e befandt sig udenfor T. Hvis vi lader V være det antal punkter, som træet T bestod af på daværende tidspunkt, så gælder det, at et endepunkt, kaldet v, for kanten e befinder sig i T og det andet, kaldet w, befinder sig ikke i T. Eftersom T 1 er et udspændende træ, må der være en sti, der forbinder v til w. Hvis vi besøger alle kanter i denne sti, må vi besøge en kant, kaldet e, som forbinder et punkt i V til et punkt udenfor V. T T 1 V e e' T før kanten e blev tilføjet På det tidspunkt hvor T blev opbygget, havde algoritmen altså valget mellem e og e til at forbinde punkter udenfor T. Algoritmen valgte netop den kant med den laveste vægt og da den valgte kanten e og ikke e, som begge forbinder punkter udenfor V, så må det gælde, at vægten af e er mindre end eller lig med vægten af e wt(e) wt(e ). Hvis vi nu forestiller os et træ T 2, som er det træ der fremkommer, når kanten e fjernes fra T 1 og kanten e tilføjes i stedet. Så må det gælde, at den samlede vægt for træet T 2 er mindre end eller lig med vægten af T 1 (da vi jo fjernede en kant med højere eller samme vægt). Dette er modstrid, da udgangspunktet var, at T 1 var et minimalt udspændende træ. 37

Grafer / Otto Knudsen 20-11-06

Grafer / Otto Knudsen 20-11-06 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Eksamen i Diskret Matematik

Eksamen i Diskret Matematik Eksamen i Diskret Matematik Første Studieår ved Det Tekniske Fakultet for IT og Design samt Det Ingeniør- og Naturvidenskabelige Fakultet 29. maj 2017. Kl. 9-13. Nærværende eksamenssæt består af 11 nummererede

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

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

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

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion Philip Bille Introduktion (MST). Udspændende træ af minimal samlet vægt. Introduktion (MST). Udspændende træ af minimal samlet vægt. 0 0 Graf G Ikke sammenhængende Introduktion (MST). Udspændende træ af

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

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

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion Philip Bille Introduktion (MST). Udspændende træ af minimal samlet vægt. Introduktion (MST). Udspændende træ af minimal samlet vægt. 0 0 Graf G Ikke sammenhængende Introduktion (MST). Udspændende træ af

Læs mere

Routeren. - og lag 3 switchen! Netteknik 1

Routeren. - og lag 3 switchen! Netteknik 1 Routeren - og lag 3 switchen! Netteknik 1 Routeren en introduktion NETVÆRK 10.0.0.0 NETVÆRK 192.168.1.0 E1 Router E0 S0 NETVÆRK 194.182.2.0 Grundlæggende LAN teknologi består af Ethernet switche der flytter

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

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

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

Matematiske metoder - Opgaver

Matematiske metoder - Opgaver Matematiske metoder - Opgaver Anders Friis, Anne Ryelund 25. oktober 2014 Logik Opgave 1 Find selv på tre udtalelser (gerne sproglige). To af dem skal være udsagn, mens det tredje ikke må være et udsagn.

Læs mere

K 7 - og K 4,4 -minors i grafer

K 7 - og K 4,4 -minors i grafer Aalborg Universitet Det Teknisk-Naturvidenskabelige Fakultet Institut for Matematiske Fag K 7 - og K 4,4 -minors i grafer Aalborg Universitet Det Teknisk-Naturvidenskabelige Fakultet Institut for Matematiske

Læs mere

Eksamen i Diskret Matematik

Eksamen i Diskret Matematik Eksamen i Diskret Matematik Første Studieår ved Det Tekniske Fakultet for TT og Design samt Det Ingeniør- og Naturvidenskabelige Fakultet 29. maj 2017. Kl. 9-13. Nærværende eksamenssæt består af 11 nummererede

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

Aalborg University. Synopsis. Titel: Traveling Salesman Problem

Aalborg University. Synopsis. Titel: Traveling Salesman Problem Aalborg University Department of Computer Science. Fredrik Bajers Vej 7E, 9220 Aalborg Ø. Titel: Traveling Salesman Problem Projektperiode: 16. maj 2003 til 20. juni 2003 Semester: BOS03 Gruppebetegnelse:

Læs mere

IP routing. - flytter pakkerne effektivt på lag 3! Netteknik 1

IP routing. - flytter pakkerne effektivt på lag 3! Netteknik 1 IP routing - flytter pakkerne effektivt på lag 3! Netteknik Routingsteknik Routere er de enheder på netværket som kan flytte IP datapakker mellem forskellige logiske netværk (IP net) Router IP pakke protocol

Læs mere

IP routing. Netteknik 1. Routere er de enheder på netværket som kan flytte IP datapakker mellem forskellige logiske netværk (IP net) Router

IP routing. Netteknik 1. Routere er de enheder på netværket som kan flytte IP datapakker mellem forskellige logiske netværk (IP net) Router Netteknik (AMU 4447) IP routing - flytter pakkerne effektivt på lag 3! Netteknik Routingsteknik Routere er de enheder på netværket som kan flytte IP datapakker mellem forskellige logiske netværk (IP net)

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

VLAN - Virtual Local Area Network

VLAN - Virtual Local Area Network VLAN - Virtual Local Area Network - opdeling af LAN i mindre broadcast zoner Hvad er et VLAN? Virtuel switch, bestående af port 2, 5, 8 og 11 på fysisk switch VLAN s er en logisk opdeling af enheder eller

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

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

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

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

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

Om at udregne enkeltstående hexadecimaler i tallet pi

Om at udregne enkeltstående hexadecimaler i tallet pi Om at udregne enkeltstående hexadecimaler i tallet pi I 996 var det en sensation, da det kom frem, at det var lykkedes D. Bailey, P. Borwein og S. Plouffe at finde en formel for tallet π, med hvilken man

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

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

Bevisteknikker. Bevisteknikker (relevant både ved design og verifikation) Matematisk induktion. Matematisk induktion uformel beskrivelse Bevisteknikker Bevisteknikker (relevant både ved design og verifikation) Bevisførelse ved modstrid (indirekte bevis) Antag, at det givne teorem er falsk Konkluder, at dette vil føre til en modstrid Teorem:

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

DM02 opgaver ugeseddel 2

DM02 opgaver ugeseddel 2 DM0 opgaver ugeseddel af Fiona Nielsen 16. september 003 Øvelsesopgaver 9/9, 10/9 og 11/9 1. Vis, at 1 3 + 3 3 + 5 3 +... + (n 1) 3 = n 4 n. Omskriver til summationsformel: (i 1) 3 = n 4 n Bevis ved induktion

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

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse.

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse. 19 Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse. Sammenligning af hashtabeller og søgetræer. 281 Hashing-problemet (1). Vi ønsker at afbilde n objekter på en tabel

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

Opgaver hørende til undervisningsmateriale om Herons formel

Opgaver hørende til undervisningsmateriale om Herons formel Opgaver hørende til undervisningsmateriale om Herons formel 20. juni 2016 I Herons formel (Danielsen og Sørensen, 2016) er stillet en række opgaver, som her gengives. Referencer Danielsen, Kristian og

Læs mere

Ligeværdige udtryk. Aktivitet Emne Klassetrin Side. Vejledning til Ligeværdige udtryk 2

Ligeværdige udtryk. Aktivitet Emne Klassetrin Side. Vejledning til Ligeværdige udtryk 2 VisiRegn ideer 4 Ligeværdige udtryk Inge B. Larsen ibl@dpu.dk INFA juli 2001 Indhold: Aktivitet Emne Klassetrin Side Vejledning til Ligeværdige udtryk 2 Elevaktiviteter til Ligeværdige udtryk 4.1 Ligeværdige

Læs mere

qwertyuiopåasdfghjklæøzxcvbnmqw ertyuiopåasdfghjklæøzxcvbnmqwert yuiopåasdfghjklæøzxcvbnmqwertyui Polynomier opåasdfghjklæøzxcvbnmqwertyuiopå

qwertyuiopåasdfghjklæøzxcvbnmqw ertyuiopåasdfghjklæøzxcvbnmqwert yuiopåasdfghjklæøzxcvbnmqwertyui Polynomier opåasdfghjklæøzxcvbnmqwertyuiopå qwertyuiopåasdfghjklæøzxcvbnmqw ertyuiopåasdfghjklæøzxcvbnmqwert yuiopåasdfghjklæøzxcvbnmqwertyui Polynomier opåasdfghjklæøzxcvbnmqwertyuiopå Kort gennemgang af polynomier og deres egenskaber. asdfghjklæøzxcvbnmqwertyuiopåasd

Læs mere

Selvstudium 1, Diskret matematik

Selvstudium 1, Diskret matematik Selvstudium 1, Diskret matematik Matematik på første studieår for de tekniske og naturvidenskabelige uddannelser Aalborg Universitet I dette selfstudium interesserer vi os alene for tidskompleksitet. Kompleksitet

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

Bevisteknikker (relevant både ved design og verifikation)

Bevisteknikker (relevant både ved design og verifikation) Bevisteknikker 1 Bevisteknikker (relevant både ved design og verifikation) Bevisførelse ved modstrid (indirekte bevis) Antag, at det givne teorem er falsk Konkluder, at dette vil føre til en modstrid Teorem:

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

Det Rene Videnregnskab

Det Rene Videnregnskab Det Rene Videnregnskab Visualize your knowledge Det rene videnregnskab er et værktøj der gør det muligt at redegøre for virksomheders viden. Modellen gør det muligt at illustrere hvordan viden bliver skabt,

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

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

Matematikken bag Parallel- og centralprojektion

Matematikken bag Parallel- og centralprojektion Matematikken bag parallel- og centralojektion 1 Matematikken bag Parallel- og centralojektion Dette er et redigeret uddrag af lærebogen: Programmering med Delphi fra 2003 (570 sider). Delphi ophørte med

Læs mere

Differentialligninger. Ib Michelsen

Differentialligninger. Ib Michelsen Differentialligninger Ib Michelsen Ikast 203 2 Indholdsfortegnelse Indholdsfortegnelse Indholdsfortegnelse...2 Ligninger og løsninger...3 Indledning...3 Lineære differentialligninger af første orden...3

Læs mere

Eksamen i Diskret Matematik

Eksamen i Diskret Matematik Eksamen i Diskret Matematik Første Studieår ved Det Teknisk-Naturvidenskabelige Fakultet 15. juni, 2015. Kl. 9-13. Nærværende eksamenssæt består af 12 nummererede sider med ialt 17 opgaver. Tilladte hjælpemidler:

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

NETVÆRKSKURSUS Oktober November 2014. jmt 07-11-2014

NETVÆRKSKURSUS Oktober November 2014. jmt 07-11-2014 1 NETVÆRKSKURSUS Oktober November 2014 jmt 07-11-2014 2 Netværkskursus 14 17 Oktober 2014 ETHERNET 99% af al datatrafik er på ETH standard http://standards.ieee.org/ https://www.ieee.org/ 802.3 er ETH

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

Algoritmedesign med internetanvendelser ved Keld Helsgaun

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

Læs mere

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

Fra tilfældighed over fraktaler til uendelighed

Fra tilfældighed over fraktaler til uendelighed Fra tilfældighed over fraktaler til uendelighed Tilfældighed Hvor tilfældige kan vi være? I skemaet ved siden af skal du sætte 0 er og 1-taller, ét tal i hvert felt. Der er 50 felter. Du skal prøve at

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

Talrækker. Aktivitet Emne Klassetrin Side

Talrækker. Aktivitet Emne Klassetrin Side VisiRegn ideer 3 Talrækker Inge B. Larsen ibl@dpu.dk INFA juli 2001 Indhold: Aktivitet Emne Klassetrin Side Vejledning til Talrækker 2-4 Elevaktiviteter til Talrækker 3.1 Talrækker (1) M-Æ 5-9 3.2 Hanoi-spillet

Læs mere

En karakteristik af de regulære sprog. Ugens emner. FA minimering [5.1-5.2] MyHill-Nerode-sætningen en algoritme til minimering af FA er

En karakteristik af de regulære sprog. Ugens emner. FA minimering [5.1-5.2] MyHill-Nerode-sætningen en algoritme til minimering af FA er Ugens emner FA minimering [.-.] MyHill-Nerode-sætningen en algoritme til minimering af FA er En karakteristik af de regulære sprog Et sprog L er regulært hvis og kun hvis L beskrives af et regulært udtryk

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

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

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

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

Rygtespredning: Et logistisk eksperiment

Rygtespredning: Et logistisk eksperiment Rygtespredning: Et logistisk eksperiment For at det nu ikke skal ende i en omgang teoretisk tørsvømning er det vist på tide vi kigger på et konkret logistisk eksperiment. Der er selvfølgelig flere muligheder,

Læs mere

Indholdsfortegnelse. Indledning...2. Tidsplan...2. Målgruppe...3. Spørgeskema...3. Kode eksempler...5. Procesbeskrivelse...7. Evaluering...

Indholdsfortegnelse. Indledning...2. Tidsplan...2. Målgruppe...3. Spørgeskema...3. Kode eksempler...5. Procesbeskrivelse...7. Evaluering... 1 Indholdsfortegnelse Indledning...2 Tidsplan...2 Målgruppe...3 Spørgeskema...3 Kode eksempler...5 Procesbeskrivelse...7 Evaluering...8 Bilag - Spørgeskema...9 Indledning - Jeg har som skoleprojekt fået

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

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

Analytisk Geometri. Frank Nasser. 12. april 2011

Analytisk Geometri. Frank Nasser. 12. april 2011 Analytisk Geometri Frank Nasser 12. april 2011 c 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk: Dette er

Læs mere

P2-gruppedannelsen for Mat og MatØk

P2-gruppedannelsen for Mat og MatØk Institut for Matematiske Fag Aalborg Universitet Danmark 1-02-2012 Vejledere Bo Hove E-mail: bh@thisted-gymnasium.dk 3 Mat grupper (semesterkoordinator) E-mail: diego@math.aau.dk. Web page: http://people.math.aau.dk/~diego/

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

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

Reeksamen i Diskret Matematik

Reeksamen i Diskret Matematik Reeksamen i Diskret Matematik Første studieår ved Det Teknisk-Naturvidenskabelige Fakultet 23. august, 2016, 9.00-13.00 Dette eksamenssæt består af 11 nummerede sider med 16 opgaver. Alle opgaver er multiple

Læs mere

Noter til Perspektiver i Matematikken

Noter til Perspektiver i Matematikken Noter til Perspektiver i Matematikken Henrik Stetkær 25. august 2003 1 Indledning I dette kursus (Perspektiver i Matematikken) skal vi studere de hele tal og deres egenskaber. Vi lader Z betegne mængden

Læs mere

Optimale konstruktioner - når naturen former. Opgaver. Opgaver og links, der knytter sig til artiklen om topologioptimering

Optimale konstruktioner - når naturen former. Opgaver. Opgaver og links, der knytter sig til artiklen om topologioptimering Opgaver Opgaver og links, der knytter sig til artiklen om solsikke Opgave 1 Opgave 2 Opgaver og links, der knytter sig til artiklen om bobler Opgave 3 Opgave 4 Opgaver og links, der knytter sig til artiklen

Læs mere

Websitet handler om websitet i sin helhed, dvs. hvor mange besøgende du har i alt osv.

Websitet handler om websitet i sin helhed, dvs. hvor mange besøgende du har i alt osv. Statistikmodulet. Statistikmodulet er et grundlæggende værktøj til at forstå og analysere trafikken på dit website, og det kan du benytte til mange ting, lige fra at se hvor mange besøgende du har, til

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

PROGRAM Skytteuddannelse Afstandsbedømmelse ved ØJEMÅL

PROGRAM Skytteuddannelse Afstandsbedømmelse ved ØJEMÅL PROGRAM 40 Skytteuddannelse Afstandsbedømmelse ved ØJEMÅL UUA Udarbejdet af Uddannelses Udviklings Afdelingen I samarbejde med Hærens Kampskole Målbeskrivelse. Efter gennemgang af dette program skal du

Læs mere

π er irrationel Frank Nasser 10. december 2011

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

Læs mere

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

Route-tabellen. Routertabel R2. Routertabel R3. Routertabel R1. Routertabel R4 NETVÆRK SENDES TIL

Route-tabellen. Routertabel R2. Routertabel R3. Routertabel R1. Routertabel R4 NETVÆRK SENDES TIL Routningsteknik Route-tabellen Alle Host har en routetabel Routetabellen indeholder liste over alle kendte logiske net. Routetabellen indeholder ofte også en Default Route til alle andre net Routetabellen

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

Statistik i basketball

Statistik i basketball En note til opgaveskrivning jerome@falconbasket.dk 4. marts 200 Indledning I Falcon og andre klubber er der en del gymnasieelever, der på et tidspunkt i løbet af deres gymnasietid skal skrive en større

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

Funktionalligninger - løsningsstrategier og opgaver

Funktionalligninger - løsningsstrategier og opgaver Funktionalligninger - løsningsstrategier og opgaver Altså er f (f (1)) = 1. På den måde fortsætter vi med at samle oplysninger om f og kombinerer dem også med tidligere oplysninger. Hvis vi indsætter =

Læs mere

Ethernet HUB s og Switche

Ethernet HUB s og Switche Ethernet HUB s og Switche - netværksenhederne på lag 2 Ethernet Repeater Repeateren er i dag en historisk enhed, men dens grundlæggende funktion finder man stadigvæk i nyere enheder. En repeater er en

Læs mere