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

    index = 0
 
    /*
     * Spousti tarjanuv algoritmus
     * @param g graf, v nemz budou hledany silne komponenty
     * @return seznam komponent 
     */
    List executeTarjan(Graph g)             
        Stack s = {}
        List scc = {} //seznam silnych komponent
        for Node node in g
            if (v.index is undefined)
                tarjanAlgorithm(node, scc, s)    
        
        return scc
 
    /*
     * Tarjanuv algoritmus
     * @param node zpracovavany uzel
     * @param SCC seznam komponent (seznamu uzlu v komponentach)
     * @param s zasobnik
     */
    procedure tarjanAlgorithm(Node node, List scc, Stack s)
        v.index = index
        v.lowlink = index
        index++
        s.push(node) //pridej na zasobnik
        for each Node n in Adj(node) do //pro vsechny potomky
            if n.index == -1 //pokud jeste nebyl uzel objeven
                tarjanAlgorithm(n, scc, s, index) //prohledej
                node.lowlink = min(node.lowlink, n.lowlink) //uprav lowlink otce
            else if stack.contains(n) //pokud komponenta nebyla jiz uzavrena
                node.lowlink = min(node.lowlink, n.index)
            
        if node.lowlink == node.index //pokud jsme v koreni komponenty
            Node n = null
            List component //seznam uzlu dane komponenty
            do
                n = stack.pop() //vyber uzel ze zasobniku
                component.add(n) //pridej ho do komponenty
            while(n != v) //dokud nejsme v koreni
            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


Doporučujeme

Internet pro vaši firmu na míru

https://www.algoritmy.net