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 [?] 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

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: 45 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 Indhold 1 Problemanalyse Initierende problem Menneskelig adfærd ved brand Arkitektværktøjer Interview med arkitekt Selve interviewet Afgrænsning Metode Overvejelser om model af problemstilling Grafteori Anvendelse af grafteori Knuder Kanter Eksempel på afbildning Flugtvejsproblemet Definitioner af parametre Gevinsten af en flugtplan Det konkrete flugtvejsproblem Korteste-vej algoritmer Tidskompleksitet Store O-notation Dijkstras algoritme Tidskompleksitet Bellman-Ford Tidskompleksitet APSP algoritmer generelt V

6 5.6 Floyds algoritme Eksempel på Floyds algoritme Tidskompleksitet Valg af algoritme Største strømnings-problemet Ford-Fulkersons metode Pseudokode Modeldannelse Opdeling af bygningen i knuder Tilføjelse af kanter Længde og kapacitet Kilder og dræn Eksekvering Overvejelser ved egen kode 28 9 Implementationens struktur OptimalPathFramework Edge Node Graph Path PathFinder Implementering af Dijkstras algoritme Implementering af Ford-Fulkersons metode Konklusion Taksonomi Grafteori tidskompleksitet O-notation Litteratur A Spørgsmål fra interview: 41 B Interviewet 42 VI

7 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 ved brande i 2008[?]. Dette er et problem, og at mindske antallet af omkomne ville være en lettelse for samfundet. For at gøre dette må man overveje hvor de mest effektive områder ville være at sætte ind. En vigtigt problem er at mennesker tit vælger den forkerte udgang, når brandalarmen lyder[?]. Et af problemerne er altså 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. Da mennesker nok ikke vil ændre deres adfærd vil det nemmeste være at forebygge, ved at gøre effektivisere flugtplaner. 1.2 Menneskelig adfærd ved brand Vi har fastslået, at vores målgruppe er de personer, der til dagligt står for at designe bygningerne, da vi mener at det er større bygninger hvor en god flugtplan kan være med til at gøre en forskel, da det ikke er så relevant at beregne en flugtplan for et normalt parcelhus. Da mennesker i erhvervsbygninger ofte er mange samlet kan det være meget nyttigt at finde ud af, hvordan menneskers adfærd er under stressede og faretruende situationer. Det første man ville tro er, at folk ville gå i panik og dermed ikke tænke rationelt. Men Norman Groner PhD, udtaler i et interview udførd af Lea Winterman 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[?]. 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. 1

8 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. Ved et forsøg[?] 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 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 lod 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å dette flaskehalsproblem, 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[?] 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, hvilket er noget vi vil forsøge at tænke ind i større eller mindre grad, i vores egen algoritme 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. ArchiCAD 13 er er det dyreste program vi har undersøgt. Programmet har 2

9 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 meget lightweight program, man hurtigt kan 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 kunne ikke komme ud den vej. Så måtte vi flytte den. Det ville have været svært at opdage i en 2D-tegning. [?]. 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 heller ikke helt billigt, dog langt fra lige så dyrt som ArchiCAD 13.[?] 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 features, der giver brugeren mulighed for at lave flugtveje.[?] Samlet vurdering Disse 3 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 dette ikke er muligt i forhold til 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 Interview med arkitekt Målet med dette interview 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 3

10 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 beregne flugtveje i programmerne, men han mente, at de godt kunne. 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 en 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 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ævn- 4

11 te han ændringer i lovgivningen ofte sker når nogle ulykker sker. Derfor kunne man tænke sig at der kom noget lovgivning vedrørende strømningen igennem flugtveje. Vi har talt om hvilke udfordringer der ligger i at nedbringe antallet af mennesker der brænde inde. Både i forhold til den menneskelig adfærd og i forhold til design af bygningen. Vi har påpeget at arkitekter kan få 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[?], 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? 5

12 Kapitel 2 Metode Rapporten består af en datalogisk og en matematisk vinkling. Da vi ønsker at finde en optimal vej ud af en bygning, er det oplagt at benytte diskret matematik til at forklare grafteori. Vi benytter også matematik til at opstille definitioner af grafteoretiske begreber såsom kanter og knuder. Ved at have disse definitioner fastsatte, kunne vi begynde at lave et program, der kunne beregne den optimale vej. Det er med dette program, vi får den datalogiske vinkel på projektet. Der er lavet mange forskellige algoritmer til at beregne den korteste vej, men vi ønsker at finde den optimale vej. Det betyder, at vi bliver nød til at arbejde med variablen kapacitet. Så vores algoritme bliver nød til ikke kun at være inspireret af korteste vej algoritmer, men også af strømningsalgoritmer. Vi har brugt bøger og internetsider som kilder. Under grafteoriafsnittet har vi brugt vores diskret matematik bog. Grunden til det er, at vi kender bogens begreber fra undervisningen. Nogle af grafteoriens begreber kan variere fra bog til bog. Vi er klar over, at internetsider ikke altid er pålidelige, men vi har været kritiske overfor dem. De internetsider vi har valgt at bruge har vi vurderet til at være pålidelige. Vores kilde [?] er vurderet på baggrund af forfatteren, der er Erhvers- og Byggestyrelsen. Vi har valgt at lave et interview med en arkitekt for at finde ud af om, der er brug for vores program til at beregne flugtveje. Interviewet bestod af åbne spørgsmål og hele interviewet blev optaget med en diktafon. Vi valgte at optage interviewet for, at være sikker på vi kunne huske, hvad han sagde. Men problemet var, at det var svært at hører, hvad Jepsen sagde under optagelsen. 2.1 Overvejelser om model af problemstilling Hvad forstår man ved den optimale vej? Er den optimale vej, den man kender eller den som er kortest? Det er svært at sige og der er også flere ting at tage højde for. Hvis man har en flugtvej, der kun ligger fem meter væk, er det ikke nødvendigvis den optimale flugtvej. Denne flugtvej kan være så snæver, at folk ikke kan komme hen til udgangen. En optimal flugtvej afhænger derfor 6

13 ikke kun af dens længde, men også af dens kapacitet. Den optimale flugtvejrute kan altså opdeles i to problemer, navnligt længde og kapacitet. Dette er begge problemer, der kan beskrives grafteoretisk som korteste-vej problemet og strømningsproblemet. Har vi en ikke-orienteret graf G = (V, E) har hver kant tildelt et tal, sådan en graf kaldes en kantvægtet graf.[?] Har vi en vej S mellem to knuder i en vægtet graf har vi længden af vejen L som en funktion x : E R hvor det er gældende: L = v V x vj j R Korteste-vej problemet består i finde den vej mellem to knuder således, at L bliver mindst mulig. Altså er vejen med den mindste L den optimale vej set ud fra et korteste-vej synspunkt. Der findes et grafteoretisk problem kaldet det maksimale strømningsproblem. Har vi en ikke-orienteret graf G = (V, E), har hver kant en kapacitet, h- vor u v R +. Desuden har vi to knuder kaldet s for kilden og r for afløbet. Strømningen i grafen G er en funktion x : E R +, hvor det er gældende[?]: v V \{r, s} : x wv (w,v) E x vw = 0 (w,v) E (v, w) E : 0 x vw u vw Den optimale vej er her den vej med den største strømmning mellem s og r. Vi har brug for at finde den optimale vej i forhold til både strømmningen og en vejs længde. Er der en måde, hvorpå disse problemer kan anskues som et fælles problem? Det første vi gør er at definerer kapacitet. Bredden af en flugtvej definerer vi som kapacitet og måles i hvor mange mennesker, der kan komme igennem per sekund. Kapacitet kan være defineret på forskellige måder. Er det gangen hen til flugtdøren, man taler om eller er det selve dørens kapacitet? Man kan iagttage to forskellige flugtveje. En flugtvej der har en gang med høj kapacitet og en dør med lille kapacitet. En flugtvej der har en gang med lav kapacitet og en dør med høj kapacitet. Ved den første type vil gangen have en højere kapacitet end døren. Her vil mange mennesker kunne komme hen til en nødudgang, men pga. dørens lave kapacitet vil der opstå en flaskehals-situation. Her kunne det ske, at de flygtende ville trampe hinanden ned. Med den anden type vil dørens kapacitet kunne rumme flere af de flygtende mennesker. Vi vil derfor ikke få flaskehalsproblemet, som ved den forrige løsning. Er denne løsning så bedre? De flygtende vil måske ikke trampe hinanden ned i selve udgangen, men der er derimod en fare for, at det vil ske i gangen med den lave kapacitet. Altså er typen, hvor vi har en gang med lavere kapacitet være lige så dårlig som den første type. Dog kan man sige, at sådan et design aldrig vil forekomme, hvor døren har en højere kapacitet end den gang, der fører hen til den. Vi vil derfor kun koncentrere os om den første type og vil definere kapaciteten af flugtvejen som kapaciteten af 7

14 de døre, man går igennem. Det kan ikke udelukkes, at gangenes kapacitet har betydning for den optimale rute, men vi har valgt at se bort fra det. 8

15 Kapitel 3 Grafteori Inden vi kan gribe problemet om flugtveje an, må vi først se på grafteori. Da det bliver brugt til at finde og lave grafer i vores måde at finde flugtvejs problemet. 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, E er en mængde af kanter. En kant e E er et ordnet par e = v 1, v 2, hvor v 1 V, 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, 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 som en række knuder. Vi vælger at dele store rum og gange op i flere knuder. Havde vi valgt at hele gangene kun var en knude, skulle alle de flygtende mennesker hen til denne ene knude, det ville der for være svært at sige noget præcist om afstanden fra et bestemt gruppe rum til udgangen, da gangen ville repræsentere et stort område. Vi deler de store 9

16 lokaler op, for at gøre modellen mere præcis. Man kunne nemlig forestille sig, at alle ville vælge den samme flugtvej, hvis de befandt sig i et lokale, hvor der kun går en kant ud fra. Da disse lokaler har flere døre, virker det også naturligt at udnytte dette, da flere knuder ville 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. 3.2 Eksempel på afbildning Vi har taget udgangspunkt i Bygningen på Strandvejen 12-14, og har derfor dette eksempel på hvordan vi ser en bygning grafteoretisk. Længden på kanterne er ikke realistiske, men det skulle give en grafisk forståelse af hvordan grafteori afspejler virkeligheden. Figur 3.1: Strandvejen 12-14, 2. etage I grafen repræsenterer G x en del af en gang. U x er udgange. 10

17 T x er toiletter. Dep x er depoter. Numrene som 312 er grupperum og kontorer. V x efter et rum angiver, at rummet er delt op i forskellige dele. De firkantede knuder repræsenterer gange, men der er ikke nogen praktisk forskel på dem og de cirklede. 11

18 Kapitel 4 Flugtvejsproblemet Vi vil i dette afsnit beskrive de parametre og funktioner, der er en del af vores flugtvejsproblem, derefter vil vi definere vores parametre. 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 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 (θ) angiver den tid en vej θ tager. T (θ) = e θ t(e) 12

19 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 (θ) Vi vil nu definere gevinsten C(θ) 13

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

21 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. 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å tre algoritmer, som er Dijkstras, Bellman-Fords og Floyds algoritme, som alle bruger den her del i algoritmen. 5.1 Tidskompleksitet Tidskompleksitet er en sammenregning af den tid alle operationer i en proces tager. Tidskompleksiteten for en algoritme beskrives som en funktion T (n) hvor n er input. For at beskrive tidskompleksiteten anvendes ordene worstcase,average-case eller best-case kompleksitet. Worst-case kompleksitet beskriver hvor mange udregninger algoritmen maksimalt skal bruge, mens de to andre cases beskriver forholdsvis gennemsnitlig antal udregninger og mindst antal udregninger. 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 meget usandsynligt, dette kunne være at opgaven algoritmen skulle løse var løst på forhånd eller i forhold til korteste vej algoritmerne, at vi har en graf med 15

22 nul knuder og kanter. 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 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 fire 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. 5.3 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. 16

23 Algoritmen kan anvendes på uorienterede grafer med positive vægte, men kan nemt laves om til brug ved orienterede grafer[?]. Har vi en orienteret vægtet graf med positive vægte, anvendes Dijkstras algoritme således. Man starter med at vælge et 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)forv V ) er opdateret så de er k o r t e s t mulige ) Tidskompleksitet Givet input n knuder: While-løkke: Alle n knuder gennemløbes til de alle er indholdt i S T (n) Alle knudens højest n 1 naboer gennemsøges T (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 ) 17

24 5.4 Bellman-Ford Bellman-Ford algoritmen kan finde den korteste vej fra en knude til alle andre knuder i en graf[?]. 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. 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 Alle m kanter justeres m Vi har at worst case er T (n) = n m n 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 18

25 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.5 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.[?] 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.6 Floyds algoritme Et eksempel på en APSP-algoritme er Floyds algoritme. I det følgende er den beskrevet i pseudokode, hvor R betegner matrixen 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)[?]. 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:= M; 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(u, v) 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[?]. 19

26 Figur 5.1: ikke-orienteret vægtet graf [?] Eksempel på Floyds algoritme 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) matrixen 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)[?]. 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. 20

27 Figur 5.1 i matrixform. D(1) R(1) matrixen 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) R(6) matrixen 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å

28 5.6.2 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.7 Valg af algoritme Den første algoritme vi kiggede på var Dijkstras algoritme. Den havde den u- lempe, 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 3.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. 22

29 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. 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: Et strømningsnetværk G = (V, E) En strømningsfunktion f : E R + 23

30 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.1 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: 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) 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 24

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

32 Kapitel 7 Modeldannelse Nu da vores algoritme virker og vi kan finde flugtveje ud af en bygning, kan vi begynde at 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. 7.1 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 i afsnit 3.1.1, 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. 7.2 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 i afsnit 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. 26

33 7.3 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 kanten væ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 gange hvor mange mennesker der nomalt kan gå gemmen et rum på den størrelse, alt efter loft højde og bredden på rummet. 7.4 Kilder og dræn Kilder 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 som er kilder 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. Dræn må arkitekten også selv sætte ind, ved at markere nogle knuder og sætte det til dræn. 7.5 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. 27

34 Kapitel 8 Overvejelser ved egen kode Vi har nu kigget på flere forskellige skellige problem stillinger så som strømning, korteste vej algoritme og flugtvejproblemet. Dem vil vi bruge i vores program, men der er også ting vi har fundet ud af som vi ikke kan tage højde for det er ikke matematisk muligt at gøre da ting som, at folk bevæger sig i en flok, så hvis vi har to grupper af mennesker de skal ud af to forskellige udgange men så mødes på en fælles gang så er der gode muligheder for at de vil slå sig sammen til en stor gruppe[?]. det kan vi ikke tage fuld højde for da det er meget svært at programmere menneskers opførelse ind i et program. Vi kan dog godt beruge det lidt da vi kan få programmet til at heller vil tage minder vej hvis den kan få alle ud selv om det tager længere tid at få folk ud af bygningen. Så det tager vi højde for, men vi slet ikke tage højde for at folk tager den forkerte vej ud af en bygning. 28

35 Kapitel 9 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. Dog er det ikke noget vi vil tage brug af, da vi har ændret målgruppe. Vi vil her gennemgå de forskellige klasser vi har i vores framework, OptimalPathFrameWork, Edge, Node, Graph, Path og PathFinder. 9.1 OptimalPathFramework Denne klasse er vores main, hvor vi kører alle de andre dele fra. Den indeholder ingen metoder eller constructors. 9.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 ) ) ; 29

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

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

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

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 Kursus nr. 06. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne: Opgave

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Dynamisk programmering

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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 23. maj 20. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 0205. Varighed: 4 timer Tilladte hjælpemidler: Alle skriftlige hjælpemidler.

Læs mere

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

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

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

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

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

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

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

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

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

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

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

Sikre Beregninger. Kryptologi ved Datalogisk Institut, Aarhus Universitet

Sikre Beregninger. Kryptologi ved Datalogisk Institut, Aarhus Universitet Sikre Beregninger Kryptologi ved Datalogisk Institut, Aarhus Universitet 1 Introduktion I denne note skal vi kigge på hvordan man kan regne på data med maksimal sikkerhed, dvs. uden at kigge på de tal

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

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Tirsdag den 24. juni 2014, kl. 10:00 14:00 Besvarelsen skal afleveres elektronisk. Se

Læs mere

Kapitel 9: Netværksmodeller

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

Læs mere

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

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

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 Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur blandt mange mulige. Dynamisk programmering Optimeringsproblem: man ønsker at finde

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

Kapitel 9: Netværksmodeller

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

Læs mere

Danmarks Tekniske Universitet

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

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

Mandags Chancen. En optimal spilstrategi. Erik Vestergaard

Mandags Chancen. En optimal spilstrategi. Erik Vestergaard Mandags Chancen En optimal spilstrategi Erik Vestergaard Spilleregler denne note skal vi studere en optimal spilstrategi i det spil, som i fjernsynet går under navnet Mandags Chancen. Spillets regler er

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

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

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

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

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 6 (seks) Eksamensdag: Mandag den 11. august 008, kl.

Læs mere

Skriftlig Eksamen Diskret Matematik (DM528)

Skriftlig Eksamen Diskret Matematik (DM528) Skriftlig Eksamen Diskret Matematik (DM528) Institut for Matematik & Datalogi Syddansk Universitet Tirsdag den 20 Januar 2009, kl. 9 13 Alle sædvanlige hjælpemidler (lærebøger, notater etc.) samt brug

Læs mere

14 Algoritmeanalyse. Noter. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. Køretid for forskellige kontrolstrukturer.

14 Algoritmeanalyse. Noter. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. Køretid for forskellige kontrolstrukturer. 14 Algoritmeanalyse. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. O og Ω. Køretid for forskellige kontrolstrukturer. Eksempler på algoritmeanalyse. Eksponentiel og polynomiel

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

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

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

1: Hvilket studium er du optaget på: 2: Hvilke af nedenstående forelæsninger har du deltaget i?

1: Hvilket studium er du optaget på: 2: Hvilke af nedenstående forelæsninger har du deltaget i? 1: Hvilket studium er du optaget på: 2: Hvilke af nedenstående forelæsninger har du deltaget i? 3: Hvis du har deltaget i mindre end halvdelen af kursusgangene bedes du venligst begrunde hvorfor har deltaget

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet Eksamen 0205, Forår 205 side af 5 Danmarks Tekniske Universitet Skriftlig prøve, den 22. maj 205. Kursusnavn: Algoritmer og datastrukturer Kursusnummer: 0205 Hjælpemidler: Skriftlige hjælpemidler. Det

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (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

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

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

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

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004 Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen torsdag den 3. juni 2004 Opgaverne vægtes i forhold til tidsangivelsen herunder, og hver opgaves besvarelse bedømmes

Læs mere

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

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

Læs mere

π 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

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

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

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

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

Eksamen i Diskret Matematik

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

Læs mere

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

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

Vi har valgt at analysere vores gruppe ud fra belbins 9 grupperoller, vi har følgende roller

Vi har valgt at analysere vores gruppe ud fra belbins 9 grupperoller, vi har følgende roller Forside Indledning Vi har fået tildelt et skema over nogle observationer af gærceller, ideen ligger i at gærceller på bestemt tidspunkt vokser eksponentielt. Der skal nu laves en model over som bevise

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 Funktioner

Pointen med Funktioner Pointen med Funktioner Frank Nasser 0. april 0 c 0080. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk: Dette er en

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

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

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2 DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld

Læs mere

Fang Prikkerne. Introduktion. Scratch

Fang Prikkerne. Introduktion. Scratch Scratch 2 Fang Prikkerne All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/ccwreg to register your club. Introduktion

Læs mere

Matlab script - placering af kran

Matlab script - placering af kran Matlab script - placering af kran 1 Til at beregne den ideelle placering af kranen hos MSK, er der gjort brug af et matlab script. Igennem dette kapitel vil opbygningen af dette script blive gennemgået.

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