Graf obsahující 3 komponenty souvislosti
Graf obsahující 3 komponenty souvislosti

Komponenta souvislosti grafu je taková maximální podmnožina uzlů grafu, pro kterou platí, že mezi každými dvěma uzly vede sled.

Princip

Algoritmus pro zjištění počtu komponent je jednoduchou modifikací prohledávání do hloubky (DFS). Algoritmus nejprve označí veškeré uzly jako nenavštívené (FRESH) a uloží je do fronty. Poté pustí prohledávání do hloubky z prvního uzlu a zvýší počet nalazených komponent na 1. DFS pustupně projde všechny uzly dosažitelné z daného uzlu a po jejich zpracování je uzavře (stav CLOSED). Ve frontě jsou v tento okamžik stále označeny jako FRESH pouze ty uzly, které nepatřily do první komponenty. Algoritmus proto nalezne další uzel ve stavu FRESH, inrementuje počet nalezených komponent a zpracuje daný uzel pomocí DFS. Algoritmus terminuje v okamžiku, kdy už fronta neobsahuje žádný FRESH uzel.


Kód

     /**
      * Dosud neobjeveny uzel
      */
     private static final int FRESH = 0;
     /**
      * Otevreny uzel
      */
     private static final int OPENED = 1;
     /**
      * Uzavreny uzel
      */
     private static final int CLOSED = 2;
     /**
      * Spocita pocet komponent neorientovaneho grafu
      * @param graph graf
      */
     public static int countComponents(GraphIface graph){
         //Stavy jednotlivych uzlu
         int[] state = new int[graph.getVertexCount()];
 
         for(int i = 0; i < state.length; i++) state[i] = FRESH;
         int counter = 0;
         //zajisti pruchod vsemi komponentami souvislosti
         for(int i = 0; i < graph.getVertexCount(); i++){
             if(state[i] == FRESH){
                 counter++;
                 doDFS(graph, i, state);
             }
         }
         return counter;
     }
     /**
      * Provede prohledavani do hloubky
      * @param graph graf
      * @param vertexNr cislo uzlu
      * @param state stavy uzlu
      */
     private static void doDFS(GraphIface graph, int vertexNr, int[] state) {
         state[vertexNr] = OPENED;
         for(Integer i : graph.getEdges(vertexNr)){
             if(state[i] == FRESH) doDFS(graph, i, state);
         }
         state[vertexNr] = CLOSED;
     }
 

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


Doporučujeme

Internet pro vaši firmu na míru

https://www.algoritmy.net