This shows you the differences between two versions of the page.
pa:laboratoare:laborator-12 [2022/05/23 11:40] darius.neatu |
pa:laboratoare:laborator-12 [2022/05/24 15:59] (current) darius.neatu |
||
---|---|---|---|
Line 52: | Line 52: | ||
// nodes = list of all nodes from G | // nodes = list of all nodes from G | ||
// edges = the list of all edges in G | // edges = the list of all edges in G | ||
- | // example: edge (node, neigh, weight) | + | // example: edge (node, neigh, capacity) |
// S = source in network G | // S = source in network G | ||
// T = sink in network G | // T = sink in network G | ||
Line 104: | Line 104: | ||
// S = source in network G | // S = source in network G | ||
// T = sink in network G | // T = sink in network G | ||
+ | // f = flow in network G | ||
+ | // c = capacity in network G | ||
// | // | ||
// returns: maxFlow (maximum flow in G from S to T) | // returns: maxFlow (maximum flow in G from S to T) | ||
Line 160: | Line 162: | ||
* $1 - 2 - 4 - 6$ (capacitate reziduală **+1**) | * $1 - 2 - 4 - 6$ (capacitate reziduală **+1**) | ||
- | * $1 - 3 - 4 - 6$ (capacitate reziduală **+1**) | + | * $1 - 3 - 5 - 6$ (capacitate reziduală **+1**) |
=== Exemplu Edmonds-Karp: exemplu simplu pas cu pas === | === Exemplu Edmonds-Karp: exemplu simplu pas cu pas === | ||
Line 252: | Line 254: | ||
<spoiler Detalii (analiză + optimizări)> | <spoiler Detalii (analiză + optimizări)> | ||
- | * **complexitate temporală**: Demonstrația se găsește în **Introduction to Algorithms**. Ideea de bază este că de fiecare dată când creștem fluxul pe un drum de amelioarare, o muchie devine saturată. Dacă vreodată această muchie va mai fi folosită în alt drum de ameliorare (în cazul unei corecții), aceasta va fi folosită într-un drum mai lung. Respectivele distanțe sunt monotone și limitate de $O(|V|)$. | + | * **complexitate temporală**: Demonstrația se găsește în **Introduction to Algorithms**. Ideea de bază este că de fiecare dată când creștem fluxul pe un drum de ameliorare, o muchie devine saturată. Dacă vreodată această muchie va mai fi folosită în alt drum de ameliorare (în cazul unei corecții), aceasta va fi folosită într-un drum mai lung. Respectivele distanțe sunt monotone și limitate de $O(|V|)$. |
* **complexitate spațială** : Stocăm o coadă pentru algoritmul BFS. De asemenea, în implementare vom stoca și un vector de părinți pentru a putea parcurge un drum de ameliorare de la T la S (sens invers). | * **complexitate spațială** : Stocăm o coadă pentru algoritmul BFS. De asemenea, în implementare vom stoca și un vector de părinți pentru a putea parcurge un drum de ameliorare de la T la S (sens invers). | ||
Line 312: | Line 314: | ||
</note> | </note> | ||
- | |||
- | ==== TODO ==== | ||
- | |||
- | TODO: maybe cuplaj? | ||
==== BONUS ==== | ==== BONUS ==== | ||
Line 323: | Line 321: | ||
==== Extra ==== | ==== Extra ==== | ||
- | TODO | + | * [[https://infoarena.ro/problema/cuplaj|infoarena/cuplaj]] |
+ | * [[https://infoarena.ro/problema/fmcm|infoarena/fcmm]] | ||
+ | * [[https://infoarena.ro/problema/drumuri2|infoarena/drumuri2]] | ||
+ | * [[https://infoarena.ro/problema/joc4|inforena/joc4]] | ||
+ | * [[https://acm.timus.ru/problem.aspx?space=1&num=1533|acm/fat-hobbits]] | ||
===== Referințe ===== | ===== Referințe ===== |