Tarjanův algoritmus
Tarjanův algoritmus

Tarjanův algoritmus (Tarjan's algorithm) je grafový algoritmus sloužící k vyhledávání silných komponent orientovaného grafu. Silná komponenta je maximální množina uzlů orientovaného grafu taková, že mezi každými dvěma uzly existuje sled.

Princip

Tarjanův algoritmus vychází z prohledávání do hloubky. Vrcholy se při prohledávání indexují dle pořadí svého nalezení. Při návratu z rekurze se každému vrcholu přiřadí uzel s nejnižším indexem na jaký lze dosáhnout. Všechny vrcholy, které mají totožný cílový uzel (index), jsou ve stejné komponentě.

Složitost

Tarjanův algoritmus má stejně jako prohledávání do hloubky asymptotickou složitost O(\\vert U \\vert + \\vert H \\vert).


Kód

01.index = 0
02. 
03./*
04. * Spousti tarjanuv algoritmus
05. * @param g graf, v nemz budou hledany silne komponenty
06. * @return seznam komponent
07. */
08.List executeTarjan(Graph g)            
09.    Stack s = {}
10.    List scc = {} //seznam silnych komponent
11.    for Node node in g
12.        if (v.index is undefined)
13.            tarjanAlgorithm(node, scc, s)   
14.     
15.    return scc
16. 
17./*
18. * Tarjanuv algoritmus
19. * @param node zpracovavany uzel
20. * @param SCC seznam komponent (seznamu uzlu v komponentach)
21. * @param s zasobnik
22. */
23.procedure tarjanAlgorithm(Node node, List scc, Stack s)
24.    v.index = index
25.    v.lowlink = index
26.    index++
27.    s.push(node) //pridej na zasobnik
28.    for each Node n in Adj(node) do //pro vsechny potomky
29.        if n.index == -1 //pokud jeste nebyl uzel objeven
30.            tarjanAlgorithm(n, scc, s, index) //prohledej
31.            node.lowlink = min(node.lowlink, n.lowlink) //uprav lowlink otce
32.        else if stack.contains(n) //pokud komponenta nebyla jiz uzavrena
33.            node.lowlink = min(node.lowlink, n.index)
34.         
35.    if node.lowlink == node.index //pokud jsme v koreni komponenty
36.        Node n = null
37.        List component //seznam uzlu dane komponenty
38.        do
39.            n = stack.pop() //vyber uzel ze zasobniku
40.            component.add(n) //pridej ho do komponenty
41.        while(n != v) //dokud nejsme v koreni
42.        scc.add(component) //komponentu pridej do seznamu komponent

SEO od společnosti Digital Pylon


Online casino s algoritmem

České casino online online slot-vegas.cz

Hrajte nejlepší hry jako je GoodGame Empire.





Zajímavé články: Jak najít práci snů? Zvolte kariéru v IT!, Češi mají rádi hrací automaty online, Jak funguje algoritmické obchodování Casino, Online výuka Algoritmus a online marketing mají svá pravidla, Automaty, Matematický vliv, Ratings, Jak fungují algoritmy hazardních her online: více znalostí, více peněz, SYPWAI - nástroj pro vědecký vývoj, Vynikají na globálním trhu: Nejlepší vývojáři softwaru pro online výherní automaty, Jak si vybrat nejlepší české online casino, Proč byste měli hrát online casino VPN revoluce, Kde najdeme algoritmy v každodenním životě?, Čeká vás pracovní pohovor mimo město? Podívejte se, jak dokonale zvládnout včasný příchod, 5 úžasných technologií ze světa hazardních her, Mirror and access to Mostbet, Svou kancelář můžete mít stále po ruce, Jaké výhody má digitalizovaná firma oproti off-line konkurenci?, Jaký systém vybrat pro snadné řízení výroby?, Nahradí umělá inteligence ajťáky?, Důvody, proč používat SnapTik ke stahování videí TikTok, Dokonalý den na pláži: Co si vzít s sebou, aby byl výlet zábavný a bezpečný?, Jak přežít dlouhý let?, Go pay GoodGame Empire, Blockchain, Rozhovor, Umělá inteligence, Ochranná známka pre softvér: Prečo ju registrovať?, Role kryptografických algoritmů v zabezpečení online kasin, Jaké jsou náklady na nákup 3D tiskárny?, Jak algoritmy vylepšují online zážitky v roce 2025,


Doporučujeme

Internet pro vaši firmu na míru

https://www.algoritmy.net