Prohledávání do hloubky: Porovnání verzí

Smazaný obsah Přidaný obsah
→‎Použité datové struktury: Doplněno značení d,f,p. Opraveno chybné tvrzení o stromě nejkratších cest. Typografie.
→‎Popis algoritmu: Přeformulováno pro lepší čitelnost.
Řádek 33:
=== Popis algoritmu ===
 
Celý algoritmus začíná inicializací všech uzlů grafů hodnotami stavů uzlů a nastavením jejich předchůdců. Každý uzel je nastaven jako FRESH uzel a žádný zatím nemá určeného svého předchůdce. To znamená, že v poli předchůdců jsou všechny hodnoty prvků nastaveny na null. Index (dále již časový index), který budeme dále využívat pro zapisování časových značek, nastavíme na nulu. Poté je pro všechny uzly vyvolána metoda DFS-Projdi. V této metodě je na počátku stav uzlu, prokteré kterýjsou byla tato metoda volána, nastaven na OPEN. Do časové značky otevření uzlu se zapíše hodnota časového indexu, který sedosud ve stejné době i inkrementuje, abychom mohli o jedna větší index použít pro další uzel. Poté se pro každého následníka uzlu, pro který bylo voláno DFS-projdi, zjistí, jestli je jako následník ještěstavu FRESH, zapíše se hodnota předchůdce a zavolá se rekurzivně znovuvyvolána metoda DFS-Projdi na tohoto následníka, ve kterém právě jsme. Jestliže se projdou všichni následníci uzlu, tento uzel se uzavře, neboli se tomuto uzlu přiřadí stav CLOSE a nastaví se pro něj časová značka uzavření použitím námi využívaného časového indexu, který se následně o jedna zvětší.
 
Metoda DFS-Projdi realizuje vlastní prohledávání do hloubky. V této metodě je na počátku stav uzlu u, pro který byla tato metoda volána, nastaven na OPEN a do časové značky otevření uzlu se zapíše hodnota časového indexu, který se ve stejné době i inkrementuje, abychom mohli o jedna větší index použít pro další uzel. Poté se pro každého následníka (značíme jej v) uzlu u zjistí, zda tento následník v je ještě ve stavu FRESH, a pokud ano, zapíše se pro něj do pole p hodnota předchůdce a zavolá se pro něj rekurzivně metoda DFS-Projdi. Jestliže byli zpracováni všichni následníci uzlu u, tento uzel se prohlásí za uzavřený (přiřadí se mu stav CLOSE) a nastaví se pro něj časová značka uzavření použitím námi využívaného časového indexu, který se následně o jedna zvětší.
 
=== Použité datové struktury ===