teorie grafů - zirael.orgpython.zirael.org/graph_theory1.pdfcvičení: graf nebo digraf molekula...
TRANSCRIPT
Co je to graf
● Možina bodů (uzlů) spojených "vazbami"● Uzel = vrchol (vertex, pl. vertices)● Vazba = hrana (edge)
K čemu je to dobré● Obecný model pro
– Sítě● Telekomunikační● Elektrické (minimalizace výpadků, similace obvodů, etc.)● Počítačové (routování paketů, vztah mezi internetovými
stránkami, etc.)● Zásobovací (logistika – nejlevnější, nejkratší cesta, etc.)● Dopravní (cesty – jednosměrky, propustnost, etc.)● Sociologické (vztahy mezi lidmi a skupinami lidí)● Další (vztahy mezi autory článků, citacemi článků, apod.)
– Chemické struktury
– Reakční databáze (co s čím reaguje za vzniku čeho)
Zajímavosti
● Herci – Six degrees of Kevin Bacon● Autoři - Erdős_number● Průměr webu – cca 19?● 6 degrees of separation – každý člověk je
jenom 6 spojení od každého dalšího
Cvičení: graf nebo digraf
● Molekula● Dopravní sít města● Rodinný strom – genealogie● Odkazy mezi stránkami na webu
Ohodnocený graf
● Doprava● Logistika● Elektrické obvody● Potrubí● ...● Chemie?● Socialní sítě?
30
20
15
18
22
11
10 7
15 18
12
Vrcholy a hranyvertices and edges
● Sousedi – množina vrcholů spojených hranou s aktuálním vrcholem
● Incidentní hrany – hrany vycházející z vrcholu● Okolí vrcholu – množina incidentních hran
Stupeň vrcholuvertex degree
● Počet hran spojených s vrcholem● U digrafu
– Vstupní stupeň vrcholu – počet hran mířících do vrcholu
– Výstupní stupeň vrcholu – počet hran mířících z vrcholu
Cvičení
● Je rozdíl mezi počtem incidentních hran a sousedů?
● Jaký je vztah mezi součtem stupňů všech vrcholů a počtem hran v grafu?
● Jak vypadá souvislý graf kde každý vrchol má stupeň 2
● Je možné nakreslit graf kde každý vrchol má stupeň 2, jen jeden má 1?
● Je možné aby se sešlo 5 lidí a každý z nich znal právě 3 další?
Počet hran vs. stupně vrcholů
● Součet stupňů vrcholů je roven dvojnásobku počtu hran
● Součet stupňů vrcholů musí být sudý● V každém grafu musí být sudý počet vrcholů s
lichým stupněm
Vztah mezi počtem vrcholů a hran● Symboly v následujícím textu
– e – počet hran
– v – počet vrcholů
– k – počet kruhů
– c – počet komponent
● Souvislý graf bez "kruhů"– e = v - 1
● Obecný souvislý graf– e = v + k - 1
● Obecný graf– e = v + k - c
Izomorfie grafů
● Grafy, které mají stejnou topologii jsou izomorfní
● Pro každý vrchol je možné najít "stejný" vrchol v druhém grafu
● Pomůcka – stupně vrcholů musí být stejné (podmínka nutná, nikoli postačující)
k-faktor grafu
● Faktor grafu, kde všechny vrcholy mají stejný stupeň. Např. 1-faktor, jinak také “perfect matching”
Strom a les
● Strom – souvislý graf, který nemá žádné cykly– Existuje pouze jedna cesta mezi libovolnými vrcholy
– Mnoho algoritmů je pro stromy jednodušší nebo efektivnější
● Les – nesouvislý graf, který nemá žádné cykly– Komponenty lesa jsou stromy :)
Kostra grafu
● Strom, který pokrývá všechny vrcholy a část hran grafu
● Použití– zjednodušení grafu v různých algoritmech
– linearizace ve SMILES – kruhy nejdou zapsat do řádky, stromy ano
● Minimální kostra – kostra s nejmenší vahou– nejlevnější potrubí, cesty, apod.
Cesty, sledy, tahy a kružnice
● Sled (walk) – posloupnost vrcholů a hran, které spolu sousedí
● Tah (trail) – sled, v němž se neopakuje žádná hrana
● Cesta (path) – sled, v němž se neopakuje žádný vrchol
● Kružnice (cycle) – neorientovaná uzavřená cesta
● Cyklus (cycle) – orientovaná uzavřená cesta● My budeme cyklus a kružnici zaměňovat
Historická odbočka
● Euler a problém mostů v Königsbergu● Obyvatelé se na procházkách bavili pokusy
projít všechny mosty a žádný dvakrát● Euler dokázal, že to nejde
Úkol: nakreslete graf, který popisuje následující obrázek
Eulerovské cesty a cykly
● Eulerovská cesta
Projde každou hranou právě jednou
● Eulerovský cyklus
Eulerovská cesta, která má shodný počáteční a cílový vrchol
● Navštívit cestou stejný vrchol několikrát je povoleno
Eulerovské cesty a cykly
● Eulerovský cyklus– Každý vrchol musí mít sudý stupeň – když do
vrcholu vlezeme, musíme mít k disposici I další, dosud nepoužitý, vrchol kterým zase vylezeme
● Eulerovská cesta– Pouze 2 vrcholy mohou mít lichý stupeň – ty jsou
potom počátečním a cílovým vrcholem cesty
Výše uvedené podmínky jsou nutné i postačující.
Hamiltonovské cesty
● Hamiltonovská cesta– Prochází každým vrcholem právě jednou
● Hamiltonovský cyklus– Prochází každým vrcholem právě jednou, končí tam
kde začal
● Né každá hrana musí být v Hamiltonovské cestě obsažena
Hamiltonovské cesty
● Neexistuje jednoznačná podmínka pro existenci cesty
● Existuje podmínka postačující, nikoli však nutná
deg v >= |V| / 2, pro každý vrchol
– stupeň každého vrcholu je větší nebo roven polovině celkového počtu vrcholů
● Čím víc hran, tím větší šance najít Hamiltonovskou cestu
Stupeň souvislosti
● Hranový stupeň souvislosti– Kolik hran můžu odstranit, než se graf rozpadne
– Použití – kolik překopnutých drátů vydrží elektrický rozvod, apod.
● Vrcholový stupeň souvislosti– Kolik vrcholů můžu odstranit, než se graf rozpadne
– Použití – kolik routerů v síti můžu vyřadit beze ztráty konektivity, apod.