32
Teorie grafů Bedřich Košata

Teorie grafů - zirael.orgpython.zirael.org/graph_theory1.pdfCvičení: graf nebo digraf Molekula Dopravní sít města Rodinný strom – genealogie Odkazy mezi stránkami na webu

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

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ý grafgraph 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 multigrafsimple graph and multigraph

Souvislý grafconnected graph

● Z každého vrcholu vede cesta do všech ostatních vrcholů

Komponenta souvislosticonnected component

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

"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.