Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Uppgift</strong> 6<br />
Joakim Östlund<br />
Patrik Lindegrén<br />
Pontus Nyrén<br />
Daniel Holmqvist<br />
Peyman Ziari<br />
20 februari 2004<br />
1
Grundläggande grafteoretiska begrepp<br />
Grafer är en teknik för att modellera förhållanden. En graf består utav en serie<br />
punkter (även kallade noder eller hörn) som kan representera olika saker, och<br />
dessa kan bindas ihop med linjer (s.k. kanter) för att representera förhållandet<br />
mellan noderna. Man kan därför säga att en graf är en mängd noder där vissa<br />
är parvis förenade med kanter. Två noder som sitter ihop med en kant kallas<br />
också för grannar i grafen. Nodmängden i en graf kallas V, och kantmängden<br />
E. En graf kan därav anges som G = (V, E), då grafens struktur är bestämd av<br />
noderna och kanterna.<br />
Olika grafteoretiska begrepp<br />
Nedan följer ett antal grafiska begrepp och exempel:<br />
Vandring: Är en förflyttning från nod till nog längs kanter. En vandring kan<br />
beskrivas genom att man räknar upp passerande noder i ordning, t.ex. 2 - 1- 2<br />
- 5 - 8<br />
Väg: En vandring där en kant ej får passeras mer än en gång.<br />
Stig: En vandring där en nod ej får passeras mer än en gång.<br />
2
Krets: En sluten väg där man börjar och slutar på samma nod.<br />
Cykel: En sluten stig där man börjar och slutar på samma nod.<br />
Delgraf: En del av en graf där det inte finns någon väg till en annan del av<br />
samma graf.<br />
Hamiltonstig: En stig som besöker varje nod i grafen exakt en gång.<br />
3
Hamiltoncykel: En sluten Hamiltonstig. Detta är en bra teknik för att sätta<br />
ihop en effekt rutt då man vill besöka alla platser en gång för att sedan återgå<br />
till starpunkten, t.ex. för en brevbärares runda.<br />
Eulerväg: En väg som går längs varje kant i grafen exakt en gång.<br />
Eulerkrets: En sluten Eulerväg.<br />
4
Nods grad: En nods grad bestäms av antalet utgående kanter.<br />
Komplett graf: Varje nod i grafen är förbunden med varje annan nod i grafen.<br />
Komplementgraf: Består av samma noder som den ursprungliga grafen men<br />
kanter går endast mellan de noder som inte var förbundna i ursprungsgrafen.<br />
Bipartit graf: En graf där noderna är indelade i två olika grupper. Där kanterna<br />
endast förbinder mellan grupperna.<br />
Multipla kanter: Två noder som är förbundna med fler än en kant.<br />
Ögla: En kant som förbinder en nod med sig själv.<br />
Multigrafer: Grafer som innehåller öglor och/eller multipla kanter.<br />
Enkla grafer: Grafer som inte innehåller öglor eller multipla kanter.<br />
Riktad kant: En kant som endast kan passeras i en riktning.<br />
Riktad graf: En graf som endast innehåller riktade kanter.<br />
Oriktad graf: En graf som inte innehåller riktade kanter.<br />
Isomorfa grafer<br />
En graf går att beskriva på två olika sätt: Som en samling hörn och kanter,<br />
eller som en matris. Vanligast är den grafiska modellen med hörn och kanter,<br />
den är även den modellen som är mest intuitiv; men ett snabbt ögonkast är det<br />
oftast lätt att att se hur relationerna mellan olika hörn är strukturerade. Dock<br />
är den modellen inte alltid att föredra, och ibland kan det helt vara omöjlig<br />
att använda, t.ex. vid datorbehandling av en graf. Vid sådana tillfällen används<br />
matrisformen. En enkel form av detta är grannmatrisen, som för varje hörn talar<br />
om vika andra hörn det är ”granne” med.<br />
1 2 3 4<br />
1 0 1 0 0<br />
2 1 0 1 1<br />
3 0 1 0 1<br />
4 0 1 1 0<br />
Figur 1: Tre isomorfa grafer.<br />
1 2 3 4<br />
1 0 1 0 0<br />
2 1 0 1 1<br />
3 0 1 0 1<br />
4 0 1 1 0<br />
1 2 3 4<br />
1 0 1 1 1<br />
2 1 0 0 0<br />
3 1 0 0 1<br />
4 1 0 1 0<br />
Tabell 1: Grannmatriser beskrivande de tre isomorfa graferna.<br />
Även fast de tre graferna, och deras grannmatriser, ser olika ut, beskrver de<br />
samma data. Detta fenomen kallas för isomorfi. För en graf spelar det ingen roll<br />
5
hur hörnen ritas ut, så länge som kanterna går mellan de hörn som ska vara<br />
förbundna med en väg. På samma sätt spelar det ingen roll i vilken ordning man<br />
för in hörnen i grannmatrisen, vilket förklarar varför matris nummer 3 i (tabell<br />
1) ser annorlunda ut än de andra två; hörn 1 och 2 har helt enkelt bytt ”namn”.<br />
Den tyska matematikern Douglas Hofstadter har givit en informell definition<br />
av isomorfi enligt följande:<br />
”Ordet ’isomorfism’ är applicerbart när två komplexa strukturer kan<br />
läggas över varandra, på ett sådant sätt att för varje del i den ena<br />
strukturen så finns det en motsvarande del i den andra strukturen,<br />
där ’motsvarande’ betyder att de två delarna har liknande roller i<br />
sina respektive strukturer”.<br />
En mer formell definition av isomorfi lyder ”För att två grafer A och B skall<br />
vara isomorfiska, krävs det att det finns en bijektion φ mellan hörnen i A och<br />
B, sådan att elementen i grannmatriserna på plats (i, j ) och (φ(i), φ(j )) alltid<br />
är identiska.” Med andra ord, två hörn som är grannar i graf A, ska även vara<br />
grannar i graf B. För att bättre förstå detta koncept kan en definition av ordet<br />
bijektion vara på plats.<br />
En bijektion kan per definition bara finnas mellan två grafer som består av<br />
lika många hörn. Finns det olika antal hörn i graferna är det omöjligt att de<br />
beskriver samma data! En bijektion är i själva verket en kombination av surjektion<br />
och injektion.<br />
En surjektion (se fig. 2) kan inträffa mellan två olika stora grafer, så länge<br />
Figur 2: Surjektion<br />
som graf A är som mest lika stor som graf B, och sker när varje hörn i graf A<br />
motsvarar minst ett hörn i graf B, och det inte finns något hörn i graf B som<br />
inte har ett motsvarande i graf A (det vill säga, A ”täcker” hela B).<br />
En injektion (se fig. 3) kan också inträffa mellan olika stora grafer, och även<br />
här måste A vara mindre än eller lika stor som B. Vid en injektion motsvarar<br />
varje hörn i A ett unikt hörn i B (unikt så tillvida att inget annat hörn i A<br />
motsvarar samma hörn). Vid en injektion kan det finnas hörn i B som inte har<br />
en motsvarighet i A (dock måste alla hörn i A motsvara ett i B).<br />
Kombinerar man dessa två, får man en bijektion (se fig. 4). Vid en bijek-<br />
6
Figur 3: Injektion<br />
Figur 4: Bijektion<br />
tion måste alla hörn i A motsvara ett, och endast ett, unikt hörn i B, och alla<br />
hörn i B måste ha en motsvarighet i A (kom ihåg att ”motsvarar” i det fall<br />
betyder att dom uppfyller samma funktion). Därför kan inte graferna ha olika<br />
många hörn (skulle dom ha det skulle det antingen finnas hörn som inte hade<br />
en motsvarighet i den andra grafen, alt. hörn som motsvarade fler än ett annat).<br />
Träd<br />
Träd är sammanhängande grafer utan cykler. De yttersta noderna i ett träd<br />
kallas för löv. Det finns ett samband mellan antalet noder och antalet kanter i<br />
träd. Sambandet säger att antalet noder |V| är lika med antalet kanter |E| plus<br />
1, dvs:<br />
|V | = |E| + 1<br />
Plockar man bort kanter ur en sammanhängande graf med cykler, så att cyklerna<br />
försvinner, men grafen förblir sammanhängande, har man fått ett s.k.<br />
spännande träd. Det spännande trädet är en delgraf till den ursprungliga grafen.<br />
Ur en graf kan man ibland ta ut flera spännande träd. Beroende på vad<br />
trädet beskriver (sträckor, vikter, etc.), kan det finnas ett eller flera spännande<br />
träd som är de ”effektivaste”, t.ex. ett träd som beskriver den kortaste vägen ur<br />
en labyrint. De träden kallas för minimalt spännande träd. Kanternas ”längd”<br />
eller ”kostnad” kallas vikt.<br />
För att finna det minimalt spännande trädet till en graf kan Kruskals algoritm<br />
användas. Trädet konstrueras genom att en kant åt gången väljs från originalgrafen<br />
tills ett spännande träd har skapats. Den kant som väljs ska vara den lättaste<br />
7
kanten (den kant med lägst vikt) som inte bildar cykler med redan valda kanter.<br />
Rotade Träd<br />
I ett träd kan man utse en nod att vara rot, som kan tolkas som trädets startpunkt.<br />
Ett sådant träd kallas rotat träd (se fig. 5). En nods grannod som ligger<br />
närmare roten kallas dess förälder, och grannoder som ligger längre ifrån roten<br />
kallas dess barn. När ett rotat träd ritas brukar oftast roten ritas högst upp och<br />
sedan ritas barnen upp på nivån under och deras barn på nästa nivå osv.<br />
Det kan sägas att ett rotat träd är balanserat då det består av så få nivåer<br />
som möjligt. Ett rotat träds höjd kan fås fram genom att antalet nivåer räknas.<br />
Figur 5: Rotat träd.<br />
Det finns två vanliga sätt att söka igenom rotade träd, de kallas bredden-först<br />
sökning och djupet-först söking. Vid bredden-först sökning söks noderna igenom<br />
nivå för nivå, från t.ex. vänster till höger. Vid djupet-först sökning söks hela<br />
tiden först nodens barn igenom.<br />
Binära träd<br />
Ett binärt träd (se fig. 6) är ett rotat träd där varje nod kan ha max två<br />
barn. En av de vanligaste användningsområdena för binära träd är att man kan<br />
använda dem till snabba sökbara strukturer.<br />
Figur 6: Binärt träd.<br />
Ett sätt att skriva ut data i ett binärt träd är att gå genom noderna i in-ordning,<br />
då skriver man först ut värdet på den vänstra under-noden, sedan roten, och<br />
sist den högra noden. Det finns ytterligare två sätt att göra det på, pre-ordning,<br />
8
där man först skriver ut roten, och sedan under-noderna från vänster till höger,<br />
samt post-ordning där man först skriver ut under-noderna från vänster till höger,<br />
och avslutar med roten.<br />
Räkneexempel<br />
Man ska lägga ett nytt stadsnätverk i centrala Västerås. På kartan (se fig. 7)<br />
finns nätverkets noder utsatta och alla vägar mellan dem där kabel läggning är<br />
möjligt. Även längden på dessa vägar är utsatta.<br />
Figur 7: Karta över Västerås med nätverksnoder och de möjliga vägarna mellan<br />
dem utsatta.<br />
a) Avgör om det är möjlit att gå på alla markerade vägar som ligger mellan<br />
noderna utan att gå på samma väg två gånger.<br />
Lösning: Nej, figuren är sammanhängande men saknar Euler väg pga.<br />
hörnen inte har en jämn grad.<br />
b) Bestämma den minsta vägen av kabelläggning som krävs för att skapa nätverket<br />
med trädtopologi, dvs det minimalt spännande trädet av kretsen.<br />
Lösning: Man använder sig av Kruskals algoritm för att ta reda på det<br />
minimalt spännande trädet (se fig. 8)<br />
c) Då stadsnätet är lagt får man ett nät med trädtopologi. Rita om det till ett<br />
balanserat binärt träd.<br />
Lösning: Trädet skrivs med så få nivåer som möjligt (se fig. 9)<br />
9
Figur 8: Minimalt spännande träd.<br />
Figur 9: Balanserat binärt träd.<br />
10