Diferente pentru problema/flux1 intre reviziile #39 si #40

Nu exista diferente intre titluri.

Diferente intre continut:

== include(page="template/taskheader" task_id="flux1") ==
Fie un graf orientat cu $N$ noduri si $M$ muchii. $V$ este multimea nodurilor din graf, iar $E$ multimea muchiilor. Asociem fiecarei muchii $(u,v)$ o capacitate nenegativa $cap(u,v)$. Consideram doua varfuri speciale: nodul $1$ care va fi denumit $sursa$ si nodul $N$, denumit $destinatie$. Orice nod $i$ ({$2 ≤ i ≤ N-1$}) se gaseste pe cel putin un drum de la $1$ la $N$. Definim *fluxul* in graf ca fiind o functie _f: E -> Z_. Functia _f_ satisface urmatoarele conditii:
Fie un graf orientat cu $N$ noduri si $M$ muchii. $V$ este multimea nodurilor din graf, iar $E$ multimea muchiilor. Asociem fiecarei muchii $(u,v)$ o capacitate nenegativa $cap(u,v)$. Consideram doua varfuri speciale: nodul $1$ care va fi denumit $sursa$ si nodul $N$, denumit $destinatie$. Orice nod $i$ ({$2 ≤ i ≤ N-1$}) se gaseste pe cel putin un drum de la $1$ la $N$. Definim *fluxul* in graf ca fiind o functie _f: VxV -> Z_. Functia _f_ satisface urmatoarele conditii:
# este restrictionata de capacitate, adica ∀ ( $i$, $j$) ∈ E avem $f(i,j) ≤ cap(i,j)$
# este restrictionata de capacitate, adica ∀ ($i$, $j$) ∈ $E$ avem $f(i,j) ≤ cap(i,j)$
# este antisimetrica, adica $forall; ($i$, $j$) ∈ $E$ avem $f(i,j) = -f(j,i)$
# fluxul se conserva, adica &forall; $i$ &isin; $V\{1,N}$ valoarea fluxului care intra in nodul respectiv este egala cu valoarea fluxlui care iese din nodul respectiv (&forall; $i$ &isin; $V$ avem <tex>\sum_{(j,i) \in E}^{} f(j,i) = \sum_{(i,k) \in E}^{} f(i,k)</tex>
Valoarea fluxului este <tex>F = \sum_{(1,i) \in E}^{} f(1,i)</tex>, adica fluxul total care pleaca din nodul sursa.
Problema se rezolva cu ajutorul algoritmului "Ford Fulkerson":http://en.wikipedia.org/wiki/Ford-Fulkerson_algorithm, care are urmatorii pasi.
# se cauta un drum de la sursa (in cazul nostru, nodul $1$) la destinatie (in cazul nostru $N$) cu orice algoritm (bfs, dfs, etc.).
# de pe acest drum se alege muchia de capacitate minima (fie ea $i$)
# din +fiecare+ muchie a drumului ales se scade capacitatea $cap{~i~}$ (astfel muchia $i$ va avea capacitatea $0$ si poate fi ignorata la urmatorii pasi)
# se creste fluxul cu $cap{~i~}$
# se cauta un drum de la sursa (in cazul nostru, nodul $1$) la destinatie (in cazul nostru $N$) cu orice algoritm (bfs, dfs, etc.) si fie acesta $1->i~1~->i~2~->...->i~k~->N$
# de pe acest drum se alege muchia de capacitate minima (fie ea $cmin$)
# se cresc cu $cmin$ $f(1,i~1~), f(i~1~,i~2~), ..., f(i~k~,N)$ si cu $cmin$ $f(i~1~,1), f(i~2~,i~1~), ..., f(N,i~k~)$
# se creste valoarea fluxul total cu $cmin$
# algoritmul se repeta de la pasul $1$
O descriere detaliata a algoritmului o gasiti "aici":http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=maxFlow.

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.