Teorie grafů Bedřich Košata
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
Neorientovaný a orientovaný graf graph and directed graph (digraph)
Neorientovaný a orientovaný graf
Cvičení: graf nebo digraf Molekula Dopravní sít města Rodinný strom genealogie Odkazy mezi stránkami na webu
Prostý graf a multigraf simple graph and multigraph
Souvislý graf connected graph Z každého vrcholu vede cesta do všech ostatních vrcholů
Komponenta souvislosti connected component
Ohodnocený graf Doprava Logistika Elektrické obvody Potrubí... 10 7 11 15 18 12 Chemie? Socialní sítě? 20 15 18 22 30
Vrcholy a hrany vertices 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ň vrcholu vertex 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
"Kruhy" V souvislém grafu je počet cyklů roven k = e v + 1
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í)
Cvičení
Graf a podgraf Podgraf obsahuje podmnožinu vrcholů a hran grafu
Faktor grafu Podgraf, který obsahuje všechny vrcholy a některé hrany
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.