Föreläsning 6 Datastrukturer (DAT037)

Relevanta dokument
Föreläsning 6 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT037)

Föreläsning 7 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

Föreläsning 4 Datastrukturer (DAT037)

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

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

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

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

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

Graphs (chapter 14) 1

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

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

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

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

Föreläsning Datastrukturer (DAT036)

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

Algoritmer och datastrukturer, föreläsning 11

TNK049 Optimeringslära

FÖRELÄSNING 11 DATALOGI I

Tentamen Datastrukturer (DAT036)

Föreläsning 5: Grafer Del 1

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

Föreläsning 4 Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Föreläsningsanteckningar F6

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

Föreläsning 1 Datastrukturer (DAT037)

Föreläsning 10 Datastrukturer (DAT037)

Föreläsning 13 Datastrukturer (DAT037)

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

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

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

Datastrukturer. föreläsning 8. Maps 1

Lösningar Datastrukturer TDA

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

MA2047 Algebra och diskret matematik

Föreläsning 5 Datastrukturer (DAT037)

729G04 - Diskret matematik. Lektion 4

Datastrukturer. föreläsning 7. Maps 1

Föreläsning 13 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT037)

Kap.6 Grafer. Egenskaper: Handskakningslemmat och Eulers formel Sats om eulerkrets/väg Isomorfi och representation av grafer Graffärgning

Datastrukturer. föreläsning 9. Maps 1

Dugga Datastrukturer (DAT036)

Föreläsning 2 Datastrukturer (DAT037)

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

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary Definitioner Implementation... 2

Kapitel 9: Grafalgoritmer

Föreläsning Datastrukturer (DAT036)

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:15 19:15

Föreläsning 9 Datastrukturer (DAT037)

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036)

Trädstrukturer och grafer

Föreläsning Datastrukturer (DAT037)

Avancerad Problemlösning och Programmering i Praktiken

Lösningsförslag till tentamen Datastrukturer, DAT037,

Datastrukturer. föreläsning 9. Maps 1

Grafer och grannmatriser

Föreläsning 3 Datastrukturer (DAT037)

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

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

Föreläsning 5: Dynamisk programmering

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

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

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

Tentamen Datastrukturer D DAT 036/INN960

Näst nästa gång: Nästa gång: mer grafer (kap 10) Grafer 1 1. ! uppspännande träd. ! minimala uppspännande träd. ! Prims algoritm. !

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Tentamen Datastrukturer (DAT036)

träd dag graf båge och vikt Grafer definitioner och terminologi

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning 11 Datastrukturer (DAT037)

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Lösningsförslag till tentamen Datastrukturer, DAT037,

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

Algoritmer och datastrukturer TDA Fredrik Johansson

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

Asymptotisk komplexitetsanalys

Datastrukturer och Algoritmer D0041D

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

Algoritmer, datastrukturer och komplexitet

Tentamen Datastrukturer D DAT 036/DIT960

Föreläsning 8: Exempel och problemlösning

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Några svar till TDDC70/91 Datastrukturer och algoritmer

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 09:00 14:00

Transkript:

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 1

Innehåll 2 Grafer terminologi Grafer datastrukturer Kortaste vägen bredden först-sökning

Grafer 3

Grafer 4 Grafer kan representera: Nätverk. Beroenden.

Grafer 4 Givet en graf kan man ställa olika frågor: Nätverk. Hur tar man sig från A till B? Snabbast? Billigast? Vilken rutt har störst bandbredd? Beroenden. Vad måste göras först?

Terminologi 5

Terminologi 6 Varning Kan variera från författare till författare.

Terminologi Graf: G = (V, E). V : Ändlig mängd av noder (vertex). E: Kanter/bågar (edge). Riktad graf: E V V (ordnade par av noder) Oriktad graf: E { U V 1 U 2 } (oordnade par av noder) Viktad graf: E V V W eller E { U V 1 U 2 } W (där W kan vara N, Z, R, ). I en multigraf kan det finnas flera kanter från u till v. 7

Terminologi 8 Direkta efterföljare till u: { v (u, v) E }. Direkta föregångare till v: { u (u, v) E }. Ingrad: Antalet direkta föregångare. Utgrad: Antalet direkta efterföljare. Begreppen definieras på motsvarande sätt för oriktade grafer/multigrafer/viktade grafer.

Terminologi 9 Väg (path): v 1 v 2 v n. Längd: n 1. Vägar kan ha längd 0. Enkel väg: Alla noder distinkta (utom möjligtvis v 1 och v n ). Loop: Kant från nod till sig själv.

Terminologi 10 För riktade grafer: Cykel: Väg av längd 1 från v till v. Enkel cykel: Cykel som är enkel väg. (Riktad) acyklisk graf/dag: Graf utan cykler. För oriktade grafer: (Enkel) cykel: Enkel väg av längd 3 från v till v.

Terminologi 11 För oriktade grafer: Sammanhängande: Finns väg från varje nod till varje annan nod. För riktade grafer: Starkt sammanhängande: Finns väg från varje nod till varje annan nod. Svagt sammanhängande: Finns väg från varje nod till varje annan nod, om man även får följa kanter baklänges.

Terminologi 12 Komplett graf: Oriktad. Inga loopar, inte multigraf. I övrigt så många kanter som möjligt. Antal bågar:

Terminologi 12 Komplett graf: Oriktad. Inga loopar, inte multigraf. I övrigt så många kanter som möjligt. Antal bågar: E = V ( V 1)/2 För oriktade, loop-fria grafer i allmänhet gäller E V ( V 1)/2

Terminologi 13 Tät graf: Många kanter ( E V 2 ). Gles graf: Få kanter ( E V ).

14 Gäller E = Θ( V 2 ) för följande klass av grafer?....

14 Gäller E = Θ( V 2 ) för följande klass av grafer?.... Svar: Nej, E = Θ( V ).

15 Datastrukturer

Grannmatriser 16 Kvadratisk matris med V 2 element. Elementen kan t ex vara true/false. Tar stor plats om grafen är gles. Gå igenom en nods direkta efterföljare: Θ( V ). Gå igenom alla noders direkta efterföljare: Θ( V 2 ). Avgöra om det finns en kant från u till v: Θ(1). Antagande ovan: Känner till noders index. Kan använda avbildning (map): nod index.

Grannlistor 17 En variant: Array av storlek V innehållandes listor med direkta efterföljare. Ibland också listor med direkta föregångare. Gå igenom en nods direkta efterföljare: O(V ) (och O( E )). Gå igenom alla noders direkta efterföljare: Θ( V + E ). Avgöra om det finns en kant från u till v: O(V ) (och O( E )).

18 Hur stor plats tar en array med grannlistor? (Anta att etiketter/vikter tar liten plats.) Θ( V ). Θ( E ). Θ( V + E ). Θ( V 2 ).

18 Hur stor plats tar en array med grannlistor? (Anta att etiketter/vikter tar liten plats.) Θ( V ). Θ( E ). Θ( V + E ). Θ( V 2 ). Svar: Θ( V + E ).

19 Kortaste vägen

Kortaste vägen 20 Kostnad av väg v 1,, v n : n 1 c i,i+1 i=1 där c j,k är vikten på kanten från nod j till nod k. I oviktad graf: n 1.

Kortaste vägen 21 Kortaste vägen-problem: Givet två noder u och v, hitta en kortaste väg från u till v. Givet nod u, för varje nod v, hitta en kortaste väg från u till v. Hitta kortaste vägen från varje nod till varje annan. Visar sig naturligt att lösa den mittersta varianten ovan.

22 I algoritmen på nästa slide: d lagrar kortaste kända vägen till alla noder. p lagrar föregående nod för kortaste vägen. q är en kö som bestämmer besöksordningen av noder.

Oviktade grafer: bredden först-sökning d = new array of size V, initialised to p = new array of size V, initialised to null q = new empty queue q.enqueue(s) d[s] = 0 while q is non-empty do v = q.dequeue() for each direct successor v' of v do if d[v'] = then d[v'] = d[v] + 1 p[v'] = v q.enqueue(v') return (d, p) 23

Oviktade grafer: bredden först-sökning d = new array of size V, initialised to p = new array of size V, initialised to null q = new empty queue q.enqueue(s) d[s] = 0 O( V ) O( V ) while q is non-empty do v = q.dequeue() for each direct successor v' of v do if d[v'] = then d[v'] = d[v] + 1 p[v'] = v q.enqueue(v') O( V ) ggr O( E ) ggr return (d, p) Totalt O( V + E ) 23