729G04 - Diskret matematik. Lektion 4

Relevanta dokument
729G04 - Diskret matematik. Lektion 4

TNK049 Optimeringslära

Föreläsning 5: Grafer Del 1

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

729G04 - Diskret matematik. Lektion 3. Valda lösningsförslag

Föreläsningsanteckningar F6

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

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

Föreläsning 7 Datastrukturer (DAT037)

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

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

Föreläsning Datastrukturer (DAT037)

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

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

Föreläsningsanteckningar S6 Grafteori

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

Kaliningrad) låg vid bägge sidor av floden Pregel samt på

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

Diskret Matematik A för CVI 4p (svenska)

Tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl

TNSL05 Optimering, Modellering och Planering. Föreläsning 5

Tentamen Datastrukturer (DAT037)

Diskret matematik, lektion 2

Optimering Kruskal s algoritm Prim-Jarník s algoritm

Föreläsning 8 Datastrukturer (DAT037)

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 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037)

Trädstrukturer och grafer

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

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

Föreläsning Datastrukturer (DAT036)

Trafiksimulering: Grafalgoritmer

TNSL05 Optimering, Modellering och Planering. Föreläsning 9

Datastrukturer. föreläsning 8. Maps 1

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

Optimeringslära Kaj Holmberg

TAOP07/TEN1 OPTIMERINGSLÄRA GRUNDKURS för Y. Antal uppgifter: 7 Uppgifterna är inte ordnade efter svårighetsgrad.

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS för D och C. Tentamensinstruktioner. När Du löser uppgifterna

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

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

Algoritmer och datastrukturer, föreläsning 11

Algebra och Diskret Matematik A (svenska)

Föreläsning 11. Giriga algoritmer

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

729G04 - Hemuppgift, Diskret matematik

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

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

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

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Graphs (chapter 14) 1

MA2047 Algebra och diskret matematik

Algebra och Diskret Matematik A (svenska)

Avancerad Problemlösning och Programmering i Praktiken

Dynamisk programmering. Dynamisk programmering. Dynamisk programmering. Dynamisk programmering

Tentamensinstruktioner. När Du löser uppgifterna

Lösningar Datastrukturer TDA

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

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

Tentamen Datastrukturer (DAT036)

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

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

En samling fårskallar

Föreläsning 13. Dynamisk programmering

Föreläsning 6 Datastrukturer (DAT037)

MITTUNIVERSITETET TFM. Tentamen Algebra och Diskret Matematik A (svenska) Skrivtid: 5 timmar. Datum: 9 januari 2007

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Föreläsning 8: Intro till Komplexitetsteori

Laborationsinformation

Föreläsning Datastrukturer (DAT036)

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

TNSL05 Optimering, Modellering och Planering. Föreläsning 10

Tentamen Datastrukturer för D2 DAT 035

Kapitel 9: Grafalgoritmer

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

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

Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl

Efternamn förnamn pnr årskurs

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Datastrukturer. föreläsning 9. Maps 1

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

Hemuppgifter till fredagen den 16 september Exercises to Friday, September 16

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

Föreläsning 5: Dynamisk programmering

Tentamen MMG610 Diskret Matematik, GU

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret Lektion 1

TDDI16: Datastrukturer och algoritmer

Algoritmer, datastrukturer och komplexitet

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

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Om plana och planära grafer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

Optimeringslära Kaj Holmberg

729G04 - Diskret matematik. Hemuppgift.

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

Föreläsning 10/11! Gruppuppgifter: Gruppuppgift 1: Alla har redovisat. Gruppuppgift 2: Alla har redovisat Gruppuppgift 3: På gång.

Transkript:

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, d, f, g, h, i, j}, E = {{a, b}, {b, c}, {a, c}, {f, g}, {c, d}, {b, d}, {d, i}, {j, i}}. a) Beskriv en promenad i grafen. b) Beskriv en väg i grafen. Finns det en väg som inte är en stig? Beskriv den isåfall. c) Beskriv en stig i grafen. Finns det en stig som inte är en väg? Beskriv den isåfall. d) Är grafen cykelfri? 1.2 Sammanhängandebegreppet, komponenter 2. Konstruera en delgraf G G (G från uppgiften ovan) som är en skog (en samling träd). 3. Betrakta grafen från uppgift 1 ovan. a) Vilka är komponenterna i grafen? b) Är G = (V, E ), V = {a, b, c}, E = {{a, b}, {b, c}, {c, a}} en komponent i grafen? Bevis eller motexempel. 4. Vi ges den riktade grafen G=(V,E), V={a, b, c, d, f, g, h}, E = {(a, f), (f, a), (a, b), (b, c), (c, g), (c, d), (d, b)}. Vilka är komponenterna i grafen? Här avses maximal strongly connected components (MSCC). 1

5. Den riktade grafen ovan är inte acyklisk. a) Bekräfta det. b) Antag att du kan ta bort- eller vända på bågar. Vilket är det minsta antal bågar som behöver tas bort/vändas för att grafen ska bli acyklisk? 6. Vi ges en (oriktad) graf över ett nätverk med skådespelare. Det finns en båge mellan två skådespelare om de varit med i samma film. Grafen är inte sammanhängande. Berätta något som vi kan säga om personerna, och deras kopplingar. 2

1.3 Billigaste vägar (med mera) Pseudokod för Dijkstras algoritm finns i appendix. 7. Vi ges den riktade, viktade grafen G=(V,E) med V={a, b, c, d, f, g, h, i}, viktade kanter E som nedan. Båge Vikt (a, b) 0 (a, c) 5 (b, d) 1 (b, h) 2 (h, d) 2 (c, f) 5 (d, c) 2 (d, g) 8 (f, g) 0 (f, d) 0 (g, f) 1 (g, i) 3 (f, i) 4 a) Hitta den billigaste vägen från a till i (om den finns). Vilken blir kostnaden? Vilken är vägen? b) Hitta den billigaste vägen från g till b (om den finns). Vilken blir kostnaden? Vilken är vägen? c) Du vill nu hitta alla noder som är nåbara från f (noder v sådana att det finns en väg f... v i grafen). Det kan man göra enkelt här, men vi söker helst en mer generell algoritm. Modifiera Dijkstras algoritm så att du kan hitta alla noder, och hitta sedan alla noder som är nåbara från f. 8. När vi ser på strukturen för ett nätverk kan det vara intressant att se på dess diameter sett utifrån en viss nod v. I en vänskapsgraf innebär det att vi bildar kedjor av vänner till v, vänner-till-vänner-till-v och så vidare. Diametern sett från v är längden av den allra längsta sådana vänskapskedjan. Använd (en lätt modifierad) Dijkstras algoritm för att räkna ut diametern i grafen från uppgift 1, sett från nod j 1. 1 Jfr här Six degrees of Kevin Bacon 3

1.4 Blandat 9. Vi ges grafen från avsnitt 7 ovan. Vilka komponenter har den? Beskriv de respektive delgraferna. 10. I grafen från 7 kan vi ta hitta en väg a i. Hur många bågar behöver vi ta bort för att det inte ska finnas en sådan väg? Om vi försöker ta bort bågar så att a i, samtidigt som w(e) e är en borttagen båge minimeras, vilka ska vi ta bort då? 2 11. Begreppsövning: En riktad graf G med mer än en nod är starkt sammanhängande (grafen är en enda stor MSCC). Kan grafen vara acyklisk (det vill säga, helt utan cykler)? Troliggör ditt påstående (eller visa formellt). Tips om du sitter fast: Rita ett par exempel på starkt sammanhängande grafer med - säg - 3-4 noder och studera dem. 12. (*) Vi har en riktad graf G=(V, E), och relationen R = {(v i, v j ) : v i tillhör samma komponent i G som v j } på V. Visa (eller troliggör) att R är en ekvivalensrelation. 2 Ersätter vi bågvikt med kapacitet så har detta en viktig tillämpning när man ska hitta maximala flöden i nätverk. Vi hittar kapaciteten på en flaskhals på vägen. Detta kan användas för att bland annat att hitta maximal överföringshastighet i nätverk, kapacitet för bilvägar eller - med särskilt valda grafer - för att kunna para ihop t ex organdonatorer med mottagare. 4

2 Dijkstras algoritm, pseudokod från Wikipedia DIJKSTRA (Graf G, startnod s) // Vi initierar alla noder i grafen. // Billigaste vägen (avståndet) är oändligt // och föregående nod är odefinierad för i tillhörande Noder(G) gör avstånd[i] = OÄNDLIGT föregångare[i] = NULL // Avståndet till startnoden är 0 avstånd[s] = 0 //markera startnoden som avsökt Avsökt( s ) medan inte alla noder avsökta gör // Finn den ej avsökta nod som har lägst nodpris // tills alla är avsökta i = Minimum( ej avsökta noder ) för j tillhörande närliggande(i) gör // Undersök om det finns en billigare väg // via nod i till närliggande noder om avstånd[j] > avstånd[i] + kostnad(i, j) gör avstånd[j] = avstånd[i] + kostnad(i, j) föregångare[j] = i Avsökt( i ) Observera att stoppkriteriet kan behöva utökas. Även: vi behöver inte hantera alla icke-avsökta noder om vi inte vill (varför inte?). 5