Hledání cyklů Komunikační sítě Elektrické obvody Odběr surovin a výrobků v průmyslové výrobě Logistika Chemie ….
Hledání cyklů v chemii Predikce chemických vlastností molekuly Studium reaktivity a chemická syntéza –přítomnost cyklu snižuje flexibilitu molekuly –cykly omezují počet možností prostorového uspořádání molekuly Vytváření názvů sloučenin –cykly = výchozí struktury při tvorbě názvu
Molekulový graf obecný graf Informace, nutné pro hledání cyklů: –množina atomů –vazby mezi nimi (není nutné znát jejich násobnost) => K hledání cyklů zjednodušíme na obecný graf Molekulový graf:MG = (V, E, L, , ) Obecný graf příslušný MG:G = (V, H), kde H obsahuje všechny hrany z E, ale násobné pouze jedenkrát. Poznámka: Dále budeme značit |V| = N a |H| = M.
Molekulový graf obecný graf - příklad Molekulový graf:Obecný graf:
Množina cyklů Typy množin cyklů: Množina základních cyklů (Fundamental Set of Rings, FSR) Množina všech cyklů (Set of All Rings, SAR) Množina nejmenších základních cyklů (Smallest Set of Smallest Rings, SSSR) Zápis množiny cyklů grafu G = (V, H): C = {R 1, …, R c }, kde c je počet cyklů R i je cyklus, R i H a i 1 … c
Množina základních cyklů (FSR) Obsahuje minimální počet cyklů, které pokrývají všechny kruhové vrcholy a hrany daného grafu. Prvky FSR (základní cykly) jsou nezávislé =žádný cyklus ve FRS nelze vyjádřit jako kombinaci ostatních cyklů této množiny Celkový počet základních (tedy nezávislých) cyklů je roven cyklomatickému číslu c: c = M - N + 1
Konstrukce FSR Sestrojení kořenového stromu grafu: –zvolíme libovolný vrchol v V –potomky kořene jsou vrcholy, spojené s vrcholem v hranou –prvky další vrstvy jsou vrcholy, spojené hranou s potomky kořene –výše uvedený postup se opakuje až do okamžiku, kdy jsou do stromu zapojeny všechny vrcholy
Konstrukce FSR II Vlastnosti kořenového stromu: –strom obsahuje N vrcholů a N-1 hran => M - N + 1 hran není ve stromu zařazeno tyto hrany se nazývají hrany kruhového uzávěru –počet základních cyklů grafu = počet hran kruhového uzávěru
Konstrukce FSR III Každá hrana kruhového uzávěru generuje jeden základní cyklus a to následovně: –zvolíme libovolnou hranu a postavíme se ve stromu na její dva koncové vrcholy –aplikujeme metodu zpětného prohledávání do vyšších úrovní stromu směrem ke kořeni –nalezené hrany přidáváme do nově vytvořeného cyklu –jakmile se dvě větve spojí ve společném vrcholu, proces končí Opakováním této jednoduché procedury pro všechny hrany kruhového uzávěru vytvoříme množinu základních cyklů.
Konstrukce FSR - příklad Graf: Kořenový strom (s kořenem v 1 ): Hrany kruhového uzávěru: e 7, e 8, e 9 Cykly grafu: R 1 = {e 1, e 4, e 7, e 5, e 2 }, R 2 = {e 2, e 5, e 8, e 6, e 3 }, R 3 = {e 1, e 4, e 9, e 6, e 3 } Poznámka: Pro jinou volbu kořene nalezneme odlišnou množinu cyklů.
Složitost konstrukce FSR Vztah mezi M a N - obecný graf: –Maximální počet hran vzhledem k počtu uzlů má úplný graf (každé dva uzly jsou spojeny hranou). –Pro úplný graf platí: Graf má N vrcholů Z každého vrcholu vychází N-1 hran Každá hrana má 2 vrcholy* => M = (N-1).N/2 *Ve výše uvedeném vzorci musíme dělit 2, abychom hrany nepočítali dvakrát (jedenkrát za každý její koncový vrchol). => Pro obecný graf platí: 0 M (N-1).N/2
Složitost konstrukce FSR II Vztah mezi c (počet cyklů) a N - obecný graf: c = M - N +1 0 c N 2 /2 - 3/2 N + 1 Pro účely výpočtu časové složitosti algoritmu v nejhorším případě: c N 2
Složitost konstrukce FSR III Vztah mezi M a N - molekulový graf: –Počet hran v molekule závisí na vaznosti atomů (~ stupeň vrcholů) v molekule: Vaznost atomů: C: 4 N: 3 O, S: 2 H, F, Cl, Br, I: 1. Průměrná vaznost atomu v molekule ( B ) se nachází převážně v intervalu: 1,5 - 3 (čím více cyklů má molekula, tím větší je průměrná vaznost) –Pro molekulový graf platí: Graf má N vrcholů Z každého vrcholu vychází B hran Každá hrana má 2 vrcholy => M = N. B /2
Složitost konstrukce FSR IV Vztah mezi c (počet cyklů) a N - molekulový graf: c = M - N +1 c = N. B /2 - N +1 = N ( B /2 - 1) + 1 c se nachází převážně v intervalu 0 až N/2
Složitost konstrukce FSR V Vytvoření stromu: –Přidáváme postupně N vrcholů => nutno projít N-1 hran => složitost vytvoření stromu je O(N)
Složitost konstrukce FSR VI Dohledání cyklů: –Počet cyklů je c –Cyklus může obsahovat nejvýše N vrcholů a tedy N-1 nových hran => složitost dohledání cyklů je O(c.N) Složitost konstrukce FSR je O(c.N).* *Pro obecný graf O(N 3 ).
Nevýhody FSR FSR není určena jednoznačně Na grafu s více než 1 cyklem lze nalézt více cyklů, než udává cyklomatické číslo grafu Dvě cesty k obecnější množině cyklů: –množina všech cyklů (SAR) –množina nejmenších základních cyklů (SSSR)
Konstrukce SAR - nalezení všech FSR Algoritmus: SAR = FOR v V: Konstrukce FSR FOR R FSR: IF R SAR THAN SAR := SAR {R} Složitost: Počet vrcholů: N, složitost konstrukce FSR: O(c.N) => Složitost konstrukce SAR: O(c.N 2 )
Konstrukce SAR - kombinace cyklů Nechť FSR = {R 1, R 2,..., R c } je množina základních cyklů, kde R i E pro i = 1, 2,..., c. Pak každý libovolný cyklus grafu lze vytvořit kombinací (složením) hran cyklů R i, R j FSR operací XOR. Poznámka: Operace XOR se označuje symbolem .
Konstrukce SAR - kombinace cyklů II Nechť P a R jsou dvě množiny, pak jejich složení definujeme takto: P R = {e; e P nebo e R, ale ne současně} (Mají-li P a R společnou hranu, tato hrana ve výsledné množině nebude.)
Konstrukce SAR - kombinace cyklů III Operací složení nemusí vždy vzniknout cyklus: –P a R jsou disjunktní: –P a R sdílejí pouze jeden vrchol: –P a R jsou „nevhodné“ pro složení:
Konstrukce SAR - kombinace cyklů IV Algoritmus: Vytvořit libovolnou množinu základních cyklů (FSR). FOR každou možnou k-tici cyklů z FSR, kde k = 1, 2, …, {počet cyklů} DO: IF Kombinací cyklů této k-tice vzniknul cyklus. THAN IF Tento cyklus nebyl nalezen dříve. THAN Ulož cyklus.
Konstrukce SAR - kombinace cyklů V Optimalizace algoritmu: Vytvořit libovolnou množinu základních cyklů (FSR). Rozdělit FSR na vzájemně disjunktní shluky cyklů. FOR každou možnou k-tici cyklů z každého shluku, kde k = 1, 2, …, {počet cyklů ve shluku} DO: IF Kombinací cyklů této k-tice vzniknul cyklus. THAN IF Tento cyklus nebyl nalezen dříve. THAN Ulož cyklus.
Konstrukce SAR - kombinace cyklů VI SAR vzniká kombinací k-tic základních cyklů pro k = 1, 2, …, c Pro počet k-tic platí: c c … + c = 2 c Složitost konstrukce SAR: O(c.2 c )
Konstrukce SAR - porovnání složitosti algoritmů Vyhledání všech FSR: O(c.N 2 ) Kombinace cyklů FSR: O(c.2 c ) Vztah mezi c a N: Molekulový graf: c se nachází převážně v intervalu 0 až N/2 Obecný graf: 0 c N 2 /2 - 3/2 N + 1
Konstrukce SSSR Vytvoření prořezaného grafu Vytvoření HR grafu Prohledání HR grafu a nalezení externích cyklů Prohledání HR grafu a nalezení interních cyklů
Konstrukce SSSR - prořezaný graf Definice: Prořezaný graf (pruned graph) grafu G je takový podgraf G P grafu G, který neobsahuje vrcholy stupně jedna (tzv. koncové vrcholy). Algoritmus: WHILE koncové vrcholy DO: Odstraň koncové vrcholy Odstraň hrany z nich vycházející
Konstrukce SSSR - prořezaný graf - příklad Isoalloxazin (flavin): Obecný graf isoalloxazinu:
Konstrukce SSSR - prořezaný graf - příklad II Isoalloxazin je součástí flavinadenindinukleotidu, enzymu, který zprostředkovává přenos dvou elektronů v rámci metabolických reakcí (např. citrátový cyklus):
Konstrukce SSSR - prořezaný graf - příklad III Obecný graf isoalloxazinu: Prořezaný graf isoalloxazinu:
Konstrukce SSSR - HR graf Definice: –Reducibilní vrchol: Vrchol stupně 2. –Ireducibilní vrchol: Vrchol stupně 3 a více. –Homeomorfně redukovaný graf (homeomorphically reduced graph, HR graf) grafu G: Obsahuje pouze ireducibilní vrcholy grafu G. Hrana HR grafu vyjadřuje takovou cestu v grafu G, která: –Spojuje dva ireducibilní vrcholy. –Neobsahuje další ireducibilní vrcholy.
Konstrukce SSSR - HR graf II –Zápis hrany HR grafu: (u, v, V R ), kde: Vrcholy u a v jsou: –počáteční (u) a koncový (v) vrchol cesty v grafu G –vrcholy hrany v HR grafu, reprezentující tuto cestu Množina V R je seznamem reducibilních vrcholů, nacházejících se v grafu G na cestě z vrcholu u do vrcholu v. –Algoritmus pro tvorbu HR grafu: Vstup: Prořezaný graf G P = (V, H) Výstup: HR graf HRG = (V´, H´), kde: –V´ V –H´ = { (u, v, V R ) | u, v V´; V R = {w | w V - V´}}
Konstrukce SSSR - HR graf III Inicializace HRG: V´= , H´ = FOR v V DO: IF v je ireducibilní THAN incidentní hrany vrcholu v dej do FIFO fronty F. WHILE fronta F je neprázdná DO Vyjmi hranu h z fronty F. Vytvoř cestu, začínající v,h a pokračující dalšími hranami a vrcholy až do nejbližšího ireducibilního vrcholu u. Reducibilní vrcholy mezi v a u umísti do množiny V R. Hrany mezi v a u umísti do množiny H R. Úprava HR grafu: V´ := V´ {v, u} H´ := H´ {(v, u, V R )} Úprava grafu G:V := V - V R H := H - H R IF je fronta F prázdná THAN V := V - {v}
Konstrukce SSSR - HR graf - příklad Prořezaný graf: HR graf - obrázek: h 1 : (v 3, v 12, {v 1, v 2, v 13, v 14 }) h 2 : (v 3, v 5, {v 4 }) h 3 : (v 3, v 12, ) h 4 : (v 5, v 10, {v 6, v 7, v 8, v 9 }) h 5 : (v 5, v 10, ) h 6 : (v 10,v 12, {v 11 }) HR graf - popis:
Konstrukce SSSR - vyhledání externích cyklů Definice: –Externí (vnější) cyklus: Obsahuje jeden nebo dva vrcholy. –Interní (vnitřní): Obsahuje tři a více vrcholů. Cykly v SSSR jsou nezávislé (žádný z nich nelze vytvořit kombinací ostatních) a pokrývají celý graf (jejich kombinací lze vytvořit SAR). Externí cykly obsahující jeden vrchol nelze vytvořit kombinací ostatních cyklů v grafu => nutně musí být v SSSR. Pro externí cykly obsahující dva vrcholy existuje jednoduchý algoritmus, který z každé množiny externích cyklů, tvořených stejnými vrcholy*, vybere podmnožinu nezávislých cyklů. *Pouze v rámci této skupiny mohou být dané externí cykly závislé.
Konstrukce SSSR - vyhledání externích cyklů II Existuje-li taková hrana HR grafu, která začíná a končí ve stejném vrcholu, tvoří externí cyklus s jedním ireducibilním vrcholem. Existuje-li J hran HR grafu pro J > 1, které začínají ve vrcholu v a končí ve vrcholu u, generují tyto hrany J - 1 externích cyklů se dvěma ireducibilními vrcholy. Algoritmus pro tvorbu množiny externích cyklů HR grafu: –Vstup: HRG = (V´, H´) s ohodnocenými vrcholy –Výstup: množina externích cyklů S E
Konstrukce SSSR - vyhledání externích cyklů III Inicializace S E : S E := FOR h H´ DO: IF h == (u, u, V R ) THAN Ext_ring := {h}; S E := S E {Ext_ring} Vytvoř frontu hran: Seřaď hrany z množiny H´ podle počátečních vrcholů, skupiny hran se stejnými počátečními vrcholy seřaď dále podle koncových vrcholů. WHILE fronta je neprázdná DO Vyjmi z fronty hranu h (h = (u, v, V R )) a všechny následující hrany s vrcholy u a v zařaď je do množiny S uv. IF |S uv | > 1 THAN Najdi v S uv hranu h min s nejmenším počtem prvků v V R. FOR k S uv, k != h min DO Ext_ring := {k, h min }; S E := S E {Ext_ring}
Konstrukce SSSR - vyhledání interních cyklů Mějme HR graf s vrcholy ohodnocenými přirozenými čísly. Pak je každý cyklus jednoznačně určen vrcholem s nejmenším ohodnocením. Pokud existují cykly A a B tak, že A B, pak říkáme, že cyklus B je obálkou cyklu A. Takovýto cyklus B nemůže patřit do SSSR (do nejmenší množiny nejmenších cyklů).
Konstrukce SSSR - vyhledání interních cyklů II Inicializace S I : S I := FOR v V´ DO: Vytvářej strom (s kořenem v) cest v HR grafu, vzniklých prohledáváním do hloubky Při přidání uzlu u do procházené cesty se rozhoduje: IF u == v THAN Int_ring := {hrany dané cesty} /*cesta akceptována*/ IF R S I Int_Ring R THAN /*R == obálka */ S I := (S I - {R}) {Int_ring}; odstranění závislých cyklů ELSE IF R S I R Int_Ring THAN /*Int_Ring!= obálka*/ S I := S I {Int_ring}; odstranění závislých cyklů ELSE IF o(u) < o(v) nebo (u už náleží do cesty) THAN Cesta zamítnuta, procházíme vedlejší cestu. ELSE Přidej do cesty další uzel.
Konstrukce SSSR - dokončení Množiny externích a interních cyklů sjednotíme: S ALL = S E S I HR hrany v cyklech v množině S ALL nahradíme klasickými hranami, a to následovně: HR hrana: (u, v, {w 1, w 2,..., w n }) se nahradí hranami: {u, w 1 }, {w 1, w 2 },..., {w n, v} Tím jsme z množiny S ALL vytvořili množinu SSSR.
Literatura k vyhledávání cyklů Havelková L.: Paralelizace sekvenčních algoritmů v chemii. Masarykova univerzita - diplomová práce (1995) Kučera L.: Kombinatorické algoritmy. SNTL, (1989)