729G04 - Diskret matematik. Lektion 4

Relevanta dokument
729G04 - Diskret matematik. Lektion 4

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

TNK049 Optimeringslära

Föreläsning 5: Grafer Del 1

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

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

Föreläsning 6 Datastrukturer (DAT037)

Föreläsning 7 Datastrukturer (DAT037)

Föreläsningsanteckningar S6 Grafteori

Föreläsning 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

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

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

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 5: Giriga algoritmer. Kruskals och Prims algoritmer

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

Föreläsning Datastrukturer (DAT037)

Uppgifter i TDDC75: Diskreta strukturer Kapitel 8 Ordning och oändlighet

Diskret matematik, lektion 2

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

Föreläsning Datastrukturer (DAT036)

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

Algebra och Diskret Matematik A (svenska)

MA2047 Algebra och diskret matematik

Föreläsningsanteckningar F6

Trädstrukturer och grafer

Algebra och Diskret Matematik A (svenska)

Föreläsning 8 Datastrukturer (DAT037)

18 juni 2007, 240 minuter Inga hjälpmedel, förutom skrivmateriel. Betygsgränser: 15p. för Godkänd, 24p. för Väl Godkänd (av maximalt 36p.

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

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

Optimering Kruskal s algoritm Prim-Jarník s algoritm

Trafiksimulering: Grafalgoritmer

MITTUNIVERSITETET TFM. Modelltenta Algebra och Diskret Matematik. Skrivtid: 5 timmar. Datum: 1 oktober 2007

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

Lektion 8: Konstruktion av semantiska tablåer för PTL-formler

Diskret matematik: Övningstentamen 1

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

Tentamen Datastrukturer (DAT037)

Kap. 8 Relationer och funktioner

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

Föreläsning 6 Datastrukturer (DAT037)

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

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

Tentamen Datastrukturer för D2 DAT 035

Tentamen i TDDC75 Diskreta strukturer , lösningsförslag

Algoritmer, datastrukturer och komplexitet

729G04 - Hemuppgift, Diskret matematik

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

Föreläsning Datastrukturer (DAT036)

Algoritmer, datastrukturer och komplexitet

Lösningar Datastrukturer TDA

N = {i}: noder (hörn) Graf: G = (N, B) Definitioner. Väg: Sekvens av angränsande bågar. Cykel: Väg som startar och slutar i samma nod.

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Algoritmer och datastrukturer, föreläsning 11

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

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

Föreläsning 8: Intro till Komplexitetsteori

Föreläsning 11. Giriga algoritmer

729G04 - Diskret matematik. Hemuppgift.

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

Lösningar för tenta i TMV200 Diskret matematik kl. 14:00 18:00

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

Graphs (chapter 14) 1

TDP015: Lektion 5 - Svar

Algebra och kryptografi Facit till udda uppgifter

Relationer. 1. Relationer. UPPSALA UNIVERSITET Matematiska institutionen Erik Melin. Specialkursen HT07 23 oktober 2007

Om plana och planära grafer

Föreläsning 8 i kursen Ma III, #IX1305, HT 07. (Fjärde föreläsningen av Bo Åhlander)

Om plana och planära grafer

Optimeringslära Kaj Holmberg

Tentamen Datastrukturer (DAT036)

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

Ekvivalensrelationer

Diskret matematik: Övningstentamen 4

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Lösning till tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610 och 5B1118, tisdagen den 7 januari 2014, kl

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

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

IX Diskret matematik

Vägen till ett framgångsrikare liv. Framgång föder framgång

729G04: Inlämningsuppgift i Diskret matematik

Undflyende delgrafer Några elementära bevis

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

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

Lösning till tentamensskrivning på kursen Diskret Matematik, moment A, för D2 och F, SF1631 och SF1630, den 10 januari 2011 kl

729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo,

Matematik för språkteknologer

Algebra och Diskret Matematik A (svenska)

Lösningar för tenta i TMV200 Diskret matematik kl. 14:00 18: Svar: Ja, det gäller, vilket kan visas på flera sätt (se nedan).

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

Avancerad Problemlösning och Programmering i Praktiken

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

Kapitel 9: Grafalgoritmer

FÖRELÄSNING 11 DATALOGI I

Transkript:

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}, {b, d}, {d, i}, {j, i}}. a) Beskriv en promenad i grafen. Exempelvis a{a, b}b{b, c}c. När vi har en enkel graf och det är helt entydigt vilken båge som leder från a till b kan vi skriva detta lite kortare som a b c. b) Beskriv en väg i grafen. Finns det en väg som inte är en stig? Beskriv den isåfall. En väg har inga upprepade kanter/bågar. Ett exempel är j i d c b d. Denna är inte heller en stig (för vi upprepar noden d). c) Beskriv en stig i grafen. Finns det en stig som inte är en väg? Beskriv den isåfall. En stig har inga upprepade noder (utom möjligen om första = sista nod). Ett exempel är a b c. d) Är grafen cykelfri? Nej. Vi kan till exempel hitta a b c a. 1.2 Sammanhängandebegreppet, komponenter 2. Konstruera en delgraf G G (G från uppgiften ovan) som är en skog (en samling träd). Vi behöver åtminstone två träd. En enkel variant: G = (V, E ) där V = {a, b, c, f, g}, E = {{a,b}, {b, c}, {f, g}} 1

3. Betrakta grafen från uppgift 1 ovan. a) Vilka är komponenterna i grafen? Grafen med noderna a, b, c, d, i, j (och bågarna dem emellan) är en komponent. Grafen med f, g (och bågen dem emellan) en annan. Slutligen är grafen med (den isolerade) noden h en komponent. b) Är G = (V, E ), V = {a, b, c}, E = {{a, b}, {b, c}, {c, a}} en komponent i grafen? Bevis eller motexempel. Nej. Vi kan hitta en större sammanhängande delgraf, som G bara är en delgraf av. Informellt: lägg till noden d och (åtminstone en) båge till den för att hitta en större komponent. Mer formellt: Låt G = (V, E ), V = {a, b, c, d}, E = {{a, b}, {a, c}, {b, c}, {b, d}, {c, d}}. (Här har vi lagt till d och alla bågar till den.). Då är G G (G delgraf, men G innehåller något ytterligare), och G är sammanhängande. Därmed är inte G maximal, och inte en komponent. 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. Informellt har vi följande uppdelning (fyll gärna ut till en fullständig beskrivning av grafer): Noderna {a, f} och bågarna dem emellan. Noderna {b, c, d} och bågarna dem emellan. Noden {g}. Noden {h} (Uppdaterat). 5. Den riktade grafen ovan är inte acyklisk. a) Bekräfta det. Vi har exempelvis en cykel a f a (fler finns, vi behöver bara påvisa en). 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? Två. Vi måste bryta cyklerna a f a och b c d b. Detta går att göra genom att ta bort en av bågarna (a, f) eller (f, a), och att vända någon av bågarna mellan b, c, d. När vi gör detta uppstår inga nya cykler (potentiellt problem i en större graf, så det måste bekräftas). 2

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. Det finns ingen som direkt eller indirekt samarbetat med alla (spelat i samma film som någon som spelat i samma film som...). 1.3 Billigaste vägar (med mera) 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? Kortaste vägen är a b d c f g i, kostnad 0 + 1 + 2 + 5 + 0 + 3 = 11. Vi beskriver ett par steg i sökprocessen: Initialt: vi sätter distans = för alla noder utom startnoden, och distans för startnoden till 0. Ingen nod har föregångare. Vi har noder att avsöka ( active set ) som enbart består av startnoden a, och inga klara än. Vi markerar de aktiva noderna nedan fetstilt. Strikt taget behöver vi inte hålla koll på detta (och pseudokoden inkluderar inte sådant, även om föreläsningsgenomgången gjorde det). Det finns däremot ofta praktiska skäl att göra det. Framförallt blir det färre noder att söka igenom i varje varv, och det blir möjligt att söka i 3

extremt stora grafer (tänk: personer på facebook, datorer på internet) utan att behöva lagra hela grafen i minnet 1 a 0 - c - d - g - Vi väljer den billigaste noden av de aktiva, nämligen a. Den har grannar b och c. Granne c har inte avsökts sedan tidigare, och den har distans[c] = > distans[a] + c ac = 0 + 5 (c ac här utläses kostnaden för bågen a c). Därför uppdaterar vi grannen c:s distans och föregångare, och lägger till den till noder att avsöka. Vi gör samma sak med b. a 0 - Klar b 0 a c 5 a d - g - Billigast nu är b. Vi väljer den, undersöker grannar d, h och får tabellen: a 0 - Klar b 0 a Klar c 5 a d 1 b g - h 2 b 1 Teknisk detalj, som bara är relevant om du vill skriva en egen implementation (och inte annars): en lätt modifikation krävs såklart av lagrade vägkostnader isåfall, så att man inte behöver sätta d = för allt i världen. 4

När vi nu väljer att avsöka d märker vi att vi hittar en kortare väg till c. distans[c] = 5 från början, men distans[d] + c dc = 1 + 2 = 3. Så vi uppdaterar distans[c] och föregångare: a 0 - Klar b 0 a Klar c 5 3 a d d 1 b Klar g 9 d h 2 b Vi bygger vidare, och efter ett antal steg får vi a 0 - Klar b 0 a Klar c 5 3 a d Klar d 1 b Klar f 8 c Klar g 9 8 d f Klar h 2 b Klar i 12 11 f g Nu börjar vi söka utifrån målet i. I detta steg kan vi avsluta. Vi hittar kortaste vägen genom att se på slutmålet i. I tabellen kan vi avläsa vilken dess närmsta föregångare på kortaste vägen 2 är g. Föregångaren på kortaste vägen g, så kedjan ser ut som a... g i. Föregångare till g är f, så vi har kortaste vägen a... f g i. Fortsätter vi söka hela vägen tillbaka ser vi vägen a b c f g i. b) Hitta den billigaste vägen från g till b (om den finns). Vilken blir kostnaden? Vilken är vägen? Det finns ingen sådan väg. Detta märker vi genom körning av Dijkstras algoritm (eller t ex komponentuppdelning). 2 I denna graf finns bara en kortaste väg. Dijkstra kommer, om man inte modifierar den, ge en av de kortaste vägarna om det finns flera som är lika långa. 5

c - d - g 0 - Vi uppdaterar grannarna f, i. c - d - f 1 g i 3 g Utgå från nod f. Grannar: d, i. c - d 1 f f 1 g Klar i 3 g Utgå från nod d. Grannar: c, g. (g redan klar). c 3 d d 1 f Klar f 1 g Klar i 3 g Utgå från nod c (vi kunde valt i - som har samma beräknad distans 6

- också, det hade inte spelat någon roll för slutresultatet). Grannar: f. (f redan klar). c 3 d Klar d 1 f Klar f 1 g Klar i 3 g Utgå från nod i. Inga grannar. c 3 d Klar d 1 f Klar f 1 g Klar i 3 g Klar Och därmed är vi klara. Vi har inga aktiva noder att avsöka, och vi har inte kunnat nå målet. Därmed kan vi konstatera att det inte finns en väg g b i grafen. 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. Algoritmidé: se på sökningen ovan. Om vi istället för att sluta när vi hittat ett visst mål, fortsätter fylla på tabellen tills vi hittat alla kortaste vägar med start i f, så kommer vi att hitta alla nåbara noder. De nåbara noderna är samma som ovan: c, d, f, g, i. 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. 7

Idé Vi använder samma modifierade algoritm som i uppgiften ovan. Det enda vi behöver tänka på här är att vi ska räkna antalet steg, så vi tar grafen i uppgiften och ger varje båge vikten 1. Diametern blir 4. 1.4 Blandat 9. Vi ges grafen från avsnitt 7 ovan. Vilka komponenter har den? Beskriv de respektive delgraferna. Informellt (återigen: beskriv graferna!) Komponenten med noden a. Komponenten med noden b. Komponenten med noden h. Komponenten med noden i. (Uppdaterat) Komponenten med noderna c, d, f, g. 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å? Svar Bågarna (a, b), (a, c), total vikt 0 + 5 = 5. 11. Nej! Grafen har åtminstone två noder v i v j. Eftersom den är starkt sammanhängande så finns det vägar mellan varje par av noder. Så det finns (åtminstone) en väg v i v j och (åtminstone) en väg v j v i. Men då finns det en cykel v i v j v i. 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. Reflexiv. För varje nod v V så tillhör v samma komponent som sig själv. 8

Symmetrisk. Om u V och v V tillhör samma komponent (urv), så tillhör v och u samma komponent (vru). Detta är självklart när man skriver ut det, men det vi behövde bekräfta var urv vru u, v V. Transitiv. Antag att vi har noder u, v, w V sådana att urv, vrw. Vi ska visa att urw. Här behöver vi se lite mer noga på vad det innebär att de tillhör samma komponent. Då urv så tillhör u och v samma komponent i grafen. Det finns därmed en promenad u v, och en v u (det finns kanske flera, men vi intresserar oss bara för att det går att ta sig mellan noderna på något sätt). Då vrw så finns en promenad v w och vice versa. Vi vill visa att det finns en promenad u w och en w u i grafen. Sätter vi ihop resultaten ovan får vi u v w i komponenten och w v u i komponenten. Därmed tillhör u, w samma komponent, och urw. 9