Úprava přednášky 10 a přidání 11. přednášky z PPA2
This commit is contained in:
parent
cdb4747e60
commit
3a05e9a022
2 changed files with 62 additions and 4 deletions
|
@ -176,13 +176,14 @@
|
||||||
+ zpracovává vrcholy grafu od vrcholu `s` v pořadí **od blízkých ke vzdáleným**
|
+ zpracovává vrcholy grafu od vrcholu `s` v pořadí **od blízkých ke vzdáleným**
|
||||||
+ postup vyžaduje označování vrcholů
|
+ postup vyžaduje označování vrcholů
|
||||||
+ označení uložíme do pole délky $\vert V\vert$
|
+ označení uložíme do pole délky $\vert V\vert$
|
||||||
+ možná označení vrcholů
|
|
||||||
+ nenavštívený (kód 0)
|
|
||||||
+ čekající na zpracování (kód 1)
|
|
||||||
+ hotový (kód 2)
|
|
||||||
+ vrcholy se vkládají do fronty
|
+ vrcholy se vkládají do fronty
|
||||||
+ všechny vrcholy ve vzdálenosti `k` se zpracují před těmi se vzdáleností `> k`
|
+ všechny vrcholy ve vzdálenosti `k` se zpracují před těmi se vzdáleností `> k`
|
||||||
|
|
||||||
|
**Značení vrcholů**
|
||||||
|
+ nenavštívený (kód 0)
|
||||||
|
+ čekající na zpracování (kód 1)
|
||||||
|
+ hotový (kód 2)
|
||||||
|
|
||||||
**Pozorování**
|
**Pozorování**
|
||||||
- BFS je potřeba doplnit o nějaký užitečný kód
|
- BFS je potřeba doplnit o nějaký užitečný kód
|
||||||
+ záleží to na řešeném problému
|
+ záleží to na řešeném problému
|
||||||
|
|
57
KIV PPA2/Prednaska11.md
Normal file
57
KIV PPA2/Prednaska11.md
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
# Grafy 2
|
||||||
|
|
||||||
|
#### Prohledávání do šířky (BFS)
|
||||||
|
|
||||||
|
**Strom dosažitelnosti**
|
||||||
|
- tvoří se z nějakého určeného vrcholu (kořen)
|
||||||
|
- ukazuje, jaká je nejkratší cesta do ostatních vrcholů
|
||||||
|
- reprezentován polem, kde na indexu vrcholu je uložen předek
|
||||||
|
- nemusí být jednoznačný (může existovat více nejkratších cest)
|
||||||
|
|
||||||
|
|
||||||
|
#### Prohledávánı́ do hloubky (DFS)
|
||||||
|
|
||||||
|
- Depth-First Search
|
||||||
|
- algoritmus postupuje do většı́ vzdálenosti od počátečnı́ho vrcholu, pokud může
|
||||||
|
+ předpokládáme, že označenı́ (mark) je před volánı́m DFS inicializováno na 0 pro všechny vrcholy
|
||||||
|
+ DFS je potřeba doplnit o nějaký užitečný kód
|
||||||
|
+ záleží to na řešeném problému
|
||||||
|
|
||||||
|
**Značenı́ vrcholů**
|
||||||
|
- nezpracovaný (”bı́lá”), kód 0
|
||||||
|
- rozpracovaný (”šedá”), kód 1
|
||||||
|
- dokončený (”černá”), kód 2
|
||||||
|
|
||||||
|
**Složitost**
|
||||||
|
- rekurzivní metoda se pro každý vrchol volá pouze jednou - $\Omega(\vert V\vert)$
|
||||||
|
- pro každý vrchol se prochází seznam hran:
|
||||||
|
- reprezentace maticí - $\Omega(\vert V\vert^2)$
|
||||||
|
- reprezentace seznamem - $\mathcal{O}(\vert E\vert)$
|
||||||
|
- celkem: $\mathcal{O}(\vert V\vert + \vert E\vert)$ při reprezentaci seznamem
|
||||||
|
- může být i $\Omega(\vert V\vert^2)$, pokud $\vert E\vert = k\vert V\vert^2$
|
||||||
|
|
||||||
|
**Použití DFS**
|
||||||
|
- Zjištění dosažitelnosti vrcholu
|
||||||
|
- pokud předpokládáme, že bude vrchol daleko, je DFS vhodnější než BFS
|
||||||
|
+ Zjištění cyklu v grafu
|
||||||
|
+ vrchol označíme jedničkou a poté ho znovu hledáme
|
||||||
|
+ Topologické řazení
|
||||||
|
+ prvně je potřeba ověřit, že graf nemá cykly
|
||||||
|
+ vrcholy jsou činnosti, hrany jsou závislosti
|
||||||
|
+ hrana $A \to B$ značí, že se prvně musí vykonat A a potom až B
|
||||||
|
+ pomocí DFS můžeme snadno určit pořadí činností (pomocí otočeného grafu)
|
||||||
|
|
||||||
|
**DFS bez rekurze**
|
||||||
|
- pravděpodobně nastanou problémy s hloubkou zásobníku
|
||||||
|
+ vystačíme si se zásobníkem celých čísel (vrcholů)
|
||||||
|
+ `segment` (jaký je stav vrcholu) je v označení vrcholu (`mark`)
|
||||||
|
|
||||||
|
**Nejkratší cesta v ohodnoceném grafu**
|
||||||
|
- velmi častý problém
|
||||||
|
- ohodnocení: čas, vzdálenost, ...
|
||||||
|
- úkol: nalézt nejkratší vzdálenost ke všem vrcholům
|
||||||
|
- **Dijkstrův algoritmus**
|
||||||
|
- je potřeba prioritní fronta
|
||||||
|
- přidání dvojice vrchol + ohodnocení
|
||||||
|
- vybrání/odebrání vrcholu s nejmenším ohodnocením
|
||||||
|
- změna ohodnocení vrcholu
|
Loading…
Reference in a new issue