Introduktion till datavetenskap HT 2009 F¨orel¨asningsanteckningar S6 – Grafteori Tobias Wrigstad 1 Introduktion till grafteori P˚ a den h¨ ar f¨ orel¨ asningen tar vi upp element¨ar grafteori och f¨ors¨oker introducera termer och begrepp som blir viktigare i senare kurser. Subjektivt tycker jag grafer a¨r l¨atta att ha att g¨ ora med f¨ or att de a ojliga att rita upp och f¨orst˚ a, vilket inte alla datastrukturer a¨r p˚ a ¨r m¨ samma tacksamma s¨ att. Efter den h¨ ar f¨ arel¨ asningen b¨ or du vara bekant med f¨oljande begrepp och aktiviteter. Jag passar p˚ a att introducera ett antal begrepp och koncept som ¨ar viktiga av andra anledningar, men som ocks˚ a g¨ or det enkelt att precist definiera vad en graf ¨ar. 1. Modell, icke-matematisk och matematisk 2. M¨ angd och element 3. Relation, reflexiv, irreflexiv, symmetrisk, transitiv 4. Graf, b˚ agar och noder, angr¨ ansande noder, isomorfism 5. Storlek och ordning (om graf) 6. Hur man ritar en graf 7. Digraf (riktad graf), dag (riktad acyklisk graf) 8. N¨ atverk (viktade grafer) 9. Dijkstras algoritm 2 Modell Intuitivt kan vi s¨ aga att en icke-matematisk modell ¨ar en (p˚ a ett eller flera s¨att f¨orenklad) representation av n˚ agonting. En modellbil har f¨ormodligen inte en tillfredsst¨allande instrumentbr¨ ada f¨ or den som ¨ ar intresserad av bilinteri¨orer. En karta ¨ar en modell av en geografisk verklighet. En matematisk modell ¨ ar en matematisk representation av n˚ agonting. Bra exempel h¨ar ¨ar t.ex. trivial trigonometri (l¨ aran om f¨orh˚ allandet mellan vinklar och sidor i en triangel) och geometri (l¨ aran om rumsliga samband). Med hj¨alp av geometri kan man t.ex. r¨akna ut areor p˚ a rektangul¨ ara ytor, etc. En modell f¨or kostnaden att bygga en villa i Saltsj¨obaden kan hypotetiskt vara 1.000.000 + 400.000 × antalet rum. Enligt denna modell kostar s˚ aledes en Saltsj¨ obadsvilla med fem rum 3.000.000 kronor. Den matematiska modellen f¨ or kostnaden f¨or en Saltsj¨obadsvilla ¨ar en uppenbar f¨orenkling, som t.ex. inte tar h¨ ansyn till mer lokalt l¨age som t.ex. sj¨outsikt. 1 av 6 Introduktion till datavetenskap HT 2009 M F¨ orel¨ asningsanteckningar S6 – Grafteori N unionen M snittet N ¨ Figur 1: [Overkurs] Union och snitt av m¨angderna M och N . 3 M¨ angder och element En m¨ angd ¨ ar en oordnad samling diskreta (d.v.s. olika) element, t.ex. alla studenter p˚ a DVK. En m¨ angd skrivs normalt med kommaseparerade element mellan ”krullparenteser,” d.v.s.: { 2, 3, 5, 7, 11 } ar m¨ angden av alla primtal1 mindre ¨an eller lika med 11. Den tomma m¨angden skrivs ¨ normalt ∅, men kan ¨ aven skrivas { }. Att ett element ¨ ar med i en m¨ angd betecknas normalt ∈, t.ex. 3 ∈ { 1, 2, 3, 4, 5 } samt, f¨ or icke-tillh¨ orighet, 6∈, d.v.s., 6 6∈ { 1, 2, 3, 4, 5 }. ¨ [OVERKURS] Operationer p˚ a m¨ angder L˚ at variabeln M beteckna m¨angden { 1, 2, 3 }, N beteckna m¨ angden { 2, 4, 6 } och P beteckna m¨angden { 2 }. Vi observerar att unionen av M och N , d.v.s. sammanslagningen av b˚ adas samtliga element, ar m¨ angden { 1, 2, 3, 4, 6 }. Detta skrivs normalt M ∪ N = { 1, 2, 3, 4, 5 }. (Observera att 2 ¨ f¨ orekom i b˚ ada m¨ angderna, men bara en g˚ ang i unionen.) Vi observerar ocks˚ a att snittet av M och N , d.v.s. m¨angden av de element som finns i b˚ ada m¨ angderna, ¨ ar m¨ angden { 2 }. Detta skrivs normalt M ∩ N = { 2 }. (Vi kunde ocks˚ a ha skrivit M ∩ N = P .) Union och snitt illustreras av Figur 1. Om alla element i en m¨ angd ing˚ ar i en annan m¨angd s˚ a s¨ager man att den ¨ar en delm¨ angd, vilket skrivs ⊆. Med andra ord g¨ aller att P ⊆ M (eftersom 4 finns i M ) och P ⊆ N (2 finns i N ), men ¨ aven P ⊆ P (d.v.s. en m¨angd ¨ar en delm¨angd av sig sj¨alv). Ibland talar man om strikt delm¨ angd, som inneb¨ ar att m¨angderna inte f˚ ar vara samma. Detta skrivs normalt ⊂ och med andra ord g¨ aller att P ⊂ M och P ⊂ N men inte P ⊂ P , d.v.s, P 6⊂ P . 1 Ett primtal ar ett heltal som inte g˚ ar att j¨ amnt dela med ett annat heltal. 4 ¨ ar inte ett primtal eftersom ¨ 4 = 2 × 2, d.v.s. 4 ¨ ar j¨ amnt delbart med 2. Primtal ¨ ar inte intressanta f¨ or oss under denna kurs. 2 of 6 Introduktion till datavetenskap HT 2009 4 F¨ orel¨ asningsanteckningar S6 – Grafteori Relationer En relation ¨ ar ett f¨ orh˚ allande mellan saker. H¨ar kommer vi bara att prata om bin¨ara relationer (kallas ¨ aven tv˚ a-st¨ alliga relationer), d.v.s., relationer mellan tv˚ a saker. En relation R blir d¨ arf¨ or inom matematiken en m¨angd av ordnade par, t.ex., R = { (1, 2), (1, 3), (2, 3) }. Ovanst˚ aende m¨ angd ¨ ar relationen < (mindre ¨an) f¨or alla tal mellan 1 och 3. Ur m¨angden ovan kan vi l¨ asa ut att: • 1¨ ar mindre ¨ an 2 eftersom (1,2) finns i R (d.v.s., eftersom (1, 2) ∈ R s˚ a g¨aller 1 < 2) • 1¨ ar mindre ¨ an 3 eftersom (1,3) finns i R • 2¨ ar mindre ¨ an 3 eftersom (2,3) finns i R D¨ aremot kan vi inte utl¨ asa att 1 < 1 eftersom det (helt korrekt) inte finns i R. Om vi ville l˚ ata R vara relationen ≤ (mindre ¨an eller lika med) f¨or alla tal mellan 1 och 3 f˚ ar vi R = { (1, 1), (1, 2), (1, 3), (2, 2), (2, 3), (3, 3) }. F¨ orhoppningsvis ser du sambandet mellan m¨angder, 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¨ or” som ¨ ar v¨ aldigt lik <. D˚ a kan du t.ex. g¨ora det med f¨oljande datastruktur: { (Mats, Tobias), (Love, Tobias), (Love, Mats) }. Om du ist¨ allet vill representera relationen ”n¨armaste chef” r¨acker det med att du tar bort (Love,Tobias). H¨ar ser vi igen att datavetenskapen behandlar ”how to do stuff,” i detta fall hur man kan representera vissa f¨ orh˚ allanden p˚ a ett systematiskt s¨att. 4.1 Olika typer av relationer Det ¨ ar ibland nyttigt att kategorisera olika typer av relationer. H¨ar tar vi upp ett par enkla kategorier. Reflexivitet En relation ¨ ar reflexiv om f¨or alla v¨arden v som ing˚ ar i relationen, relationen ocks˚ a inneh˚ aller (v, v). Ett uppenbart exempel ¨ar att < inte ¨ar reflexiv eftersom t.ex. 1 6< 1, men ≤ ¨ ar eftersom 1 ≤ 1. Irreflexiv En relation ¨ ar irreflexiv om inga par (v, v) ing˚ ar i den. Ett uppenbart exempel ar att < ¨ ar irreflexiv eftersom varken 1 < 1, 2 < 2 eller 3 < 3 g¨aller. ¨ Symmetrisk En relation ¨ ar symmetrisk om det f¨or varje par (v1 , v2 ) i relationen finns ett par (v2 , v1 ). Ett exempel p˚ a en s˚ adan relation ¨ar t.ex. relationen ”¨ar kollega med.” Om Tobias ¨ ar kollega med Henrik g¨aller autmatisk det omv¨anda, t.ex. Henrik ¨ar kollega med Tobias. Relationen ”¨ ar kollega med” ¨ar s˚ aledes symmetrisk. 3 of 6 Introduktion till datavetenskap HT 2009 F¨ orel¨ asningsanteckningar S6 – Grafteori Transitivitet En relation ¨ ar transitiv om (v1 , v2 ) ∈ R och (v2 , v3 ) ∈ R automatiskt medf¨or att (v1 , v3 ) ∈ R. Exempel p˚ a en transitiv relation ¨ar b˚ ade < och ”chef f¨or”: om 1 < 2 och 2 < 3 s˚ a medf¨ or det att 1 < 3; om Mats ¨ar Tobias chef och Love ¨ar Mats chef s˚ a f¨ oljer det naturligt att Love ¨aven ¨ar chef f¨or Tobias. 5 Grafer (till slut) En graf best˚ ar av en eller flera noder (¨aven kallade punkter) sammanbundna av 0 eller flera b˚ agar (¨ aven kallade kanter). I vissa grafer ¨ar b˚ agarna riktade (d.v.s. g˚ ar bara p˚ a ena h˚ allet) och i andra grafer leder de ˚ at b¨ agge h˚ all. N¨ar man ritar en riktad graf s¨atter man ut pilar p˚ a b˚ agarna i det h˚ all de leder. Graferna nedanf¨or h¨ar ¨ar inte riktade2 . n1 n2 n1 n4 n2 n3 n3 n4 Med ovanst˚ aende kunskaper ¨ ar det nu mycket l¨att att matematiskt beskriva vad en graf ar. L˚ at relationen R vara ”har en b˚ age till” och l˚ at v¨ardena i paren vara noder. D˚ a kan vi ¨ beteckna grafen ovan enligt f¨ oljande: { (n1 , n2 ), (n2 , n1 ), (n2 , n3 ), (n3 , n2 ), (n2 , n4 ), (n4 , n2 ), (n3 , n4 ), (n4 , n3 ) }. Om tv˚ a noder n1 och n2 ing˚ ar i ett par, vilket ju ¨ar fallet ovan, s˚ a s¨ager man att noderna ar sammanbundna med en b˚ age. Varje element (d.v.s. varje par) i relationen utg¨or en riktad ¨ b˚ age. F¨ oljaktligen ¨ ar (n1 , n2 ) en riktad b˚ age fr˚ an noden n1 till noden n2 . Tillsammans bildar paren (n1 , n2 ) och (n2 , n1 ) en (vanlig, dubbelriktad) b˚ age mellan noderna n1 och n2 . Tv˚ a noder ¨ ar angr¨ ansande om de ¨ar sammankopplade med en b˚ age. Grafens ordning ¨ ar antalet h¨ orn och grafens storlek ¨ar antalet kanter. Riktade grafer kan anv¨ andas f¨ or att modellera system d¨ar v¨agar inte n¨odv¨andigtvis ¨ar dubbelriktade, t.ex. ett gatun¨ at i en stad. Nedanst˚ aende riktade grafer kan beskrivas enligt f¨ oljande n1 n2 n1 n4 n2 n3 2 Graferna n4 n3 ar dessutom isomorfa, d.v.s., de ¨ ar samma graf, bara avbildade olika. ¨ 4 of 6 Introduktion till datavetenskap HT 2009 la al Ak y sb Hu 2 K 2 4 F¨ orel¨ asningsanteckningar S6 – Grafteori n ge er b n n llo se m ro Ha k ru c nt Nä n ce 2 ge a ln ko s o 2 S n a ge st ha n n 2 Vä s la la ad n sp sp k St la i m 2 r np he E e d t i d S: O Fr 1 a ist 1 1 1 1 2 Rådhuset 1 1 1 1 1 Rådmansgatan Hötorget T-centralen G:a Stan Slussen Medborgarplatsen Figur 2: Viktad graf som modellerar delar av SL:s tunnelbanen¨at, med ungef¨arlig minuttid f¨ or streckorna mellan stationerna. (Tiderna h¨ar ¨ar f¨or o¨vrigt bara ljug.) kan beskrivas enligt f¨ oljande: { (n1 , n2 ), (n2 , n3 ), (n2 , n4 ), (n3 , n4 ), (n4 , n2 ) }. respektive { (n1 , n2 ), (n2 , n3 ), (n2 , n4 ), (n3 , n4 ) }. Den h¨ ogra grafen ¨ ar en s˚ a kallad riktad acyklisk graf. Det betyder att grafen inte innh˚ aller cykler, d.v.s., om man g˚ ar igenom grafen kan man aldrig f¨olja en b˚ age och komma tillbaka en nod som man redan har bes¨ okt3 . Det betyder t.ex. att man inte beh¨over oroa sig f¨or att hamna i en o¨ andlig loop n¨ ar man f¨ors¨oker g˚ a igenom grafen. 6 Viktade grafer Viktade grafer, ¨ aven kallade n¨ atverk, ¨ar grafer d¨ar varje b˚ age f¨orsetts med en vikt, normalt ett decimaltal. Ponera att man vill representera Stockholms tunnelbanen¨at som en graf och sedan vill anv¨ anda den f¨ or att r¨ akna ut tiden det tar att ˚ aka mellan tv˚ a h˚ allplatser. I en vanlig graf kan man bara m¨ ata avst˚ andet i antalet noder (h˚ allplatser) som man passerar. Om alla str¨ ackor i tunnelbanen¨ atet tar lika l˚ ang tid att ˚ aka, s¨ag 2 minuter, ¨ar detta en fullt duglig 3 Omv¨ ant kan man s¨ aga att en graf ¨ ar cyklisk om det finns en v¨ ag av minst 2 olika b˚ agar fr˚ an n˚ agon nod tillbaka till sig sj¨ alv. 5 of 6 Introduktion till datavetenskap HT 2009 F¨ orel¨ asningsanteckningar S6 – Grafteori l¨ osning; r¨ akna fram antalet stationer p˚ a v¨agen mellan de tv˚ a punkterna och multiplicera det med 2. Verkligheten som vi vill modellera ¨ar tyv¨arr i regel mer komplicerad. Med en viktad graf kan vi f¨ orse varje b˚ age med den tid det tar i minuter att ˚ aka mellan tv˚ a stationer. Figur 2 visar ett exempel f¨or en del av SL-kartan. Om man nu vill r¨ akna ut tiden det tar att ˚ aka mellan, s¨ag Kista och Medborgarplatsen, kan man bara traversera de tv˚ a m¨ ojliga v¨agarna (bl˚ a linje utan byte samt, bl˚ a linje med byte till gr¨ on linje i Fridhemsplan, jag utesluter att man vill ˚ aka runt ett eller fler varv i den bl˚ a-gr¨ ona cykeln) och f˚ a fram 19 respektive 21 minuter. Ett annat exempel p˚ a en viktad graf a¨r t.ex. en graf som visar studenters v¨ag genom en utbildning (varje nod a a utg˚ aende b˚ agar betecknar ett kursval) d¨ar ¨r en kurs, fler a¨n tv˚ vikterna avser procentandelen av studenterna som g¨or just det valet. Ytterligare ett exempel kan vara ett n¨atverk av personer d¨ar tv˚ a personer har en b˚ age mellan sig om de k¨ anner varandra. En vikt kan i detta sammanhang vara ett v¨arde p˚ a hur bra ¨overens man kommer, s¨ ag i intervallet −10 till 10. Utifr˚ an detta n¨atverk kan man sedan r¨ akna ut om det ¨ ar b¨ ast att g˚ a p˚ a Stinas eller Kalles fest. (Hur?) 7 Dijkstras algoritm Edsger Dijkstra var en mycket k¨ and och inflytelserik holl¨andsk datavetare. Dijkstras algoritm formulerade han 1959 och a r en algoritm f¨or att hitta den ”billigaste” v¨agen fr˚ an en nod till ¨ alla andra noder i en viktad riktad graf.4 Dijkstras algoritm kan enkelt beskrivas: 1. S¨ att kostnaden f¨ or startnoden till 0 och kostnaden f¨or o¨vriga noder till ∞5 . Startnoden ar ”aktuell nod.” ¨ 2. Fr˚ an aktuell nod, r¨ akna ut avst˚ aendet till alla angr¨ansande noder som ¨annu inte ”avklarats” genom att ta kostnaden f¨or den aktuella noden plus kostanden p˚ a b˚ agen till den angr¨ ansande noden. Om den framr¨aknade kostnaden ¨ar mindre ¨an den nuvarande, uppdatera dess v¨ arde till den nya framr¨aknade. 3. N¨ ar du har gjort f¨ oreg˚ aende ber¨akning f¨or alla angr¨ansande noder skall du markera aktuell nod som avklarad. En s˚ adan nod kommer vi aldrig att titta p˚ a igen. Vi vet redan dess minimala kostnad, d.v.s., det minimala avst˚ andet fr˚ an startnoden till den. 4. Ny aktuell nod ¨ ar den obes¨okta nod som ligger n¨armast startnoden. Forts¨att fr˚ an punkt 2. Om alla noder ¨ ar markerade som avklarade ¨ar algoritmen klar. 8 Tentan Dijkstras algoritm tas upp p˚ a senare kurser. Du beh¨over inte kunna den p˚ a tentan. D¨aremot beh¨ over du f¨ orst˚ a vad en graf ¨ ar, vad en modell ¨ar, etc. och varf¨or de ¨ar viktiga i ett datavetenskapligt sammanhang. Du beh¨over dock inte kunna f¨orklara dem p˚ a samma formella s¨ att som presenterats h¨ ar. 4 Den intresserade studenten kan notera att f¨ or att Dijkstras algoritm skall fungera m˚ aste man ha positiva b˚ agkostnader – varf¨ or? 5 Minns att ∞ betyder o¨ andligheten. M˚ anga programmeringsspr˚ ak kan inte uttrycka detta v¨ arde. D˚ a¨ ar det bra att anv¨ anda ett annat v¨ arde f¨ or att representera o¨ andligheten, t.ex. −1 eftersom det inte ¨ ar en m¨ ojlig strecka och f¨ oljaktligen inte kan r˚ aka komma upp naturligt i utr¨ akningen. 6 of 6
© Copyright 2024