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

Størrelse: px
Starte visningen fra side:

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

Transkript

1 Flugtveje [1] A312 Jens Stokholm Høngaard Kristian Pilegaard Jensen Thomas Birch Mogensen Niels Asger Aunsborg Nicolai Vesterholt Søndergaard Daniel Agerskov Heidemann Jensen 26. maj 2010 I

2 II

3 Det Teknisk-Naturvidenskabelige Basisår Naturvidenskab Strandvejen Telefon Fax Synopsis: Titel: Tema: Flugtveje Algoritmer og netværk Projektperiode: P2, forårssemesteret 2010 Projektgruppe: A312 Rapporten omhandler hvordan man kan finde den optimale flugtvej ud af en bygning. For at finde den flugtvej har vi givet et overblik over grafteori, og kigget på nogle algoritmer om korteste vej problemet. De er blevet sammenlignet for at finde den algoritme vi har brug for. Vi har også interviewet en arkitekt om flugtveje er noget de tager højde for når de designer bygninger. Til sidst har vi lavet et program der kan finde den optimale vej ud af en bygning. Deltagere: Jens Stokholm Høngaard Vejledere: Hans Hüttel og Marion Berg Christiansen Oplagstal: 1 Sidetal: 56 Bilagsantal og art: 1 tekst Afsluttet den 25. Maj 2010 Kristian Pilegaard Jensen Thomas Birch Mogensen Niels Asger Aunsborg Nicolai Vesterholt Søndergaard Daniel Agerskov Hejdemann Jensen Rapportens indhold er frit tilgængeligt, men offentliggørelse (med kildeangivelse) må kun ske efter aftale med forfatterne. III

4 IV

5 Forord I kapitel 1, problemanalyse, redegør vi for vores problem. Vi ser på menneskelig adfærd og psykologi ved brand, hvilket bliver underbygget med eksempler. Vi kigger desuden på vores målgruppe og nogle udvalgte arkitektprogrammer, for at underbygge problemforståelsen og om et korteste vej program er relevant, når man designer bygninger. Alt dette skal medvirke til at forstå problemet og hjælpe os til at lave en problemformulering. Efter problemformulering, kommer vi til kapitel 2 som omhandler metode, hvor vi kigger nærmere på de forskellige metoder, vi vil benytte i løbet af projektet. Efter Metode er defineret går vi i gang med kapitel 3, grafteori, hvor vi begynder at definere grafteoriens begreber. Afsnittet består derfor hovedsageligt af definitioner, hvilket gør det muligt senere at kunne beskrive flugtveje. Grafteori benytter vi også senere i vores program, hvor grafteori bliver koblet sammen med vores model. Da vi har kigget på grafteori, er det nu muligt at beskrive flugtvejsproblemet i kapitel 4. Vi opstiller funktionerne passagefunktionen, strømningsfunktionen og befolkningsfunktionen. Grafteori lægger grundlaget for flugtvejsproblemet, så vi kan regne på de funktioner, vi opstiller. Efter at vi har flugtvejsproblemets funktioner på plads, går vi videre med kapitel 5, korteste-vej problemet, hvor vi kigger vi på de tre algoritmer Dijkstras, Bellman-Fords og Floyds algoritme. Til at forklare Floyds algoritme forklarer vi også generelt om APSP. For at sammenligne algoritmerne opstiller vi tidskompleksitet og store O-notation. Derefter finder vi tidskompleksitet og store O-notationen for de tre algoritmer. Til sidst kan algoritmerne sammenlignes og vi kan finde den, vi vil benytte. Når vi har valgt en algoritme går vi videre med kapitel 6 om strømningsfunktionen hvor vi finder ud af, hvor stor strømingen i en flugtplan er. Vi omtaler Fordfulkersons metode, som vi vil bruge til at finde den største strømning for en graf. For at forsimple grafen benytter vi koncepterne superkilde og superdræn. Nu har vi fået samlet alle de ting, vi skal bruge for selv at kunne lave et bud på at løse problemet. Så i kapitel 7 om implementation vil vi forklare om vores kode, der har taget udgangspunkt i grafteori. Vi forklarer, vores metoder til at beregne korteste vej, maksimum flow og den optimale vej og fortæller, hvad vi bruger Dijkstras algoritme og Ford-Fulkersons metode til i koden. Dette gør vi ved at tage udgangspunkt i små dele af vores kode og forklare dem hver for sig. Formålet er at forklare, at Dijkstras algoritme er blevet brugt til at finde korteste vej og at Ford-Fulkersons metode er blevet brugt til at finde maximum-flow. Nu da vi har koblet Dijkstras algoritme og Ford-Fulkersons metode sammen med vores kode. Vil vi i kapitel 8 se på, hvordan vi beregner den optimale flugtvej og beregne Store O til tidskompleksiteten. I kapitel 9 om modeller vil vi give nogle ideer til, hvordan man kan bruge vores kode i programmer, som arkitekter bruger, så de har nemmere ved at se, hvor der vil være problemer i deres bygninger, så man ikke først får problemerne, V

6 når bygninger er lavet. VI

7 Indhold Forord V 1 Problemanalyse Initierende problem Menneskelig adfærd ved brand Arkitektværktøjer Samlet vurdering Interview med arkitekt Selve interviewet Afgrænsning Metode Matematiks metode Interview som metode Grafteori Anvendelse af grafteori Knuder Kanter Flugtvejsproblemet Definitioner af parametre Gevinsten af en flugtplan Det konkrete flugtvejsproblem Korteste-vej algoritmer Tidskompleksitet Store O-notation Justering Dijkstras algoritme Tidskompleksitet VII

8 5.5 Bellman-Ford Tidskompleksitet APSP algoritmer generelt Floyds algoritme Eksempel på Floyds algoritme Tidskompleksitet Valg af algoritme Største strømnings-problemet Strømningsnetværk Ford-Fulkersons metode Pseudokode Kompleksiteten af Ford-Fulkersons algoritme Implementationens struktur OptimalPathFramework Edge Node Graph Path PathFinder Implementering af Dijkstras algoritme Implementering af Ford-Fulkersons algoritme Forsøg på algoritmer til at finde optimale flugtveje Tanker om algortimen Psuedokode af algoritmen Tidskompleksiteten af algoritmen Implementering af algoritmen lala Kritik af algoritme Modeldannelse Opdeling af bygningen i knuder Tilføjelse af kanter Længde og kapacitet Kilder og dræn Eksekvering Brugervenlighed VIII

9 10 Afrundning Konklusion Perspektivering Litteratur A Spørgsmål fra interview: 49 B Interviewet 50 C Vigtige ord og begreber 55 C.1 Grafteori C.2 tidskompleksitet C.3 O-notation

10 Kapitel 1 Problemanalyse 1.1 Initierende problem Det sker med jævne mellemrum, at folk dør i brand. Ifølge sikkerhedsstyrelsen omkom 90 mennesker i Danmark ved brande i 2008[2]. Dette er måske ikke så mange som dør ved andre områder f.eks. i trafikken, men dette er stadig menneskeliv, der kunne reddes med en intelligent løsning. For at løse dette problem må man overveje, hvor de mest effektive områder ville være at sætte ind. Et vigtigt problem er at mennesker tit vælger den forkerte udgang, når brandalarmen lyder[3]. Et af problemerne er altså at den menneskelige psykologi ikke tillader mennesker at handle rationelt i forhold til den måde flugtplaner er opbygget på. En effektiv måde at mindske antallet af dødsbrande på, ville være at afhjælpe dette problem. Man skal derfor se på, hvorfor mennesker vælger de forkerte udgange og hvordan man kan hjælpe dem til at vælge den rigtige. 1.2 Menneskelig adfærd ved brand Det første man ville tro er, at folk ville gå i panik og dermed ikke tænke rationelt. Men i følge Norman Groner PhD, er det dog ikke det som sker, når en brand opstår. Han siger, at det er en myte, for ved terrorangrebet på World Trade Center brugte de fleste lang tid på at finde ud af, hvad der skete og på at søge infomation om situationen. Ved faretruende situationer er mennesket skeptiske[4]. Enten kan historien om en brand eller lignende være for absurd eller så tager man det ikke seriøst. Nogen ville måske tro, det bare var en brandøvelse og fortsætte deres arbejde. Så det vil altså sige, at mennesker forholder sig roligt under brand. Hvis folk generelt tager det roligt, når de skal ud, hvorfor er det så væsenligt at designe bygningerne anderledes end, man har gjort tidligere? Det har ved et forsøg vist sig, at folk som regel tager den samme vej ud, som de kommer ind af selv under disse specielle omstændigheder. Det er et problem, fordi det øger presset på nogle flugtveje, og efterlader andre ubenyttede. Ved et forsøg[3] foretaget i en IKEA, imiterede man en brandøvelse. Testpersonerne skulle, når alarmen gik igang, finde ud af bygningen. Her viste det sig at over halvdelen 2

11 af forsøgspersonerne valgte at tage den vej, som de kom ind ad også selvom, denne udgang var dobbelt så langt væk som den nærmeste branddør. Det lader dermed til at folk tager den kendte vej ud. Det vil ud fra denne antagelse ikke gøre en bygning mere sikker, hvis der er mange flugtveje, fordi folk alligevel tager den flugtvej, de kender. For at undgå det flaskehalsproblem der opstår, vil en bedre løsning være at fokusere på få flugtudgange, men med en stor kapacitet. Den sidste ting man skal tage højde for er, hvordan folk bevæger sig i grupper som flokdyr, for hvis en flugtvej siger, at 5 personer skal løbe den ene vej for at komme ud og en anden person skal løbe en anden vej for at komme ud, vil de så gøre det eller vil de alle sammen løbe den samme vej? I et forsøg[5] har man taget en gruppe personer og sagt til dem, at de ikke må snakke sammen og at de skulle gå med en arms længde til hinanden, ellers skulle de bare gå rundt i en hal. I den gruppe havde man givet nogle af personerne instruktioner på, at de skulle gå en bestemt vej. Da forsøget startede blev der uden at de snakkede sammen, lavet en kæde af mennesker som fulgte de personer, der havde fået at vide, hvor de skulle gå. Forsøget blev gentaget flere gange med flere og flere personer og færre og færre personer, der fik at vide, hvor de skulle gå. Det viste sig at en flok på 200 personer eller flere, hvor 5 % af de personer fik at vide, hvor de skulle gå hen, var de 5 % nok til at kunne bestemme, hvor flokken skulle gå hen. Da disse undersøgelser viser hvordan mennesker reagerer i brand ser vi det nødvendigt at optimere bygninger, så der i højere grad tages højde for optimale flugtveje. Det er derfor oplagt at sætte ind der hvor bygninger bliver tegnet. Arkitekter vil derfor være den primære målgruppe for projektet. Det vil derfor være en god idé at se på hvad arkitekter gør for at sikre flugtplaner, og hvordan man vil kunne hjælpe dem til at sørge for at flugtplanerne benytter de optimale veje. 1.3 Arkitektværktøjer For at få en bedre ide om hvordan arkitekter designer bygninger, vil vi her se på nogle forskellige arkitektprogrammer lavet til plantegning og design af bygninger. Det vi vil se på er, hvilke features programmerne har og om de tager højde for flugtveje. Alle de programmer vi har undersøgt er CAD programmer. CAD står for Computer-Aided Design og er betegnelsen for en bred række af design værktøjer, som arkitekter bruger. CAD programmerne har en fælles standard, der gør at arkitekter, der bruger forskellige programmer kan se hinandens tegninger. For at få et udvalg af forskellige CAD programmer har vi valgt at se på programmer, som koster vidt forskelligt, gående fra omkring 4000 $ til et gratis program. De tre programmer vi har undersøgt er ArchiCAD 13, SmartDraw 2010 og Google Sketchup. 3

12 ArchiCAD 13 er det dyreste program, vi har undersøgt. Programmet har rigtig mange funktioner, hvilket vi følte virkede meget uoverskueligt. Når man designer bygninger i programmet ses det i 3D, dog er det ikke muligt at se mål på bygningen, man har tegnet. Selvom programmet indeholdte mange funktioner kunne vi ikke finde en måde at tegne flugtplaner eller på nogen måde finde optimale flugtveje. I programmet fandtes der ikke en funktion til at lave flugtplaner eller beregne optimale flugtveje. I modsætning til ArchiCAD 13 så er SmartDraw 2010 et simplere program og nemmere at sætte sig ind i. Det skal dog siges, at det så heller ikke har nær så mange funktioner som ArchiCAD 13. Derudover kan man heller ikke se sin bygning i 3D, det man ser er en plantegning, hvilken kan give problemer i følge Erik Falck Jørgensen Man opdager ting tidligere ved at lave det i 3D. Eksempelvis opdagede vi, at udgangsdøren for en af vores flugtveje sad lige bag ved rampen, så man ikke ville kunne komme ud den vej. Så måtte vi flytte den. Det ville have været svært at opdage i en 2D-tegning[6]. I SmartDraw 2010 er der en masse eksempler på bygninger til rådighed. Et par af disse eksempler er flugtplaner, hvor der sørges for at få alle ud fra bygningen og endda ud af flugtveje, som ser ud til at være de optimale. Der er altså i Smartdraw 2010 tænkt på flugtveje, dog kan man ikke lave optimale flugtveje i sin egen bygning. SmartDraw 2010 er billigere end ArchiCAD 13[7]. Google SketchUp er et gratis program, hvor der dog kan købes en PRO udgave. Vi har valgt at tage Google SketchUp med for at vise et gratis tilbud til arkitekter. Dette program er ligesom SmartDraw 2010 meget simpelt og lige til at gå til. I Google SketchUp kan man både lave plantegninger og tegne i 3D. I forhold til flugtveje, har vi ikke fundet nogen funktioner, der giver brugeren mulighed for at lave flugtveje[8] Samlet vurdering Disse tre programmer udgør et udvalg af, hvad der er på marked af CAD programmer. Selvom vi har et begrænset kendskab til CAD programmerne konkluderer vi, at der ikke bliver taget højde for flugtveje i disse programmer. Dette undrer vi os over da planlægningen af flugtveje må være en væsentlig del af bygningers design. Hvordan kan det være, at det ikke er muligt at planlægge flugtveje i de programmer vi har testet? Er det fordi det udvalg vi har valgt ikke normalt bliver brugt af arkitekter eller kan det være at arkitekter ikke mener der er brug for det? Udfra disse overvejelser har vi valgt at interviewe en arkitekt. 4

13 1.4 Interview med arkitekt Målet med dette interview, som er vedlagt i bilag B er at finde ud af om, arkitekter har behov for et program, der kan hjælpe med at finde optimale flugtveje ud af en bygning. I den sammenhæng vil det også være relevant at finde ud af, hvad de gør for at designe bygninger på en måde, så folk kan komme sikkert ud og om menneskelig adfærd bliver medregnet. Det vil også være relevant for os at høre hvilke love, der er vigtige, når man skal designe bygninger, da der kunne ske at være nogle ting, vi måtte tage højde for. Til sidst vil vi gerne finde ud af, hvilke krav en arkitekt har til et flugtvejsprogram Selve interviewet Arkitekten der blev interviewet var Jan Refsgaard Jepsen chef for produktionen ved Friis & Moltke. I interviewet fandt vi ud af, at arkitekter arbejder tæt sammen med brandingeniører og brandmyndighederne. Tidligere fungerede brandsikringen ved at arkitekterne tegnede en bygning og derefter henvendte sig til brandmyndighederne for godkendelse. Den arkitekt vi snakkede med har aldrig oplevet, at brandmyndigehederne har afvist en bygning. Dog mente han, at der ikke var behov for en strammere lovgivning, da lovgivningen hele tiden bliver ændret i forhold til de ulykker der sker. Dette kan hænge sammen med deres tætte samarbejde med brandmyndighederne. Man benytter stadig den gamle godkendelsesmetode ved mindre bygninger i dag, men ved større bygninger arbejder arkitekter sammen med brandingeniører ved desitagn af bygningen. Ved udarbejdelsen af en bygnings flugtveje, er der udlagt nogle specifikke krav til bygningen, eksempler på disse krav kan være afstanden mellem trapper og bredden på gangene. Kravene skifter alt efter hvilken slags bygning der er tale om. Jepsen lavede dog ikke nogen overordenet analyse af flugtveje, som f.eks. at køre tests på hvor mange personer der ville kunne komme ud af bygningen på en given tid. De har en brandteknisk analyse, de går ud fra. Den brandtekniske analyse simulerer en brand, hvor den kigger på brandens og røgensudvikling, men den tager ikke højde for beregningen af den optimale vej. Som sagt beregner arkitekter ikke flugtveje, men de benytter programmer, der kan tegne bygninger med mål, så beregning af flugtveje skulle være lige til og oplagt at implementere. Jepsen benyttede programmerne fra Autodesk og havde ikke prøvet at flugtveje i programmerne, men han mente, at de godt kunne, hvis man købet en udvidelse til programmet. Han kunne godt se, at det kunne være relevant at udregne flugtveje, da det kunne mindske den nødvendige kontakt med brandmyndighederne. I forhold til deres brandtekniske analyse, der kan tage flere dage om at beregne, hvordan branden udvikler sig og hvordan røgen bevæger sig, kunne et program forholdvis hurtig beregne optimale flugtveje, evt. køre samtidigt med en brandteknisk analyse. Alt i alt må man sige, at et program til udregning af optimale flugtveje kunne være ideelt til at hjælpe arkitekter med design af bygninger. Jan Refsgaard Jepsen mente at kravene for flugtveje var, at de havde en bredde på 1,5 meter og dette mente han ikke kunne være et problem i forhold til flaskehalse i en bygning. Dog kan dette nemt være et stort problem, som er vigtigt 5

14 at forholde sig til ved design af bygninger. Man kunne forestille sig at 500 mennesker skulle bevæge sig igennem en gang, der er 1,5 meter bred, dette vil uden tvivl skabe et flaskehals problem. Ved et spørgsmål om lovgivningen på dette område var for stramt, svarede han, at det mente han ikke, men desuden nævnte han ændringer i lovgivningen ofte sker efter ulykker. Derfor kunne man tænke sig at der kom love ikke blot vedrørende mål, men også vedrørende strømning. 1.5 Afgrænsning Nu da vi har analyseret os frem til et egenligt problem, kan vi se videre på, hvordan det evt. kan løses. En måde var, at man i selve designet af bygninger tog højde for optimale flugtveje. Da det er tilfældet, at arkitekter benytter sig af software til design af bygninger[6], kan det måske være muligt at implementere dette i softwaren. Vi vil derfor udvikle en optimal flugtvejs algoritme og undersøge om, der er en idé i at implementere den i arkitekt software eller lave den til et selvstændigt stykke software. Dette leder os frem til følgende problemformulering. Problemformulering Hvordan finder man optimale flugtveje? Hvordan kan man finde optimale flugtveje vha. grafteori? Hvordan kan vores optimale flugtvejs algoritme være til gavn for arkitekter? 6

15 Kapitel 2 Metode 2.1 Matematiks metode Vi anvender i projektet matematik som metode. I matematik arbejder man deduktivt, det vil sige at man ud fra nogle grundbegreber kaldet aksiomer og definitioner kan udlede matematiske sætninger [9]. For at løse problemer som at finde optimale flugtveje, skal man først have skabt en matematisk model. Matematisk modellering af problemet gør os i stand til at kunne anvende matematik til at finde løsningen på vores problem. Problemet med modellering er, at man ofte bliver nød til at forsimple problemet og derved forvrænge den løsning, vi søger. Så det er vigtigt at være kritisk over for den model, vi skaber, således at vi får den løsning, vi søger. I denne søgning efter løsning kan vi bland andet benytte og af den læring vi har fået gennem diskret matematik kurset til at sammenligne kompleksiteten af algoritmer. Hvis en evt algoritme skal opstilles, kan vi også benyttes os af førnævnte kursus til at opstille pseudokode. Desuden kan vi drage nytte af java programmerings kurset til at gå fra pseudokode til et endeligt program. 2.2 Interview som metode Vi har valgt at benytte interviewet som metode til at finde ud af, hvordan vores program vil kunne hjælpe arkitekter, fordi vi dermed kan få bredere og mere uddybende svar. Interviewets princip er, at man gennem samtale kan overføre viden fra en person til en anden fra den interviewede til intervieweren[10]. Der kan benyttes to metoder den kvalitative metode og den kvantitativ metode. Den kvalitative metode benytter et interview, hvor kvantitativ metode benytter et spørgeskema. Et interview kan være en kvalitativ undersøgelse med meget fleksibilitet og mulighed for åbne svar. Med dette mener vi, at interviewet forgik som en samtale mellem den interviewede og intervieweren. Da intervieweren har en så fremstående rolle, skal han være meget opmærksom på at være objektiv og ikke påvirke den interviewede til at svare noget bestemt. Fordelen med denne metode er, at man kan gå i dybden med spørgsmålene. En anden vigtig egenskab ved denne metode er, at interviewet er dynamisk og kan flytte fokus. Det vil 7

16 betyde, at man ikke altid ved, hvordan interviewet udvikler sig, på trods af at man har nogle forudbestemte spørgsmål skrevet ned. I et interview kan man også benytte en kvantitativ metode. Spørgeskemaet vil normalt bestå af åbne og lukkede spørgsmål, hvor den interviewede sidder isoleret. Endvidere er det vigtigt, at alle testpersonerne får den samme introduktion. Alle disse tiltag sikre objektiviteten og at man tester det, man tror, man tester. Denne metode er god, hvis man skal lave grafer og statistik. Man bruger lukkede spørgsmål for at opdele testperonerne i grupper, såsom alder eller køn. Derved kan man, forhåndlig se en tendens for enkelte grupper, der passer med sin hypotese. Den store forskel mellem kvalitativ og kvantitativ metode er dataen, ved at kvantitative metode giver data, der afvigere fra person til person, forstået på den måde at ikke alle personer nødvendigvis har fået samme spørgsmål. Disse metode fandt vi frem til i bogen InterView[11] Vi har valgt den kvalitative metode, da vi ønsker, at gå i dybden med interviewet. Vi vurderede, at det ikke var relevant at lave en omfattende undersøgelse med mange testpersoner, hvor vi skulle have inddelt arkitekter i grupper. Vi mener på trods af, at vi kun har interviewet en arkitekt, at undersøgelsen er repræsentativ. Undersøgelsen ville muligvis have været bedre, hvis vi havde interviewet et par stykker mere. Omvendt må man være meget mærksom på antallet af interviews, da et større antal interview ikke nødvendigvis giver et bedre resultat og mere videnskabelig tilgang. Grunden til at det giver et bedre resultat, ikke at have for mange interviews i kvalitativ metode er, at mange undersøgelser ville være bedre, hvis man havde fokuseret på bedre spørgsmål, som de også skriver i bogen InterView[11]. Derfor er det ikke mere videnskabeligt at have mange interviews, da resultet ikke bliver mere oprigtigt. Interviewforskning benytter sig desuden af syv stadier: Tematisering - Hvor vi som skal foretage interviewet sætter os ind i emnet for, at finde ud af hvad vi vil have afklaret med interviewet. Design - Hvor der opstilles spørgsmål, med fokus på at tilegne os den viden der er ønsket. Interview - Selve interviewet. Transskribering - Hvor interviewet omskrives fra tale til tekst. Analyse - Den indsamlede data analyseres, og der findes frem til det vi reelt kan bruge. Verificering - Normalt vil man i dette skridt se om de forskellige interview svar er konsistente ved, at sammenligne flere interviews, men da vi blot foretager ét, vil vi sætte det i forhold til den viden vi ellers har indsamlet på området. Rapportering - Resultatet skrives ind i rapporten, hvis svarende lever op til de krav vi har opstillet[11]. 8

17 Kapitel 3 Grafteori Inden vi kan gribe problemet om flugtveje an, må vi først se på grafteori, da vi benytter grafer i vores løsning af flugtvejsproblemet. Det første vi har valgt at definere er orienterede grafer. Definition 1. En orienteret graf G er et par G = (V, E), hvor V er en mængde af knuder og E er en mængde af kanter. En kant e E er et ordnet par e = v 1, v 2, hvor v 1, v 2 V. Vi siger, at e starter i v 1 og slutter i v 2. En orienteret graf består altså af en mængde kanter og knuder. Når man tegner en graf, tegner man som regel knuder som prikker og kanter som streger, der forbinder to knuder. Man angiver en kants orientering med en pil. Definition 2. En ikke-orienteret graf G er et par G = (V, E) hvor V er en mængde af knuder og E er en mængde af kanter. En kant er et uordnet par e = v 1, v 2, hvor v 1, v 2 V. Definition 3. Lad G = (V, E) være en orienteret graf. En vej er en følge af knuder v 1,..., v k, hvor for alle v i, v i+1 E for alle i, hvor 1 i k Anvendelse af grafteori Vi vil i dette afsnit forklare hvordan vi afbilder knuder og kanter i en model over en bygning Knuder Vi definerer knuder som steder, hvor man kan opholde sig. Den enkelte knude vil derfor repræsentere et rum eller en del af et rum. Den mængde plads en knude repræsenterer er varierende, men svarer cirka til et gennemsnitligt grupperum på 30 kvadratmeter. Alle grupperum kan altså vises som en enkelt knude og større arealer, som gange, bliver repræsenteret ved en række knuder. Havde vi valgt at gange kun skulle repræsenteres af én knude, skulle alle de flygtende mennesker hen til denne ene knude. Det ville derfor være svært at sige noget præcist om afstanden fra et bestemt grupperum til udgangen, da gangen ville repræsentere et stort område. Vi deler altså de store lokaler op, for at gøre modellen mere 9

18 præcis. Derudover ville store rum med mere end én udgang være upræcise hvis der kun udgik én kant fra det. Da disse lokaler har flere døre, virker det også naturligt at udnytte dette, da flere knuder vil give de flygtende mulighed for at kunne tage forskellige veje Kanter I flugtplanen repræsenterer kanter mulige veje mellem knuderne. Hvis vi havde valgt kun at bruge enkelte knuder ved gange og større rum, ville vi få kanter som gik igennem væggene. Da vi har valgt at dele rummene op, får vi ikke kanter der går igennem væggene og derfor en model, der grafisk giver mere mening. 10

19 Kapitel 4 Flugtvejsproblemet I hele dette kapitel antager vi, at følgende er givet: Givet en ikke-orienteret graf G = (V, E) Kilder S V afløb D V Passagefunktion t : E R + Strømningsfunktion f : E R + Befolkningsfunktion b : S N En flugtplan P er en mængde af veje i G, der alle er på formen. (s,..., d) hvor s S og d D. 4.1 Definitioner af parametre I dette afsnit vil vi definere de parametre vi benytter Definition 4. Vi antager dette givet. G = (V, E), ikke-orienteret graf Passagetidsfunktionen t : E R + En vej θ i G. Vi vil nu definere passagetiden T (θ) T (θ) er et tal. T (θ) er defineret således det opfylder T (θ) = e θ t(e) 11

20 T (θ) angiver den tid en vej θ tager. Definition 5. Vi antager dette givet. G = (V, E), ikke-orienteret graf Strømningsfunktion f : E R + En vej θ i G. Vi vil nu definere strømningen F (θ) F (θ) er et tal. F (θ) er defineret således det opfylder F (θ) = min e θ f(e) I forhold til flugtvejsproblemet skal kilder forstås som de knuder, hvor de flygtende starter deres flugt og nødudgangene er her afløbene. Vi finder den mindste kapacitet for en flugtrute, da en flugtrute er begrænset af sit smalleste sted. Den mindste kapacitet fortæller derfor, hvor mange personer en given flugtrute kan rumme. Definition 6. Vi antager dette givet. G = (V, E), ikke-orienteret graf Befolkningsfunktion b : S N Vi vil nu definere befolkningen B(S) B(S) er defineret således at B(S) = s S b(s). Nu har vi de parametre, der gør, at vi kan finde gevinsten for en flugtplan. 4.2 Gevinsten af en flugtplan Definition 7. Vi antager dette givet. G = (V, E), ikke-orienteret graf En vej θ i G. Strømningen F (θ) Passagetiden T (θ) 12

21 Vi vil nu definere gevinsten C(θ) C(θ) er et tal. C(θ) er defineret således det opfylder C(θ) = F (θ) T (θ) Gevinsten angiver, hvor mange mennesker der kan komme igennem en given vej. Den totale gevinst fås ved at summere gevinsten af alle vejene i en flugtplan P : C(P ) = θ P C(θ) Den totale gevinst skulle så angive, hvor mange mennesker en flugtplan kan rumme. Men dette er der et problem med, det kræver nemlig at alle kanterne i alle vejene i flugtplanen er kant disjunkt. De må altså ikke have nogle kanter til fælles. Hvis flugtplanerne har fælles kanter kan de ikke blot summeres. Så hvis man ønsker at finde hvor mange mennesker der totalt kan komme igennem en given graf kan man kigge på største strømnings-problemet, som vi kommer ind på i et senere kapitel Det konkrete flugtvejsproblem Det første vi vil gøre er at finde ud af, om en given flugtplan P kan få sin befolkning ud på en tid under m. Definition 8. Vi antager dette givet. Givet en graf G = (V, E) Passagetid T (θ) Befolkning B(S) En tidsgrænse m Gevinsten C(P ) Vi vil nu definere kravet for en flugtplan P. P er tilstrækkelig hvis T (θ) m. θ P C(θ) B(S) Da gevinsten af en optimal flugtvej er kompliceret at regne på vil vi prøve at forsimple problemet. Hvis man ser bort fra kapaciteten i første omgang, vil den korteste vej altid være den optimale. Derfor har vi valgt at starte med at kigge på flugtvejsproblemet som et korteste vej-problem. Altså har vi valgt at sætte kapaciteten af alle kanter i grafen til. Vi vil nu kigge lidt på nogle algoritmer, som omhandler korteste vej-problemet. 13

22 Kapitel 5 Korteste-vej algoritmer I vores projekt har vi tænkt os at finde den optimale flugtvej. Som beskrevet i afsnittet før består vores flugtvejsproblem af et maksimal strømningsproblem og et korteste-vej problem. I dette afsnit vil vi gennemgå forskellige kortestevej algoritmer og derefter finde frem til hvilken algoritme, vi vil bruge. For at kunne vurdere hvilken algoritme vi vil bruge, vil vi også komme ind på tidskompleksiteten af algoritmerne. 5.1 Tidskompleksitet Tidskompleksiteten T (n) måler antallet af væsentlige operationer som en funktion af n, hvor n er størrelsen af input. For at beskrive tidskompleksiteten anvendes ordene worst-case,average-case eller best-case kompleksitet. Worst-case kompleksitet beskriver det størst mulige antal væsentlige operationer ved et vilkårligt input n. Average-case kompleksitet beskriver det gennemsnitlige mulige antal væsentlige operationer ved et vilkårligt input n. Best-case kompleksitet beskriver det mindst mulige antal væsentlige operationer ved et vilkårligt input n. Ved beskrivelsen af algoritmerne er vi dog kun interesseret i en worst-case analyse. Dette er der flere grunde til, best-case scenariet er ofte ikke interessant, dette kunne være at opgaven algoritmen skulle løse var løst på forhånd. Grunden til at vi ikke laver en average-case analyse er at gennemsnitlig input kan være svært at definere. 5.2 Store O-notation Store O-notation anvendes til at give en øvre grænse for vækstraten af en given funktion. Definition 9. Lad f : N N og g : N N være funktioner. Vi skriver at f = O(g) hvis der findes et tal C > 0 og et tal n 0 N således at 14

23 f(n) c g(n) for alle n n 0 Store O resultater må overholde disse regler: 1. Hvis f = O(g) og k > 0, da har vi f = O(kg) 2. Hvis i j, da har vi n i = O(n j ) 3. Hvis f = O(g), da har vi f + g = O(g) Vi vil nu bevise at de tre påstande er sande. I den første påstand skal vi vise, at hvis f = O(g) og k > 0, så har vi at f = O(kg). Det vil sige, at vi skal vise, at der findes en konstant C 1 og et tal n 1 således at f(n) C 1 g(n) for alle n n 1. Hvis man sætter C 1 = k og n 1 = n 0. I den anden påstand skal vi vise, at der findes en konstant C og et n 0 så n i Cn j, når n n 0. Hvis man vælger C = 1 og n 0 = 1, får man n i n j, hvor n 1. Da i j vil dette passe i henhold til overstående definition. I den tredje påstand skal vi finde et C 1 og et n 1 således at f(n) + g(n) c 1 g(n) når n n 0. Da f = O(g) har vi, at der findes en C 0 og et n 0. Så vi har f(n) + g(n) C 0 g(n) + g(n) = (C 0 + 1)g(n) når n n 0. Så vi har f(n) + g(n) C 0 g(n) + g(n) = (C 0 + 1)g(n) når n n 0. Så vælg C 1 = C og n 1 = n 0. Den sidste påstand er især vigtig for vurderingen af korteste vej algoritmerne da den tillader at vi kan smide led af mindre orden væk. Vi vil bruge store O-notation til at bedømme hvilken af de følgende tre algoritmer vi vil bruge, ved at forsimple worst-case kompleksiteten således at vi nemt kan bedømme hvilke algoritme der er optimal. Dog skal det nævnes at dette kan være upræcist. Da det er tilladt at smide led af mindre orden væk kan to algoritmer der begge er O(n 3 ) have forskellig tidskompleksitet, hvis der er tale om specifik tidskompleksitet. 5.3 Justering Fælles for alle korteste vej algoritmer er, at der er en del, som går igen i alle algoritmerne. J u s t e r (u, v,w) Hvis L(u, v) > L(u, w) + L(w, v) Så L(u, v) := L(u, w) + L(w, v) Denne del af algoritmen tjekker om en vej fra u til v er større end en vej fra u til w plus vejen fra w til v. Hvis dette er tilfældet, skal den lave vægten på vejen/kanten fra u til v om 15

24 til længden fra u til v gennem w. Vi har valgt at kigge på tre algoritmer, som er Dijkstras, Bellman-Fords og Floyds algoritme, som alle bruger den her del i algoritmen. 5.4 Dijkstras algoritme Dijkstras algoritme blev udviklet af Edsger Wybe Dijkstra i 1959 og er en algoritme, der kan finde den korteste vej fra ét punkt til samtlige andre punkter. Algoritmen kan anvendes på uorienterede grafer med positive vægte, men kan nemt laves om til brug ved orienterede grafer[12]. Har vi en orienteret vægtet graf med positive vægte, anvendes Dijkstras algoritme således. Man starter med at vælge en startknude v 1 V. Vi betegner længden fra v 1 til en vilkårlig knude v k som L(v 1, v k ), desuden betegner vi vægten kanten mellem to knuder v i og v j som w(v i, v j ). En mængde af knuder S, beskriver hvilke knuder vi har gennemløbet. Algoritmen starter med at sætte længden mellem v 1 og alle v V til uendelig, dog sættes længden v 1 til nul, da længden til startpunktet er nul. S sættes til at være tom. Givet en vægtet ikke o r i e n t e r e t g r a f G(V, E) med p o s i t i v e vægte, hvor v 1 V er s t a r t p u n k t e t f o r i := 1 to n L(v i ):= L(v 1 ) := 0 S:= Herefter kører en while-løkke, der først stopper, når alle v V er v S. Ville man have en version af Dijkstras algoritme, som kunne finde korteste vej mellem to knuder, kunne man i stedet for stoppe loopet, når en given knude var indeholdt i mængden S. Loopet startes ved at en given knude v k med L(v k ) mindst tilføjes til S. Her vil v 1 altid blive tilføjet i første iteration, da L(v 1 ) = 0. Derefter sker der en sammenligning af vægtene af alle kanterne gående fra u til naboknuderne. Findes der at L(u)+w(u, v) < L(v), så opdateres L(v) := L(u) + w(u, v). while a l l e v / S begin u := v v er en knude som ikke l i g g e r i S med L( u ) mindst mulig. u t i l f ø j e s i S f o r a l l e knuder v / S J u s t e r L(u, v, v 1 ) end ( A l l e mærkerne L(v) f o r v V ) er opdateret så de er k o r t e s t mulige ) 16

25 5.4.1 Tidskompleksitet Givet input n knuder: While-løkke: Alle n knuder gennemløbes til de alle er indholdt i S n Alle knudens højest n 1 naboer gennemsøges n 1 Vi har at worst case er T (n) = n (n 1) = n 2 n Hvilket giver os at T (n) = O(n 2 ) 5.5 Bellman-Ford Bellman-Ford algoritmen kan finde den korteste vej fra en knude til alle andre knuder i en graf[13]. Kravet for grafen er, at der ikke findes nogle negative kredse. En negativ kreds er en kreds, hvor summen af alle vægtene på kanterne i kredsen er negativ. Dette krav medfører også, at grafen skal være orienteret. Ellers har vi en negativ kreds for hver kant med negativ vægt. Så Bellman-Ford skal tjekke for alle knuder til alle knuder, for at se om alle veje er positive fra alle kanter til alle kanter. Algoritmen starter som Dijkstras algoritme med at sætte længden fra startknuden til alle andre knuder til uendelig. Længden til startknuden sættes til 0. Givet en vægtet o r i e n t e r e t g r a f G(V, E), hvor v 1 V er s t a r t p u n k t e t f o r i := 1 to n L(v i ):= L( v 1 ) :=0 Det næste trin i algoritmen er, at alle længderne fra startpunktet til alle andre knuder opdateres således, at de er kortest mulig. En af forskellene mellem Bellman-Ford og Dijkstras algoritme er, at denne algoritme ikke grådigt vælger en knude, der i øjeblikket er kortest hen til, men opdaterer alle længderne. Dette er grunden til, at den kan håndtere negative vægte. f o r i = 1 to V 1 f o r a l l e kanter (u, v) E J u s t e r L(u, v) Det sidste trin tjekker om grafen indeholder nogen negative kredse. Ved dette trin bør alle de korteste veje fra startknuden til alle andre knuder være fundet. Hvis der ved, dette trin kan findes en kortere vej, betyder det, at der findes en negativ kreds i grafen. 17

26 f o r a l l e kanter (u, v) E i f L(u) + w(u, v) < L(v) Så f i n d e s der en n egativ kreds Tidskompleksitet Givet input på n knuder og m kanter Alle n knuder gennemløbes n Alle m kanter justeres m Vi har at worst case er T (n) = n m Da vi er interesseret i worst-case af algoritmen skal vi finde hvad m er i worst-case. For n knuder der hver har n 1 naboer, vil m = n (n 1). Vi får derfor en worst-case beskrevet kun med n til T (n) = n 3 n 2. Dette giver T (n) = O(n 3 ) 5.6 APSP algoritmer generelt All pairs shortest path -problemet drejer sig om, at beregne afstande og korteste veje mellem samtlige par af knuder i en graf af formen G = (V, E). V er mængden af alle knuder i grafen og E er mængden af alle kanter i grafen.[14] Efter kørsel af en APSP-algoritme får man to n n matricer, hvor n er antallet af knuder i grafen. Lader vi (u, v) beskrive et par af knuderne, så kan den ene matrix betegnes ved D(u, v) og er en vægtet nabo matrix, hvilket vil sige, at den indeholder alle afstande mellem samtlige par af knuder i grafen. Den anden matrix kaldes R(u, v). Mens den første matrix holder styr på afstande, så fortæller den anden matrix os i hvilken retning, altså til hvilken nabo, man skal gå til, for at følge den korteste vej. 5.7 Floyds algoritme Et eksempel på en APSP-algoritme er Floyds algoritme. I det følgende er den beskrevet i pseudokode, hvor R betegner matricen med naboer, som vi i det foregående blev beskrevet med R(u, v) og N, som opdateres med korteste afstande mellem knudepar (u, v), som vi tidligere kaldte D(u, v)[15]. Denne udgave af Floyds algoritme tager højde for negative længder med if-sætningen if N(i,j) > N(i,k) + N(k,j) then. procedure Floyd (G) ; begin N:= R; f o r k in 1.. n loop f o r u in 1.. n loop f o r v in 1.. n loop J u s t e r L(k, u, v) 18

27 end i f ; end loop ; end loop ; end loop ; end Floyd ; Algoritmen starter med at kigge på løkken v, og tjekker alle andre knuder om, det er muligt at lave en kortere vej fra denne knude. Efter den har gjort det, vil den gå videre med u for at tjekke om, der er kommet nogle nye steder, hvor det er blivet muligt at lave en kortere vej fra u til de andre knuder og det vil den blive ved med, indtil den er kommet igennem alle knuderne[16] Eksempel på Floyds algoritme Figur 5.1: Ikke-orienteret vægtet graf [12] 4 2 (a, a) (b, a) (c, a) (d, a) (e, a) (z, a) (a, b) (b, b) (c, b) (d, b) (e, b) (z, b) = (a, c) (b, c) (c, c) (d, c) (e, c) (z, c) (a, d) (b, d) (c, d) (d, d) (e, d) (z, d) (a, e) (b, e) (c, e) (d, e) (e, e) (z, e) 6 3 (a, z) (b, z) (c, z) (d, z) (e, z) (z, z) Grafen 5.1 i matrixform. D(0) R(0) matricen 19

28 Når man kører Floyds algoritme første gang, kigger man på i = 1. Værdien af i bruges til at markere den korteste vej gennem en knude. Alle de steder i R, hvor der står 1, skal man gå igennem knuden a for at finde den korteste vej. Havde i været 2, skulle vi gå igennem 2. Floyds algoritme for i = 1 starter altså med at kigge på a, derfor kigger man på første række og kolonne. Så løber man igennem for at finde alle de nye korteste vej gennem a. I første række og kolonne, altså (2, 1) og (1, 2), ser vi tallet 4, kigger man i (2, 2) er tallet, da summen af (2, 1)+(1, 2) er 8 og da 8 < så sættes den nye korteste vej i (2, 2) til 8. Så opdateres R(2, 2) til 1 da i = 1. Ligeledes opdateres D(3, 3) og R(3, 3)[17]. Hvordan R matricen bruges til at finde den korteste vej, kommer vi tilbage til i slutningen af dette afsnit. Til at starte med beskæftiger vi os med at få den til at indeholde de rigtige veje Figur 5.1 i matrixform. D(1) R(1) matricen Sådan forsætter man til i = 6 er løbet igennem, da har man de færdige matricer. Grunden til det er, at i = 6 er fordi, der er 6 knuder i grafen, så man gennem løber løkken en gang per knude til, at man ikke har flere knuder i grafen. De færdige matricer ser således ud: Grafen figur 5.1 i matrixform. D(6) 20

29 R(6) matricen Hvis man gerne vil finde den korteste vej fra a til z, starter man i R(6) med at kigge på (6, 1), svarende til z, hvor der står 5, hvilket betyder, at man skal gå til e altså (5, 1) bemærk, at v ikke ændrer sig, da vi stadig ønsker at finde vejen til a. Dette fortsættes ind til, at man får det samme tal i u som i v. Vejen bliver altså a, c, b, d, e, z med en længde på Tidskompleksitet Har vi et input på n knuder, så har vi en tidskompleksitet på T (n) = n n n = n 3, fordi algoritmen gennemløber tre løkker n gange. Hvilket giver at T (n) = O(n 3 ). 5.8 Valg af algoritme Den første algoritme vi kiggede på var Dijkstras algoritme. Den havde den ulempe, at den ikke kan regne på negative kanter. Men da vi ikke har negative vægtede kanter i grafer over bygninger, kan vi se bort fra dette. Tidskompleksiteten for Dijkstras algoritme er O(n 2 ). En af forskellene ved Bellman-Ford algoritmen og Dijkstras algoritme er, at Bellman-Ford kan tage negative kanter, som tidligere nævnt har vi ikke brug for negative kanter. Dijkstras algoritme har tidskompleksiteten O(n 2 ), mens Bellman-Ford har tidskompleksiteten på O(n 3 ). En anden vigtig forskel på de to algoritmer er, at Dijkstras algoritme er en grådig algoritme. Den sidste algoritme vi har beskæftiget os med er Floyds algoritme. Den har en tidskompleksiteten O(n 3 ). Den største forskel på Floyds algoritme i forhold til Dijkstras, er at mens Dijkstras kun finder korteste vej fra en knude til alle andre, så finder Floyds korteste vej mellem alle knuder. Det kommer derfor an på hvor mange kilder og dræn vi har i vores graf. Har vi mange knuder kan Floyds algoritme være en fordel. Vi vil her se på grafen, som vi har lavet over Strandvejen 12 i figur?? for at se hvilken algoritme, der vil være optimal i forhold til kilder og dræn. Her kan vi se, at der kun er tre dræn, hvilket betyder at Dijkstras algoritme vil tage O(3 n 2 ). Hvis vi vælger Floyds algoritme til at finde alle korteste veje, vil det tage O(n 3 ) tid. Da Dijkstras algoritme har en lavere kompleksitet end de to andre algoritmer, har vi valgt at bruge den algoritme. Nu da vi har kigget på kortestevej delen af vores problem, kan vi gå videre til at se på strømningsproblemet. 21

30 Kapitel 6 Største strømnings-problemet Vi vil gerne finde ud af, hvor stor strøming en flugtplan tillader. Strømningen for en flugtplan kan fortælle os, om alle menneskerne i flugtplanen kan komme ud. Herunder vil vi også gennemgå Ford-Fulkersons metode. 6.1 Strømningsnetværk Et strømningsnetværk er en vægtet orienteret graf G = (V, E), hvor alle e E har en positiv vægt, kaldet kapaciteten c(u, v), hvor u V og v V. To knuder s V og d V kaldes for kilder og dræn. For et strømningsnetværk skal der gælde: Strømingen for en given kant må ikke overstige dens kapacitet: For alle u, v V skal c(u, v) f(u, v) For alle knuder skal den strømning, der kommer ind være lig den strømning, der går ud, undtagen for kilder og dræn: For alle v V \s, t skal v V f(v) = 0 Bevæger vi os modsat orienteringen får vi en strømning med negativt fortegn: For alle u, v V skal f(u, v) = f(v, u) Definition 10. Givet er: Et strømningsnetværk G = (V, E) En strømningsfunktion f : E R + Her er den samlede strømning af et strømningsnetværk f defineret som: f = f(e) e E Definition 11. Givet er: 22

31 Et strømningsnetværk G = (V, E) En strømningsfunktion f : E R + Her er den resterende kapacitet c r defineret som: c r (u, v) = c(u, v) f(u, v) Finder vi for et strømningsnetværk G = (V, E), den resterende kapacitet for alle kanter, kan vi lave et nyt strømningsnetværk, hvor c(u, v) = c r (u, v) for alle (u, v) E. Dette netværk kalder vi et rest-netværk G r = (V, E). En vej fra en kilde til et dræn i sådan et strømningsnetværk kalder vi en rest-vej p r. 6.2 Ford-Fulkersons metode Vi vil her beskrive Ford-Fulkersons metode, som kan finde den største strømning for en given graf G = (V, E). Ideen bag metoden er at lave et rest-netværk for den givne graf og derefter forøge strømningen gennem grafen indtil der ikke kan findes flere rest-veje. Dette skulle give os den største strømning gennem grafen. Vi vil her vise at dette er sandt, her følger beviset: Givet er et strømningsnetværk G = (V, E) og en afledt rest-graf G r = (V, E). Lad os antage, at vi har fundet den største strømning f for G, men at der stadig er en rest-vej tilbage i G r. Så vil f + f r, hvor f r er den strømning, der kan gå igennem rest-vejen, være større end den antagede største strømning. Vi har derfor at den største strømning af G fås, når der ikke er flere rest-veje tilbage Pseudokode Her kommer en meget basal implementering af Ford-Fulkersons metode. Givet et strømningsnetværk G = (V, E). En k i l d e og et dræn. f o r a l l e kanter (u, v) E f(u, v) = 0 f(v, u) = 0 while der e k s i s t e r e r en r e s t v e j mellem k i l d e n og drænet i r e s t g r a f e n G r f o r a l l e r e s t v e j e θ i G r f o r a l l e kanter (u, v) θ f(u, v)+ = F (θ) f(v, u) = f(u, v) 23

32 Som beskrevet her kan denne algoritme kun finde strømningen fra en kilde til et dræn. Da vi i vores projekt vil finde veje mellem flere kilder og dræn skal vi have rettet den. For flere dræn og kilder ændrer man ikke på koden, men til gengæld på grafen. For at reducere et strømningsnetværk med flere kilder og dræn til et strømningsnetværk med én kilde og ét dræn. Tilføjer vi en superkilde til mængden af kilder og et superdræn til mængden af dræn. Så tilføjer vi en orienteret kant fra superkilden til alle kilder, hvor kapaciteten er uendelig. Det samme gør vi for superdrænet til alle dræn. Derved kan man finde strømningen mellem superkilden og superdrænet for at finde største strømning Kompleksiteten af Ford-Fulkersons algoritme I Ford-Fulkersons metode havde vi en while-løkke der fandt veje mellem kilden og drænet i rest-grafen. Alt efter hvordan der findes veje er kompleksiteten af Ford-Fulkersons algoritme forskellig. Til at finde veje anvender vi Dijkstras algoritme. Givet input n knuder og den maksimale strømning f : Hver gang vi finder rest-veje anvendes Dijkstras algoritme: n 2 n Hvis hver vejs mindste kapacitet er på 1 kører løkken så mange gange som der er strømning: f I alt har vi T (n) = n 2 n f Derved får vi at T (n) = O(n 2 f ) 24

33 Kapitel 7 Implementationens struktur I dette afsnit vil vi omtale vores stuktur i koden med det formål at give en bedre forståelse af vores program. Pga. vores kursus om Java har vi valgt at programmere programmet i dette. Vores oprindelige ide om et program, var et program der, kunne kører på håndholdte enheder. Her ville Java være optimal, da Java kan køre på mange forskellige enheder inklusiv de fleste mobiltelefoner. Vi vil her gennemgå de forskellige klasser som definere datastrukturerne, OptimalPathFrameWork, Edge, Node, Graph, Path og PathFinder. 7.1 OptimalPathFramework Denne klasse er vores main, hvor vi kører alle de andre dele fra. Den indeholder ingen metoder eller constructors. 7.2 Edge Edge klassen bliver brugt til at lave nye kanter. Kantens propeties er target, length, flow og capacity. Så vi er i stand til at bestemme, hvor kanten går hen, hvad den er vægtet med og dens strømning. Når vi skal lave en ny kant, anvender vi disse to constructors: p u b l i c Edge ( S t r i n g fromnode, S t r i n g tonode, Graph graph, double lengthofedge, double capacityofedge ) Node from = graph. getnode ( fromnode ) ; Node t o = graph. getnode ( tonode ) ; from. neighbours. add (new Edge ( to, lengthofedge, capacityofedge ) ) ; to. neighbours. add (new Edge ( from, lengthofedge, capacityofedge ) ) ; p u b l i c Edge ( Node tonode, double lengthofedge, double capacityofedge ) 25

34 t a r g e t = tonode ; l e n g t h = lengthofedge ; c a p a c i t y = capacityofedge ; Når man laver en kant anvender man den øverste constructor. Man fortæller om vægtningen og hvilken knude den går fra og til og i hvilken graf. I denne constructor tilføjer vi de to knuder som naboer til hinanden ved at kalde den anden constructor, som så tilføjer en kant mellem knuderne for begge veje. 7.3 Node Denne klasse gør os i stand til at lave knuder. Klassens properties er disse: name, neighbours, previous, mindistance og flow. name er knudens navn som angives hver gang, man laver en ny knude. Knudens naboer lagres i form af en liste af kanter kaldet neighbours. Previous og mindistance anvendes, når vi skal finde korteste veje og flow angiver vejens samlede strømning. Dens constructor kræver kun, at vi angiver et navn i form af en String. Den eneste metode klassen indeholder er printneighbours(), den er som navnet antyder i stand til at fortælle os, hvilke naboer knuden har i form af kanter. 7.4 Graph Graph-klassen gør os i stand til at lave grafer. Denne klasse repræsenterer en graf G = (V, E) Grafens property nodes er en liste med knuder, som fortæller hvilke knuder der er indeholdt. For at fjerne kanter anvendes deleteedges, hvor input er to knuder, så fjernes kanterne imellem dem. For at tilføje nye kilder og dræn bruger vi addsourcesanddrains input, til denne er to String arrays, et String array for hvilke knuder, som er dræn og det andet for hvilke, som er kilder. Hvis vi vil kopiere en graf, benytter vi copygraph, inputtet er den graf, man vil kopiere. For at få fat i en given knude i en graf anvendes getnode(string name). Metoden virker ved at alle knuder gennemløbes indtil den knude med navnet givet som input findes. Denne knude returneres. p u b l i c Node getnode ( S t r i n g nodename ) f o r ( Node node : nodes ) i f ( node. name == nodename ) return node ; r eturn n u l l ; 26

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 25. maj 2010 I II Det Teknisk-Naturvidenskabelige

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 26. maj 2010 I II Det Teknisk-Naturvidenskabelige

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 [?] A312 Jens Stokholm Høngaard Kristian Pilegaard Jensen Thomas Birch Mogensen Niels Asger Aunsborg Nicolai Vesterholt Søndergaard Daniel Agerskov Heidemann Jensen 22. maj 2010 I II Det Teknisk-Naturvidenskabelige

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 [?] A312 Jens Stokholm Høngaard Kristian Pilegaard Jensen Thomas Birch Mogensen Niels Asger Aunsborg Nicolai Vesterholt Søndergaard Daniel Agerskov Heidemann Jensen 23. maj 2010 I II Det Teknisk-Naturvidenskabelige

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

Nicolai Vesterholt Søndergaard Oplagstal: 1

Nicolai Vesterholt Søndergaard Oplagstal: 1 Flugtveje A312 Jens Stokholm Høngaard Kristian Pilegaard Jensen Thomas Birch Mogensen Niels Asger Aunsborg Nicolai Vesterholt Søndergaard Daniel Agerskov Heidemann Jensen 19. april 2010 I II Det Teknisk-Naturvidenskabelige

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

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

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

Læs mere

Danmarks Tekniske Universitet

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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet 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

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 Kursus nr. 06. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning

Læs mere

Rolf Fagerberg. Forår 2013

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

Læs mere

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

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

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

De rigtige reelle tal

De rigtige reelle tal De rigtige reelle tal Frank Villa 17. januar 2014 Dette dokument er en del af MatBog.dk 2008-2012. IT Teaching Tools. ISBN-13: 978-87-92775-00-9. Se yderligere betingelser for brug her. Indhold 1 Introduktion

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

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

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

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

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer: Sortering Sortering Input: Output: n tal De n tal i sorteret orden Eksempel: Kommentarer: 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Sorteret orden kan være stigende eller faldende. Vi vil i dette kursus

Læs mere

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

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Introduktion til kurset Rolf Fagerberg Forår 2019 1 / 20 Hvem er vi? Underviser: Rolf Fagerberg, Institut for Matematik og Datalogi (IMADA) Forskningsområde: algoritmer

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

Introduktion til DM507

Introduktion til DM507 Introduktion til DM507 Rolf Fagerberg Forår 2017 1 / 20 Hvem er vi? Underviser: Rolf Fagerberg, IMADA Forskningsområde: algoritmer og datastrukturer 2 / 20 Hvem er vi? Underviser: Rolf Fagerberg, IMADA

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

Rolf Fagerberg. Forår 2014

Rolf Fagerberg. Forår 2014 Forår 2014 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: Format: Programmering og Diskret matematik I (forelæsninger), TE (øvelser), S (arbejde selv og i studiegrupper) Eksamenform: Skriftlig

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

Rolf Fagerberg. Forår 2015

Rolf Fagerberg. Forår 2015 Forår 2015 Dagens program 1 2 3 4 5 Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Deltagere: BA i Datalogi BA i Software

Læs mere

Sortering af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave. Sortering 1 / 36 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 6, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

Læs mere

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

Læs mere

Sortering af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave. Sortering Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

Læs mere

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

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

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

Afstande, skæringer og vinkler i rummet

Afstande, skæringer og vinkler i rummet Afstande, skæringer og vinkler i rummet Frank Nasser 9. april 20 c 2008-20. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her.

Læs mere

Matricer og lineære ligningssystemer

Matricer og lineære ligningssystemer Matricer og lineære ligningssystemer Grete Ridder Ebbesen Virum Gymnasium Indhold 1 Matricer 11 Grundlæggende begreber 1 Regning med matricer 3 13 Kvadratiske matricer og determinant 9 14 Invers matrix

Læs mere

Rolf Fagerberg. Forår 2015

Rolf Fagerberg. Forår 2015 Forår 2015 Dagens program 1 2 3 4 5 Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Deltagere: BA i Datalogi BA i Software Engineering BA i Matematik-Økonomi BA i Anvendt Matematik BA

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

Danmarks Tekniske Universitet

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

Læs mere

Dokumentation af programmering i Python 2.75

Dokumentation af programmering i Python 2.75 Dokumentation af programmering i Python 2.75 Af: Alexander Bergendorff Jeg vil i dette dokument, dokumentere det arbejde jeg har lavet i løbet opstarts forløbet i Programmering C. Jeg vil forsøge, så vidt

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

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

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

DM507 Algoritmer og datastrukturer

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

Læs mere

Afstande, skæringer og vinkler i rummet

Afstande, skæringer og vinkler i rummet Afstande, skæringer og vinkler i rummet Frank Villa 2. maj 202 c 2008-20. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Indhold

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

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

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

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

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

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

Rolf Fagerberg. Forår 2012

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

Læs mere

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

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

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

Danmarks Tekniske Universitet

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

Læs mere

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

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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 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 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

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Har en hvis lighed med divide-and-conquer: Begge opbygger løsninger til større problemer

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet Eksamen 005, F side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed:

Læs mere

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

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

Analyse af ombytningspuslespil

Analyse af ombytningspuslespil Analyse af ombytningspuslespil 1 / 7 Konkret eksempel på algoritmeanalyse Prøv ombytningspuslespillet på kurset webside. 2 / 7 Konkret eksempel på algoritmeanalyse Prøv ombytningspuslespillet på kurset

Læs mere

Analyse af ombytningspuslespil

Analyse af ombytningspuslespil Analyse af ombytningspuslespil 1 / 7 Konkret eksempel på algoritmeanalyse Prøv ombytningspuslespillet på kurset webside. Spørgsmål: Hvilken bedste (laveste) score kan du opnå på 5 forsøg? Hvilken algoritme

Læs mere

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

Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012 Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012 May 15, 2012 1 CONTENTS 2012 CONTENTS Contents 1 Kompleksitet 3 1.1 Køretid................................................ 3 1.2 Asymptotisk

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Onsdag den 0. juni 009, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)

Læs mere

Naturvidenskab. En fællesbetegnelse for videnskaberne om naturen, dvs. astronomi, fysik, kemi, biologi, naturgeografi, biofysik, meteorologi, osv

Naturvidenskab. En fællesbetegnelse for videnskaberne om naturen, dvs. astronomi, fysik, kemi, biologi, naturgeografi, biofysik, meteorologi, osv Naturvidenskab En fællesbetegnelse for videnskaberne om naturen, dvs. astronomi, fysik, kemi, biologi, naturgeografi, biofysik, meteorologi, osv Naturvidenskab defineres som menneskelige aktiviteter, hvor

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

IT opgave. Informationsteknologi B. Vejleder: Karl. Navn: Devran Kücükyildiz. Klasse: 2,4

IT opgave. Informationsteknologi B. Vejleder: Karl. Navn: Devran Kücükyildiz. Klasse: 2,4 IT opgave Informationsteknologi B Vejleder: Karl Navn: Devran Kücükyildiz Klasse: 2,4 Dato:03-03-2009 1 Indholdsfortegnelse 1. Indledning... 3 2. Planlægning... 3 Kommunikationsplanlægning... 3 Problemstillingen...

Læs mere

Omskrivningsregler. Frank Nasser. 10. december 2011

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

Læs mere

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

Videregående Algoritmik. Version med vejledende løsninger indsat!

Videregående Algoritmik. Version med vejledende løsninger indsat! Videregående Algoritmik DIKU, timers skriftlig eksamen, 1. april 009 Nils Andersen og Pawel Winter Alle hjælpemidler må benyttes, dog ikke lommeregner, computer eller mobiltelefon. Opgavesættet består

Læs mere

Introduktion til differentialregning 1. Jens Siegstad og Annegrethe Bak

Introduktion til differentialregning 1. Jens Siegstad og Annegrethe Bak Introduktion til differentialregning 1 Jens Siegstad og Annegrete Bak 16. juli 2008 1 Indledning I denne note vil vi kort introduktion til differentilregning, idet vi skal bruge teorien i et emne, Matematisk

Læs mere

Læringsprogram. Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4

Læringsprogram. Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4 Læringsprogram Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4 R o s k i l d e T e k n i s k e G y m n a s i u m Indholdsfortegnelse FORMÅL...

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

Fraktaler. Mandelbrots Mængde. Foredragsnoter. Af Jonas Lindstrøm Jensen. Institut For Matematiske Fag Århus Universitet

Fraktaler. Mandelbrots Mængde. Foredragsnoter. Af Jonas Lindstrøm Jensen. Institut For Matematiske Fag Århus Universitet Fraktaler Mandelbrots Mængde Foredragsnoter Af Jonas Lindstrøm Jensen Institut For Matematiske Fag Århus Universitet Indhold Indhold 1 1 Komplekse tal 3 1.1 Definition.......................................

Læs mere

Roskilde Tekniske Gymnasium. Eksamensprojekt. Programmering C niveau

Roskilde Tekniske Gymnasium. Eksamensprojekt. Programmering C niveau Roskilde Tekniske Gymnasium Eksamensprojekt Programmering C niveau Andreas Sode 09-05-2014 Indhold Eksamensprojekt Programmering C niveau... 2 Forord... 2 Indledning... 2 Problemformulering... 2 Krav til

Læs mere

Klasse 1.4 Michael Jokil 03-05-2010

Klasse 1.4 Michael Jokil 03-05-2010 HTX I ROSKILDE Afsluttende opgave Kommunikation og IT Klasse 1.4 Michael Jokil 03-05-2010 Indholdsfortegnelse Indledning... 3 Formål... 3 Planlægning... 4 Kommunikationsplan... 4 Kanylemodellen... 4 Teknisk

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

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

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

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

Læs mere

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET INSTITUT FOR DTLOGI, RHUS UNIVERSITET Science and Technology EKSEN lgoritmer og Datastrukturer (00-ordning) ntal sider i opgavesættet (incl. forsiden): 11 (elleve) Eksamensdag: Torsdag den 1. juni 01,

Læs mere

Matematisk modellering og numeriske metoder. Lektion 16

Matematisk modellering og numeriske metoder. Lektion 16 Matematisk modellering og numeriske metoder Lektion 16 Morten Grud Rasmussen 6. november, 2013 1 Interpolation [Bogens afsnit 19.3 side 805] 1.1 Interpolationspolynomier Enhver kontinuert funktion f på

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

π 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

Andengradsligninger. Frank Nasser. 12. april 2011

Andengradsligninger. Frank Nasser. 12. april 2011 Andengradsligninger 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

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

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

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Programmering C Eksamensprojekt Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Indledning Analyse Læring er en svær størrelse. Der er hele tiden fokus fra politikerne på, hvordan de danske skoleelever kan

Læs mere