GRAFOVÉ ALGORITMY A ZÁKLADY TEORIE SLOŽITOSTI Doc. RNDr GRAFOVÉ ALGORITMY A ZÁKLADY TEORIE SLOŽITOSTI Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky FIT České vysoké učení technické v Praze BI-GRA, LS 2013/2014, Lekce 1 Evropský sociální fond. Praha & EU: Investujeme do vaší budoucnosti Doc. Josef Kolář (ČVUT) Grafové modely
Info o výuce předmětu BI-GRA je předmět teoretického základu. Jeho hlavním cílem je seznámit se se základními grafovými pojmy a jejich vlastnostmi s grafovými algoritmy a jejich složitostí s možnostmi přizpůsobení těchto algoritmů specifickým potřebám Bodové hodnocení studia: cvičení 26 bodů (2 testy ... 20 + aktivita ... 18), minimum 13 midterm 30 bodů, minimum 15 zkouška 44 bodů (malá ... 24, velká ... 20-5, ústní ... 10-5) Cvičení mají seminární formu, kde se předpokládá základní seznámení s pojmy zavedenými na přednášce posiluje pochopení těchto pojmů a jejich vzájemných vztahů procvičují a upravují/doplňují základní grafové algoritmy píší se dva testy (midterm bude mimo rozvrh) Účast na cvičeních se kontroluje Přednášky – zadání kontrolních úloh řešením lze získat max. 10 bodů (nahrazují případnou ústní část zkoušky) řešení se odevzdávají přes Moodle (http://ocw.cvut.cz/moodle/, pokyny viz edux)
Stručný obsah předmětu Hlavní tématické celky: Neorientované a orientované grafy 70% základní grafové pojmy a jejich vlastnosti („teorie“) 30% počítačová reprezentace grafů, typické algoritmy 40% Toky v sítích 16% Algoritmy umělé inteligence 7% P/NP třídy složitosti, NP-úplné problémy 7% Většina témat je pokryta ve skriptu Kolář, J.: Teoretická informatika. Vyd. ČVUT 2009 (?)
Obsah a návaznosti ... NEBÁT SE MYSLET! BI-GRA silně navazuje na předměty BI-EFA – využívají se datové struktury vhodné pro práci s grafy, provádí se analýza složitosti algoritmů BI-ZDM – indukce v důkazech, rekurze v algoritmech O CO tedy půjde (kromě jiného)? NEBÁT SE MYSLET! JAK na to ? určitě NE jenom čtením (těchto) příprav (radši) chodit na přednášky chodit připravený(-á) na cvičení ptát se (radši dřív než pozdě nebo vůbec) sledovat Web a skripta řešit kontrolní úlohy
Několik ukázkových příkladů (problémů)
Příklad 1 – Okružní jízda s MHD Systém pražské MHD zahrnuje linky tramvají, autobusů a metra. Každou z linek máme zadánu jako seznam zastávek od jedné konečné do druhé. Předpokládejme, že z linky na linku lze přesedat pouze na stejně pojmenované zastávce. Jak zjistit, zda je možné projet všechny úseky všech linek v rámci jediné okružní jízdy s libovolným počtem přestupů tak, aby se každý usek (příp. každá zastávka) projel právě jednou? (???)
Příklad 2 – Optimální trasy v MHD Jakým minimálním počtem "otevřených" jízd je možné projet všechny úseky (zastávky) všech linek pokud to nelze zvládnout jedinou okružní jízdou? Jak určit způsob dopravy ze zastávky A do zastávky B nějakých linek se zaručeně minimálním počtem přestupů ? (???)
Příklad 3 - Dispečer hasičů Dispečer má k dispozici aktualizovanou mapu města (neprůjezdné a jednosměrné ulice, ...) zná polohu a stav n hasičských stanic. Pro hašení požáru na nějakém místě potřebuje určit k ( n) stanic, které jsou nejblíže požáru, a určit jejich příjezdovou trasu. Jak vybrat oněch k stanic a jejich trasy?
Příklad 4 – skladování ocelových nosníků Konstrukční firma používá ocelové nosníky téhož profilu v délkách L1< L2< ...< Ln, od každé délky potřebuje mít k dispozici D1, D2, ..., Dn kusů. Nevyplatí se jí skladovat všechny délky, nosníky lze řezat. Ki – cena za vybavení skladu policemi pro skladování nosníků délky Li Ci – cena jednoho nosníku délky Li Jaké nosníky vybrat pro skladování, aby se minimalizovaly náklady na skladování a cena odpadu při řezání? Vytvoříme graf s uzly označenými 0, 1, 2, ..., n a hranami (i,j) pro všechna i,j = 0, ..., n, i<j. Hrana (i,j) představuje strategii, kdy na pokrytí požadavků na nosníků v délkách Li+1, Li+2, ..., Lj, použijeme nosníky délky Lj. Jaká je cena ci,j této strategie? ci,j = Kj + Cj * (Di+1 + Di+2 + ... + Dj)
Příklad 5 – Internet Internet = obrovská (grafová) struktura Směrování paketů na internetu směrovací tabulky (statické/dynamické) algoritmy tvorby tabulek PageRank - vyhledávač Google hodnotí důležitost www stránky podle toho z kolika stránek na ni vede odkaz hodnota každého odkazu současně závisí na důležitosti výchozí stránky Obrovský graf vzájemných odkazů mezi stránkami na Webu 500*106 proměnných 2*109 položek
NEORIENTOVANÉ A ORIENTOVANÉ GRAFY
(Neorientované) grafy a grafové operace Seznámíme se s následujícími pojmy: neorientovaný graf, hrany, uzly, incidence, krajní uzly hrany multigraf, prostý graf, obyčejný graf, úplný graf, prázdný graf, diskrétní graf, izolovaný uzel podgraf, faktor, indukovaný podgraf operace s grafy (sjednocení, průnik, rozdíl, symetrická diference a doplněk), disjunktní a hranově disjunktní grafy, konečný / nekonečný graf izomorfismus grafů Skripta odstavec 2.1, str. 18 - 22
Co je to neorientovaný graf ? G = H, U, hrany grafu G, H(G), HG uzly grafu G, U(G), UG incidence, (G), G : H U U (množina neuspořádaných dvojic, též jedno- a dvoj- prvkových podmnožin množiny uzlů) (uzly vrcholy) (h) = [u, v] ... krajní uzly hrany h, u a v jsou sousedi (h1) = (h2) ... rovnoběžné hrany multigraf prostý graf = graf bez rovnoběžných hran, tzn. hranu určují její krajní uzly je zbytečné, stačí G = H, U (graf jako struktura z hran a uzlů) obyčejný graf = prostý graf bez smyček
Příklad neorientovaného grafu Nakreslení grafu G = {a,b,c,d,e,f,g,h}, {u,v,w,x,y}, = jeho grafické znázornění (v rovině) a (a)=[v,v] - smyčka v (b)=[u,v] b c (c)=[x,v] u x d (d)=[u,x] = (e) e . . . f h (h)=[x,y] g y w
Speciální případy grafů prázdný graf: , diskrétní graf: Dn= , U (jen n izolovaných uzlů) úplný graf: Kn = ( ), U, |U|=n úplný bipartitní graf Km,n má všechny hrany z m do n uzlů úplný k-partitní graf - obdobně Kk,m,n , ... , Kn1,n2,...nk ?? počet hran v takovém grafu ?? U 2 K5 K3 K4
Speciální případy grafů K3,2 K3,4 K2,4,3 kružnice C5 hvězdice
G’ G H’H & U’U & ’(h)=(h) pro všechny hH' Podgrafy podgraf ... G’ = H’, U’, ’ , G = H, U, : G’ G H’H & U’U & ’(h)=(h) pro všechny hH' faktor grafu … podgraf se všemi uzly (hranový podgraf) podgraf indukovaný podmínkou: podmnožina uzlů U1 podmnožina hran H1 vypuštění uzlů U2 vypuštění hran H2 G1 indukovaný U1 U1 H1 G2 indukovaný H1 G H2 G-H2 U2 G-U2
Operace s grafy G1 = H1, U1, 1 , G2 = H2, U2, 2 ... dva neorientované grafy sjednocení a průnik grafů G1 a G2 G1G2 = H1H2, U1U2, 12 (výsledkem musí G1G2 = H1H2, U1U2, 12 být opět grafy!!!) G1 G1 G2 G2 G1 G2 disjunktní a hranově disjunktní grafy U1U2 = (tedy i H1H2 = ) H1H2 =
Operace s grafy (pokračování) rozdíl G - G1 grafů G a G1G je takový minimální graf G2, pro který platí G = G1 G2 rozdíl pro obecné grafy G a G': G – G' = G – (G G') doplněk (obyčejného) grafu G= H, U, : -G = KU – G symetrická diference grafů G a G' : G G' = (G G') – (G G') konečný x nekonečný graf
Izomorfismus (isomorfismus) grafů Izomorfismus grafů G1 = H1, U1, 1 a G2 = H2, U2, 2 je zobrazení množiny H1 U1 na H2 U2 takové, že: / H1 : H1 H2 je bijekce / U1 : U1 U2 je bijekce zachovává incidenci, t.zn. : 1(h) = [u,v] 2((h)) = [(u), (v)] G1 G2 … izomorfní grafy (neumíme snadno zjistit!!) automorfismus grafu – izomorfismus na sebe, počet automorfismů ~ míra symetrie grafu morfismus grafů … zachovává incidenci, ale není nutně bijekcí
Jak je to s izomorfismem B G2 G1 a c b d C D G1 a G2 jsou izomorfní G1 G2 Doc. Josef Kolář (ČVUT) Doc. Josef Kolář (ČVUT) Grafové modely Grafové modely GRA, LS 2010/11, Lekce 1 21 / 40
Jak je to s izomorfismem B A G1 G2 a b c d C D G1 a G2 jsou izomorfní G1 G2 Doc. Josef Kolář (ČVUT) Doc. Josef Kolář (ČVUT) Grafové modely Grafové modely GRA, LS 2011/12, Lekce 1 22 / 40
Jak je to s izomorfismem B G1 G2 a b c d C D G1 : U1 = {A, B, C, D}, H1 = { [A,B], [A,C], [A,D], [B,D], [C,D] } IZOMORFIZMUS: (A) = c, (B) = d, (C) = a, (D) = b ([A,B])=[c,d], ([A,C])=[c,a], ([A,D])=[c,b], ([B,D])=[d,b], ([C,D])=[a,b] G2 : U2 = {a, b, c, d}, H2 = { [a,b], [a,c], [b,c], [b,d], [c,d] } Doc. Josef Kolář (ČVUT) Doc. Josef Kolář (ČVUT) Grafové modely Grafové modely
Jak je to s izomorfismem B C D G1 a b c d G2 2: A c, B a, C d, D b A B C D G1 a b c d G2 3: A b, B a, C d, D c Doc. Josef Kolář (ČVUT) Doc. Josef Kolář (ČVUT) Grafové modely Grafové modely
Jak je to s izomorfismem B C D G1 a b c d G2 4: A b, B d, C a, D c Máme celkem 4 různé izomorfismy: 1: A c, B d, C a, D b 2: A c, B a, C d, D b 3: A b, B a, C d, D c 4: A b, B d, C a, D c ? Jak jsme je zjistili ? Doc. Josef Kolář (ČVUT) Doc. Josef Kolář (ČVUT) Grafové modely Grafové modely
JAK LZE PŘIŘAZOVAT UZLY: {A,D} {b,c} A {B,C} {a,d} Jak je to s izomorfismem A B C D G1 a b c d G2 JAK LZE PŘIŘAZOVAT UZLY: {A,D} {b,c} A {B,C} {a,d} A --- b D --- c B --- a C --- d A --- b D --- c B --- d C --- a A --- c D --- b B --- a C --- d A --- c D --- b B --- d C --- a A --- b D --- c A --- c D --- b B --- a C --- d B --- d C --- a B --- a C --- d B --- d C --- a Doc. Josef Kolář (ČVUT) Doc. Josef Kolář (ČVUT) Grafové modely Grafové modely
VŠECHNY IZOMORFISMY MEZI G1 A G2 Jak je to s izomorfismem 3 A B C D E F 6 G1 4 5 1 2 G2 VŠECHNY IZOMORFISMY MEZI G1 A G2 Skupiny: krajní uzly {A,F} {1,6}, vnitřní uzly {B,C,D,E} {2,3,4,5} (pořadí!!) A 1, B 2, C 3, D 4, E 5, F 6 A 6, B 5, C 4, D 3, E 2, F 1 Doc. Josef Kolář (ČVUT) Doc. Josef Kolář (ČVUT) Grafové modely Grafové modely
VŠECHNY IZOMORFISMY MEZI G1 A G2 Jak je to s izomorfismem A Cn B C E D F G H I G1 VŠECHNY IZOMORFISMY MEZI G1 A G2 A --- 1 B --- 2 C --- 3 D --- 4 E --- 5 F --- 6 ... --- ... A --- n B --- 1 C --- 2 D --- 3 E --- 4 F --- 5 ... --- ... A --- n-1 B --- n C --- 1 D --- 2 E --- 3 F --- 4 ... --- ... A --- 2 B --- 3 C --- 4 D --- 2 E --- 3 F --- 4 ... --- ... ... 1 2 3 5 4 6 7 8 9 n Cn G2 A --- n B --- n-1 C --- n-2 D --- n-3 E --- n-4 F --- n-5 ... --- ... A --- 1 B --- n C --- n-1 D --- n-2 E --- n-3 F --- n-4 ... --- ... A --- 2 B --- 1 C --- n D --- n-1 E --- n-2 F --- n-3 ... --- ... A --- n-1 B --- n-2 C --- n-3 D --- n-4 E --- n-5 F --- n-6 ... --- ... ... CELKEM 2n IZOMORFISMŮ Doc. Josef Kolář (ČVUT) Doc. Josef Kolář (ČVUT) Grafové modely Grafové modely
{A,F} {a,c}, {B,D} {b,d}, {C,E} {e,f} Jak je to s izomorfismem A B C a b c D d e f F E G1 G2 Skupiny uzlů podle počtu incidujících hran: {A,F} {a,c}, {B,D} {b,d}, {C,E} {e,f} Postupně přiřazujeme: {Aa, Fc} (hrany [A,B] [a,d]) {Bd, Db} (hrany [B,C] [d,e]) {Ce, Ef} Získaný izomorfismus mezi G1 a G2 je jediný. Doc. Josef Kolář (ČVUT) Doc. Josef Kolář (ČVUT) Grafové modely Grafové modely
Další příklady na počty izomorfismů Kolika způsoby lze úplný graf Kn zobrazit izomorfně na sebe? Graf je zcela symetrický, za izomorfismus lze vzít libovolnou permutaci uzlů (a odpovídající přiřazení hran) => n! C9 2 1 8 3 7 4 6 5 9 Kolika způsoby lze na sebe izomorfně zobrazit kružnici Cn bez dvou hran? Graf už není symetrický, uzly tvoří přirozenou posloupnost – kontrolní otázka: Kolik to bude dělat? Kolika způsoby lze na sebe izomorfně zobrazit úplný bipartitní graf Km,n? Graf je velmi symetrický, ale uzly tvoří dvě skupiny: m!.n! (pro mn) a 2.n!.n! (pro m=n)
Kontrolní otázky 1.1 Lze určit maximální počet hran obyčejného (resp. prostého, resp. obecného) neorientovaného grafu o n uzlech ? 1.2 Jaká je role incidence v definici neorientovaného grafu ? 1.3 Kolik různých faktorů má neorientovaný graf o m hranách a n uzlech ? 1.4 Kolik různých faktorů má úplný graf Kn ? 1.5 Který graf o n uzlech má pouze jeden faktor ? 1.6 Charakterizujte podgraf úplného grafu Kn indukovaný libovolnou podmnožinou jeho uzlů. 1.7 Zvažte pravdivost tvrzení: Je-li graf G1 podgrafem grafu G , pak existuje taková podmnožina uzlů U1 , že G1 je podgrafem indukovaným touto podmnožinou uzlů. 1.8 Zvažte pravdivost tvrzení: Je-li graf G1 podgrafem grafu G , pak existuje taková podmnožina hran H1 , že G1 je podgrafem indukovaným touto podmnožinou hran.
Kontrolní otázky 1.9 Nechť G1, resp. G2 je podgraf grafu G indukovaný podmnožinou uzlů U1, resp. U2. Za jakých podmínek bude platit, že G1 G2 je roven podgrafu indukovanému podmnožinou uzlů U1 U2 ? 1.10 Kolik neizomorfních faktorů má úplný graf K4 (K5) ? 1.11 Kolika různými izomorfismy lze zobrazit graf následujícího tvaru na sebe? Graf je tvořen do kruhu propojenými r ( 3) malými kružnicemi K1, … Kr, z nichž každá obsahuje stejný počet 2s uzlů (a hran). Propojovací hrany spojují vždy uzly 1 a s+1 ze soused- ních kružnic. K2 K1 K3 . . . Kr K4
Sousedi a stupeň uzlu v grafu Seznámíme se s následujícími pojmy: sousední uzly, sousední hrany množina sousedů uzlu/podmnožiny uzlů stupeň uzlu, soubor stupňů pravidelný graf Skripta strana 22 - 23
Sousedi a stupeň uzlu v grafu dvojice sousedních uzlů dvojice sousedních hran u v x y z w r (u) = {v}, (v) = {u,x,r,w,z}, (y) = ({u,z}) = {v,w,r} ({v,w}) = {u,v,x,z,w,r} množina sousedů uzlu u . . . (u) množina sousedů podmnožiny uzlů A (A) = (u) pro u A Doc. Josef Kolář (ČVUT) Grafové modely
Stupeň uzlu v grafu (u) = 1+5+2+0+3+3+4 = 18 Stupeň (u) uzlu u je počet hran, které s uzlem incidují. Věta: (u) = 2|H| uU y x Graf Důvod: Každá hrana přispívá do celkového součtu stupňů právě dvěma jednotkami. (u) = 1+5+2+0+3+3+4 = 18 1 5 2 uU |H| = 9 3 3 4 Doc. Josef Kolář (ČVUT) Grafové modely
Stupeň uzlu v grafu Soubor stupňů grafu – (neklesající) posloupnost sestavená ze stupňů všech uzlů grafu. G1 2 3 2 Soubor stupňů grafu G1: 5 3 4 (2, 2, 2, 3, 3, 3, 4, 4, 4, 5) 4 2 4 3 Věta: G1 G2 G1 a G2 mají stejný soubor stupňů. Důvod: Obrazy hran incidujících s u jsou hrany incidující s (u). Jak určíme stupně uzlů se smyčkami ??? Doc. Josef Kolář (ČVUT) Grafové modely
Pozor: Když mají grafy G1 a G2 stejný soubor stupňů, Stupeň uzlu v grafu Pozor: Když mají grafy G1 a G2 stejný soubor stupňů, zdaleka nemusí být izomorfní. G2 (1, 2, 2, 2, 3) 2 3 1 G1 G1 G2 G3 (1, 2, 2, 3, 3, 3) 3 2 1 Doc. Josef Kolář (ČVUT) Grafové modely
Jak vypadá pravidelný graf stupně 0, 1, 2, (n-1) ? Stupeň uzlu v grafu Věta: V každém grafu je sudý počet uzlů lichého stupně. Důkaz: ... Např.: 3 4 7 1 4 Soubor stupňů: (1, 3, 4, 4, 4, 5, 6, 6, 7) 6 4 6 5 Pravidelný grafu stupně k (k 0) - všechny uzly mají stupeň právě k. Jak vypadá pravidelný graf stupně 0, 1, 2, (n-1) ? Doc. Josef Kolář (ČVUT) Grafové modely
Kontrolní otázky 1.11 Může být uzel obyčejného (resp. prostého, resp. obecného) grafu sousedem sám sobě ? 1.12 Jak souvisí stupeň uzlu obyčejného (resp. obecného) grafu s počtem sousedů tohoto uzlu? 1.13 Jak bude vypadat obyčejný graf G = H,U s n uzly a minimálním počtem hran, pro jehož nějaký uzel u platí (u) = U - {u} ? 1.14 Vyslovte tvrzení o struktuře pravidelného grafu stupně 1, resp. 2. 1.15 Může být graf se souborem stupňů (1,1,1,1,1,1,1,3,4) stromem ? 1.16 Obyčejný graf G má n1 uzlů stupně k1, dále n2 uzlů stupně k2 a už žádné další uzly. Jaký maximální počet různých automorfismů může mít graf G ? 1.17 Je možné nalézt nějaký pravidelný graf stupně 3, který má 7 uzlů ? 1.18 Nalezněte příklady alespoň dvou neizomorfních obyčejných grafů se shodným souborem stupňů (1, 1, 2, 2, 3, 3). 1.19 Nechť u je uzel stupně k grafu G a u' jeho obraz v izomorfním grafu G'. Vyslovte nějaké tvrzení o stupních sousedů uzlu u a sousedů uzlu u'.
Kontrolní otázky 1.20 Mějme graf G = H,U a libovolnou podmnožinu jeho uzlů A U. Označme jako B množinu sousedů uzlů z množiny A: B=(A). Lze tvrdit, že platí (B) = A ? 1.21 Vytvořte návod, jak pro danou neklesající posloupnost přirozených čísel (d1, d2, ..., dn) určit nějaký obecný graf (pokud existuje), jehož je tato posloupnost souborem stupňů. 1.22 Nechť G1 a G2 jsou dva různé faktory neorientovaného grafu G, označíme 1(ui), resp. 2(ui) stupeň uzlu ui v grafu G1, resp. G2. Vyjádřete pomocí 1(ui) a 2(ui) možné rozpětí hodnot pro stupeň '(ui) uzlu ui ve faktoru G' grafu G vytvořeném jako symetrická diference faktorů G1 a G2 (G' = G1 G2 ).