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: 58 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. Kapitel 3 omhandler 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. I kapitel 4 kommer vi ind på hvordan man kan beskrive de forskellige dele af grafteori grafisk. Vi kigger på hvordan det opfattes, og hvordan vi forestiller os de skal indgå i et program, som arkitekter kan bruge. Da vi har kigget på grafteori, er det nu muligt at beskrive flugtvejsproblemet i kapitel 5. Vi opstiller forskellige funktioner. 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 6, korteste-vej problemet, hvor vi kigger vi på forskellige algoritmer som kan bruges til at finde kortestevej. Desuden forklarer vi også generelt om APSP. For at sammenligne algoritmerne forklarer vi først om 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 7 som omhandler strømningsnetværk. Vi definere forskellige begreber inden for strømning og kommer ind om Ford-fulkersons metode. Den metode kan vi anvende til at finde den største strømning for en graf. I kapitlet 8 forklarer vi om implementationen af grafteori og algoritmer. Her forklarer vi, hvordan vores metoder til at beregne korteste vej og største strømning er implementeret. Dette gør vi ved at tage udgangspunkt i små dele af vores kode og forklare dem hver for sig. Når implementeringen er på plads, vil vi i kapitel 9 se på, vores eget forsøg på at lave en algortime til at beregner den optimale flugtvej, og finder dens tidskompleksitet. For derefter at se kritisk på den, med det mål at bedømme om den opfylder de krav vi stiller til den. V

6 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 9 4 Modelovervejelser Knuder Kanter Opdeling af bygningen i knuder Tilføjelse af kanter Længde og kapacitet Eksekvering Flugtvejsproblemet Definitioner af parametre Gevinsten af en flugtplan Det konkrete flugtvejsproblem VI

7 6 Korteste-vej algoritmer Tidskompleksitet Store O-notation Justering Dijkstras algoritme Tidskompleksitet 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 algoritmen Psuedokode af algoritmen Tidskompleksiteten af algoritmen Implementering af algoritmen Kritik af algoritme Test af algoritme VII

8 10 Afrundning Konklusion Perspektivering Litteratur A Spørgsmål fra interview: 51 B Interviewet 52 C Vigtige ord og begreber 57 C.1 Grafteori C.2 tidskompleksitet C.3 O-notation

9 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 de rigtige. 1.2 Menneskelig adfærd ved brand Det første man ville tro var, 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 skeptisk[4]. Enten kan historien om en brand eller lignende være for absurd eller også tager man det ikke seriøst. Nogen ville måske tro, at 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

10 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

11 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

12 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. Han fortalte at brandsikringen tidligere fungerede ved at arkitekterne tegnede en bygning og derefter henvendte sig til brandmyndighederne for godkendelse. Man benytter stadig den gamle godkendelsesmetode ved mindre bygninger i dag, men ved større bygninger arbejder arkitekter sammen med brandingeniører om designet af bygningen. 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. 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å gange. Jepsen lavede dog ikke nogen overordnet analyse af flugtveje, ved 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 finde flugtveje i programmerne, men han mente, at de godt kunne, hvis man købte 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 og røgenudviklingen udvikler sig, kunne et program forholdvis hurtig beregne optimale flugtveje, eventuelt 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

13 at forholde sig til ved design af bygninger. Man kunne forestille sig at 500 mennesker skulle bevæge sig igennem én 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, og nævnte at æ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

14 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. Vi vil prøve at lave en algoritme der kan finde optimale flugtveje og implementerer denne algoritme i Java som proof-of-concept. Til at teste kompleksiteten af algoritmen vil vi anvende tidskompleksitets analyse. 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 til indsamling af data den kvalitative metode og den kvantitativ metode. Den kvalitative metode benytter sig af interview, hvor den kvantitative metode benytter sig eksempelvis af spørgeskemaer. 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 betyde, at man ikke altid ved, hvordan interviewet udvikler sig, på trods af at man har nogle forudbestemte spørgsmål skrevet ned. 7

15 I et interview kan man også benytte en kvantitativ metode. Det kan f.eks. være et spørgeskemaet som vil bestå af lukkede spørgsmål. Endvidere er det vigtigt, at alle testpersonerne får den samme introduktion. Alle disse tiltag sikre objektiviteten og sikre at man får de svar man vil undersøge. 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åbelig se en tendens for enkelte grupper, der passer med sin hypotese. Den store forskel mellem kvalitativ og kvantitativ metode er dataen, ved at kvalititative metode giver data, der afviger fra person til person, forstået på den måde at ikke alle personer nødvendigvis har fået samme spørgsmål. 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 opmærksom på antallet af interviews, da et større antal interview ikke nødvendigvis giver et bedre resultat og mere videnskabelig tilgang. Grunden til dette er at det giver et bedre resultat, hvis man har få interviews, som man så kan gå i dybden med i stedet for en mange interviews der bliver overfladiske [11]. 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

16 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 1. 9

17 Kapitel 4 Modelovervejelser Vi vil i dette afsnit forklare hvordan vi afbilder knuder og kanter i en model over en bygning. Vi kan nu kigge lidt på hvordan implementationen i et arkitekt program kunne foregå. Det smarteste ville være, hvis der i programmet var en knap, som grafisk kunne vise, om det kunne lade sig gøre at få alle ud og hvor der kunne opstå flaskehalsproblemer. For at det ville kunne lade sig gøre, skal programmet først generere en graf over bygningen med længde og kapacitet på alle kanter. 4.1 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 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. 4.2 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 næsten ville gå på tvers af bygningen. Da vi har valgt at dele rummene op, får vi ikke kanter der der kun går ud til den nærmeste del af gangen. 10

18 4.3 Opdeling af bygningen i knuder Knuder har vi tidligere defineret, som steder man kan opholde sig. Når arkitekten har tegnet en bygning, skal programmet kunne genkende rum og tildele dem en knude. Men dette er ikke helt nok som vi snakkede om før, skal større rum deles i flere knuder. Da de arkitekt programmer vi har kigget på, alle kan finde frem til arealet af et rum, kan vi indføre en standard for, hvor stort et areal en knude højest må repræsentere. Det samme gør sig gældende for gange, da disse også er steder, man kan opholde sig. 4.4 Tilføjelse af kanter Når grafen er delt op i knuder, kan man gå videre til at forbinde dem med kanter. Kanter er beskrevet lige før som veje mellem knuder. Det vil sige, at hvis to knuder ligger i samme rum eller er adskilt af en dør, skal der være en kant imellem. Arkitekt tegninger af bygninger indeholder allerede døre. Derfor skal man først finde de rum, hvor der er mere end en knude, er der mere end en, skal der være en kant imellem dem, hvis de er inden for en bestemt afstand af hinanden. Afstanden skal sikre at kun knuder, der ligger lige op af hinanden er naboer, så to knuder i hver ende af et meget stort rum f.eks. ikke er naboer. Når dette er gjort for alle knuder, kan man gå videre til at forsøge at finde knuder, som kun er adskilt af en dør, igen skal der tjekkes om knuderne er inden for den forudbestemte afstand, men ikke i samme rum. Hvis dette er tilfældet skal, der tjekkes om en evt kant vil krydse en dør, er dette også opfyldt, skal der være en kant. De knuder hvor menneskerne opholder sig er en af de få ting, vi ikke uden videre kan sætte programmet til at ordne automatisk, som vi ser på nu, må arkitekten selv sætte knuderne i de rum hvor der er mennesker til at indeholde et antal personer. Vi kunne hjælpe arkitekten godt på vej ved, at antallet af personer bare skal sættes for et rum, så kan vi fordele antallet af personer på de forskellige knuder og hvis en knude indeholder personer, når flugtvejsalgoritmen eksekveres er det en kilde. Flugtvejen må arkitekten også selv sætte ind, ved at markere nogle knuder og sætte det til udveje. 4.5 Længde og kapacitet Når vi skal tilføje længden af kanter, kan vi tage udgangspunkt i rummenes mål, som vi kender fra arkitekt programmet. Derefter skulle det være muligt ud fra nogle matematiske beregninger at finde frem til længden. Som et eksempel kan man se på et rektangulært rum, der er delt op i to knuder. Afstanden fra knuderne, som begge er placeret i midten af hver deres lige store del af firkanten, hvor hver af de to dele er 5 5 meter, vil længden af kanten være Ved mere avanceret rum opbygninger vil udregningerne bliver mere avanceret, men 11

19 vi er overbevist om det ikke kan lade sig gøre. Når der skal sættes kapacitet på kanterne var en mulig løsning, at de forskellige dør typer som allerede findes i arkitektprogrammerne allerede har en tilknyttet kapacitet. Derved er det blot at tjekke om en kant går gennem en dør, hvis den gør skal kapaciteten sættes til dørens prædefinerede kapacitet. Hvis ikke skal kapaciteten sættes i forhold til en udregning, som kunne være rummets størrelse dividered med antallet af knuder ganget med hvor mange mennesker, der nomalt kan gå gemmen et rum på den størrelse, alt efter loft højde og bredden på rummet. 4.6 Eksekvering Når programmet eksekveres er vores forestilling, at bygningen bliver markeret med hvor stor en del af kapaciteten der bliver brugt i de forskellige kanter. Som en følge deraf vil man kunne se hvor, der er flaskehalse, og derved hvor man skal sætte ind hvis man vil forbedre flugtplanen. Det er vores forestilling, at dette vil kunne hjælpe arkitekter med at forbedre deres bygning og gøre dem sikrer uden alt for meget ekstra arbejde. 12

20 Kapitel 5 Flugtvejsproblemet I dette kapitel vil vi definere flugtvejsproblemet. Vi antager dette 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. 5.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) 13

21 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 vej 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. 5.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 (θ) 14

22 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 gevinsten 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. 15

23 Kapitel 6 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. 6.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 og 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. 6.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 16

24 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 hvilken algoritme der er bedst. 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. 6.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 til længden fra u til v gennem w. Vi har valgt at kigge på de tre algoritmer, Dijkstras, Bellman-Fords og Floyds algoritme. 17

25 6.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 vælger en startknude v 1 V. Længden fra v 1 til en vilkårlig knude betegnes v k som L(v 1, v k ), desuden betegner vi vægten 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 ) Tidskompleksitet Givet input n knuder: 18

26 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 ) 6.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 den 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, v 1 ) 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. 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. 19

27 6.5.1 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 ) 6.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. 6.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) end i f ; end loop ; end loop ; end loop ; end Floyd ; 20

28 Algoritmen starter med at kigge på løkken v, og tjekker for 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 6.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 6.1 i matrixform. D(0) R(0) matricen 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 21

29 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 6.1 i matrixform. D(1) R(1) matricen Sådan forsætter man til i = 6 er løbet igennem, da man der har de færdige matricer. Grunden til det er, ved i = 6 er fordi, der er 6 knuder i grafen, og man gennemløber løkken en gang per knude til, at der ikke er flere knuder i grafen. De færdige matricer ser således ud: Grafen figur 6.1 i matrixform. D(6)

30 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 indtil, 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 ). 6.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 der ikke er negativt 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, men 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 korteste-vej 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 9.1 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. 23

31 Kapitel 7 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. 7.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 mængder af knuder s S hvor for alle s V og d D hvor for alle 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: 24

32 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. 7.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. Beviset for dette er følgende: 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) 25

33 Som beskrevet her kan denne algoritme kun finde strømningen fra en kilde til et dræn. I vores projekt vil vi dog arbejde med grafer der har flere kilder og dræn. For afhjælpe dette reducerer man et strømningsnetværk med flere kilder og dræn til et strømningsnetværk med én kilde og ét dræn. Dette gøres ved at tilføje en superkilde s til mængden af kilder og tilføjer en orienteret kant (s, s i ), hvor c(s, s i ) = for alle i = 1, 2, 3...m. Vi tilføjer også et superdræn til mængden af dræn og tilføjer en orienteret kant (d i, d), hvor c(d i, d) = for alle i = 1, 2, 3...n Derved kan man finde strømningen gennem grafen, ved at finde strømningen mellem superkilden og superdrænet 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 ) 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 [?] 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 [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 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 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 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Pædagogisk vejledning til. Materialesæt. Sphero. http://via.mitcfu.dk/99872760

Pædagogisk vejledning til. Materialesæt. Sphero. http://via.mitcfu.dk/99872760 Pædagogisk vejledning til Materialesæt Sphero http://via.mitcfu.dk/99872760 Pædagogisk vejledning til materialesættet Sphero Materialesættet kan lånes hos VIA Center for Undervisningsmidler og evt. hos

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

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

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

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

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

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

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

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

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

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

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

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

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

Fraktaler Mandelbrots Mængde

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

Læs mere

Trekanter. Frank Villa. 8. november 2012

Trekanter. Frank Villa. 8. november 2012 Trekanter Frank Villa 8. november 2012 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 1 1.1

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

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

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

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

Spilstrategier. Indhold. Georg Mohr-Konkurrencen. 1 Vindermængde og tabermængde 2. 2 Kopier modpartens træk 4

Spilstrategier. Indhold. Georg Mohr-Konkurrencen. 1 Vindermængde og tabermængde 2. 2 Kopier modpartens træk 4 Indhold 1 Vindermængde og tabermængde 2 2 Kopier modpartens træk 4 3 Udnyt modpartens træk 5 4 Strategityveri 6 5 Løsningsskitser 7 Spilstrategier De spiltyper vi skal se på her, er primært spil af følgende

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

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

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

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

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

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

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

Lineære sammenhænge. Udgave 2. 2009 Karsten Juul

Lineære sammenhænge. Udgave 2. 2009 Karsten Juul Lineære sammenhænge Udgave 2 y = 0,5x 2,5 2009 Karsten Juul Dette hæfte er en fortsættelse af hæftet "Variabelsammenhænge, 2. udgave 2009". Indhold 1. Lineære sammenhænge, ligning og graf... 1 2. Lineær

Læs mere

Eksempel på den aksiomatisk deduktive metode

Eksempel på den aksiomatisk deduktive metode Eksempel på den aksiomatisk deduktive metode Et rigtig godt eksempel på et aksiomatisk deduktivt system er Euklids Elementer. Euklid var græker og skrev Elemeterne omkring 300 f.kr. Værket består af 13

Læs mere

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528) Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528) Institut for Matematik & Datalogi Syddansk Universitet Mandag den 3 Januar 2011, kl. 9 13 Alle sædvanlige hjælpemidler

Læs mere

Lineære differentialligningers karakter og lineære 1. ordens differentialligninger

Lineære differentialligningers karakter og lineære 1. ordens differentialligninger enote 11 1 enote 11 Lineære differentialligningers karakter og lineære 1. ordens differentialligninger I denne note introduceres lineære differentialligninger, som er en speciel (og bekvem) form for differentialligninger.

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

Andengradsligninger. Frank Nasser. 11. juli 2011

Andengradsligninger. Frank Nasser. 11. juli 2011 Andengradsligninger Frank Nasser 11. juli 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

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

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

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

Pointen med Differentiation

Pointen med Differentiation Pointen med Differentiation Frank Nasser 20. 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:

Læs mere

Informationssøgning. Målret din søgning skriv bedre opgaver få en bedre karakter. Henning Lorentzen Pædagogisk IT-koordinator

Informationssøgning. Målret din søgning skriv bedre opgaver få en bedre karakter. Henning Lorentzen Pædagogisk IT-koordinator Informationssøgning Målret din søgning skriv bedre opgaver få en bedre karakter Henning Lorentzen Pædagogisk IT-koordinator Hvordan kommer jeg i gang Sæt tid af, 5 minutter er ikke nok Begynd med det du

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

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

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

Læs mere

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

Asymptotisk analyse af algoritmers køretider

Asymptotisk analyse af algoritmers køretider Asymptotisk analyse af algoritmers køretider Analyse af køretid Recall: Vi ønsker at vurdere (analysere) algoritmer på forhånd inden vi bruger lang tid på at implementere dem. De to primære spørgsmål:

Læs mere

Grafmanipulation. Frank Nasser. 14. april 2011

Grafmanipulation. Frank Nasser. 14. april 2011 Grafmanipulation Frank Nasser 14. 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

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

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

Archimedes Princip. Frank Nasser. 12. april 2011

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

Euklids algoritme og kædebrøker

Euklids algoritme og kædebrøker Euklids algoritme og kædebrøker Michael Knudsen I denne note vil vi med Z, Q og R betegne mængden af henholdsvis de hele, de rationale og de reelle tal. Altså er { m } Z = {..., 2,, 0,, 2,...} og Q = n

Læs mere

Fremtiden visioner og forudsigelser

Fremtiden visioner og forudsigelser Fremtiden visioner og forudsigelser - Synopsis til eksamen i Almen Studieforberedelse - Naturvidenskabelig fakultet: Matematik A Samfundsfaglig fakultet: Samfundsfag A Emne/Område: Trafikpolitik Opgave

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

Analyse af algoritmer. Analyse af algoritmer. Analyse af algoritmer. Køretid

Analyse af algoritmer. Analyse af algoritmer. Analyse af algoritmer. Køretid Philip Bille Mål. At bestemme og forudsige resourceforbrug og korrekthed af algoritmer Eks. Virker min algoritme til at beregne korteste veje i grafer? Hvor hurtigt kører min algoritme til at søge efter

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

Spilstrategier. 1 Vindermængde og tabermængde

Spilstrategier. 1 Vindermængde og tabermængde Spilstrategier De spiltyper vi skal se på her, er primært spil af følgende type: Spil der spilles af to spillere A og B som skiftes til at trække, A starter, og hvis man ikke kan trække har man tabt. Der

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

matx.dk Differentialregning Dennis Pipenbring

matx.dk Differentialregning Dennis Pipenbring mat.dk Differentialregning Dennis Pipenbring 0. december 00 Indold Differentialregning 3. Grænseværdi............................. 3. Kontinuitet.............................. 8 Differentialkvotienten

Læs mere