Datastrukturer. föreläsning 7. Maps 1

Storlek: px
Starta visningen från sidan:

Download "Datastrukturer. föreläsning 7. Maps 1"

Transkript

1 Datastrukturer föreläsning 7 Maps 1

2 Grafer Maps 2

3 Grafer ett exempel En oriktad graf: Noderna är flygplatser (trebokstavskombinationer) Det finns en båge mellan två noder omm det finns en flyglinje mellan motsvarande flygplatser. Till varje båge finns dessutom ett tal som representerar avståndet mellan flygplatserna. PVD ORD SFO LGA HNL 337 LAX DFW MIA Maps 3

4 Riktade och oriktade grafer I en riktad graf har bågarna en riktning. I en oriktad graf saknar bågarna riktning. Exempel. - Ett vägnät med enkelriktade gator kan representeras som en riktad graf - Ett vägnät utan enkelriktade gator kan representeras som en oriktad graf - Obs att en oriktad graf kan ses som ett specialfall av en riktad graf! Maps 4

5 Vad är en graf, matematiskt? En riktad graf är ett par (V,E) där V är en mängd av noder (hörn) E C VxV är en mängd av ordnade par av noder som kallas bågar (kanter). Om (v,w) är en båge kallas v bågens källa och w bågens mål. Det kan dessutom finnas ytterligare information om bågen, t ex en vikt eller ett namn. En oriktad graf definieras på samma sätt som en riktad graf, med den enda skillnaden att bågarna är oordnade par. Om (v,w) är en båge i en oriktad graf kallar vi v och w bågens ändpunkter. De oriktade graferna kan betraktas som symmetriska riktade grafer, dvs riktade grafer med egenskapen att om (v,w) är en båge i E så är också (w,v) en båge i E. Maps 5

6 Riktade och oriktade bågar Riktade bågar ordnade par av bågar (u,v) u är källan (ursprungsnoden) v är målet (målnoden) Exempel: bågar är flyglinjer från en flygplats till en annan. Vi har här dessutom information om flyglinjens nummer i bågen. Oriktade bågar oordnade par av bågar (u,v) Exempel: bågar finns mellan flygplatser som har en flyglinje mellan sig. Det finns dessutom information om avståndet mellan flygplatserna. En riktad graf har riktade bågar En oriktad graf har oriktade bågar ORD ORD flight AA miles PVD PVD Maps 6

7 Fler exempel Elektriska kretsar Vägnät Flygnätverk Flödesscheman Datanätverk Local area network Internet Databaser Entity-relationship diagram Maps 7

8 Terminologi Ändpunkter U och V är ändpunkter på a Bågar som är förbundna med (eller utgår från) noder a, d, b är förbundna med V Grannoder U och V är grannar En nods grad X har graden 5 Self-loop j är en self-loop Parallella bågar h och i är parallella bågar U a c V W d f b e X Y g h i Z j Maps 8

9 Mer terminologi Väg Alternerande följd av noder och bågar Börjar och slutar med nod Varje båge kommer mellan sina ändpunktsnoder Om det inte finns parallella bågar räcker det att ange en följd av noder! Enkel väg Exempel Alla noderna är distinkta P 1 =(V,b,X,h,Z) är en enkel väg P 2 =(U,c,W,e,X,g,Y,f,W,d,V) är inte någon enkel väg U a c V d P 2 W f b e P 1 X g Y h Z Maps 9

10 Ännu mer terminologi Cykel: väg som börjar och slutar i samma nod Enkel cykel: noderna på cykeln är distinkta utom startnoden = slutnoden Exempel: C 1 =(V,b,X,g,Y,f,W,c,U,a,V) är en enkel cykel C 2 =(U,c,W,e,X,g,Y,f,W,d,V,a,V ) är en cykel som inte är enkel (W besöks två gånger) U a c V d C 2 W f b X e Y C 1 g h Z Maps 10

11 Egenskaper hos oriktade grafer Egenskap 1 Σ v deg(v) = 2m Bevis: varje ändpunkt räknas två gånger Egenskap 2 Om self-loops och parallella bågar saknas gäller m n (n 1)/2 Bevis: en nods grad är högst (n 1). Notation n m deg(v) antalet noder antalet bågar graden hos v Exempel n = 4 m = 6 deg(v) = 3 Maps 11

12 Hur implementerar man grafer? Det finns tre olika huvudmetoder! - båglista - grannmatris - grannlistor Maps 12

13 Båglista som implementeringsmetod Grafen implementeras som en lista av noder och en lista av bågar med deras ändpunkter (källor och mål) Denna lista kan implementeras som ett fält eller en länkad lista Problem: om vi befinner oss i en nod måste vi leta genom hela båglistan för att hitta dess grannar Maps 13

14 Grannmatris (kopplingsmatris) Numrera noderna Grafen implementeras med hjälp av en matris M, så att M[i,j] är 1 om det finns en båge mellan noderna med nummer i och j och 0 annars. (Man kan också lagra information om bågen i M[i,j].) Effektivt (O(1)) att avgöra om två noder är grannar, men utrymmet är O(n 2 ). Bra för grafer med många bågar. Maps 14

15 Grannlistor En lista av par (v,vs) där v är en nod och vs är en lista som innehåller par av grannoder till v och bågarna som går till dem. Listan kan implementeras som ett fält eller en länkad lista. (om grafen är stor kan det även vara lämpligt att använda effektiva datastrukturer som hashtabeller) Bra metod om man enkelt vill kunna hitta en viss nods grannar. Maps 15

16 Grafrepresentation i Haskell Riktad graf utan information i noderna. Nod och bågmängder implementerade som listor. Båglista type Graph = ([Node],[Edge]) type Edge = (Node,Node) Grannlistor type Graph = [(Node,[Node])] Maps 16

17 En ADT för riktade grafer Metoder för att få ut information om grafen incidentedges(v) origin(e) destination(e) areadjacent(v, w) Metoder för att ändra grafen insertvertex(v) insertedge(v, w, e) removevertex(v) removeedge(e) Allmänna metoder numvertices() numedges() vertices() edges() Maps 17

18 Delgrafer En delgraf S till en graf G S noder är en delmängd av Gs S kanter är en delmängd av Gs En uppspännande delgraf till G innehåller alla Gs noder delgraf uppspännande delgraf Maps 18

19 Sammanhängande En graf är sammanhängande om varje par av noder i grafen är förbundna med en väg En sammanhängande komponent av G är en maximal sammanhängande delgraf av G sammanhängande graf osammanhängande graf med två sammanhängande komponenter Maps 19

20 Fria träd och skogar Ett fritt träd är en oriktad graf som är sammanhängande saknar cykler Obs att fria träd saknar rot! En skog är en oriktad graf som saknar cykler En sammanhängande komponent i en skog är träd fritt träd skog Maps 20

21 Uppspännande träd och skogar Ett uppspännande träd för en sammanhängande graf är en uppspännande delgraf som är ett fritt träd En graf kan ha mer än ett uppspännande träd Tillämpning: kommunikationsnätverk En uppspännande skog är en uppspännande delgraf som är en skog graf uppspännande träd Maps 21

22 Djupet-först sökning (DFS) och bredden-först sökning (BFS) Två metoder att genomsöka en graf; två grafiteratorer! Kan även användas för att avgöra om två noder är sammanbundna. Djupet först: välj en startnod, följ en väg så långt som möjligt, gör sedan backtracking, följ nästa väg så långt som möjligt, osv Bredden först: välj en startnod, genomsök först alla noder med avståndet 1, sedan alla noder med avståndet 2, osv. Lecture 6 22

23 Djupet-först sökning A B D E C Lecture 6 23

24 Exempel A obesökt nod A A besökt nod obesökt båge upptäcktsbåge bakåtbåge B C D E A A B D E B D E C C Lecture 6 24

25 Exempel, fortsättning A A B D E B D E C C A A B D E B D E C C Lecture 6 25

26 Djupet-först sökning av en labyrint Nod = korsning, hörn eller slut på återvändsgränd Båge = korridor Rekursionsstack för backtracking = rep tillbaka till ingången Lecture 6 26

27 DFS-algoritmen Algoritmen markerar besökta noder och upptäcktsbågar, dvs den bygger ett DFS-träd. Dessutom markerar den bakåtbågar. Algorithm DFS(G) Input graph G Output labeling of the edges of G as discovery edges and back edges for all u G.vertices() setlabel(u, UNEXPLORED) for all e G.edges() setlabel(e, UNEXPLORED) for all v G.vertices() if getlabel(v) = UNEXPLORED DFS(G, v) Algorithm DFS(G, v) Input graph G and a start vertex v of G Output labeling of the edges of G in the connected component of v as discovery edges and back edges setlabel(v, VISITED) for all e G.incidentEdges(v) if getlabel(e) = UNEXPLORED w opposite(v,e) if getlabel(w) = UNEXPLORED setlabel(e, DISCOVERY) DFS(G, w) else setlabel(e, BACK) Lecture 6 27

28 DFS: egenskaper Egenskap 1 DFS(G, v) besöker alla noder i vs sammanhängande komponent A Egenskap 2 Upptäcktsbågarna som markeras av DFS(G, v) utgör ett uppspännande träd för vs sammanhängande komponent ett DFS-träd B C D E Lecture 6 28

29 Analys av DFS Varje nod markeras två gånger En gång som UNEXPLORED En gång som VISITED Varje båge markeras två gånger En gång som UNEXPLORED En gång som DISCOVERY eller BACK Metoden incidentedges anropas en gång för varje nod Exekveringstiden för DFS är O(n + m) om grafen är implementerad som en grannlista Kom ihåg att Σ v deg(v) = 2m Lecture 6 29

30 Tidskomplexitet i flera variabler När vi introducerade O-komplexitet talade vi bara om funktioner av en variabel (ofta storleken hos indata kallad n ). Vi förklarade betydelsen av O(n), O(n 2 ), O(log n), O(n log n) osv Ibland är det naturligt att mäta indatastorleken i flera variabler, t ex * Matrismultiplikation av m*n och n*p matriser har komplexiteten O(mnp) * Djupet först sökning av en graf med n noder och m bägar Maps 30 har komplexiteten O(m+n)

31 Definition av O(f(m,n)) Definitionen är analog med envariabelfallet: T(m,n) är O(f(m,n)) omm det finns C och n 0 så att T(m,n) < Cf(m,n) för n > n 0 T ex T(m,n) är O(m+n) omm det finns C och n 0 så att T(m,n) < C(m+n) för n > n 0 Maps 31

32 Vanlig fråga: Kan vi inte förenkla O(mnp) till O(n 3 )? Nej, komplexiteten beror inte bara på n utan också på m och p! Eller till O(k 3 )? Vad skulle k vara? Jo, om t ex k är den maximala dimensionen (k = max(m,n,p)). Vi har alltså att matrismultiplikation är O(max(m,n,p) 3 ). Maps 32

33 Samma fråga om djupet först: Kan vi inte förenkla O(m+n) till O(n) eller O(m)? Nej, komplexiteten beror inte bara på antalet noder eller antalet bågar; den beror på båda! Notera att O(m+n) = O(max(m,n)). Varför? I specialfall, t ex, sammanhängande graf utan parallella bågar har vi att m är O(n 2 ). I så fall kan vi dra slutsatsen att djupet först sökning är O(n 2 ). Men detta är mindre informativt, tänk om vi har har en gles graf med färre bågar än noder! Då har vi ju faktiskt O(n)! Maps 33

34 Tids- och utrymmeskomplexitet n noder m bågar inga parallella bågar inga self-loops riktad graf utrymme incidentedges(v) areadjacent (v, w) insertvertex(v) insertedge(v, w, e) båglista grannlista grannmatris Maps 34

35 Tids- och utrymmeskomplexitet n noder m bågar inga parallella bågar inga self-loops riktad graf båglista grannlista grannmatris utrymme O(n + m) O(n + m) O(n 2 ) incidentedges(v) areadjacent (v, w) insertvertex(v) insertedge(v, w, e) Maps 35

36 Tids- och utrymmeskomplexitet n noder m bågar inga parallella bågar inga self-loops riktad graf båglista grannlista grannmatris utrymme O(n + m) O(n + m) O(n 2 ) incidentedges(v) O(m) O(deg(v)) O(n) areadjacent (v, w) insertvertex(v) insertedge(v, w, e) Maps 36

37 Tids- och utrymmeskomplexitet n noder m bågar inga parallella bågar inga self-loops riktad graf båglista grannlista grannmatris utrymme O(n + m) O(n + m) O(n 2 ) incidentedges(v) O(m) O(deg(v)) O(n) areadjacent (v, w) O(m) O(deg(v)) O(1) insertvertex(v) insertedge(v, w, e) Maps 37

38 Tids- och utrymmeskomplexitet n noder m bågar inga parallella bågar inga self-loops riktad graf båglista grannlista grannmatris utrymme O(n + m) O(n + m) O(n 2 ) incidentedges(v) O(m) O(deg(v)) O(n) areadjacent (v, w) O(m) O(deg(v)) O(1) insertvertex(v) O(1) O(n) O(n 2 ) insertedge(v, w, e) Maps 38

39 Tids- och utrymmeskomplexitet n noder m bågar inga parallella bågar inga self-loops riktad graf båglista grannlista grannmatris utrymme O(n + m) O(n + m) O(n 2 ) incidentedges(v) O(m) O(deg(v)) O(n) areadjacent (v, w) O(m) O(deg(v)) O(1) insertvertex(v) O(1) O(n) O(n 2 ) insertedge(v, w, e) O(1) O(1) O(1) Maps 39

40 Dynamiska fält och grannmatriser En grannmatris är ett fält. För att kunna lägga till nya element utan att riskera overflow måste vi använda ett dynamiskt fält. Obs att insättning av ny node ( insertvertex i tabellen) då får O(1) som amorterad komplexitet, men O(n 2 ) som vanlig värstafallskomplexitet. Maps 40

41 Dynamiska fält och grannlistor I tabellen har vi antagit att grannlistorna är implementerade som ett dynamiskt fält av länkade listor. Då får vi snabb åtkomst av grannarna till en given nod. Hur ändrar sig komplexiteterna i tabellen om vi har grannlistan som en länkad lista av länkade listor? Maps 41

42 Djupet-först sökning: tillämpningar Avgör om en graf är sammanhängande Bestäm de sammanhängande komponenterna Bestäm en uppspännande skog Finn en väg mellan två noder Finn en cykel Lecture 6 42

43 Bredden-först sökning L 0 A L 1 B C D L 2 E F Lecture 6 43

44 Exempel A A obesökt nod besökt nod obesökt båge upptäcktsbåge övergångsbåge L 1 L 0 B A E C F D L 0 A L 0 A L 1 B C D L 1 B C D E F E F Lecture 6 44

45 Exempel (forts.) L 0 A L 0 A L 1 B C D L 1 B C D E F L 2 E F L 0 A L 0 A L 1 B C D L 1 B C D L 2 E F L 2 E F Lecture 6 45

46 Exempel forts. L 0 A L 0 A L 1 B C D L 1 B C D L 2 E F L 2 E F L 0 A L 1 B C D L 2 E F Lecture 6 46

47 BFS-algoritmen Algorithm BFS Input graph G Output labeling of the edges and partition of the vertices of G for all u G.vertices() setlabel(u, UNEXPLORED) for all e G.edges() setlabel(e, UNEXPLORED) for all v G.vertices() if getlabel(v) = UNEXPLORED BFS(G, v) Algorithm BFS(G,s) L 0 new empty sequence L 0.insertLast(s) setlabel(s, VISITED) i 0 while L i.isempty() L i +1 new empty sequence for all v L i.elements() for all e G.incidentEdges(v) if getlabel(e) = UNEXPLORED w opposite(v,e) if getlabel(w) = UNEXPLORED setlabel(e, DISCOVERY) setlabel(w, VISITED) L i +1.insertLast(w) else setlabel(e, CROSS) i i +1 Lecture 6 47

48 Bredden först sökning Exekveringstiden för BFS på en graf med n noder och m bågar är O(m+n) BFS kan användas För att hitta kortaste vägen (i en oviktad graf) mellan två noder Se även tillämpningarna för DFS (finna sammanhängande komponenter, cykler, etc) Maps 48

49 Den kortaste vägen 0 8 A B 7 2 C 1 D E F 5 3 Lecture 6 49

50 Viktade grafer I en viktad graf tillordnar vi ett tal till varje båge. Detta tal kallas en vikt Vikter kan representera avstånd, kostnader mm Exempel: avstånd mellan flygplatser SFO ORD LGA PVD 1205 HNL LAX 1233 DFW 1120 MIA Lecture 6 50

51 Att finna kortaste vägen Givet en viktad graf och två noder u och v, finn en väg mellan dem vars bågar har minimal sammanlagd vikt Tillämpningar Färdplaner för flyg, tåg, bilar, osv Snabbaste vägen att skicka ett paket över internet Exempel: HNL Kortaste vägen mellan PVD och HNL SFO 337 LAX ORD 802 DFW LGA PVD MIA Lecture

52 Hur man finner kortaste vägen mellan två noder i en riktad graf Dijkstras algoritm är en generalisering av BFS som beräknar kortaste vägar i en viktad graf. Den besöker noderna i avståndsordning från startnoden. Den beräknar även avståndet från startnoden till alla andra noder. Lecture 6 52

53 DFS, BFS och Dijkstras algoritm Dessa tre algoritmer delar in noderna i besökta, kandidatnoder (grannar till besökta noder), och obesökta noder. DFS har en stack med kandidatnoder BFS har en kö med kandidatnoder Dijkstras algoritm har en prioritetskö med kandidatnoder Obs. Kön i pseudokoden för BFS är implicit! Lecture 6 53

54 Exempel: kortaste vägar från noden A till övriga noder 0 8 A 4 2 B 7 C 1 D E F 5 Besökta noder: 0 Prioritetskö Q: (0,A) Lecture 6 54

55 Steg 1: besök A och lägg dess grannar i Q! 8 A B C D E F Besökta noder: 1 Prioritetskö Q:(2,C) (4,D) (8,B) Lecture 6 55

56 Steg 2 8 A B C D E F Besökta noder: 2 Prioritetskö Q: (3,D)(5,E)(8,B)(11,F) Besök C och lägg till grannarna E och F som inte redan finns i Q. Uppdatera också avståndet till D eftersom en kortare väg från startnoden A har hittats. Lecture 6 56

57 Steg 3 8 A B C D E F Besökta noder: 3 Prioritetskö Q: (5,E)(8,B)(8,F) Nu är alla noder antingen besökta eller ligger i Q. Vi måste dock uppdatera avståndet till F. Lecture 6 57

58 Steg 4 8 A B C D E F Besökta noder: 4 Prioritetskö Q: (7,B)(8,F) Nu uppdaterade vi avståndet till B. Lecture 6 58

59 Steg 5 8 A B C D E F Besökta noder: 5 Prioritetskö Q: (8,F) Lecture 6 59

60 Steg 6 8 A B C D E F Besökta noder: 6 Q: tom Lecture 6 60

61 Hur man implementerar Dijkstras algoritm Input: en graf G med icke-negativa vikter och en startnod s Output: För varje nod u det kortaste avståndet D[u] från s. Från början sätter vi D[s] till 0 och D[u] till oändligheten. Under exekveringen av algoritmen kommer D[u] att innehålla de hittills funna kortaste avstånden från s. Algoritmen använder sig av en prioritetskö Q som innehåller alla obesökta noder u med D[u] som prioriteter. Vi besöker den nod som har högst prioritet i Q. Om vi vill returnera kortaste vägar och inte bara kortaste avstånd låter vi D[u] även innehålla en pekare till föregående nod på den kortaste vägen. Om vi vill kunna uppdatera prioriteten i Q för en viss nod behöver vi dessutom lagra platsen som noden lagras på i Q. (Om Q är en heap så lagrar vi index i fältet som lagrar Q.) Lecture 6 61

62 Dijkstras algoritm Algorithm ShortestPath(G,s) D[s] = 0, D[u] = infinity for all nodes u different from s. Q new priority queue containing all nodes u with priorities D[u] while Q.isEmpty() u Q.removeMinNode() ( visit u) for each node z adjacent to u and not yet visited do if D[u] + weight(u,z) < D[z] then D[z] D[u] + weight(u,z) and update the priority of z in Q return D[u] for each node u En implementeringsdetalj: Q i exemplet tidigare visar inte de avstånd D[u] som är oändligheten. En alternativ implementering har inte dessa med i Q. Lecture 6 62

63 Några egenskaper Egenskap 1: En delväg till en kortaste väg är också en kortaste väg Egenskap 2: Det finns ett träd av kortaste vägar från en startnod till de alla de andra noderna Exempel: Träd med kortaste vägar från PVD SFO ORD LGA PVD HNL LAX 1233 DFW 1120 MIA Lecture 6 63

64 Komplexiteten hos Dijkstra med heap Om grafen har n noder och m bågar och vi implementerar Q med en uppdaterbar heap gäller att Heapmetoderna (ta bort minsta och ändra prioriteten på ett element i Q) är O(log n). Man tar bort minsta elementet n gånger Man ändrar en prioritet för någon nod maximalt en gång för varje båge, dvs O(m). Alltså är komplexiteten O((m+n)log n) Lecture 6 64

65 Komplexiteten hos Dijkstra med Q som fält Om vi i stället implementerar Q med ett osorterat fält av noder och grafen har n noder och m bågar är Att ta bort minsta elementet är O(n) och man gör detta maximalt n gånger. Totala tiden för denna operation är alltså O(n 2 ). Att ändra prioriteten på ett element är O(1) och man gör detta maximalt en gång för varje båge. Totala tiden för denna operation är alltså O(m). Alltså är komplexiteten O(n 2 + m). Detta är bättre än O((m+n)log n) om vi har en tät graf. Lecture 6 65

66 Heuristisk sökning Om man letar efter en specifik nod i en graf kan man förbättra Dijkstras algoritm om man har ytterligare heuristisk information T ex kan man uppskatta tiden det tar att åka till en viss hållplats om man vet det geografiska avståndet ( as the crow flies ) När man väljer kandidatnod rankar man noderna efter summan av tiden från utgångspunkten och den uppskattade tiden till målet Denna algoritm kallas A* (brukar betraktas som AI) Heuristik = tumregel Lecture 6 66

Datastrukturer. föreläsning 7. Maps 1

Datastrukturer. föreläsning 7. Maps 1 Datastrukturer föreläsning 7 Maps 1 Hashtabeller 0 1 2 3 025-612-0001 4 451-229-0004 981-101-0004 Maps 2 Kollisioner vad gör man? Använder hinkar ( hashing in buckets, chaining ) Cellen med index i innehåller

Läs mer

Datastrukturer. föreläsning 8. Lecture 6 1

Datastrukturer. föreläsning 8. Lecture 6 1 atastrukturer föreläsning 8 Lecture 6 1 jupet-först sökning (S) och bredden-först sökning (S) Två metoder att genomsöka en graf; två grafiteratorer! Kan även användas för att avgöra om två noder är sammanbundna.

Läs mer

Datastrukturer. föreläsning 8. Maps 1

Datastrukturer. föreläsning 8. Maps 1 Datastrukturer föreläsning 8 Maps 1 Att hitta den kortaste vägen 0 8 A 4 2 8 B 7 2 C 1 D 2 5 3 9 8 E F 5 3 Lecture 6 2 Viktade grafer I en viktad graf tillordnar vi ett tal till varje båge. Detta tal kallas

Läs mer

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning 8 Datastrukturer (DAT037) Föreläsning 8 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-23 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Förra

Läs mer

Föreläsning Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037) Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-11-20 Idag Grafer: Terminologi. Datastrukturer. Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. (Vi får

Läs mer

Datastrukturer. föreläsning 9. Maps 1

Datastrukturer. föreläsning 9. Maps 1 Datastrukturer föreläsning 9 Maps 1 Grafer och grafalgoritmer Hur implementerar man grafer? Hur genomsöker (traverserar) man grafer? Hur genomsöker man viktade grafer (och hittar kortaste vägen)? Hur beräknar

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-13 Idag Grafer: Terminologi. Datastrukturer. Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. (Vi får

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-18 Idag Mer om grafer: Minsta uppspännande träd (för oriktade grafer). Prims algoritm. Kruskals algoritm. Djupet först-sökning. Cykel

Läs mer

Föreläsning 6 Datastrukturer (DAT037)

Föreläsning 6 Datastrukturer (DAT037) Föreläsning 6 Datastrukturer (DAT037) Fredrik Lindblad 1 15 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037

Läs mer

Föreläsning 7 Datastrukturer (DAT037)

Föreläsning 7 Datastrukturer (DAT037) Föreläsning 7 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-21 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Förra

Läs mer

Datastrukturer. föreläsning 9. Maps 1

Datastrukturer. föreläsning 9. Maps 1 Datastrukturer föreläsning 9 Maps 1 Minsta uppspännande träd Maps 2 Minsta uppspännande träd Uppspännande träd till graf fritt delträd innehåller alla noderna Minsta uppspännande träd (MST) är det uppspännande

Läs mer

Föreläsning Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037) Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-11-23 Idag Mer om grafer: Minsta uppspännande träd (för oriktade grafer). Djupet först-sökning. Minsta uppspännande träd Träd (utan rot)

Läs mer

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning 8 Datastrukturer (DAT037) Föreläsning 8 Datastrukturer (DAT037) Fredrik Lindblad 1 22 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2012-11-13 Idag Mer om grafer: Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. Floyd-Warshall. Topologisk sortering

Läs mer

Grafer, allmänt. Med datastrukturen graf menas vanligen: en mängd av noder (vertices) och en mängd av bågar (edges).

Grafer, allmänt. Med datastrukturen graf menas vanligen: en mängd av noder (vertices) och en mängd av bågar (edges). Grafer, allmänt Allmänt Med datastrukturen graf menas vanligen: en mängd av noder (vertices) och en mängd av bågar (edges). En graf kan vara riktad (directed) eller oriktad (undirected). En graf kan vara

Läs mer

Föreläsning 5: Grafer Del 1

Föreläsning 5: Grafer Del 1 2D1458, Problemlösning och programmering under press Föreläsning 5: Grafer Del 1 Datum: 2006-10-02 Skribent(er): Henrik Sjögren, Patrik Glas Föreläsare: Gunnar Kreitz Den här föreläsningen var den första

Läs mer

Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4

Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4 Grafer, traversering Koffman & Wolfgang kapitel 1, avsnitt 4 1 Traversering av grafer De flesta grafalgoritmer innebär att besöka varje nod i någon systematisk ordning precis som med träd så finns det

Läs mer

Grafer MST Top. sortering Starkt samm. komponenter Kortaste avstånd. Grafalgoritmer 1. Douglas Wikström KTH Stockholm

Grafer MST Top. sortering Starkt samm. komponenter Kortaste avstånd. Grafalgoritmer 1. Douglas Wikström KTH Stockholm Grafalgoritmer 1 Douglas Wikström KTH Stockholm popup-help@csc.kth.se Oriktade och riktade grafer Definition. En oriktad graf består av en mängd noder V och en mängd kanter E, där en kant är ett oordnat

Läs mer

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag) Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag) 21 december 2007 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng

Läs mer

Föreläsningsanteckningar F6

Föreläsningsanteckningar F6 Föreläsningsanteckningar F6 Martin Andersson & Patrik Falkman Kortaste vägen mellan en nod och alla andra noder Detta problem innebär att givet en graf G = (E,V) hitta den kortaste vägen över E från en

Läs mer

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim Föreläsning 10 Grafer, Dijkstra och Prim Föreläsning 10 Grafer Representation av grafer Dijkstras algoritm Implementation av Dijkstras algoritm Minimium spanning tree Broarna i Königsberg, Euler, 17 Grafer

Läs mer

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim Föreläsning 10 Grafer, Dijkstra och Prim Föreläsning 10 Grafer Representation av grafer Dijkstras algoritm Implementation av Dijkstras algoritm Minimium spanning tree Läsanvisning och uppgifter Broarna

Läs mer

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim Föreläsning 10 Grafer, Dijkstra och Prim Föreläsning 10 Grafer Representation av grafer Dijkstras algoritm Implementation av Dijkstras algoritm Minimium spanning tree Läsanvisning och uppgifter Broarna

Läs mer

Föreläsning 6 Datastrukturer (DAT037)

Föreläsning 6 Datastrukturer (DAT037) Föreläsning 6 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-17 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Förra

Läs mer

Graphs (chapter 14) 1

Graphs (chapter 14) 1 Graphs (chapter ) Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges) en båge är ett par (a, b) av två noder en båge kan vara cyklisk peka på sig själv

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-25 Idag Starkt sammanhängande komponenter Duggaresultat Sökträd Starkt sammanhängande komponenter Uppspännande skog Graf, och en möjlig

Läs mer

Lösningar Datastrukturer TDA

Lösningar Datastrukturer TDA Lösningar Datastrukturer TDA416 2016 12 21 roblem 1. roblem 2. a) Falskt. Urvalssortering gör alltid samma mängd av jobb. b) Sant. Genom att ha en referens till sista och första elementet, kan man nå både

Läs mer

Tentamen Datastrukturer D DAT 036/INN960

Tentamen Datastrukturer D DAT 036/INN960 Tentamen Datastrukturer D DAT 036/INN960 18 december 2009 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. Betygsgränser, CTH: 3 = 24 p, 4 = 36 p, 5 = 48 p, GU:

Läs mer

Föreläsning 2: Grafer. Exempel på graf

Föreläsning 2: Grafer. Exempel på graf Föreläsning 2: Grafer Vad är en graf? Terminologi Representationer Genomgång av hörnen i en graf Kortaste väg-problemet Exempel på graf Falun Uppsala Karlstad Västerås Stockholm Eskilstuna Örebro En graf

Läs mer

Datastrukturer. föreläsning 10. Maps 1

Datastrukturer. föreläsning 10. Maps 1 Datastrukturer föreläsning 10 Maps 1 Minsta uppspännande träd Maps 2 Minsta uppspännande träd Uppspännande träd till graf fritt delträd innehåller alla noderna Minsta uppspännande träd (MST) är det uppspännande

Läs mer

Tentamen Datastrukturer D DAT 035/INN960

Tentamen Datastrukturer D DAT 035/INN960 Tentamen Datastrukturer D DAT 035/INN960 22 december 2006 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.) Betygsgränser,

Läs mer

Trafiksimulering: Grafalgoritmer

Trafiksimulering: Grafalgoritmer 1 (38) Trafiksimulering: Grafalgoritmer Michael Hanke Skolan för teknikvetenskap SF1538 Projekt i simuleringsteknik 2 (38) Introduktion Varför grafalgoritmer? Grafer möjliggör en enkel och systematisk

Läs mer

Tentamen Datastrukturer D DAT 035/INN960

Tentamen Datastrukturer D DAT 035/INN960 Tentamen Datastrukturer D DAT 035/INN960 21 december 2007 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.) Betygsgränser,

Läs mer

Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), Tiden det tar att utföra en iteration av loopen är oberoende av värdet på

Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), Tiden det tar att utföra en iteration av loopen är oberoende av värdet på Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), 2017-01-11 1. Loopen upprepas n gånger. getat på en dynamisk array tar tiden O(1). member på ett AVL-träd av storlek n tar tiden O(log n).

Läs mer

Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm?

Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm? Föreläsning 1. Introduktion och sökning i graf Vad är en algoritm? Först: Vad är ett problem? Består av indata och ett mål. Indata: [En beskrivning av en struktur.] Mål: [Kan vara Ja/Nej, ett tal eller

Läs mer

Tentamen Datastrukturer för D2 DAT 035

Tentamen Datastrukturer för D2 DAT 035 Tentamen Datastrukturer för D2 DAT 035 17 december 2005 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.) Betygsgränser:

Läs mer

Tentamen Datastrukturer D DAT 036/INN960

Tentamen Datastrukturer D DAT 036/INN960 Tentamen Datastrukturer D DAT 036/INN960 18 december 2009 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. Betygsgränser, CTH: 3 = 24 p, 4 = 36 p, 5 = 48 p, GU:

Läs mer

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035 Tentamen med lösningsförslag Datastrukturer för D2 DAT 035 17 december 2005 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.)

Läs mer

Lösningsförslag för tentamen i Datastrukturer (DAT036) från

Lösningsförslag för tentamen i Datastrukturer (DAT036) från Lösningsförslag för tentamen i Datastrukturer (DAT036) från 2011-12-16 Nils Anders Danielsson 1. Låt oss benämna indatalistan strängar. Vi kan börja med att beräkna varje strängs frekvens genom att använda

Läs mer

Föreläsning 13 Datastrukturer (DAT037)

Föreläsning 13 Datastrukturer (DAT037) Föreläsning 13 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-12-14 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Sammanfattning

Läs mer

FÖRELÄSNING 11 DATALOGI I

FÖRELÄSNING 11 DATALOGI I Föreläsning I07 FÖRELÄSNING DATALOGI I Grafer Beatrice Åkerblom beatrice@dsv.su.se Institutionen för Data- och Systemvetenskap SU/KTH Föreläsning I07 Läsanvisningar Michael Main Data Structures & Other

Läs mer

Datastrukturer. föreläsning 3. Stacks 1

Datastrukturer. föreläsning 3. Stacks 1 Datastrukturer föreläsning 3 Stacks 1 Abstrakta datatyper Stackar - stacks Köer - queues Dubbeländade köer - deques Vektorer vectors (array lists) All är listor men ger tillgång till olika operationer

Läs mer

Trädstrukturer och grafer

Trädstrukturer och grafer Översikt Trädstrukturer och grafer Trädstrukturer Grundbegrepp Binära träd Sökning i träd Grafer Sökning i grafer Programmering tillämpningar och datastrukturer Varför olika datastrukturer? Olika datastrukturer

Läs mer

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. 1 (8) TENTAMEN: Algoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt namn och personnummer på varje blad

Läs mer

Föreläsning 2. Kortaste vägar i grafer.

Föreläsning 2. Kortaste vägar i grafer. Föreläsning 2. Kortaste vägar i grafer. Problem: KORTASTE VÄGAR Den enklaste varianten är om vi inte har kantvikter och kortaste väg är en väg med såfåkanter som möjligt. Indata: En riktad graf G och en

Läs mer

TNK049 Optimeringslära

TNK049 Optimeringslära TNK49 Optimeringslära Clas Rydergren, ITN Föreläsning 7 Nätverksoptimering Billigaste uppspännande träd (MST) Billigaste väg (SP) Projektnätverk Minkostnadsflödesproblem Agenda Terminologi för grafer/nätverk

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 10 Anton Grensjö grensjo@csc.kth.se 9 november 2017 1 Idag En konstruktionsreduktion Fler bevis av NP-fullständighet 2 Teori Repetition Ett problem tillhör

Läs mer

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

Lösningsförslag för tentamen i Datastrukturer (DAT037) från Lösningsförslag för tentamen i Datastrukturer (DAT7) från --9 Nils Anders Danielsson. Träd- och köoperationerna har alla tidskomplexiteten O(log s), där s är antalet element i trädet/kön (notera att jämförelser

Läs mer

Datastrukturer och Algoritmer D0041D

Datastrukturer och Algoritmer D0041D Luleå Tekniska Universitet 19 mars 2014 Laborationsrapport Laboration 3 Datastrukturer och Algoritmer D0041D Primms Algoritm Namn E-mail Magnus Björk magbjr-3@ltu.student.se Handledare Felix Hansson Primms

Läs mer

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen Datastrukturer och algoritmer Föreläsning 15 Inför tentamen 1 Innehåll Kursvärdering Vi behöver granskare! Repetition Genomgång av gammal tenta 2 Första föreläsningen: målsättningar Alla ska höja sig ett

Läs mer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer Föreläsning 5: Giriga algoritmer Kruskals och Prims algoritmer Spännande träd: Om G är en sammanhängande graf så är ett spännande träd ett träd som innehåller alla noder i V (G). Viantarattviharkantvikterw(e)

Läs mer

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036) Tentamen Datastrukturer, DAT037 (DAT036) Datum och tid för tentamen: 2017-01-11, 14:00 18:00. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 15:00 och ca 17:00. Godkända

Läs mer

Föreläsning 13 Datastrukturer (DAT037)

Föreläsning 13 Datastrukturer (DAT037) Föreläsning 13 Datastrukturer (DAT037) Fredrik Lindblad 1 11 december 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037

Läs mer

Föreläsning 10. Riktade grafer. Viktade grafer. TDDC91,TDDE22,725G97: DALG. Innehåll. Innehåll Riktade grafer A 10.3

Föreläsning 10. Riktade grafer. Viktade grafer. TDDC91,TDDE22,725G97: DALG. Innehåll. Innehåll Riktade grafer A 10.3 öreläsning 1 Riktade grafer. Viktade grafer. T1,T,G: LG Utskriftsversion av föreläsning i atastrukturer och algoritmer oktober 1 Magnus Nielsen, I, Linköpings universitet 1.1 Innehåll Innehåll 1. 1 Riktade

Läs mer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer Föreläsning 5: Giriga algoritmer Kruskals och Prims algoritmer Spännande träd: Om G är en sammanhängande graf så är ett spännande träd ett träd som innehåller alla noder i V (G). Viantarattviharkantvikterw(e)

Läs mer

Föreläsning 4: Kombinatorisk sökning

Föreläsning 4: Kombinatorisk sökning DD2458, Problemlösning och programmering under press Föreläsning 4: Kombinatorisk sökning Datum: 2009-09-25 Skribent(er): Kristina Nylander, Dennis Ekblom, Marcus Öman Föreläsare: Fredrik Niemelä 1 Introduktion

Läs mer

Föreläsning 2. Kortaste vägar i grafer.

Föreläsning 2. Kortaste vägar i grafer. Föreläsning 2. Kortaste vägar i grafer. Problem: KORTASTE VÄGAR Den enklaste varianten är om vi inte har kantvikter och kortaste väg är en väg med såfåkanter som möjligt. Indata: En riktad graf G och en

Läs mer

Föreläsning 5: Dynamisk programmering

Föreläsning 5: Dynamisk programmering Föreläsning 5: Dynamisk programmering Vi betraktar en typ av problem vi tidigare sett: Indata: En uppsättning intervall [s i,f i ] med vikt w i. Mål: Att hitta en uppsättning icke överlappande intervall

Läs mer

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036) Tentamen Datastrukturer (DAT036) Datum och tid för tentamen: 2014-04-25, 14:00 18:00. Författare: Nils Anders Danielsson. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker

Läs mer

Föreläsning 6. Slumptal Testa slumptal Slumptal för olika fördelningar Grafer Datastrukturen graf

Föreläsning 6. Slumptal Testa slumptal Slumptal för olika fördelningar Grafer Datastrukturen graf Föreläsning 6 Slumptal Testa slumptal Slumptal för olika fördelningar Grafer Datastrukturen graf Repetition En dator kan inte generera slumptal då den är helt deterministisk, däremot kan den generera pseudo-slumptal

Läs mer

Föreläsning Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037) Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-12-14 Idag Frågor? Är något oklart inför tentan? Sammanfattning Exempel från föreläsning 1 Dåligt val av datastruktur public class Bits {

Läs mer

Lösningsförslag till tentamen Datastrukturer, DAT037,

Lösningsförslag till tentamen Datastrukturer, DAT037, Lösningsförslag till tentamen Datastrukturer, DAT037, 2018-04-05 1. q.dequeue() tar O(1) (eventuellt amorterat) s.contains(x) tar O(1) pq.add(x) tar O(log i) I värsta fall exekveras innehållet i if-satsen.

Läs mer

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036) Tentamen Datastrukturer, DAT037 (DAT036) Datum, tid och plats för tentamen: 2017-08-17, 8:30 12:30, M. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 9:30 och ca 11:00.

Läs mer

Föreläsning 11. Riktade grafer. Viktade grafer. TDDC70/91: DALG. Innehåll. Innehåll. 1 Riktade grafer A 11.3

Föreläsning 11. Riktade grafer. Viktade grafer. TDDC70/91: DALG. Innehåll. Innehåll. 1 Riktade grafer A 11.3 Föreläsning 11 Riktade grafer. Viktade grafer. T70/1: ALG Utskriftsversion av föreläsning i atastrukturer och algoritmer 14 oktober 2013 Tommy Färnqvist, IA, Linköpings universitet 11.1 Innehåll Innehåll

Läs mer

729G04 - Diskret matematik. Lektion 4

729G04 - Diskret matematik. Lektion 4 729G04 - Diskret matematik. Lektion 4 1 Lösningsförslag 1.1 Vägar, stigar och annat 1. Vi ges den oriktade grafen G=(V,E), V = {a, b, c, d, f, g, h, i, j}, E = {{a, b}, {b, c}, {a, c}, {f, g}, {c, d},

Läs mer

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 4 Datastrukturer (DAT037) Föreläsning 4 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-10 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 Förra

Läs mer

Algoritmer och datastrukturer, föreläsning 11

Algoritmer och datastrukturer, föreläsning 11 lgoritmer och datastrukturer, föreläsning 11 enna föreläsning behandlar grafer. En graf har en mängd noder (vertex) och en mängd bågar (edge). Ett exempel är: E F G H Z enna graf har följande mängd av

Läs mer

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar Föreläsning 1 Innehåll ADT Prioritetskö Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util ar Implementering av prioritetskö med heap Sortering med hjälp

Läs mer

Datastrukturer. Föreläsning 5. Maps 1

Datastrukturer. Föreläsning 5. Maps 1 Datastrukturer Föreläsning 5 Maps 1 Traversering av träd Maps 2 Preordningstraversering Traversera = genomlöpa alla noderna i ett träd Varje nod besöks innan sina delträd Preordning = djupet först Exempel:

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 7 Anton Grensjö grensjo@csc.kth.se 14 oktober 2015 Anton Grensjö ADK Övning 7 14 oktober 2015 1 / 28 Översikt Kursplanering Ö6: Algoritmkonstruktion F19:

Läs mer

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare Prov i DAT 312: Algoritmer och datastrukturer för systemvetare Jacek Malec Datavetenskap, LU 11 april 2003 Datum 11 april 2003 Tid 14 19 Ansvarig lärare Jacek Malec (tel. 03 9890431) Hjälpmedel inga Antal

Läs mer

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6 Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6? DAGENS AGENDA Komplexitet Ordobegreppet Komplexitetsklasser Loopar Datastrukturer Några nyttiga regler OBS! Idag jobbar

Läs mer

Matematik för språkteknologer (5LN445) Institutionen för lingvistik och filologi VT 2014 Författare: Marco Kuhlmann 2013

Matematik för språkteknologer (5LN445) Institutionen för lingvistik och filologi VT 2014 Författare: Marco Kuhlmann 2013 UPPSALA UNIVERSITET Matematik för språkteknologer (5LN445) Institutionen för lingvistik och filologi VT 2014 Författare: Marco Kuhlmann 2013 4 Grafer En graf är en struktur av prickar förbundna med streck.

Läs mer

Grafer. 1 Grafer. Grunder i matematik och logik (2015) 1.1 Oriktade grafer. Marco Kuhlmann

Grafer. 1 Grafer. Grunder i matematik och logik (2015) 1.1 Oriktade grafer. Marco Kuhlmann Marco Kuhlmann 1 En graf är en struktur av prickar förbundna med streck. Ett tidsenligt exempel på en sådan struktur är ett social nätverk, där prickarna motsvarar personer och en streck mellan två prickar

Läs mer

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036) Tentamen Datastrukturer (DAT036) Det här är inte originaltesen. Uppgift 6 var felaktigt formulerad, och har rättats till. Datum och tid för tentamen: 2011-12-16, 8:30 12:30. Ansvarig: Nils Anders Danielsson.

Läs mer

F11. Läsanvisning: kap 10 + dessa OH. Kruskals algoritm kortaste vägar en till alla

F11. Läsanvisning: kap 10 + dessa OH. Kruskals algoritm kortaste vägar en till alla F11 Läsanvisning: kap 10 + dessa OH Kruskals algoritm kortaste vägar en till alla Dijkstras algoritm (Den här föreläsningen är också delvis samma som en från algoritmkursen därav språkvalet.) För lab 3:

Läs mer

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

TENTAMEN: Algoritmer och datastrukturer. Läs detta! (6) TENTAMEN: Algoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt idnummer på varje blad (så att vi inte

Läs mer

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar Föreläsning 1 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Heapar Implementering av prioritetskö med heap Sortering med hjälp av heap

Läs mer

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036) Tentamen Datastrukturer (DAT036) Datum och tid för tentamen: 2013-12-16, 14:00 18:00. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker tentamenssalarna ca 15:00 och

Läs mer

Kapitel 9: Grafalgoritmer

Kapitel 9: Grafalgoritmer Kapitel 9: Grafalgoritmer En graf G = (V, E) karakteriseras av två mängder en ändlig icke-tom mängd V av noder (vertex) en mängd E av bågar (edges eller arcs) varje båge är ett par (v, w), där v, w är

Läs mer

Grafer och grannmatriser

Grafer och grannmatriser Föreläsning 2, Linjär algebra IT VT2008 Som avslutning på kursen ska vi knyta samman linjär algebra med grafteori och sannolikhetsteori från första kursen. Resultatet blir så kallade slumpvandringar på

Läs mer

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 4 Datastrukturer (DAT037) Föreläsning 4 Datastrukturer (DAT07) Fredrik Lindblad 1 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat07 1 Innehåll

Läs mer

Föreläsning 13 Innehåll

Föreläsning 13 Innehåll Föreläsning 13 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Heapar Implementering av prioritetskö med heap Klassen PriorityQueue i java.util Programexempel LPT-algoritmen

Läs mer

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö Datastrukturer och algoritmer Föreläsning 4 Test, Stack och Kö 1 Innehåll Test Datatyperna Stack och kö Specifikation och Gränssnitt Konstruktion Tillämpning 2 Testa VIKTIGT! Test går att göra under många

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 10 Anton Grensjö grensjo@csc.kth.se 18 november 2015 Anton Grensjö ADK Övning 10 18 november 2015 1 / 20 Översikt Kursplanering Ö9: NP-fullständighetsbevis

Läs mer

Exempeltenta GruDat 2002/2003

Exempeltenta GruDat 2002/2003 Exempeltenta GruDat 2002/2003 Endast ett svarsalternativ på varje fråga är korrekt. Felaktigt svar eller felaktigt antal ikryssade svarsalternativ ger noll poäng på uppgiften. Obs: Den riktiga tentan kommer

Läs mer

Tommy Färnqvist, IDA, Linköpings universitet

Tommy Färnqvist, IDA, Linköpings universitet Föreläsning 8 Sortering och urval TDDC70/91: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 1 oktober 2013 Tommy Färnqvist, IDA, Linköpings universitet 8.1 Innehåll Innehåll 1 Sortering

Läs mer

Föreläsning 9 Datastrukturer (DAT037)

Föreläsning 9 Datastrukturer (DAT037) Föreläsning Datastrukturer (DAT07) Fredrik Lindblad 27 november 207 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/20/course/dat07 Innehåll 2

Läs mer

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig

Läs mer

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

TDDI16 Datastrukturer och algoritmer. Algoritmanalys TDDI16 Datastrukturer och algoritmer Algoritmanalys 2017-08-28 2 Översikt Skäl för att analysera algoritmer Olika fall att tänka på Medelfall Bästa Värsta Metoder för analys 2017-08-28 3 Skäl till att

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 9 oktober 2015 Anton Grensjö ADK Övning 6 9 oktober 2015 1 / 23 Översikt Kursplanering Ö5: Grafalgoritmer och undre

Läs mer

Ekvivalensrelationer

Ekvivalensrelationer Abstrakt datatyp för disjunkta mängder Vi skall presentera en abstrakt datatyp för att representera disjunkta mängder Kan bl.a. användas för att lösa ekvivalensproblemet avgör om två godtyckliga element

Läs mer

Föreläsning 11. Giriga algoritmer

Föreläsning 11. Giriga algoritmer Föreläsning 11 Giriga algoritmer Föreläsning 11 Giriga algoritmer Användning Växelproblemet Kappsäcksproblemet Schemaläggning Färgläggning Handelsresandeproblemet Giriga algoritmer (Greedy algorithms)

Läs mer

Datastrukturer och algoritmer

Datastrukturer och algoritmer Innehåll Datastrukturer och algoritmer Föreläsning 2 Fält Specifikation, Konstruktion och Specifikation, Konstruktion Dynamiska resurser Länk Länkade celler 23 24 Konstruktion av Fält Fysisk datatyp i

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 4 oktober 2017 1 Idag Algoritmkonstruktion (lite blandat) Redovisning och inlämning av labbteori 3 2 Uppgifter Uppgift

Läs mer

729G04 - Diskret matematik. Lektion 4

729G04 - Diskret matematik. Lektion 4 729G04 - Diskret matematik. Lektion 4 Ett generellt råd är att rita upp noder och bågar för graferna nedan. 1 Uppgifter 1.1 Vägar, stigar och annat 1. Vi ges den oriktade grafen G=(V,E), V = {a, b, c,

Läs mer

Avancerad Problemlösning och Programmering i Praktiken

Avancerad Problemlösning och Programmering i Praktiken Avancerad Problemlösning och Programmering i Praktiken Grafalgoritmer II High Performance Computing Center North (HPC2N) Grafrepresentation Igår: Grafrepresentation DFS BFS Kortaste vägen MST Kortaste

Läs mer

Seminarium 13 Innehåll

Seminarium 13 Innehåll Seminarium 13 Innehåll Prioritetsköer och heapar Prioritetsköer ADTn Klassen PriorityQueue i java.util Implementering med lista Heapar ADTn För implementering av prioritetskö För sortering Efter seminariet

Läs mer

Föreläsning 9: NP-fullständighet

Föreläsning 9: NP-fullständighet Föreläsning 9: NP-fullständighet Olika typer av problem: 1. Beslutsproblem: A(x) =Ja. 2. Optimeringsproblem: A(x) =m Vanligen max/min. 3. Konstruktionsproblem: A(x) =En struktur. Vanligen lösningen till

Läs mer