Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pa:laboratoare:maximum-flow-problem [2022/05/23 10:54]
darius.neatu created
pa:laboratoare:maximum-flow-problem [2022/05/24 16:01] (current)
darius.neatu
Line 20: Line 20:
  
  
-> **Rețea de transport** / **flow network**: Este un graf orientat $G = (V, E)$ care respectă următoarele 3 proprietăți: ​1) există două noduri speciale **S** (numit **sursă** / **source**) și **T** (numit **terminal** / **destinație** / **sink**); ​2) există o funcție de capacitate $c: V x V -> R_{+}$ astfel încât $c(u, v) >= 0$ dacă arcul $(u, v)$ există, altfel $c(u, v) = 0$; 3) pentru orice nod $v \in V \setminus \{S, T\}$ există cel puțin o cale $S -> ... -> v -> ... T$.+> **Rețea de transport** / **flow network**: Este un graf orientat $G = (V, E)$ care respectă următoarele 3 proprietăți:​ 
 + 
 +  - există două noduri speciale **S** (numit **sursă** / **source**) și **T** (numit **terminal** / **destinație** / **sink**); 
 +  - există o funcție de capacitate $c: V x V -> R_{+}$ astfel încât $c(u, v) >= 0$ dacă arcul $(u, v)$ există, altfel $c(u, v) = 0$; 
 +  - pentru orice nod $v \in V \setminus \{S, T\}$ există cel puțin o cale $S -> ... -> v -> ... T$.
  
  
 <​note>​ <​note>​
  
-Într-o rețea avem 2 noduri speciale. Vom vedea că S joacă rol de producător,​ iar T de consumator.+Într-o rețea avem 2 noduri speciale. Vom vedea că **S** joacă rol de **producător**, iar **T** de **consumator**.
  
 În plus, pentru simplitate, vom dori ca în graf să nu avem **self-loops**. În plus, pentru simplitate, vom dori ca în graf să nu avem **self-loops**.
Line 59: Line 63:
  
  
-> **Flux** / **flow**: O funcție $f: V x V -> R$ se numește funcție de flux într-o rețea de transport $G = (V, E)$ dacă respectă următoarele 3 proprietăți: ​1) **restricție de capacitate** - $f(u, v) \leq c(u, v), \forall u,v \in V$; 2) **antisimetrie** - $f(u, v) = - f(v, u), \forall u,v \in V$; 3) **conservare** - $\sum f(u, v) = 0, \forall u \in V \ {S, T}, \forall v \in V$.+> **Flux** / **flow**: O funcție $f: V x V -> R$ se numește funcție de flux într-o rețea de transport $G = (V, E)$ dacă respectă următoarele 3 proprietăți:​ 
 + 
 +  - **restricție de capacitate** - $f(u, v) \leq c(u, v), \forall u,v \in V$; 
 +  - **antisimetrie** - $f(u, v) = - f(v, u), \forall u,v \in V$; 
 +  - **conservare** - $\sum f(u, v) = 0, \forall u \in V \ {S, T}, \forall v \in V$.
  
 <spoiler Exemplu> <spoiler Exemplu>
Line 97: Line 105:
 Spunem că fluxul total prin rețea este $f = 1 + 2 + 3 = 6$ (6 unități de flux circulă de la sursa S la terminalul T prin rețeaua G). Spunem că fluxul total prin rețea este $f = 1 + 2 + 3 = 6$ (6 unități de flux circulă de la sursa S la terminalul T prin rețeaua G).
  
-Observăm că pe drumurile $1 -> 4 -> 7$ $1 -> 3 -> 6- > 7$ se mai poate pompa flux în plus. Deducem atunci că funcția de flux din figura anterioară nu reprezintă flux maxim!+Observăm că pe drumurile $1 -> 4 -> 7$ și $1 -> 3 -> 6- > 7$ se mai poate pompa flux în plus. Deducem atunci că funcția de flux din figura anterioară nu reprezintă flux maxim!
  
 Un exemplu de flux maxim găsim în figura următoare: {{https://​ocw.cs.pub.ro/​courses/​_media/​pa/​new_pa/​lab12-maximum-flow-example.png?​512| Exemplu}} Un exemplu de flux maxim găsim în figura următoare: {{https://​ocw.cs.pub.ro/​courses/​_media/​pa/​new_pa/​lab12-maximum-flow-example.png?​512| Exemplu}}
Line 136: Line 144:
   * Inițial, fluxul are valorile 0 peste tot în rețea.   * Inițial, fluxul are valorile 0 peste tot în rețea.
   * Enumerăm toate **drumurile de ameliorare** din rețeaua curentă:   * Enumerăm toate **drumurile de ameliorare** din rețeaua curentă:
-    * $1 - 2 - 5 - 10$: capacitatea sa reziduală este valoarea minimă dintre $3 - 0, 2 - 0, 1 - 0$, adică **1** (pe acest drum se mai poate pompa în plus o unitate de flux). +    * $1 - 2 - 5 - 7$: capacitatea sa reziduală este valoarea minimă dintre $3 - 0, 2 - 0, 1 - 0$, adică **1** (pe acest drum se mai poate pompa în plus o unitate de flux). 
-    * $1 - 2 - 5 - 6 - 10$: capacitatea sa reziduală este valoarea minimă dintre $3 - 0, 2 - 0, 1 - 0, 3 - 0$, adică **1** (pe acest drum se mai poate pompa în plus o unitate de flux). +    * $1 - 2 - 5 - 6 - 7$: capacitatea sa reziduală este valoarea minimă dintre $3 - 0, 2 - 0, 1 - 0, 3 - 0$, adică **1** (pe acest drum se mai poate pompa în plus o unitate de flux). 
-    * $1 - 2 - 6 - 10$: capacitatea sa reziduală este valoarea minimă dintre $3 - 0, 1 - 0, 3 - 0$, adică **1** (pe acest drum se mai poate pompa în plus o unitate de flux). +    * $1 - 2 - 6 - 7$: capacitatea sa reziduală este valoarea minimă dintre $3 - 0, 1 - 0, 3 - 0$, adică **1** (pe acest drum se mai poate pompa în plus o unitate de flux). 
-    * $1 - 3 - 6 - 10$: capacitatea sa reziduală este valoarea minimă dintre $2 - 0, 5 - 0, 3 - 0$, adică **2** (pe acest drum se mai poate pompa în plus încă 2 unități de flux). +    * $1 - 3 - 6 - 7$: capacitatea sa reziduală este valoarea minimă dintre $2 - 0, 5 - 0, 3 - 0$, adică **2** (pe acest drum se mai poate pompa în plus încă 2 unități de flux). 
-    * $1 - 4 - 6 - 10$: capacitatea sa reziduală este valoarea minimă dintre $5 - 0, 1 - 0, 3 - 0$, adică **1** (pe acest drum se mai poate pompa în plus încă o unitate de flux). +    * $1 - 4 - 6 - 7$: capacitatea sa reziduală este valoarea minimă dintre $5 - 0, 1 - 0, 3 - 0$, adică **1** (pe acest drum se mai poate pompa în plus încă o unitate de flux). 
-    * $1 - 4 - 10$: capacitatea sa reziduală este valoarea minimă dintre $5 - 0, 10 - 0$, adică **5** (pe acest drum se mai poate pompa în plus încă 5 unități de flux).+    * $1 - 4 - 7$: capacitatea sa reziduală este valoarea minimă dintre $5 - 0, 10 - 0$, adică **5** (pe acest drum se mai poate pompa în plus încă 5 unități de flux).
  
 **Alegem** drumul $1 - 4 - 7$ pe care pompăm **5** unități de flux. Muchia $(1, 4)$ devinde saturată (**5/5** - capacitate reziduală **5 - 5 = 0**, prin urmare o putem șterge din rețea). Obținem rețeaua reziduală din figura următoare: **Alegem** drumul $1 - 4 - 7$ pe care pompăm **5** unități de flux. Muchia $(1, 4)$ devinde saturată (**5/5** - capacitate reziduală **5 - 5 = 0**, prin urmare o putem șterge din rețea). Obținem rețeaua reziduală din figura următoare:
Line 189: Line 197:
  
 [0] Chapters **Maximum Flow**, “Introduction to Algorithms”,​ Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein. [0] Chapters **Maximum Flow**, “Introduction to Algorithms”,​ Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein.
 +
 +
  
pa/laboratoare/maximum-flow-problem.1653292490.txt.gz · Last modified: 2022/05/23 10:54 by darius.neatu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0