Föreläsningsanteckningar S6 Grafteori



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

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

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

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.

Algebra och Diskret Matematik A (svenska)

729G04 - Diskret matematik. Lektion 4

Övningshäfte 3: Funktioner och relationer

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

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

TNK049 Optimeringslära

Föreläsning 1: Tal, mängder och slutledningar

Graärgning och kromatiska formler

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

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

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

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

Föreläsning 5: Grafer Del 1

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

Relationer och funktioner

DEL I. Matematiska Institutionen KTH

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

729G04 - Diskret matematik. Hemuppgift.

Föreläsning 11. Giriga algoritmer

729G04 - Diskret matematik. Lektion 4

Lösning till tentamensskrivning i Diskret Matematik för CINTE och CMETE, m fl, SF1610, tisdagen den 2 juni 2015, kl

Explorativ övning 9 RELATIONER OCH FUNKTIONER

I kursen i endimensionell analys är mängden av reella tal (eng. real number), R, fundamental.

1 Föreläsning Implikationer, om och endast om

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

DEL I. Matematiska Institutionen KTH

Filosofisk logik Kapitel 15. Robin Stenwall Lunds universitet

Föreläsningsanteckningar F6

Diskret matematik: Övningstentamen 4

, S(6, 2). = = = =

Lösning av tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, tisdagen den 27 maj 2014, kl

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

Tentamen Datastrukturer, DAT037 (DAT036)

Mängder, funktioner och naturliga tal

Mängder och kardinalitet

Algebra och Diskret Matematik A (svenska)

Matematik för språkteknologer

Finaltävling i Lund den 19 november 2016

Begreppen "mängd" och "element" är grundläggande begrepp i matematiken.

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

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

Block 1 - Mängder och tal

Algebra och kryptografi Facit till udda uppgifter

Föreläsning Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

Induktion, mängder och bevis för Introduktionskursen på I

Begreppen "mängd" och "element" är grundläggande begrepp i matematiken.

Trädstrukturer och grafer

Diskret matematik: Övningstentamen 1

Kap. 8 Relationer och funktioner

Tentamen i TDDC75 Diskreta strukturer

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 11 april, 2002

Kvalificeringstävling den 30 september 2008

2. 1 L ä n g d, o m k r e t s o c h a r e a

Tentamen TMV210 Inledande Diskret Matematik, D1/DI2

SKOGLIGA TILLÄMPNINGAR

Läsanvisning till Discrete matematics av Norman Biggs - 5B1118 Diskret matematik

Tentamen Datastrukturer, DAT037 (DAT036)

FÖRELÄSNING 11 DATALOGI I

ÄNDLIGT OCH OÄNDLIGT AVSNITT 4

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

Övningshäfte 2: Induktion och rekursion

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

Matematik 5 Kap 2 Diskret matematik II

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

Algebra I, 1MA004. Lektionsplanering

Relationer och funktioner

729G04: Inlämningsuppgift i Diskret matematik

Tentamen Datastrukturer (DAT037)

LMA033/LMA515. Fredrik Lindgren. 4 september 2013

Föreläsning 8 Datastrukturer (DAT037)

Grundidén är att våra intuitiva rationella tal (bråk) alltid kan fås som lösningar till ekvationer av typen α ξ = β, där α och β är tal Z och α 0.

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

Ekvivalensrelationer

Föreläsningsanteckningar och övningar till logik mängdlära

Kapitel 1. betecknas detta antal med n(a). element i B; bet. A B. Den tomma mängden är enligt överenskommelsen en delmängd. lika; bet. A = B.

Föreläsning 6 Datastrukturer (DAT037)

1.1 Polynomfunktion s.7-15

729G04: Inlämningsuppgift Diskret matematik

MA2047 Algebra och diskret matematik

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

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 22 augusti, 2001

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

Mängder. 1 Mängder. Grunder i matematik och logik (2015) 1.1 Grundläggande begrepp. 1.2 Beskrivningar av mängder. Marco Kuhlmann

Detta är en lektion utvecklad under Kleindagarna 2011, vidareutvecklad och testad i klassrum av

Definitionsmängd, urbild, domän

Med denna aktivitet försöker jag

Resultat av kursvärdering

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

Föreläsning 7 Datastrukturer (DAT037)

Lösning till tentamensskrivning på kursen Diskret Matematik, moment B, för D2 och F, SF1631 och SF1630, den 1 juni 2011 kl

2 Dataanalys och beskrivande statistik

Institutionen för matematik, KTH Mats Boij. Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 20 december, 2000

MA2047 Algebra och diskret matematik

Grafer och grannmatriser

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

Transkript:

HT 009 Tobias Wrigstad Introduktion till grafteori På den här föreläsningen tar vi upp elementär grafteori och försöker introducera termer och begrepp som blir viktigare i senare kurser. Subjektivt tycker jag grafer är lätta att ha att göra med för att de är möjliga att rita upp och förstå, vilket inte alla datastrukturer är på samma tacksamma sätt. Efter den här färeläsningen bör du vara bekant med följande begrepp och aktiviteter. Jag passar på att introducera ett antal begrepp och koncept som är viktiga av andra anledningar, men som också gör det enkelt att precist definiera vad en graf är.. Modell, icke-matematisk och matematisk. Mängd och element 3. Relation, reflexiv, irreflexiv, symmetrisk, transitiv 4. Graf, bågar och noder, angränsande noder, isomorfism 5. Storlek och ordning (om graf) 6. Hur man ritar en graf 7. Digraf (riktad graf), dag (riktad acyklisk graf) 8. Nätverk (viktade grafer) 9. Dijkstras algoritm Modell Intuitivt kan vi säga att en icke-matematisk modell är en (på ett eller flera sätt förenklad) representation av någonting. En modellbil har förmodligen inte en tillfredsställande instrumentbräda för den som är intresserad av bilinteriörer. En karta är en modell av en geografisk verklighet. En matematisk modell är en matematisk representation av någonting. Bra exempel här är t.ex. trivial trigonometri (läran om förhållandet mellan vinklar och sidor i en triangel) och geometri (läran om rumsliga samband). Med hjälp av geometri kan man t.ex. räkna ut areor på rektangulära ytor, etc. En modell för kostnaden att bygga en villa i Saltsjöbaden kan hypotetiskt vara.000.000 + 400.000 antalet rum. Enligt denna modell kostar således en Saltsjöbadsvilla med fem rum 3.000.000 kronor. Den matematiska modellen för kostnaden för en Saltsjöbadsvilla är en uppenbar förenkling, som t.ex. inte tar hänsyn till mer lokalt läge som t.ex. sjöutsikt. av 6

HT 009 M N unionen M N snittet Figur : [Överkurs] Union och snitt av mängderna M och N. 3 Mängder och element En mängd är en oordnad samling diskreta (d.v.s. olika) element, t.ex. alla studenter på DVK. En mängd skrivs normalt med kommaseparerade element mellan krullparenteser, d.v.s.: {, 3, 5, 7, } är mängden av alla primtal mindre än eller lika med. Den tomma mängden skrivs normalt, men kan även skrivas { }. Att ett element är med i en mängd betecknas normalt, t.ex. samt, för icke-tillhörighet,, d.v.s., 3 {,, 3, 4, 5 } 6 {,, 3, 4, 5 }. [ÖVERKURS] Operationer på mängder Låt variabeln M beteckna mängden {,, 3 }, N beteckna mängden {, 4, 6 } och P beteckna mängden { }. Vi observerar att unionen av M och N, d.v.s. sammanslagningen av bådas samtliga element, är mängden {,, 3, 4, 6 }. Detta skrivs normalt M N = {,, 3, 4, 5 }. (Observera att förekom i båda mängderna, men bara en gång i unionen.) Vi observerar också att snittet av M och N, d.v.s. mängden av de element som finns i båda mängderna, är mängden { }. Detta skrivs normalt M N = { }. (Vi kunde också ha skrivit M N = P.) Union och snitt illustreras av Figur. Om alla element i en mängd ingår i en annan mängd så säger man att den är en delmängd, vilket skrivs. Med andra ord gäller att P M (eftersom 4 finns i M) och P N ( finns i N), men även P P (d.v.s. en mängd är en delmängd av sig själv). Ibland talar man om strikt delmängd, som innebär att mängderna inte får vara samma. Detta skrivs normalt och med andra ord gäller att P M och P N men inte P P, d.v.s, P P. Ett primtal är ett heltal som inte går att jämnt dela med ett annat heltal. 4 är inte ett primtal eftersom 4 =, d.v.s. 4 är jämnt delbart med. Primtal är inte intressanta för oss under denna kurs. of 6

HT 009 4 Relationer En relation är ett förhållande mellan saker. Här kommer vi bara att prata om binära relationer (kallas även två-ställiga relationer), d.v.s., relationer mellan två saker. En relation R blir därför inom matematiken en mängd av ordnade par, t.ex., R = { (, ), (, 3), (, 3) }. Ovanstående mängd är relationen < (mindre än) för alla tal mellan och 3. Ur mängden ovan kan vi läsa ut att: är mindre än eftersom (,) finns i R (d.v.s., eftersom (, ) R så gäller < ) är mindre än 3 eftersom (,3) finns i R är mindre än 3 eftersom (,3) finns i R Däremot kan vi inte utläsa att < eftersom det (helt korrekt) inte finns i R. Om vi ville låta R vara relationen (mindre än eller lika med) för alla tal mellan och 3 får vi R = { (, ), (, ), (, 3), (, ), (, 3), (3, 3) }. Förhoppningsvis ser du sambandet mellan mängder, relationer och programmering. Om du t.ex. vill skriva ett program som hanterar hierarkier i en organisation, kan du representera det med relationen chef för som är väldigt lik <. Då kan du t.ex. göra det med följande datastruktur: { (Mats, Tobias), (Love, Tobias), (Love, Mats) }. Om du istället vill representera relationen närmaste chef räcker det med att du tar bort (Love,Tobias). Här ser vi igen att datavetenskapen behandlar how to do stuff, i detta fall hur man kan representera vissa förhållanden på ett systematiskt sätt. 4. Olika typer av relationer Det är ibland nyttigt att kategorisera olika typer av relationer. Här tar vi upp ett par enkla kategorier. Reflexivitet En relation är reflexiv om för alla värden v som ingår i relationen, relationen också innehåller (v, v). Ett uppenbart exempel är att < inte är reflexiv eftersom t.ex., men är eftersom. Irreflexiv En relation är irreflexiv om inga par (v, v) ingår i den. Ett uppenbart exempel är att < är irreflexiv eftersom varken <, < eller 3 < 3 gäller. Symmetrisk En relation är symmetrisk om det för varje par (v, v ) i relationen finns ett par (v, v ). Ett exempel på en sådan relation är t.ex. relationen är kollega med. Om Tobias är kollega med Henrik gäller autmatisk det omvända, t.ex. Henrik är kollega med Tobias. Relationen är kollega med är således symmetrisk. 3 of 6

HT 009 Transitivitet En relation är transitiv om (v, v ) R och (v, v 3 ) R automatiskt medför att (v, v 3 ) R. Exempel på en transitiv relation är både < och chef för : om < och < 3 så medför det att < 3; om Mats är Tobias chef och Love är Mats chef så följer det naturligt att Love även är chef för Tobias. 5 Grafer (till slut) En graf består av en eller flera noder (även kallade punkter) sammanbundna av 0 eller flera bågar (även kallade kanter). I vissa grafer är bågarna riktade (d.v.s. går bara på ena hållet) och i andra grafer leder de åt bägge håll. När man ritar en riktad graf sätter man ut pilar på bågarna i det håll de leder. Graferna nedanför här är inte riktade. n n n n 4 n n 3 n 3 n 4 Med ovanstående kunskaper är det nu mycket lätt att matematiskt beskriva vad en graf är. Låt relationen R vara har en båge till och låt värdena i paren vara noder. Då kan vi beteckna grafen ovan enligt följande: { (n, n ), (n, n ), (n, n 3 ), (n 3, n ), (n, n 4 ), (n 4, n ), (n 3, n 4 ), (n 4, n 3 ) }. Om två noder n och n ingår i ett par, vilket ju är fallet ovan, så säger man att noderna är sammanbundna med en båge. Varje element (d.v.s. varje par) i relationen utgör en riktad båge. Följaktligen är (n, n ) en riktad båge från noden n till noden n. Tillsammans bildar paren (n, n ) och (n, n ) en (vanlig, dubbelriktad) båge mellan noderna n och n. Två noder är angränsande om de är sammankopplade med en båge. Grafens ordning är antalet hörn och grafens storlek är antalet kanter. Riktade grafer kan användas för att modellera system där vägar inte nödvändigtvis är dubbelriktade, t.ex. ett gatunät i en stad. Nedanstående riktade grafer kan beskrivas enligt följande n n n n 4 n n 4 n 3 n 3 Graferna är dessutom isomorfa, d.v.s., de är samma graf, bara avbildade olika. 4 of 6

HT 009 Akalla Husby 4 Kista Hallonbergen Näckrosen Solna centrum Västa skogen Stadshagen Fridhemsplan Rådhuset S:t Eriksplan Odenplan Rådmansgatan Hötorget T-centralen G:a Stan Slussen Medborgarplatsen Figur : Viktad graf som modellerar delar av SL:s tunnelbanenät, med ungefärlig minuttid för streckorna mellan stationerna. (Tiderna här är för övrigt bara ljug.) kan beskrivas enligt följande: respektive { (n, n ), (n, n 3 ), (n, n 4 ), (n 3, n 4 ), (n 4, n ) }. { (n, n ), (n, n 3 ), (n, n 4 ), (n 3, n 4 ) }. Den högra grafen är en så kallad riktad acyklisk graf. Det betyder att grafen inte innhåller cykler, d.v.s., om man går igenom grafen kan man aldrig följa en båge och komma tillbaka en nod som man redan har besökt 3. Det betyder t.ex. att man inte behöver oroa sig för att hamna i en oändlig loop när man försöker gå igenom grafen. 6 Viktade grafer Viktade grafer, även kallade nätverk, är grafer där varje båge försetts med en vikt, normalt ett decimaltal. Ponera att man vill representera Stockholms tunnelbanenät som en graf och sedan vill använda den för att räkna ut tiden det tar att åka mellan två hållplatser. I en vanlig graf kan man bara mäta avståndet i antalet noder (hållplatser) som man passerar. Om alla sträckor i tunnelbanenätet tar lika lång tid att åka, säg minuter, är detta en fullt duglig 3 Omvänt kan man säga att en graf är cyklisk om det finns en väg av minst olika bågar från någon nod tillbaka till sig själv. 5 of 6

HT 009 lösning; räkna fram antalet stationer på vägen mellan de två punkterna och multiplicera det med. Verkligheten som vi vill modellera är tyvärr i regel mer komplicerad. Med en viktad graf kan vi förse varje båge med den tid det tar i minuter att åka mellan två stationer. Figur visar ett exempel för en del av SL-kartan. Om man nu vill räkna ut tiden det tar att åka mellan, säg Kista och Medborgarplatsen, kan man bara traversera de två möjliga vägarna (blå linje utan byte samt, blå linje med byte till grön linje i Fridhemsplan, jag utesluter att man vill åka runt ett eller fler varv i den blå-gröna cykeln) och få fram 9 respektive minuter. Ett annat exempel på en viktad graf är t.ex. en graf som visar studenters väg genom en utbildning (varje nod är en kurs, fler än två utgående bågar betecknar ett kursval) där vikterna avser procentandelen av studenterna som gör just det valet. Ytterligare ett exempel kan vara ett nätverk av personer där två personer har en båge mellan sig om de känner varandra. En vikt kan i detta sammanhang vara ett värde på hur bra överens man kommer, säg i intervallet 0 till 0. Utifrån detta nätverk kan man sedan räkna ut om det är bäst att gå på Stinas eller Kalles fest. (Hur?) 7 Dijkstras algoritm Edsger Dijkstra var en mycket känd och inflytelserik holländsk datavetare. Dijkstras algoritm formulerade han 959 och är en algoritm för att hitta den billigaste vägen från en nod till alla andra noder i en viktad riktad graf. 4 Dijkstras algoritm kan enkelt beskrivas:. Sätt kostnaden för startnoden till 0 och kostnaden för övriga noder till 5. Startnoden är aktuell nod.. Från aktuell nod, räkna ut avståendet till alla angränsande noder som ännu inte avklarats genom att ta kostnaden för den aktuella noden plus kostanden på bågen till den angränsande noden. Om den framräknade kostnaden är mindre än den nuvarande, uppdatera dess värde till den nya framräknade. 3. När du har gjort föregående beräkning för alla angränsande noder skall du markera aktuell nod som avklarad. En sådan nod kommer vi aldrig att titta på igen. Vi vet redan dess minimala kostnad, d.v.s., det minimala avståndet från startnoden till den. 4. Ny aktuell nod är den obesökta nod som ligger närmast startnoden. Fortsätt från punkt. Om alla noder är markerade som avklarade är algoritmen klar. 8 Tentan Dijkstras algoritm tas upp på senare kurser. Du behöver inte kunna den på tentan. Däremot behöver du förstå vad en graf är, vad en modell är, etc. och varför de är viktiga i ett datavetenskapligt sammanhang. Du behöver dock inte kunna förklara dem på samma formella sätt som presenterats här. 4 Den intresserade studenten kan notera att för att Dijkstras algoritm skall fungera måste man ha positiva bågkostnader varför? 5 Minns att betyder oändligheten. Många programmeringsspråk kan inte uttrycka detta värde. Då är det bra att använda ett annat värde för att representera oändligheten, t.ex. eftersom det inte är en möjlig strecka och följaktligen inte kan råka komma upp naturligt i uträkningen. 6 of 6