inf 295 forelesning 15 - kap 9 grafer
DESCRIPTION
INF 295 Forelesning 15 - kap 9 Grafer. Hans Fr. Nordhaug (Ola Bø). Innhold. Definisjoner Graf Rettet eller urettet Sammenhengende, sterkt eller svakt Vei Lengde og kostnad Enkel eller ikke enkel Syklisk eller asyklisk Grad Anvendelser Grafrepresentasjoner Topologisk sortering. - PowerPoint PPT PresentationTRANSCRIPT
INF 295 Forelesning 15 - kap 9
Grafer
Hans Fr. Nordhaug
(Ola Bø)
Innhold Definisjoner
Graf Rettet eller urettet Sammenhengende, sterkt eller svakt
Vei Lengde og kostnad Enkel eller ikke enkel Syklisk eller asyklisk
Grad Anvendelser Grafrepresentasjoner Topologisk sortering
Graf
Definisjoner
En graf G=(V,E) består av En mengde noder (vertices) V En mengde kanter (edges) E |V| er antall noder |E| er antall kanter
En kant er et par av noder (u,v) En kant modellerer at u er relatert til v En kant kan ha vekt eller kostnad
Rettet eller urettet graf Hvis rekkefølgen u, v har betydning sier vi at grafen er rettet,
ellers er den urettet En rettet (directed) graf kalles en digraf
Graf
Definisjoner
En vei er en sekvens av noder w1, w2, w3, slik at alle (wi, wi+1) er en kant Veilengden er antall kanter Veikostnaden er summen av kostnader (vekter) langs kantene. Vei fra wi til wi har lengde 0 - en slik vei kalles en loop. (ikke
betraktet i dette kurset) En vei er enkel hvis alle nodene er forskjellige (unntatt muligens
første og siste) En løkke (sykel) i en rettet graf har v1=vn og lengde >0
Hvis veien er enkel er det en enkel løkke I en urettet graf er u,v,u ikke regnet som en sykel Hvis grafen er rettet, kreves det at alle kanter i løkken være
forskjellig
Definisjoner
En rettet graf er asyklisk dersom den ikke har noen løkker
DAG er forkortelse for Directed Acyclic Graph - Rettet asyklisk graf
En urettet graf er sammenhengende hvis det finnes en vei fra hver node til alle andre noder
Rettet graf kan være Svakt sammenhengende
hvis tilsvarende urettet graf er sammenhengende Sterkt sammenhengende
hvis det finnes en vei fra hver node til alle andre noder
Definisjoner
Grad Urettet graf
Graden er antall kanter noden er en del av Rettet graf
Inngraden er antall innkanter Utgraden er antall utkanter
Anvendelser Vanlig bruk av grafer
Trær er grafer Noder er veikryss, kanter er veier
Kostnad kan være avstand, fartsbegrensning, tranghet Noder er flyplasser, kanter er flyruter
Kostnad kan være avstand, pris eller tid Noder er kurs, kanter uttrykker bygger på Noder er aktiviteter, kanter uttrykker avhengighet Kanter er aktiviteter med kostnad lik tidsforbruk, Noder
er milepæler
Anvendelser
Noder er reservoarer, Kanter er rørledninger Noder er sammenkoplinger, Kanter er ledninger Noder er personer, Kanter er forbindelser Noder er personer, Kanter er slektskap Noder er objekter, Kanter er meldinger Noder er rom, kanter er dører Noder er waypoints, kanter er kurser
Representasjon av grafer
Naboskapsmatrise A(u,v)=true hvis det går kant fra u til v eller A(u,v)=5, hvis kostnaden for kanten u,v er fem
Ingen vei indikeres med Størrelse er O(|V|2) -
uspiselig ved store grafer med få veier brukbart ved tette grafer
Naboskapslister. Hver node har en liste over naboer Egnet ved glisne grafer
Egen naboskapsmatrise (Java spesifikk) Hver node har en array av naboer Egnet når naboene er kjent når noden initieres
Topologisk sortering
Ordning av noder fra en DAG slik at hvis det går en sti fra node a til node b, så kommer b etter a i ordninga Umulig på sykliske grafer Ordninga er ikke nødvendigvis entydig
Algoritme Gi alle noder en inngrad tilsvarende antall inn-kanter Start med node med inngrad=0 For hver utkant, reduser inngraden i tilsvarende nabo Fortsett til det ikke er flere noder igjen. I utgangspunktet O(|V|2)
kan forbedres med kø av noder med inngrad 0 blir da O(|E|+|V|)
Traversering av grafer (vs. trær) Dybde først
Prøv stadig videre til neste node Bredde først
Prøv alle noder som kan rekkes fra en node i tur og orden Å besøke en node
i et tre er å behandle nodens data i en graf er å merke den som besøkt!
Traversering En tretraversering besøker alle treets noder En graftraversering som begynner i en bestemt node besøker
bare noder den kan rekke Er grafen sammenhengende blir alle noder besøkt i en slik
traversering.
Dybde først
Gitt startnoden besøkes først startnoden, så en nabo av startnoden, så en nabo av en nabo av startnoden osv. til node med ingen ubesøkte naboer. Går så et skritt tilbake og prøver å finne ubesøkte naboer der.
Kan implementeres rekursivt.
Bredde først
Gitt startnoden, besøkes først alle naboer til startnoden. Deretter besøkes alle naboene til naboene til startnoden - inntil alle tilgjengelige noder er besøkt.
Implementeres ved hjelp av kø. En node merkes som besøkt når den legges i køen. Prosedyre:
Plassere startnoden i køen
Gjenta til køen er tom
Hent node fra køen
Legg alle ubesøkte naboer i køen
Oppsummering Definisjoner
Graf Rettet eller urettet Sammenhengende, sterkt eller svakt
Vei Lengde og kostnad Enkel eller ikke enkel Syklisk eller asyklisk
Grad Anvendelser Grafrepresentasjoner Topologisk sortering