Korteste vej Jacob Ditlev Sørensen Studieretningsprojekt 2014

Størrelse: px
Starte visningen fra side:

Download "Korteste vej Jacob Ditlev Sørensen Studieretningsprojekt 2014"

Transkript

1

2 Korteste vej Jacob Ditlev Sørensen Studieretningsprojekt 2014

3 Abstract You all know the saying, "every road leads to Rome", but one question always remains what is the fastest route from point A to point B, in order to minimize time spent on travelling. During this project I have found that there are various different algorithms that try to address exactly this problem. Also I found that how they solve this problem is different, even though the under laying problem is the same. In order to better understand the problem, I will use graph theory to formulate a prober mathematical question, that are solvable by the computer. Also this project have implemented the most famous, shortest path algorithm in python called "Dijkstra's algorithm" and analyzed why it is famous. The other algorithms Dijkstra have been compared to are the Greedy Best-First-Search, which as the name implies finds the route by picking the nearest neighbor every time. Another algorithm is the A*(pronounced A star) which is a combination of Dijkstra and Greedy-Best-First, this however focuses its search on a line directly between point A to point B. Last I have also looked into a more advanced algorithm which is inspired by nature to find the fastest path, or to be more precise it's called the AS(Ant System) which simulates how ants find their path in the nature. Furthermore the project examines if there have been improvements to this algorithm. The modern human is often faced with this problem, even though they don't always realize it. One of the reasons why, they don't notice it, is because it has already been solved by services. 2-22

4 Indholdsfortegnelse Abstract Indledning Grafteori Forskellige typer Hvor bruges der grafteori Delkonklusion Den korteste vej algoritmer Myretue Greedy Best-First-Search algoritmen Dijkstra's algoritme (kort) A* (A star) Delkonklusion Dijkstra's algoritme Biografi Algoritmen Eksempel Optimering med heap datastruktur Delkonklusion Implementering af Dijkstra's algoritmen i et program Programmerings sprog - Python Krav til programmet Dokumentation af programmet Tidsforbruget Tilfældig graf generator - program Forsøget Delkonklusion Praktiske eksempler Rejseplanen.dk Computer spil Delkonklusion Konklusion Litteraturliste

5 9 Billede kildeliste

6 1 Indledning Man siger at alle veje fører til Rom, men hvilken en er den korteste? Mennesket har altid været dovent, og har altid taget den korteste vej, hvor det nu var muligt, således at vi har sparret tid og kræfter. Men hvordan kan vi hurtigst finde den korteste vej, således at vi ikke bruger mere tid på at finde vejen end at rejse selve vejen? Jeg har i dette projekt valgt at koncertere mig om problemstillingen omkring den korteste vej. I projektet undersøger jeg hvilke algoritmer, der er til at finde den korteste vej med hoved fokus på Dijkstra's algoritme, nogle praktiske anvendelser og grafteorien som er grundlag for det hele. Jeg vil også konstruere et IT produkt med Dijkstra's algoritme. 2 Grafteori Grafteorien en fundamentet for den korteste vej. Det er her at alle oplysninger om vejpunkter og vejlængder kan lageres systematisk. En graf består af en mængde punkter, som både kan være på et plan eller i et rum, nogle af disse grafer er forbundet via kontinuerte kurver. Disse kurver kan være orienterede med en gennemløbsretning (fx. ensrettet gade) kaldet buer, og hvis de er ikke-orienterede kaldes de kanter 1. Du har garanteret stødt på mange grafer allerede, du ved det bare ikke. Et simpelt tælletræ er en orienteret graf, idet at man starter med træets fællesnæver i toppen, se figur 1. Denne graf har ni punkter og otte buer. To punkter kaldes naboer hvis de begge er forbundet med et tredje punkt via en kant/bue. Fx. er de tre røde bokse naboer til den grønne boks i figur Forskellige typer De mest brugbare typer af grafer: Det er normalt tilladt at punkt V 1 og V 2 er forbundet via mere end en kant. Men hvis det ikke er tilfældet kan grafen kaldes simpel. En graf kaldes sammenhængende hvis to vilkårlige punkter er forbundet. Fig. 1 En simpel graf hvor der ingen løkker er og hvor alle punkter er forbundet via kanter med hinanden, kaldes fuldstændig. Grafen G 1 kaldes en delgraf af grafen G, hvis G 1 fremkommer af G ved at fjerne visse kanter/buer, men ingen punkter 2. 1 Jens Carstensen, 1992, Grafteori, Systime, side 8 2 Jens Carstensen, 1992, Grafteori, Systime, side

7 2.2 Hvor bruges der grafteori Til daglige bruger vi grafteori til mange ting. I kemien bruger vi konstitutionsformellen til at se hvordan atomerne er bundet sammen, se figur 2. Når man skal lave et flowdiagram over fx. et program er det også en graf. Alt hvor kasser/objekter er forbundet via pile eller steger er i er i princippet en graf. H H H H C C C H H H Fig. 2 Men man kan også bruge en graf til at beskrive et vejnet. Hvor at alle punkterne i en graf repræsenterer vejknudepunkter, og kanter og buer repræsenterer vejene. Således at der fra punkt A til punkt B er en distance på 20 enhed. O H Alle kanterne får en distance og punkterne får et kalde bogstav. Men grafen i figur 3 har ikke kanter, men buer idet det er retningsbestemte kurver, det er derfor også en simpel graf, da der ikke er mere end en bue, der går fra samme punkt til et andet punkt. Denne graf har er simpel, sammenhængende og fuldstændig. 2.3 Delkonklusion Grafteori findes alle vegne, for eksempel et simpelt tælletræ. Med grafteori kan du systematisk sætte data op, således at der er sammenhæng mellem flere punkter. Altså vi er i stand til at konstruere et vejnet, hvor knudepunkter og vejlængder indgår. E B F 20 A G 50 C D H Fig

8 3 Den korteste vej algoritmer Hvordan kan man ved simpel matematik og algoritmer finde den korteste vej fra A til B. Kan man man være sikrer på programmet kommer frem til den rigtige løsning, eller overhoved en løsning? 3.1 Myretue Myretue algoritmen også kaldet AS (Ant System Algoritmen) er inspireret af den måde myrer opføre. Myrerne har den geniale egenskab, at de kan følge hinanden via et duftspor (pheromoner), og jo stærkere duftsporet er jo flere vil følge samme vej. Dette duftspor forsvinder over tid, således at hvis en myrer er længere tid om at finde sit mål, vil duftsporet være svagt. Altså der vil ikke være nogen der følger efter disse spor. Dette ses tydeligt når to myres ruter krydser hinanden, myrerne vælger her den korteste rute 34. På billedet 1 ses myrer der går fra start punkt F til slut punkt N, hvor det stærke duft spor er den røde linje med den mest direkte vej. Når alt dette skal indsættes i et program, vil myrerne dog først sætte sit duftspor. Efter de har fundet målet. Når de første myre "vandre" ud i grafen vil de går af tilfældige ruter, men efterhånden vil de vælge deres vej med sandsynligheds regning baseret på Billede 1 edia.org/wikipedia/c ommons/thumb/a/a f/aco_branches.svg/ 800px- Aco_branches.svg.pn g duftsporerne. Metoden er meget langsom og der er ingen garanti for at programmet, vil finde den hurtigste rute eller målet. Denne metode virker i alle grafer. 3.2 Greedy Best-First-Search algoritmen Greedy Best-First-Search bruger heuristic 5 til hurtigt at finde målet. Algoritmen virker ved at den kender målets koordinater, og kan således finde retningen til den. Der efter tager den punktet tættest på målet. For eksempel hvis målet er i østlig retning, vil algoritmen med det samme gå mod østlige naboer. Derfor virker den kun i et grafgitter, hvor alle kanter er lige lange, da den er afhængig af koordinaterne. Denne algoritme er rigtig god til at finde en hurtig rute, rigtig hurtigt. Men man kan ikke være sikker på den hverken finder den hurtigste rute eller målet 6. Se evt. billede 2, hvor den orange kvadrat er start og den lilla er slut. De omkring liggende farvede kvadrater er Heuristic: springe over hvor gærdet er lavest, hurtigt skøn, en rigtig hurtig men ikke præcis metode. de naboer algoritmen har kigget på. Billede 2 /~amitp/gameprogramming/a-star/bestfirst-search.png 3 Thomas Wix, Kasper Reindahl & Kevin Voss Sjøbeck, , Visualizing nature-inspired metaheuristics for optimization problems, Software Technology Project, Danmarks Tekniske Universitet 4 Wiktor K. Macura, Ant Colony Algorithm, [Besøgt d ] 5 Amit - Stanford University, Heuristics, [Besøgt d ] 6 Amit - Stanford University, Introduction to A*, [Besøgt d ] 7-22

9 3.3 Dijkstra's algoritme (kort) Dijkstra's algoritme finder alle mulige veje der findes og stopper først, når den har nået målet. Dog er denne metode langsom da den ikke tager højde for hvor målet befinder sig, men arbejder sig ud i form som en cirkel, se billede 3. Algoritmen finder den hurtigste vej, og vil altid finde løsningen, hvis der er en. Dijkstra's algoritme vil blive forklaret nærmere i næste hovedafsnit. 3.4 A* (A star) A* (udtales "A star") er en videre udvikling af Dijkstra's algoritme, samt Greedy Best-First-Search algoritmen, hvor man har taget det bedste fra begge verdner. I stedet for at tage alle nærmeste naboer (som Dijkstra's algoritme gør), kigger A* kun på dem der ligger i retningen mod målet. Den laver en liste, over de naboer der ligger i retningen mod målet, således at den undgår at arbejde på noget, der ligger i den modsatte retning. A* er en hurtig metode, hvor man er sikker på at finde den hurtigste vej 7. Billede Delkonklusion Hvis man vil have den hurtigste algoritme, skal man vælge Greedy Best-First-Search algoritmen, men man kan ikke være sikker på, at den hverken finder den hurtigste rute eller målet, den virker kun i et graf-gitter med lige lange sidder. A* (A star) er hurtig til at finde målet, og vil altid finde den hurtigste vej til målet, forudsat der findes en vej. Dog virker A* også kun i en graf-gitter med lige lange sidder. Dijkstra's algoritme er langsom, men vil altid finde den hurtigste vej i en graf (hvis der er en vej). 4 Dijkstra's algoritme 4.1 Biografi Edsger Wybe Dijkstra (udtales Deigstra), Dijkstra startede sin karrierer med at læse teoretisk fysik i Leiden, med skiftede hurtig over til computer videnskab der var hans helt store lidenskab. Dijkstra's største bidrag var Dijkstra's algoritme. Men han stod også bag den såkaldte omvendt polsk notation 8. I omvendt polsk notation vil for eksempel et regneudtryk som Billede 4 aphies/dijkstra_edsger.htm 7 Amit - Stanford University, Introduction to A*, [Besøgt d ] 8 Allan Baktoft, 2011, Matematik i virkeligheden Bind 2, Natskyggen, side

10 blive omsat til. Denne metode med at sætte tal og operatorer op i stakke blev brugt i mange af HP's lommeregnere Algoritmen Dijkstra's algoritme blev ud givet 1959 i artiklen A note on two problems in connexion with graphs 10. Se tilhørende figur Vi har et punkt A, A er startpunktet. A markeres derfor med det samme som besøgt. A har x antal naboer, naboen der er nærmest A kaldes B. 2. B sættes til at være 7 da det er distancen mellem A og B. 3. Step 2 gentages til der ikke er flere naboer tilbage. 4. Nu finder du det punkt der er nærmest på A, det er B 1, nu gøres det samme som i step 1 bare hvor at A er skiftet ud med B, bagefter markeres B som besøgt. 5. Når du har fundet længden til dit slut punkt, er du færdig A 2 C Total længde 11 4 A A B 1 B B Fig. 4 9 Klaus Hansen, Casper Thomsen, Omvendt polsk notation, [Besøgt d ] 10 Edsger Wybe Dijkstra, 1959, Numerische Mathematik volume 1, side , A note on two problems in connexion with graphs 9-22

11 4.2.1 Eksempel Vi skal finde korteste vej mellem A og F, med A som startpunkt. Se tilhørende figur 5. A har tre naboer B, C og E. Som start markeres A som besøgt. Vi udregner først længden til nærmeste nabo, i dette tilfælde er det C. Vejen A-C er 3, derfor sættes C=3. Vi tager nu A's næst tætteste nabo B. B sættes lig med 4. Sidste nabo E sættes lig med 7. A-B 4 D 4 B 6 5 C 3 8 Korteste vej Kanter Start Slut 11 2 D F 3 G A-C 3 F A-E 7 G A 7 E Fig.5 Vi vælger nu det punktet der er nærmest A, det er C. Vi udregner nu længden fra A-C og til nærmeste nabo, B. A-C-B er lig med 9, men B er i forvejen allerede 4 og derfor gør vi intet her. Næst tætteste nabo til C er E, men da vejen i gennem C til E er større end den nuværende gør vi intet her. Vi tager nu C's sidste nabo, D. Da der ikke findes nogen vej til D allerede, er vejen til D lig med A-B 4 A-C-D 14 uendelig. Vejen gennem A-C-D er lige med fjorten og da fjorten er mindre end uendelig sættes D lig med 14. Vi kan nu markere C som A-C 3 F besøgt, da vi har fundet alle distancer der går gennem C. A-E 7 G Vi finder nu det nærmeste ubesøgt punkt til A, det er B. B har en ubesøgt nabo, D. Vejen A-B-D er lig med 9. Da D i forvejen er 14, overskriver vi dette med 9, da det er mindre og B markeres som besøgt. A-B 4 A-B-D 9 A-C 3 F A-E 7 G Vi finder igen det nærmeste ubesøgte punkt til A, det er E. E har to ubesøgte naboer D og G. Vejen A-E-D er lig med 9, men da D i forvejen er 9 gør vi intet her, da det ville være spildt tid. Vejen A-E-G er 12, derfor sættes G lig med 12. E markeres nu som besøgt. Vi finder igen det nærmeste ubesøgt punkt til A, det er D. D har to ubesøgte naboer F og G. Vejen A-B-D-F er lig med 11. Da vi nu har fundet den hurtigste vej til F, behøver vi ikke at regne på G. A-B 4 A-B-D 9 A-C 3 F A-E 7 A-E-G 12 A-B 4 A-B-D 9 A-C 3 A-B-D-F 11 A-E 7 A-E-G

12 4.3 Optimering med heap datastruktur En heap datastruktur bruges til at indsætte dataene i et træ, sorteret efter størrelse. På denne måde kan man hurtigt finde det aktuelle data og "trække det ud". Der kan til hver en tid indsættes nye data i træet 11. Heap (på dansk: bunke) er et træ med en rod. Roden har to rødder (knudepunkter) og hver rod har sine egne to rødder osv. Det vil altså sige hvert sub-træ, er sit eget heap træ. I et Min-heap (Minimum-heap) træ er roden den mindste værdi og i et Max-heap træ er det omvendt roden, er den største værdi. I et heap træ skal alle niveauer være fyldt helt ud, fra venstre mod højre før et nyt niveau må på begyndes. Roden og alle dens knude punkter er nummeret. Roden er knude 1 og dens to rødder er 2 og 3 (fra venstre mod høje) 12. Se evt. figur Definitionen for et Min-heap datatræ: Fig. 6 Roden er knude 1 Rodens værdi er mindst Træet bliver fyldt fra venstre til højre Børn til knude i: og Faren til knude i: Alle knudepunkter er enten mindre end eller lig med hver af sine rødder Ved at sætte alle naboer til et punkt op i et Min-heap kan man med det samme få den mindste først, således den i værste tilfælde kun skal søge højden af træet igennem. Uden heap skal der kigges på alle punkter. 11 Amit - Stanford University, Implementation notes - binary-heaps, [Besøgt d ] 12 Gerth Stølting Brodal - Aarhus Universitet, Algoritmer og Datastrukturer 1, [Besøgt d ] 11-22

13 Men hvis der er tale om et meget lille data sæt kan det diskuteres om der overhovedet er brug for heap datastrukturen. Dette skyldes at programmet med et lille data sæt kører så hurtigt at tiden programmet bruger er mindre end den tid programmet ellers ville bruge som overhead på at opbygge en heap datastruktur. -I forvejen at det ikke ville have en mærkbar forskel for brugeren. 4.4 Delkonklusion Dijkstra's algoritme finder altid den korteste vej i en graf. Man kan ved hjælp af Min-heap datastruktur sætte en database ind i et systematik træ, hvor der øverst er placeret de mindste distancer. På denne måde kan man spare beregninger og få en hurtigere beregning. 5 Implementering af Dijkstra's algoritmen i et program 5.1 Programmerings sprog - Python Jeg har valgt at bruge programmeringssproget Python og har valgt at gøre det i Python's egen IDLE (Integrated DeveLopment Environment). I Python's IDLE vil syntakser blive highlightet i forskellige farver, så er det nemmere at få overblik over programmet. Python er open source 13 og kan derfor frit benyttes til dette formål. I programmeringen af programmet vil jeg bruge Python version 2.7.9, dette er valgt idet at version 3 og derover har nye syntakser. Der vil kun blive brugt biblioteker der kommer med Python som standart, således at der ikke skal downloades mere en selve Python. Python og dens IDLE er i en installering og kan downloades her: " ". I dokumentation af programmet vil variabler og forskellige syntakser være skrevet med rødt. 5.2 Krav til programmet For at vi har et mål vi kan gå efter, starter vi med at stille nogle krav programmet skal opfylde: Skal finde den hurtigste vej fra punkt A til B, i en graf. Grafdata skal hentes fra en ekstern fil. Via input fra brugeren via terminalen skal man kunne fastslå start- og slutpunkt, samt hvilken graf. Tage den tid der tager at køre hoveddelen af programmet. Programmet skal kunne køre uden brug af Python IDLE. 5.3 Dokumentation af programmet Vi starter med at definere den encoding, vi gør brug af, således programmet forstår æ, ø, å. Herefter importeres de biblioteker vi skal bruge. Vi importere time og json (JSON) bibliotekerne. time 14 biblioteket 13 python.org, History and License, [Besøgt d ] 14 python.org, Time access and conversions, [Besøgt d ] 12-22

14 bruger vi til at få adgang til den nuværende tid, således vi senere kan måle tiden på programmet. JSON (JavaScript Object Notation) 15 biblioteket bruger vi til at importere den valgte graf. Her definere vi hvilken graf og hvilke start- og slutpunkter programmet skal bruge, bestemt ud fra brugens input. Da vi skal bruge inputtet som en string, bruger vi raw_input(), hvor man normalt bare vil bruge input(). Ved at bruge syntaksen.lower() gør vi alle bogstaver små, således at det ligemeget om man skriver med store eller små bogstaver. På denne måde får brugeren mere frihed. Vi definere objektet dijkstra. graf er den valgte graf start er det valgte start punkt og vil senere blive opdateret til et nyt punkt slut er det valgte slutpunkt besoegt er listen over punkter der er blevet besøgt distancer er en dictionary over distancerne vej_punkter er en dictionary over vej punkterne dijkstra vil køre i ring indtil at vejen til målet er fundet (start == slut). vej er den endelige vej som vil blive printet Når målet er fundet (start == slut) vil vej blive opdateret med den endelige punktserie. Hvor til sidst den returnere og printer den endelige distance og punktserie. Da start er lig med startpunktet i programmets første cyklus vil distancer[start] være lig med python.org, JSON encoder and decoder, [Besøgt d ] 13-22

15 Programmet vil nu gennemgå punktet graf[start]'s ubesøgte naboer. nabo_distance vil nu hente den nuværende korteste distance. Hvis distancen til punktet ikke findes, er det fordi der ikke findes en vej til punktet i forvejen, og den nuværende vej vil være uendeligt (sys.maxint er størst mulig værdig i Python, altså en uendelig værdi). midlertidig_distance vil hente distancen til nuværende start, plus den distance ud til naboen. Hvis den midlertidig_distance er mindre end den nuværende distance til naboen (nabo_distance), vil midlertidig_distance overskride nabo_distance. Nu markeres den nuværende start som besøgt. u_besoegt henter alle punkter der ikke har været besøgt, også dem hvor distancen er uendelig. Bagefter finder taetteste_punkt punktet i u_besoegt med korteste distance. Nu returneres alle værdier, samt den nye punkt start. Her slutter objektet dijkstra. Vi importere filen som tidligere blev valgt fra input fra brugeren

16 Starttiden noteres og herefter bliver objektet dijkstra kørt. Når den korteste vej er fundet, noteres sluttiden. Ved at tække starttiden fra sluttiden finder vi den tid, der blev brugt på at køre objektet dijkstra og tiden printes. Da programmet ikke skal lukkes ned, således at brugeren har mulighed for at notere resultatet, bruges raw_input() til at vente på at enter knappen bliver trykket ned. 5.4 Tidsforbruget Hvordan ser tidsforbruget ud når for eksempel man fordobler antallet af punkter? Ved hjælp af et simpel konstrueret program vil jeg teste hvordan tidsforbruget udvikler sig når punkt mængden øges Tilfældig graf generator - program Graf generatoren virker ved at brugeren indtaster det ønsket navn til den fil programmet printer i. Brugeren vælger også hvor mange punkter grafen skal bestå af. Programmet generer x antal punkter med et tilfældig antal naboer mellem 1 og 3. Disse naboer kan antage punkt 0 til x og kan have en distance på 1 til 50. Graf generatoren virker, men ved grafer der har over 1000 punkter, begynder Python at komme med fejlen "python RuntimeError: maximum recursion depth exceeded in cmp". Dette sker på grund af at der er en 15-22

17 begrænsning på hvor mange gange man kan kalde ting 16. Denne grænse kan godt laves større med " sys.setrecursionlimit()", men programmet kan risikere få computeren til at crashe Forsøget Computeren der er brugt til forsøget: CPU: Quad Core, 3,2Ghz AMD Phenom II X4 955 Black Edition Ram: 6 GB Corsair Value S. DDR3 1333MHz CL9 Jeg indtastede tilfældige start og slut punkter, ti gange i hver genererede graf og tog gennemsnittet af resultatet i sekunder, tabellen kan ses her: Forsøg\Antal punkter , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Gennemsnit 0, , , , , Martijn Pieters, 2014, Python Quicksort Runtime Error: Maximum Recursion Depth Exceeded in cmp, [Besøgt d ] 16-22

18 Ved hjælp af gratisprogrammet Graph 17 indtastede jeg en punktserie, med tiden på y aksen og punktmængden på x aksen. Ved at bruge programmets indbyggede tendenslinje kom jeg frem til følgende resultat: Tid i sekunder Antal punkter Har ses punktserien med røde prikker, den blå streg er en lineær tendenslinje og den røde er en logaritmisk tendenslinje. Det ses tydeligt at denne punktserie skal udvides med flere punkter, hvis der skal findes en tendenslinje der passer, men med et program der ikke kan klare disse store tal som er nødvendige, er dette ikke muligt. 5.5 Delkonklusion Jeg har fået konstrueret et program der ved hjælp af Dijkstra's algoritme, kan finde den korteste vej i en graf. Programmet kan også hente data fra en ekstern fil, måle tid på beregningen af vejen og via input fra brugeren bestemme start, slut punkt og samt hvilken graf. Programmet virker yderligere også uden brug af Python's IDLE. Dog er mængden af punkter begrænset, da programmet får fejl, da der er begrænsning på hvor mange gange, man kan kalde ting i Python. 17 Graph, [Besøgt d ] 17-22

19 6 Praktiske eksempler 6.1 Rejseplanen.dk Rejseplanen.dk oplyser ikke, hvilken algoritme de bruger, men det kunne godt være en udvidet version af Dijkstra's algoritme. Rejseplanen har en database med alle Danmarks køretider for tog og bustrafikken 18. Man kan på baggrund af denne database lave en algoritme, der således kan finde den hurtigste vej. Men man kan også beregne den billigste vej på baggrund af zone inddelingen. Der kan yderligere laves den nemmeste rute, således at mindre børn og ældre mennesker ikke skal ud i den store rejse med mange toge og busser. Hvis man for eksempel skal fra Roskilde st. til Hundige st. er der flere ruter du kan tage, bus 600s, bus 224 eller A toget. Se figur 7. Hvis du sigter efter færrest skift skal du bare tage bus 600s og af på Hundige st. I denne situation vil du kunne bruge Dijkstra's algoritme til at finde den hurtigste vej, men i stedet for distancer regner man med tid. Dog skal busser og toget passe sammen, dette implementeret i programmet. Bus 600s Bus 224 E toget Karlslunde st. Roskilde st. Tune kirke Greve st. Det kan dog diskuteres om vi fuldstændigt skal droppe det Hundige st. gammeldags kort. For hvad vil der ske når systemet går ned, for eksempel på grund af vejret? I disse tilfælde kan Fig. 7 udrykningskøretøjer ikke finde rundt på grund af at gps systemet ikke virker, hvorfor det her vil være nødvendigt for eksempel at kunne aflæse et kort. 6.2 Computer spil Der findes utallige spil der har implementeret korteste vej algoritmer. En af disse er det meget udbredte spil Minecraft 19. Minecraft er et spil der går ud på at finde resurser og bygge et liv op, et såkaldt sandbox spil. Minecraft er bygget op i 3 dimensional klodser, med forskellige typer, for eksempel jord og grus. Hele spilleverden bliver genereret via kompliceret algoritmer. Da verden er 3 dimensional, er grafen også det, her kan man altså ikke altid bare gå hen, men man bliver også nød til at bevæge sig op og ned. I spillet findes der også mobs, mobs er alt levende med kunstig intelligens altså spillets dyr og monstre. Hvert type mob har en speciel algoritme til dens opførelse 20. Disse mobs har altså forskellige Billede 5 cache/extensions/75/90175/1.3- rev1/images/8731e1a7-89da-473c-b65cb320584a3acd_details_big.jpe betingelser for deres bevægelser rundt i spil verden. For eksempel må nogle mobs ikke springe ned til et 18 rejseplanen.dk, [Besøgt d ] 19 Minecraft, Homepage, [Besøgt d ] 20 Minecraft, Mob AI, [Besøgt d ] 18-22

20 niveau der er mere end 4 ned, således at mob'en ikke tager skade. Alt dette skal der tages højde for når en mob skal finde vej, til for eksempel en spiller for at angribe. Ikke nok med at vi kan bruge alle disse korteste vejalgoritmer til at optimere vores hverdag, vi kan yderligere bruge dem til at underholdning. I strategi spil vil man også kunne bruge disse algoritmer omvendt. Når en spilverden skal generes, finder generator algoritmen alle de små veje der nu tilfældigt er og laver disse sti om, således at kortet passer til den valgt sværhedsgrad og type. 6.3 Delkonklusion Der findes flere applikationer der bruger korteste vej algoritmer. Det digitale menneske bruger flere gange om dagen applikationer med korteste vej algoritmer, lige fra de skal finde vej til en destination eller når de slapper af med et computer spil

21 7 Konklusion Grafteorien findes alle vegne, for eksempel et simpelt tælletræ. Med grafteorien kan man systematisk sætte data op, således at der er sammenhæng mellem flere punkter, således er vi i stand til at konstruere et vejnet, hvor knudepunkter og vejlængder indgår. Der findes flere forskellige algoritmer til at finde den korteste vej fra punkt A til B. Greedy Best-First-Search algoritmen er hurtig til at beregne, men er upræcis, hvor imod at Dijkstra's algoritme er langsom. Men 100% præcis, hvis der altså findes en vej. A* tager det bedste fra begge algoritmer, således at man er 100% sikker på resultatet er rigtigt. Men man beregner ikke på noget der ligger i den forkerte retning. Med et Min-heap datastruktur kan man optimere Dijkstra's algoritme ved at sætte dataene ind i et systematik træ, hvor der øverst er placeret de mindste distancer. På denne måde kan man spare beregninger og få en hurtigere beregning. Jeg har konstrueret et program der bruger Dijkstra's algoritme til at finde den korteste vej fra punkt A til B i en graf. Programmet er i stand til at hente data fra en ekstern fil, der er valgt af brugeren. Programmet kan også måle den tid, det tager at lave beregningen af vejen, samt via input fra brugeren styrer start og slut punktet for vejen. Yderligere virker programmet også uden brug af Python's IDLE. Dog er mængden af punkter begrænset på grund af programmet ellers vil få fejl, da der er begrænsning på hvor mange rekursive kald Python tillader. Der findes mange ting i dag der bruger korteste vej algoritmer, men vi ligger ikke mærke til det da problemet allerede er løst af forskellige applikationer. Lige fra når det moderne menneske skal finde vej til en ven eller bare slappe af med et computerspil, optræder der korteste vej algoritmer

22 8 Litteraturliste Jens Carstensen, 1992, Grafteori, Systime, side 8 Jens Carstensen, 1992, Grafteori, Systime, side 9-10 Allan Baktoft, 2011, Matematik i virkeligheden Bind 2, Natskyggen, side 39 Edsger Wybe Dijkstra, 1959, Numerische Mathematik volume 1, side , A note on two problems in connexion with graphs Thomas Wix, Kasper Reindahl & Kevin Voss Sjøbeck, , Visualizing nature-inspired metaheuristics for optimization problems, Software Technology Project, Danmarks Tekniske Universitet Wiktor K. Macura, Ant Colony Algorithm, [Besøgt d ] Amit - Stanford University, Heuristics, [Besøgt d ] Amit - Stanford University, Introduction to A*, [Besøgt d ] Klaus Hansen, Casper Thomsen, Omvendt polsk notation, [Besøgt d ] Amit - Stanford University, Implementation notes - binary-heaps, [Besøgt d ] Gerth Stølting Brodal - Aarhus Universitet, Algoritmer og Datastrukturer 1, [Besøgt d ] python.org, History and License, [Besøgt d ] python.org, Time access and conversions, [Besøgt d ] python.org, JSON encoder and decoder, [Besøgt d ] Martijn Pieters, 2014, Python Quicksort Runtime Error: Maximum Recursion Depth Exceeded in cmp, [Besøgt d ] Graph, [Besøgt d ] rejseplanen.dk, [Besøgt d ] 21-22

23 Minecraft, Homepage, [Besøgt d ] Minecraft, Mob AI, [Besøgt d ] 9 Billede kildeliste Billede 1 Aco_branches.svg.png Billede 2 Billede 3 Billede 4 Billede

24 Bilag Implementering af Dijkstra's algoritmen i et program, koden:

25 Bilag Implementering af Dijkstra's algoritmen i et program, input -output: Implementering af Dijkstra's algoritmen i et program, tilfældig graf generator:

HTX, RTG. Rumlige Figurer. Matematik og programmering

HTX, RTG. Rumlige Figurer. Matematik og programmering HTX, RTG Rumlige Figurer Matematik og programmering Vejledere: Jørn Christian Bendtsen og Karl G. Bjarnason Morten Bo Kofoed Nielsen & Michael Jokil 10-10-2011 In this assignment we have been working with

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

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

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

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

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

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

Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed

Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed Algoritmisk geometri Intervalsøgning 1 2 Motivation for intervaltræer Intervalsøgning Lad der være givet en database over ansatte i en virksomhed Ansat Alder Løn Ansættelsesdato post i databasen Vi kan

Læs mere

Algoritmisk geometri

Algoritmisk geometri Algoritmisk geometri 1 Intervalsøgning 2 Motivation for intervaltræer Lad der være givet en database over ansatte i en virksomhed Ansat Alder Løn Ansættelsesdato post i databasen Antag, at vi ønsker at

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

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

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

Michael Jokil 11-05-2012

Michael Jokil 11-05-2012 HTX, RTG Det skrå kast Informationsteknologi B Michael Jokil 11-05-2012 Indholdsfortegnelse Indledning... 3 Teori... 3 Kravspecifikationer... 4 Design... 4 Funktionalitet... 4 Brugerflade... 4 Implementering...

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

Sortering. Eksempel: De n tal i sorteret orden

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

Læs mere

Sortering af information er en fundamental og central opgave.

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

Læs mere

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

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

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 6. juni 2016, kl. 15:00 19:00 Besvarelsen skal afleveres elektronisk. Se

Læs mere

programmeringskonkurrencer implementation under tidspres

programmeringskonkurrencer implementation under tidspres ACM/ICPC programmeringskonkurrencer g - algoritmisk problemløsning og algoritmisk problemløsning og implementation under tidspres Hvad er det? Programmeringsopgaver af algoritmisk natur. Kendskabet fra

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer (2. semester). Mål

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

DM507 Algoritmer og datastrukturer

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

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

Brugervejledning til Graph (1g, del 1)

Brugervejledning til Graph (1g, del 1) Graph (brugervejledning 1g, del 1) side 1/8 Steen Toft Jørgensen Brugervejledning til Graph (1g, del 1) Graph er et gratis program, som ikke fylder meget. Downloades på: www.padowan.dk/graph/. Programmet

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2017 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 6. april, 2017 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Grafer og graf-gennemløb

Grafer og graf-gennemløb Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

Læs mere

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

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

Læs mere

Brugervejledning til Graph

Brugervejledning til Graph Graph (brugervejledning) side 1/17 Steen Toft Jørgensen Brugervejledning til Graph Graph er et gratis program, som ikke fylder meget. Downloades på: www.padowan.dk/graph/. Programmet er lavet af Ivan Johansen,

Læs mere

Orienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk

Orienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk Philip Bille Orienteret graf (directed graph). Mængde af knuder forbundet parvis med orienterede kanter. Vejnetværk Knude = vejkryds, kant = ensrettet vej. deg + (6) =, deg - (6) = sti fra til 6 8 7 9

Læs mere

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er) Algoritmeanalyse Identificer essentiel(le) operation(er) Øvre grænse for algoritme Find øvre grænse for antallet af gange de(n) essentielle operation(er) udføres. Øvre grænse for problem Brug øvre grænse

Læs mere

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

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge: Side 1 af 5 Ide med Diff. Min ide med differenertierings modulet er at lave et program som kan vise 3d objekter, og få lavede en konverter som kan konventer 3ds filer over til noget som flash kan bruge.

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

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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

Læs mere

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

Aarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00

Aarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00 Page 1/12 Aarhus Universitet, Science and Technology, Computer Science Exam Wednesday 27 June 2018, 9:00-11:00 Allowed aid: None The exam questions are answered on the problem statement that is handed

Læs mere

Det er muligt at chekce følgende opg. i CodeJudge: og

Det er muligt at chekce følgende opg. i CodeJudge: og Det er muligt at chekce følgende opg. i CodeJudge:.1.7 og.1.14 Exercise 1: Skriv en forløkke, som producerer følgende output: 1 4 9 16 5 36 Bonusopgave: Modificer dit program, så det ikke benytter multiplikation.

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

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

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel: Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel: Opbyg løsningen skridt for skridt ved hele tiden af vælge lige

Læs mere

Prioritetskøer og hobe. Philip Bille

Prioritetskøer og hobe. Philip Bille Prioritetskøer og hobe Philip Bille Plan Prioritetskøer Træer Hobe Repræsentation Prioritetskøoperationer Konstruktion af hob Hobsortering Prioritetskøer Prioritetskø Vedligehold en dynamisk mængde S af

Læs mere

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer

Læs mere

Visualiseringsprogram

Visualiseringsprogram Visualiseringsprogram Programmering C - eksamensopgave Rami Kaddoura og Martin Schmidt Klasse: 3.4 Vejleder: Karl Bjarnason Roskilde Tekniske Gymnasium Udleveringsdato: 02-03-2012 Afleveringsdato: 11-05-12

Læs mere

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1 Project Step 7 Behavioral modeling of a dual ported register set. Copyright 2006 - Joanne DeGroat, ECE, OSU 1 The register set Register set specifications 16 dual ported registers each with 16- bit words

Læs mere

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX IT -Eksamen Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX [Vælg en dato] Indhold Indledning... 2 Teori... 3 Hvorfor dette design... 4 Produktet... 4 Test og afprøvning... 9 Konklusion... 10 Indledning

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

Hvordan virker en rejseplanner?

Hvordan virker en rejseplanner? 29. September 2004 Hvordan virker en rejseplanner? Henning Christiansen professor i datalogi, ph.d. http://www.ruc.dk/~henning Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1

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

Bilag. Resume. Side 1 af 12

Bilag. Resume. Side 1 af 12 Bilag Resume I denne opgave, lægges der fokus på unge og ensomhed gennem sociale medier. Vi har i denne opgave valgt at benytte Facebook som det sociale medie vi ligger fokus på, da det er det største

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

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

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

Internetsøgemaskiner. Gerth Stølting Brodal Datalogisk Institut Aarhus Universitet

Internetsøgemaskiner. Gerth Stølting Brodal Datalogisk Institut Aarhus Universitet Internetsøgemaskiner Gerth Stølting Brodal Datalogisk Institut Aarhus Universitet 1 Internettet Meget stor mængde ustruktureret information Hvordan finder man relevant info? Søgemaskiner! 94: Lycos,...

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

Start pä matematik. for gymnasiet og hf. 2010 (2012) Karsten Juul

Start pä matematik. for gymnasiet og hf. 2010 (2012) Karsten Juul Start pä matematik for gymnasiet og hf 2010 (2012) Karsten Juul Til eleven Brug blyant og viskelåder när du skriver og tegner i håftet, sä du fär et håfte der er egnet til jåvnligt at slä op i under dit

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

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning) Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning) Datalogisk Institut Aarhus Universitet Fredag den 28. maj 2004, kl. 9.00 13.00 Opgave 1 (20%) En (r, k) kryds-graf er en orienteret graf

Læs mere

Test af It-komponent

Test af It-komponent Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side

Læs mere

Grundtvigs Sandkasse

Grundtvigs Sandkasse Introduction to the NFSG Sandbox Environment Computing, chcaa.io Aarhus University, Denmark April 23, 2019 Outline 1 2 3 Udvikling af computerbaseret forskning Aarhus Universitet har besluttet at understøtte

Læs mere

Mm7: A little bit more about sorting - and more times for exercises - November 4, 2008

Mm7: A little bit more about sorting - and more times for exercises - November 4, 2008 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm: A little bit more about sorting - and more times for exercises - November 4, 2008 1 Algorithms and Architectures

Læs mere

DM536. Rapport og debug

DM536. Rapport og debug DM536 Rapport og debug Kilder Vigtig.it (Felix Palludan Hargreaves) http://vigtig.it/dm502/howto_report.pdf http://vigtig.it/blog/teaching/#toc-relevant-tips Peter Schneider-Kamp http://imada.sdu.dk/~petersk/dm536/project2.pdf

Læs mere

Differential Evolution (DE) "Biologically-inspired computing", T. Krink, EVALife Group, Univ. of Aarhus, Denmark

Differential Evolution (DE) Biologically-inspired computing, T. Krink, EVALife Group, Univ. of Aarhus, Denmark Differential Evolution (DE) Differential Evolution (DE) (Storn and Price, 199) Step 1 - Initialize and evaluate Generate a random start population and evaluate the individuals x 2 search space x 1 Differential

Læs mere

Perspektiverende Datalogikursus

Perspektiverende Datalogikursus Perspektiverende Datalogikursus Uge 1 - Algoritmer og kompleksitet Gerth Stølting Brodal 27. august 2004 1 Indhold Mere om Eksempler på beregningsproblemer Algoritmer og deres analyse Korrekthed af algoritmer

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

Hvor er mine runde hjørner?

Hvor er mine runde hjørner? Hvor er mine runde hjørner? Ofte møder vi fortvivlelse blandt kunder, når de ser deres nye flotte site i deres browser og indser, at det ser anderledes ud, i forhold til det design, de godkendte i starten

Læs mere

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

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

Læs mere

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

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

DM507 Algoritmer og datastrukturer

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

Læs mere

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

Noter til kursusgang 9, IMAT og IMATØ

Noter til kursusgang 9, IMAT og IMATØ Noter til kursusgang 9, IMAT og IMATØ matematik og matematik-økonomi studierne 1. basissemester Esben Høg 4. november 013 Institut for Matematiske Fag Aalborg Universitet Esben Høg Noter til kursusgang

Læs mere

Datastrukturer (recap)

Datastrukturer (recap) Dictionaries Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data. Operationer: Datastrukturens egenskaber udgøres af de tilbudte operationer (API for adgang

Læs mere

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer Philip Bille Orienteret graf. Mængde af knuder forbundet parvis med orienterede kanter. deg + (7) =, deg - (7) = Lemma. v V deg - (v) = v V deg + (v) = m. Bevis. Hver kant har netop en startknude og slutknude.

Læs mere

PDFmaps på smartphones

PDFmaps på smartphones PDFmaps på smartphones Kort udbyder - en enkel og (gratis) mulighed for at stille orienteringskort til rådighed på iphone/ipad og Android Bruger - en enkel og (gratis) mulighed for at downloade og anvende

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

Perspektiverende Datalogikursus

Perspektiverende Datalogikursus Perspektiverende Datalogikursus Uge 1 - Algoritmer og kompleksitet Gerth Stølting Brodal 2. september 2005 1 Afleveringsopgaver... /\.. // \\ / \ / [] \ \\_// / \ / \ []._. ---------------- _ 2 Øvelse

Læs mere

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer

Læs mere

Skriftlig Eksamen Beregnelighed (DM517)

Skriftlig Eksamen Beregnelighed (DM517) Skriftlig Eksamen Beregnelighed (DM517) Institut for Matematik & Datalogi Syddansk Universitet Mandag den 31 Oktober 2011, kl. 9 13 Alle sædvanlige hjælpemidler (lærebøger, notater etc.) samt brug af lommeregner

Læs mere

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index DET KONGELIGE Index Download driver... 2 Find the Windows 7 version.... 2 Download the Windows Vista driver.... 4 Extract driver... 5 Windows Vista installation of a printer.... 7 Side 1 af 12 DET KONGELIGE

Læs mere

Linear Programming ١ C H A P T E R 2

Linear Programming ١ C H A P T E R 2 Linear Programming ١ C H A P T E R 2 Problem Formulation Problem formulation or modeling is the process of translating a verbal statement of a problem into a mathematical statement. The Guidelines of formulation

Læs mere

Begynderens Guide Til Chatbots

Begynderens Guide Til Chatbots Begynderens Guide Til Chatbots Spørgsmål eller brug for hjælp? hejanton Ring på 31 56 43 21 Skriv til info@hejanton.com mere på hejanton.com Indholdsfortegnelse Side 3 - Side 9 - Side 11 - Side 12 - Hvad

Læs mere

Orienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer.

Orienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer. Orienterede grafer Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer Philip Bille Orienterede grafer Introduktion Repræsentation Søgning Topologisk

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet. Mandag den 22. marts 2004, kl

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet. Mandag den 22. marts 2004, kl Skriftlig Eksamen Algoritmer og Datastrukturer 1 Datalogisk Institut Aarhus Universitet Mandag den. marts 00, kl..00 11.00 Navn Gerth Stølting Brodal Årskort 1 Dette eksamenssæt består af en kombination

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

Netværksalgoritmer 1

Netværksalgoritmer 1 Netværksalgoritmer 1 Netværksalgoritmer Netværksalgoritmer er algoritmer, der udføres på et netværk af computere Deres udførelse er distribueret Omfatter algoritmer for, hvorledes routere sender pakker

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider anmarks Tekniske Universitet Skriftlig prøve, den 23. maj 20. Kursusnavn: lgoritmer og datastrukturer Kursus nr. 02326. Varighed: 4 timer Tilladte hjælpemidler: lle skriftlige hjælpemidler.

Læs mere

Danmarks Tekniske Universitet

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

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

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: Fredag den 24. juni 2011, kl.

Læs mere

Ting man gør med Vektorfunktioner

Ting man gør med Vektorfunktioner Ting man gør med Vektorfunktioner Frank Villa 3. august 13 Dette dokument er en del af MatBog.dk 8-1. IT Teaching Tools. ISBN-13: 978-87-9775--9. Se yderligere betingelser for brug her. Indhold 1 Introduktion

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