$$ \newcommand{\st}{\text{ s.t. }} \newcommand{\and}{\text{ and }} \DeclareMathOperator*{\argmin}{arg\,min} \DeclareMathOperator*{\argmax}{arg\,max} \newcommand{\R}{\mathbb{R}} \newcommand{\N}{\mathbb{N}} \newcommand{\O}{\mathcal{O}} \newcommand{\dist}{\text{dist}} \newcommand{\vec}[1]{\mathbf{#1}} \newcommand{\diag}{\mathrm{diag}} \newcommand{\d}{\mathrm{d}} \newcommand{\L}{\mathcal{L}} \newcommand{\Tr}[1]{\mathrm{Tr}\left(#1\right)} \newcommand{\E}{\mathbb{E}} \newcommand{\Var}{\mathrm{Var}} \newcommand{\Cov}{\mathrm{Cov}} \newcommand{\indep}{\perp \!\!\! \perp} \newcommand{\KL}[2]{\mathrm{KL}(#1 \parallel #2)} \newcommand{\W}{\mathbf{W}} % Wasserstein distance \newcommand{\SW}{\mathbf{SW}} % Sliced-Wasserstein distance $$

Fluxos em Redes

Definição do problema Seja $G$ um grafo orientado com capacidades não-negativas $w_{i, j}$ nos arcos, e dois vértices $s$ (origem) e $t$ (destino). Qual o fluxo máximo que pode ser enviado de $s$ para $t$ respeitando as capacidades dos arcos? A tabela abaixo mostra 3 algoritmos famosos que resolvem o problema do fluxo máximo em redes. Algoritmo Complexidade de tempo Complexidade de espaço Observações Ford-Fulkerson $\mathcal{O}(n)$ $\mathcal{O}(n)$ Edmonds-Karp $\mathcal{O}(n)$ $\mathcal{O}(n)$ Dinic $\mathcal{O}(n)$ $\mathcal{O}(n)$ Algoritmo de Ford-Fulkerson Este algoritmo busca por um caminho aumentante $p$ a cada iteração, ou seja, um caminho de $s$ para $t$ que passa somente por arcos com capacidade positiva no grafo residual. O grafo residual é inicializado igual ao grafo original, mas assim que um fluxo escoa por um caminho, as capacidades residuais dos arcos pertencentes ao caminho são atualizadas. ...

13 de junho de 2024 · 2 minutos