Capítulo 5
Cortes globalmente mínimos

Este capítulo trata do problema de encontrar um corte mínimo em um grafo não-dirigido. Cada aresta tem uma certa capacidade e o tamanho de um corte é a soma das capacidades de suas arestas.

Um segundo objetivo do capítulo é encontrar uma pequena coleção de cortes que seja completa no seguinte sentido: para cada par de nós, a coleção contém um corte mínimo dentre os que separam os dois nós. Uma tal coleção pode ser representada por uma árvore, o que permite atender rapidamente solicitações do seguinte tipo: dados dois nós, exiba um corte mínimo que os separa.

Todos os grafos neste capítulo são não-dirigidos. Por isso, diremos simplesmente grafo, deixando o não-dirigido subentendido.

Este capítulo foi baseado na seção 15.4 do livro de Schrijver.  Consulte o índice remissivo e os apêndices para conferir as definições de termos técnicos.

5.1 Cortes localmente mínimos

Um corte (= cut) em um grafo é qualquer conjunto de arestas que tenha a forma $\cut(X)$ para algum conjunto $X$ de nós. O conjunto $X$ e o seu complemento $\compl{X}$ são as duas margens do corte. É claro que $\cut(\compl{X}) = \cut(X)$.  Um corte $\cut(X)$ é trivial se $X$ é vazio ou $\compl{X}$ é vazio.

Um conjunto $X$ de nós separa um nó $r$ de um nó $s$ se $r\in X$ e $s\in \compl{X}$ ou se $r\in \compl{X}$ e $s\in X$. Se $X$ separa $r$ de $s$, dizemos também que o corte $\cut(X)$ separa $r$ de $s$.

Uma função-capacidade, ou tabela de capacidades, para um grafo é qualquer função $u$ que atribui um número real $u_e\geq 0$ a cada aresta $e$ do grafo. [Podemos supor que os números $u_e$ são racionais, uma vez que computadores digitais desconhecem números irracionais.]  Podemos tratar $u$ como um vetor real não-negativo indexado pelo conjunto de arestas. Um grafo $G$ é capacitado se for dotado de uma tabela de capacidades. Num grafo capacitado $(G,u)$, a capacidade de um corte $C$ é o número \[\textstyle u(C):= \sum_{e \in C} u_e\text{.} \]

Se $C = \cut(X)$, podemos usar a abreviatura $u(X):= u(C)$.

Dados dois nós $r$ e $s$ de um grafo capacitado $(G,u)$, um corte $C$ é $(r,s)$-mínimo se $C$ separa $r$ de $s$ e $u(C) \leq u(C')$ para todo corte $C'$ que separa $r$ de $s$. Dizemos que cortes desse tipo são localmente mínimos.

Problema 5.A (corte localmente mínimo) Dada um grafo capacitado $(G,u)$ e dois nós $r$ e $s$, encontrar um corte $(r,s)$-mínimo.

A capacidade de um corte $(r,s)$-mínimo em $(G,u)$ será denotada por $\lambda(G,u,r,s)$.  É claro que $\lambda(G,u,s,r) = \lambda(G,u,r,s)$.  É claro também que  $\lambda(G,u,r,s) \leq u(X)$  para todo $X$ que separa $r$ de $s$.

O seguinte algoritmo resolve o problema 5.A por redução ao problema do fluxo máximo:

Local­mente­Mínimo $(G, u, r,s)$
1 . $(D,u') \larr \text{}$ Dirigido $(G,u)$
2 . $X \larr \text{}$ EdmondsKarp $(D,u',r,s)$
3 . devolva $X$

A rotina Dirigido troca cada aresta de $G$ por dois arcos antiparalelos. Assim, transforma $G$ num grafo dirigido. Além disso, a rotina define uma tabela $u'$ de capacidades atribuindo a cada arco de $D$ a capacidade da correspondente aresta de $G$.

O algoritmo EdmondsKarp é a versão do algoritmo de Ford–Fulkerson discutida no capítulo 2. O algoritmo devolve um conjunto $X$ de nós de $D$ tal que o corte $\cutout(X)$ tem capacidade mínima dentre os que separam $r$ de $s$ em $(D,u')$. No grafo capacitado $(G,u)$, o corte $\cut(X)$ é $(r,s)$-mínimo.

O consumo de tempo do algoritmo Local­mente­Mínimo é assintoticamente igual ao do algoritmo de Edmonds–Karp, ou seja, igual a $\Oh(n m^2)$, sendo $n$ o número de nós e $m$ o número de arestas de $G$.

A seguinte caracterização da minimalidade de um corte localmente mínimo segue do lema 2.6, do teorema 2.7, e do lema 2.5 do capítulo 2:

Lema 5.1 (minimalidade de corte local) Para qualquer par $(r,s)$ de nós de um grafo capacitado $(G,u)$, um corte $\cut(X)$ que separa $r$ de $s$ é mínimo se e somente se existem caminhos simples $P_1,\ldots, P_k$ de $r$ a $s$ e números positivos $\beta_1,\ldots,\beta_k$  tais que  $\sum_{i=1}^k \beta_i = \text{}$ $u(X)$ $\sum_{E(P_i) \ni e} \beta_i \leq \text{}$ $u_e$  para cada aresta $e$ de $G$. ■

Podemos dizer que cada caminho $P_i$ conduz $\beta_i$ unidades de fluxo de $r$ a $s$ e o conjunto de caminhos conduz um fluxo de intensidade $u(X)$. A desigualdade $\sum ( \beta_i : P_i \ni e ) \leq u_e$ garante que a quantidade total de fluxo na aresta $e$ não passa de $u_e$ e portanto o fluxo respeita $u$.

Exemplo 5.1: Considere o grafo capacitado representado pela matriz de adjacências e capacidades abaixo. (Complete a figura.)  O corte $\cut(X)$, com $X:=\conj{a,b,d}$, separa $d$ de $c$ e tem capacidade $5$. Os caminhos induzidos por $(d,c)$, $(d,b,c)$ e $(d,a,b,c)$, conduzindo $2$, $1$ e $2$ unidades de fluxo respectivamente, satisfazem as condições do lema 5.1. Portanto, o corte $\cut(X)$ é $(d,c)$-mínimo.

\[ \begin{array}[t]{l@{\quad}cccc} & a & b & c & d \\[0.5ex] a & - & 6 & - & 2 \\ b & 6 & - & 3 & 1 \\ c & - & 3 & - & 2 \\ d & 2 & 1 & 2 & - \end{array} \hspace{10ex} \begin{array}[t]{c@{\hspace{10ex}}c} \\ a\qquad & b \\[3ex] d\qquad & c \end{array} \]

Exemplo 5.2 (árvores): Seja $(r,s)$ um par de nós de uma árvore capacitada $(T,u)$ e $P$ o único caminho simples de $r$ a $s$ em $T$. Se $a$ é uma aresta de capacidade mínima de $P$ então $\conj{a}$ é um corte $(r,s)$-mínimo de $(T,u)$.  Para provar essa afirmação, tome o conjunto $S$ de nós de uma das duas componentes conexas de $T-a$. Observe que $\cut(S) = \conj{a}$ e que esse corte separa $r$ de $s$. Agora, o lema 5.1 com $k=1$, $P_1=P$ e $\beta_1 = u_a$ mostra que $\cut(S)$ é $(r,s)$-mínimo.

figs/xournalpp/g-h-fig-3dot19-x0.png

Podemos resumir este exemplo dizendo que $\lambda(T,u,r,s) = \text{}$ $\min_{e \in E(P)} u_{e}$, sendo $P$ o caminho simples de $r$ a $s$ em $T$ e $E(P)$ o conjunto de arestas de $P$.

Exercícios 5.1

  1. ★ Prove o lema 5.1.
  2. ★ Seja $(O,u)$ um grafo capacitado em que $O$ consiste em um circuito e nada mais. Sejam $r$ e $s$ dois nós de $O$. Descreva um corte $(r,s)$-mínimo.
  3. ★ Considere o grafo capacitado da figura. Para cada par $(r,s)$ de nós, seja $M[r,s]$ a capacidade de um corte $(r,s)$-mínimo. Exiba a matriz $M$. Exiba um corte $(b,e)$-mínimo e prove a minimalidade desse corte.
  4. Desigualdade triangular. Seja $r$, $s$, e $t$ três nós de um grafo capacitado $(G,u)$. Mostre que $\lambda(r,t) \geq \text{}$ $\min\,(\lambda(r, s), \lambda(s,t))$, sendo $\lambda(i,j)$ uma abreviatura de $\lambda(G,u,i,j)$. Em outras palavras, mostre que $\lambda(r,t) \geq \lambda(r,s)$ ou $\lambda(r,t) \geq \lambda(s,t)$.
  5. Sejam $r$, $s$ e $t$ três nós de um grafo capacitado $(G,u)$. Seja $B$ um corte $(r,s)$-mínimo, seja $C$ um corte $(s,t)$-mínimo, e seja $D$ um corte $(r,t)$-mínimo. Mostre que dois desses cortes têm a mesma capacidade e o terceiro tem capacidade não menor que a dos outros dois.

5.2 Submodularidade

É importante entender como os cortes de um grafo interagem. Dados dois cortes $\cut(X)$ e $\cut(Y)$, é natural considerar os cortes $\cut(X\cap Y)$ e $\cut(X\cup Y)$. Esses quatro cortes satisfazem a seguinte desigualdade submodular:

Lema 5.3 (desigualdade submodular) Para quaisquer conjuntos $X$ e $Y$ de nós de um grafo capacitado $(G,u)$, vale a desigualdade \[ u(X\cap Y)+u(X\cup Y) \leq u(X)+u(Y)\text{.} \]

[A palavra submodular foi inspirada na igualdade modular $|X\cap Y| + |X\cup Y| = |X| + |Y|$ que vale para qualquer par $(X,Y)$ de conjuntos.]

Prova: Como $u\geq 0$, podemos tratar de cada aresta do grafo em separado e examinar a contribuição que cada uma dá para cada lado da desigualdade. Uma aresta $e$ que tem uma ponta em $X\cap\compl{Y}$ e outra em $\compl{X}\cap \compl{Y}$ contribui $u_e$ tanto para o lado esquerdo quanto para o lado direito da desigualdade.

figs/mine/submodularity-1-c.png

Uma aresta $e$ com uma ponta em $\compl{X}\cap Y$ e outra em $\compl{X}\cap \compl{Y}$ contribui $u_e$ para o lado esquerdo e $u_e$ para o lado direito. Uma aresta $e$ de $X\cap Y$ para $\compl{X}\cap Y$ contribui $u_e$ para cada lado. Uma aresta $e$ de $X\cap Y$ para $X\cap\compl{Y}$ contribui $u_e$ para cada lado. Uma aresta $e$ de $X\cap Y$ para $\compl{X}\cap \compl{Y}$ contribui $2u_e$ para cada lado. Finalmente, uma aresta $e$ de $X\cap\compl{Y}$ para $\compl{X}\cap Y$ contribui $0$ para o lado esquerdo e $2u_e$ para o lado direito da desigualdade. ■

A desigualdade submodular pode ser escrita assim:  $u(X\setm Y)+u(Y\setm X) \leq \text{}$ $u(X)+u(Y)$. Essa é a versão posi-modular da desigualdade submodular.

Exemplo 5.3: A figura mostra conjuntos $X$ e $Y$ de nós de um grafo capacitado $(G,u)$. Observe a desigualdade submodular $u(X\cap Y)+u(X\cup Y) = \text{}$ $8 + 5 \leq \text{}$ $9 + 6 = \text{}$ $u(X)+u(Y)$.

\[ \begin{array}[t]{l@{\quad}cccc} & a & b & c & d \\[0.5ex] a & - & 6 & - & 2 \\ b & 6 & - & 3 & 1 \\ c & - & 3 & - & 2 \\ d & 2 & 1 & 2 & - \end{array} \]
figs/xournalpp/abcd-square-4.png

A desigualdade submodular permite descruzar cortes localmente mínimos: Dados nós $r$ e $s$ de um grafo capacitado $(G,u)$ e conjuntos $X$ e $Y$ que separam $r$ de $s$, se os cortes $\cut(X)$ e $\cut(Y)$ são $(r,s)$-mínimos então $\cut(X\cap Y)$ e $\cut(X\cup Y)$ também são $(r,s)$-mínimos. Essa propriedade tem a seguinte generalização:

Lema 5.4 Dados nós $r$, $s$, $p$ e $q$ de um grafo capacitado $(G,u)$, seja $\cut(X)$ um corte $(r,s)$-mínimo e $\cut(Y)$ um corte $(p,q)$-mínimo. Se $X\cap Y$ separa $r$ de $s$ e $X\cup Y$ separa $p$ de $q$ então o corte $\cut(X\cap Y)$ é $(r,s)$-mínimo e o corte $\cut(X\cup Y)$ é $(p,q)$-mínimo.

Prova: Como $X\cap Y$ separa $r$ de $s$ e $X\cup Y$ separa $p$ de $q$, temos $u(X\cap Y) \geq u(X)$ e $u(X\cup Y) \geq u(Y)$. Assim, \[ u(X)+u(Y) \leq u(X\cap Y)+u(X\cup Y)\text{.} \] Mas $u(X\cap Y)+u(X\cup Y) \leq u(X)+u(Y)$ graças à desigualdade submodular (lema 5.3). Portanto, temos $=$ no lugar de cada $\leq$ e cada $\geq$. Em particular, $u(X\cap Y) = u(X)$ e $u(X\cup Y) = u(Y)$. Segue daí que $\cut(X\cap Y)$ é $(r,s)$-mínimo e $\cut(X\cup Y)$ é $(p,q)$-mínimo. ■

Exemplo 5.4: No grafo capacitado da figura, o corte $\cut(X)$ tem capacidade $7$ e o corte $\cut(Y)$ tem capacidade $6$. O corte $\cut(X)$ é $(r,s)$-mínimo. (Para comprovar a minimalidade, veja os caminhos $(r,s)$, $(r,p,b,s)$, $(r,a,q,b,s)$ e $(r,p,a,q,b,s)$ que conduzem $2$, $2$, $2$ e $1$ unidades de fluxo respectivamente.)  O corte $\cut(Y)$ é $(p,q)$-mínimo (verifique a minimalidade).  O corte $\cut(X\cap Y)$ é $(r,s)$-mínimo e o corte $\cut(X\cup Y)$ é $(p,q)$-mínimo.

\[ \begin{array}[t]{lcccccc} & a & p & r & b & q & s \\[0.5ex] a \ & - & 1 & 2 & - & 3 & - \\ p & 1 & - & 9 & 2 & - & - \\ r & 2 & 9 & - & - & - & 2 \\ b & - & 2 & - & - & 3 & 8 \\ q & 3 & - & - & 3 & - & 0 \\ s & - & - & 2 & 8 & 0 & - \end{array} \]
figs/ucsd/gomory-hu-2-one-X-cap-Y.png

O lema 5.4 tem a seguinte versão posi-modular. Seja $\cut(X)$ um corte $(r,s)$-mínimo e $\cut(Y)$ um corte $(p,q)$-mínimo. Se $X\setm Y$ separa $r$ de $s$ e $Y \setm X$ separa $p$ de $q$ então o corte $\cut(X\setm Y)$ é $(r,s)$-mínimo e o corte $\cut(Y\setm X)$ é $(p,q)$-mínimo.

Uma consequência importante do lema 5.4 é a possibilidades de descruzar dois cortes localmente mínimos:

Lema 5.5 (do descruzamento) Dados nós $r$ e $s$ de um grafo capacitado $(G,u)$, seja $\cut(X)$ um corte $(r,s)$-mínimo. Para qualquer par $(p,q)$ de nós de $X$, existe um corte $(p,q)$-mínimo $\cut(Z)$ tal que $Z\subseteq X$.

Prova: Ajuste a notação, invertendo os papéis de $r$ e $s$ se necessário, de modo que $r$ esteja em $X$. Seja $\cut(Y)$ um corte $(p,q)$-mínimo. Ajuste a notação, invertendo os papéis de $Y$ e $\compl{Y}$ se necessário, de modo que $r$ esteja em $Y$. Ajuste a notação, invertendo os papéis de $p$ e $q$ se necessário, de modo que $p$ esteja em $Y$.

Caso 1: $s \in \compl{Y}$. Nesse caso, $X\cup Y$ separa $r$ de $s$ e $X\cap Y$ separa $p$ de $q$. De acordo com o lema 5.4, $\cut(X\cap Y)$ é $(p,q)$-mínimo. É evidente que $X\cap Y \subseteq X$.

Caso 2: $s \in Y$. Nesse caso, $Y\setm X$ separa $s$ de $r$ e $X\setm Y$ separa $q$ de $p$. De acordo com a versão posi-modular do lema 5.4, $\cut(X \setm Y)$ é $(q,p)$-mínimo. É evidente que $X \setm Y \subseteq X$. ■

Exercícios 5.2

  1. Sejam $X$ e $Y$ dois conjuntos de nós de um grafo capacitado $(G,u)$. Quais são os valores de $u(X\cap Y)$ e $u(X\cup Y)$ quando $X\subset Y$?  Quais são os valores de $u(X\cap Y)$ e $u(X\cup Y)$ quando $X\cap Y=\emptyset$?
  2. ★ Considere o grafo capacitado $(G,u)$ da figura. Seja $X$ o conjunto $\conj{a,c,e}$ e $Y$ o conjunto $\conj{c,d}$. Calcule $u(X)$, $u(Y)$, $u(X\cap Y)$ e $u(X\cup Y)$ e confira a desigualdade submodular.
  3. ★ Prove a desigualdade posi-modular a partir da desigualdade submodular (lema 5.3). (Dica: $u(X\setm Y) = \text{}$ $u(\compl{(X \setm Y)})$ e $\compl{(X\setm Y)} = \text{}$ $\compl{X}\cup Y$.)
  4. Prove a versão posi-modular do lema 5.4.

5.3 Corte globalmente mínimo

O problema central deste capítulo é encontrar um corte globalmente mínimo, ou seja, um corte não trivial $\cut(X)$ tal que $u(X) \leq u(X')$ para todo corte não trivial $\cut(X')$. Convém tratar de um problema mais geral, que envolve um novo parâmetro: um conjunto arbitrário $K$ de nós que chamaremos terminais.

Diremos que um conjunto $X$ de nós divide o conjunto $K$ de terminais se $X$ separa dois dos terminais. Em outras palavras, $X$ divide $K$ se $X\cap K\neq \emptyset$ e $\compl{X}\cap K\neq \emptyset$. Dizemos também que o corte $\cut(X)$ — e não só sua margem $X$ divide $K$.

Dado um grafo capacitado $(G,u)$ e um conjunto $K$ de terminais, um corte $C$ é $K$-mínimo se $C$ divide $K$ e $u(C) \leq u(C')$ para todo corte $C'$ que divide $K$. Dizemos que um corte $K$-mínimo é globalmente mínimo; o advérbio é especialmente apropriado quando $K=V(G)$.

Problema 5.B (corte globalmente mínimo) Dado um grafo capacitado $(G,u)$ e um subconjunto $K$ de $V(G)$, encontrar um corte $K$-mínimo.

Uma instância do problema tem solução se e somente se $|K| \geq 2$. O conjunto de instâncias em que $|K| = 2$ é o problema 5.A (veja a seção 5.1).

Exemplo 5.5: No exemplo abaixo, todos os nós são terminais e todas as arestas têm capacidade $1$. Todo corte globalmente mínimo tem capacidade $1$.

figs/web/dhotson-tumblr.jpg

Exemplo 5.6: Seja $(T,u)$ um grafo capacitado em que $T$ é uma árvore. Seja $K$ um conjunto de dois ou mais terminais e $a$ uma aresta de capacidade mínima dentre as que têm ambas as pontas em $K$. Então $\conj{a}$ é um corte globalmente mínimo conforme o exemplo 5.2.

A capacidade de um corte globalmente mínimo em $(G,u,K)$ é denotada por $\lambda(G,u,K)$.  Se $|K| \lt 2$, adotamos a convenção $\lambda(G,u,K) := \infty$.

É evidente que $\lambda(G,u,K)$ aumenta quando $K$ encolhe, ou seja, $\lambda(G,u,K') \geq \lambda(G,u,K)$ sempre que $K' \subset K$. A propósito, o número $\lambda(G,1,V(G))$ é conhecido como aresta-conexidade (= edge-connectivity) de $G$.

O problema 5.B é uma união de instâncias do problema 5.A, uma instância para cada par de terminais. Assim, \[ \lambda(G,u,K) = \min_{r,s\,\in\,K}\,\lambda(G,u,r,s)\text{.} \]

Segue daí que uma instância do problema 5.B com $t$ terminais pode ser resolvida com  $t(t- 1)/2$  invocações do algoritmo Local­mente­Mínimo da seção 5.1. Esse número cresce com o quadrado de $t$, o que torna o método de solução muito lento.

Gomory e Hu observaram que a interação entre os muitos cortes localmente mínimos (discutida na seção 5.2), permite calcular um corte globalmente mínimo com apenas  $t-1$  invocações do algoritmo Local­mente­Mínimo. As próximas seções mostram como fazer isso.

Exercícios 5.3

  1. Prove que $\lambda(G,u,K') \geq \lambda(G,u,K)$ sempre que $K' \subset K$.
  2. Prove que $\lambda(G,u,K) = \min_{r,s\,\in\,K}\,\lambda(G,u,r,s)$ para qualquer $K$.
  3. ★ Sejam $r$ e $s$ dois nós de um grafo capacitado $(G,u)$. Seja $\cut(X)$ um corte $(r,s)$-mínimo e suponha que $X$ separa dois nós $p$ e $q$. É verdade que $\cut(X)$ é um corte $(p,q)$-mínimo?
  4. Árvore. Descreva um algoritmo que resolva qualquer instância $(G,u,K)$ do problema 5.B em que $G$ é uma árvore.
  5. Circuito. Descreva um algoritmo que resolva as instâncias $(G,u,K)$ do problema 5.B em que $G$ é conexo e cada um de seus nós tem grau $2$.
  6. Teta. Seja $G$ um grafo que consiste em dois nós, digamos $p$ e $q$, e três caminhos simples, sem nós em comum exceto $p$ e $q$, ligando $p$ a $q$. Dada uma tabela de capacidades $u$ para $G$, qual a capacidade de um corte globalmente mínimo em $(G,u,V(G))$?

5.4 Algoritmo para corte globalmente mínimo

A seguinte consequência do lema 5.4 contém a essência do algoritmo de Gomory–Hu mencionado na seção anterior:

Teorema 5.6 (Gomory–Hu) Seja $(G,u)$ um grafo capacitado, $K$ um subconjunto de $V(G)$, $(r,s)$ um par de elementos de $K$, e $\cut(X)$ um corte $(r,s)$-mínimo.  Se $\cut(X)$ não é $K$-mínimo então

Prova: Adote as abreviaturas $\lambda(r,s):=\text{}$ $\lambda(G,u,r,s)$ e $\lambda(K):=\text{}$ $\lambda(G,u,K)$.  Seja $\cut(X)$ um corte $(r,s)$-mínimo e $\cut(Y)$ um corte $K$-mínimo. Suponha que $\cut(X)$ não é $K$-mínimo. Então $Y$ não separa $r$ de $s$ (caso contrário, teríamos $u(X) = \text{}$ $\lambda(r,s) \leq \text{}$ $u(Y) = \text{}$ $\lambda(K)$ e portanto $\cut(X)$ seria $K$-mínimo).

Ajuste a notação, invertendo os papéis de $r$ e $s$ se necessário, de modo que $r$ esteja em $X$. Ajuste a notação, invertendo os papéis de $Y$ e $\compl{Y}$ se necessário, de modo que $r$ esteja em $Y$. Sejam $p$ e $q$ dois elementos de $K$ tais que $\cut(Y)$ é $(p,q)$-mínimo, donde $\lambda(p,q) = \text{}$ $u(Y) = \text{}$ $\lambda(K)$. Ajuste a notação, invertendo os papéis de $p$ e $q$ se necessário, de modo que $p$ esteja em $Y$.

figs/mine/submodularity-3-c.png

Caso 1: $q \in \compl{X}$. Nesse caso, $X \cap Y$ separa $r$ de $s$ e $X \cup Y$ separa $p$ de $q$. De acordo com o lema 5.4, $\cut(X \cap Y)$ é $(r,s)$-mínimo e $\cut(X \cup Y)$ é $(p,q)$-mínimo. O conjunto $X \cup Y$ divide $K\cap \compl{X}$ pois separa $s$ de $q$ e esses dois terminais estão em $\compl{X}$. Ademais, $\cut(X \cup Y)$ é $K$-mínimo, pois $u(X \cup Y) = \text{}$ $\lambda(p,q) = \text{}$ $\lambda(K)$. Logo, $\cut(X \cup Y)$ também é $(K \cap \compl{X})$-mínimo. Segue daí que todo corte $(K \cap \compl{X})$-mínimo é $K$-mínimo pois tem capacidade igual a $u(X\cup Y)$.

Caso 2: $q \in X$. Nesse caso, $Y \setm X$ separa $s$ de $r$ e $X \setm Y$ separa $q$ de $p$. De acordo com a versão posi-modular do lema 5.4, $\cut(Y \setm X)$ é $(r,s)$-mínimo e $\cut(X \setm Y)$ é $(p,q)$-mínimo. O conjunto $X \setm Y$ divide $K \cap X$, pois separa $q$ de $r$ e esses dois terminais estão em $K\cap X$. Ademais, $\cut(X \setm Y)$ é $K$-mínimo, pois $u(X \setm Y) = \text{}$ $\lambda(p,q) = \text{}$ $\lambda(K)$. Logo, $\cut(X \setm Y)$ também é $(K \cap X)$-mínimo. Segue daí que todo corte $(K \cap X)$-mínimo é $K$-mínimo pois tem capacidade igual a $u(X\setm Y)$. ■

Algoritmo. O algoritmo de Gomory–Hu para o problema 5.B decorre do teorema 5.6. Ele recebe um grafo capacitado $(G,u)$ com conjunto $K$ de terminais e usa o método da divisão e conquista para calcular (uma margem de) um corte $K$-mínimo.

Global­mente­Mínimo $(G,u,K)$  $\rhd$ $|K| \geq 2$
1 . sejam $r$ e $s$ dois nós de $K$
2 . $X \larr \text{}$ Local­mente­Mínimo $(G,u,r,s)$
3 . se $|K\cap X| \geq 2$
4 .ooo então $X' \larr \text{}$ Global­mente­Mínimo $(G,u, K\cap X)$
5 .ooo então se $u(X') \lt u(X)$ então $X\larr X'$
6 . se $|K\cap \compl{X}| \geq 2$
7 .ooo então $X'' \larr \text{}$ Global­mente­Mínimo $(G,u, K\cap \compl{X})$
8 .ooo então se $u(X'') \lt u(X)$ então $X\larr X''$
9 . devolva $X$

(Note que, para a maior parte dos pares $(v,w)$ de nós de $K$, o algoritmo jamais calcula um corte $(v,w)$-mínimo explicitamente. Em particular, se $v$ e $w$ estão em lados opostos de $\cut(X)$, o algoritmo calcula um corte $(v,w)$-mínimo explicitamente apenas quando $(v,w) = (r,s)$.)

Exemplo 5.7: A matriz de adjacências e capacidades abaixo representa um grafo capacitado $(G,u)$. Adote o conjunto de terminais $K=V(G)$.

\[ \begin{array}[t]{l@{\quad}cccc} & a & b & c & d \\[0.5ex] a & - & 7 & - & 5 \\ b & 7 & - & 3 & - \\ c & - & 3 & - & 2 \\ d & 5 & - & 2 & - \end{array} \]
figs/xournalpp/abcd-square.png

Submeta $(G,u,K)$ ao algoritmo Global­mente­Mínimo. Tome $r=a$ e $s=b$ na linha 1 do algoritmo. No fim da linha 2 temos $X=\conj{a,d}$ e $u(X)=9$. No fim da linha 4 temos $X'=\conj{d}$, $u(X')=7$ e $\cut(X')$ é $(K\cap X)$-mínimo. No fim da linha 7 temos $X''=\conj{c}$, $u(X'')=5$ e $\cut(X'')$ é $(K\cap \compl{X})$-mínimo.

Como $u(X'') \lt u(X') \lt u(X)$, o algoritmo devolve $X''$ na linha 9. O corte $\cut(X'')$ é $K$-mínimo e $\lambda(G,u,K) = 5$.

Exemplo 5.8: Seja $(G,u)$ o grafo capacitado da figura (o mesmo do exemplo 5.4) com conjunto de terminais $K=V(G)$. No fim da linha 2 do algoritmo temos $X=\conj{a,p,r}$. O corte $\cut(X)$ é $(r,s)$-mínimo e tem capacidade $u(X)=7$.

No fim da linha 4 temos $X'=\conj{b,p,r,s}$. (O algoritmo poderia, igualmente bem, ter escolhido $X'=\conj{a}$.) O corte $\cut(X')$ é $(K\cap X)$-mínimo e tem capacidade $u(X')=6$. No fim da linha 7 temos $X''=\conj{q}$. O corte $\cut(X'')$ é $(K\cap \compl{X})$-mínimo e tem capacidade $u(X'')=6$.

\[ \begin{array}[t]{l@{\quad}cccccc} & a & p & r & b & q & s \\[0.5ex] a & - & 1 & 2 & - & 3 & - \\ p & 1 & - & 9 & 2 & - & - \\ r & 2 & 9 & - & - & - & 2 \\ b & - & 2 & - & - & 3 & 8 \\ q & 3 & - & - & 3 & - & 0 \\ s & - & - & 2 & 8 & 0 & - \end{array} \]
figs/ucsd/gomory-hu-2-one-X-cap-Y.png

Como $u(X') = u(X'') \lt u(X)$, o algoritmo devolve $X'$. O corte $\cut(X')$ é $K$-mínimo. O corte $\cut(X'')$ também é $K$-mínimo.

Consumo de tempo. Digamos que $t$ é o número de terminais, ou seja, $t := |K|$. Se $f(t)$ é o número máximo de invocações do algoritmo Local­mente­Mínimo na linha 2 de Global­mente­Mínimo então $f(1)=0$ e \[ f(t) = 1 + \max_{t'+t''=t}\left( f(t')+f(t'') \right) \] para $t\geq 2$, sendo $\max$ tomado sobre todos os pares $(t',t'')$ de inteiros positivos tais que $t'+t''=t$. A solução dessa recorrência é $f(t)=t-1$ para todo $t\geq 1$. Em outras palavras, o algoritmo Global­mente­Mínimo faz no máximo \[ t-1 \] cálculos de corte localmente mínimo.  Assim, o consumo de tempo de Global­mente­Mínimo é $\Oh(t\,F(n,m))$, sendo $F(n,m)$ o consumo de Local­mente­Mínimo para um grafo com $n$ nós e $m$ arestas. Como $t\leq n$ e $F(n,m)=\Oh(nm^2)$, podemos dizer que o algoritmo consome $\Oh(n^2m^2)$ unidades de tempo.

Embora execute o subalgoritmo Local­mente­Mínimo apenas $t-1$ vezes, o algoritmo Global­mente­Mínimo é lento. Outros algoritmos para o problema 5.B têm o mesmo consumo assintótico mas são mais rápidos porque a constante escondida sob a notação $\Oh()$ é menor.

Exercícios 5.4

  1. ★ Mostre que $f(t)=t-1$ é a solução da recorrência na análise de consumo de tempo do algoritmo Global­mente­Mínimo.
  2. Reescreva o código do algoritmo Global­mente­Mínimo de modo a remover a restrição $|K| \geq 2$.

5.5 Árvores de cortes mínimos

O algoritmo Global­mente­Mínimo da seção anterior calcula uma certa coleção de cortes localmente mínimos, ou melhor, uma certa coleção de margens de cortes localmente mínimos. Essa coleção é completa no seguinte sentido: para cada par $(r,s)$ de nós do grafo, existe um (e apenas um) conjunto $X$ na coleção tal que o corte $\cut(X)$ é $(r,s)$-mínimo.  O teorema 5.6 sugere que, para todos os efeitos, essa coleção é laminar e portanto pode ser representada, de maneira muito compacta, por uma árvore. Para descrever essa árvore será necessário introduzir um pouco de notação e terminologia.

Suponha que $G$ é um grafo e $T$ um árvore tal que $V(T)=V(G)$. (O conjunto de arestas de $T$ não tem relação direta com $E(G)$ e portanto $T$ não é, em geral, um subgrafo de $G$.)  Dada uma aresta $ij$ de $T$, seja $R$ o conjunto de nós de qualquer das duas componentes conexas de $T-ij$ e considere o corte $\cut(R)$ de $G$. Diremos que esse corte de $G$ é induzido por $T-ij$

Uma árvore de cortes mínimos, ou árvore de Gomory–Hu, para um grafo capacitado $(G,u)$ é qualquer árvore $T$ tal que $V(T)=V(G)$ e, para cada aresta $ij$ de $T$, o corte de $G$ induzido por $T-ij$

tem capacidade $\lambda(G,u,i,j)$.

A segunda condição da definição poderia ser formulada assim: para cada aresta $ij$ de $T$, o corte induzido por $T-ij$ é $(i,j)$-mínimo.

Qualquer árvore $T$ de cortes mínimos para $(G,u)$ descreve uma coleção completa de cortes localmente mínimos, como passamos a mostrar.  Sejam $r$ e $s$ dois nós de $G$ e $P$ o único caminho simples de $r$ a $s$ em $T$. Para cada aresta $ij$ de $P$, seja $\cut(R_{ij})$ o corte induzido em $G$ por $T-ij$. É óbvio que $\cut(R_{ij})$ separa $r$ de $s$ e portanto $\lambda(G,u,r,s) \leq u(R_{ij})$. É menos óbvio que temos $=$ no lugar de $\leq$ para alguma aresta $ij$:

Lema 5.7 Para qualquer árvore $T$ de cortes mínimos de um grafo capacitado $(G,u)$ e qualquer par $(r,s)$ de nós de $G$, tem-se \[\textstyle \lambda(G,u, r, s) = \min_{ij}\,u(R_{ij})\,, \] sendo $\min_{ij}$ tomado sobre todas as arestas $ij$ do caminho simples de $r$ a $s$ em $T$ e $\cut(R_{ij})$ o corte de $G$ induzido por $T-ij$.

Prova: Seja $P$ o caminho simples de $r$ a $s$ em $T$. Como já observamos acima, $\lambda(G, u, r, s) \leq \text{}$ $u(R_{ij})$ para cada aresta $ij$ de $P$. Portanto, basta mostrar que $\lambda(G, u, r, s) \geq u(R_{pq})$ para alguma aresta $pq$ de $P$.

Seja $\cut(X)$ um corte $(r,s)$-mínimo de $(G,u)$ e ajuste a notação de modo que $r\in X$. Seja $p$ o último nó de $P$ em $X$ e $q$ o nó seguinte de $P$. Como $X$ separa $p$ de $q$, temos $u(X) \geq \lambda(G, u, p,q)$. Resumindo, \[ \lambda(G, u, r,s) = u(X) \geq \lambda(G, u, p,q)\text{.} \] Como $pq$ é uma aresta de $T$ e $T$ é uma árvore de cortes mínimos, temos $\lambda(G, u, p,q) = \text{}$ $u(R_{pq})$. Portanto, $\lambda(G, u, r,s) \geq u(R_{pq})$, como queríamos demonstrar. ■

Para tirar bom proveito computacional do lema, convém tratar toda árvore de cortes mínimos como um grafo capacitadado, sendo $\lambda(G, u, i,j)$ a capacidade de uma aresta genérica $ij$ da árvore.

Exemplo 5.9: Seja $(G,u)$ um grafo capacitado em que $G$ é uma árvore. É fácil verificar que $G$ é uma árvore de cortes mínimos para $(G,u)$.

Exemplo 5.10: Seja $(G,u)$ um grafo capacitado em que $G$ consiste em um circuito e nada mais. Seja $e$ uma aresta de capacidade mínima. Então $G-e$ é uma árvore de cortes mínimos para $(G,u)$.

Exemplo 5.11: O lado esquerdo da figura mostra um grafo capacitado $(G,u)$. O lado direito mostra uma árvore de cortes mínimos para $(G,u)$. O número ao lado de cada aresta $ij$ da árvore é o valor de $\lambda(G,u,i,j)$.

figs/xournalpp/21.png       figs/xournalpp/26.png

É verdade que todo grafo capacitado tem uma árvore de Gomory–Hu? A resposta é afirmativa, mas está longe de ser óbvia.

Teorema 5.8 (Gomory–Hu) Todo grafo capacitado tem uma árvore de cortes mínimos.

A prova do teorema é um tanto complexa. Ela envolve uma generalização do conceito de árvore de cortes mínimos que faremos isso na próxima seção.

Exemplo 5.12: A tabela descreve uma coleção laminar completa para o grafo capacitado $(G,u)$ da figura. A coleção pode ser representada pela expressão $((((b)\ a)\ c)\ (e)\ ((h)\ x)\ d)$. Converta essa expressão no desenho de uma árvore de cortes mínimos. [CCPS 3.71]

figs/ccps/min-cut-fig-3dot15.png
\[ \begin{array}[b]{l@{\quad}ll} (r,s) & X & u(X) \\[0.3ex] \hline (h,e) & h\:x & 7 \\ (c,b) & a\:b & 8 \\ (a,b) & b & 8 \\ (c,d) & a\:b\:c& 9 \\ (d,e) & e & 8 \\ (h,x) & h & 8 \end{array} \]

Exercícios 5.5

  1. É verdade que a definição de árvore de cortes mínimos só faz sentido para grafos capacitados conexos?
  2. Seja $T$ uma árvore de cortes mínimos para um grafo capacitado $(G,u)$. Seja $ij$ uma aresta de $T$ e $R$ o conjunto de nós de uma das componentes conexas de $T-ij$. Seja $r$ um nó em $R$ e $s$ um nó em $\compl{R}$. É verdade que $u(R) = \lambda(G,u,r,s)$?
  3. Prove que os exemplos 5.10 e 5.11 estão corretos.
  4. Circuito. Seja $G$ o grafo que consiste no circuito $(a,b,c, d,e, f,g, h,a)$ e nada mais. Suponha que as arestas $de$ e $ha$ têm capacidade $10$ e todas as demais têm capacidade maior que $10$. (Faça uma figura.) Verifique que $(G-de-ha)+dh$ é uma árvore de cortes mínimos para o grafo capacitado. (Dica: A árvore é induzida pelo caminho $(a,b,c,d,h,g,f,e)$. Note que a aresta $dh$ da árvore não pertence a $G$.)
  5. Seja $G$ o grafo que consiste no circuito $(a,b,c,d,e,a)$ e nada mais. Suponha que todas arestas têm capacidade $1$. Desenhe a árvore de cortes mínimos sugerida pela expressão $((c)\ (((e)\ d)\ a) \ b)$. Construa uma árvore de cortes mínimos para $(G,u)$ diferente da anterior. Construa uma terceira árvore, diferente das anteriores.
  6. Grafo teta. Seja $H$ um grafo que consiste em dois nós, digamos $p$ e $q$, e três caminhos simples — sem nós em comum exceto $p$ e $q$ — ligando $p$ a $q$. Seja $u$ uma tabela de capacidades para $H$. Descreva uma árvore de cortes mínimos para $(H,u)$.
  7. A primeira figura mostra um grafo capacitado $(G,u)$. A segunda figura mostra uma árvore de cortes mínimos de $(G,u)$. Exiba um corte $(a,e)$-mínimo em $(G,u)$. Exiba um corte $(e,d)$-mínimo em $(G,u)$.
    figs/ucsd/gomory-hu-3-1.png       figs/ucsd/gomory-hu-3-8.png
  8. ★ A primeira figura mostra um grafo capacitado $(G,u)$. Prove que a árvore da segunda figura é uma árvore de cortes mínimos de $(G,u)$.  (Os números junto às arestas da árvore são as capacidades dos correspondentes cortes de $(G,u)$.)
    figs/ucsd/gomory-hu-2-one.png     figs/ucsd/gomory-hu-2-two.png
  9. Prove que todo grafo capacitado $(G,u)$ tem um par $(r,s)$ de nós e um corte $(r,s)$-mínimo $\cut(Z)$ tal que $|Z|=1$. (Dica: Considere uma árvore de cortes mínimos.)
  10. ★ Suponha que o grau de todo nó de um grafo $G$ é pelo menos $d$. Mostre que existe um par $(r,s)$ de nós tal que $\lambda(G,r,s) \geq d$. (Dica: Considere uma árvore de cortes mínimos.) [András Frank, CCPS 3.72]

5.6 Algoritmo para árvore de cortes mínimos

Esta seção dá uma prova algorítmica do teorema 5.8. A prova é indutiva, sendo a indução feita sobre o tamanho de um conjunto de terminais, como os que usamos na seção 5.3. Para fazer isso, será necessário generalizar a definição de árvore de cortes mínimos.

O conjunto de terminais do grafo $G$ será denotado por $K$ e o conjunto de nós da árvore de cortes mínimos será $K$.  Usaremos a expressão partição indexada por $K$ para designar qualquer tabela $L$ que associa a cada terminal $k$ um subconjunto $L(k)$ de $V(G)$ e tem as seguintes propriedades:

  1. para cada $v$ em $V(G)$ existe $k$ em $K$ tal que $L(k) \ni v$,
  2. para cada $k$ em $K$ tem-se $L(k) \ni k$,
  3. se $k_1$ e $k_2$ são elementos distintos de $K$ então $L(k_1) \cap L(k_2) = \emptyset$.

(É claro que a coleção $\conj{L(k) : k \in K}$ é uma partição de $V(G)$.)  Dada uma árvore $T$ com $V(T)=K$ e uma aresta $ij$ de $T$, seja $R$ o conjunto de nós de qualquer uma das duas componentes conexas de $T-ij$. Agora considere o corte de $G$ cuja margem é

$\bigcup_{k\in R} L(k)$.

Diremos que esse corte é induzido por $T-ij$ e $L$.

Agora que introduzimos a notação e a terminologia apropriada, podemos formular a definição generalizada de árvore de cortes mínimos. Dado um grafo capacitado $(G,u)$ e um subconjunto $K$ de $V(G)$, uma árvore de cortes mínimos para $(G,u,K)$ é um par $(T,L)$ em que $T$ uma árvore com $V(T) = K$ e $L$ é uma partição indexada por $K$ tal que, para cada aresta $ij$ de $T$, o corte em $(G,u)$ induzido por $T-ij$ e $L$ é $(i,j)$-mínimo.  Veja dois exemplos extremos da definição:

Podemos agora enunciar a generalização do teorema 5.8 que estabelece a existência de árvores de cortes mínimos:

Teorema 5.9 (Gomory–Hu) Para qualquer grafo capacitado $(G,u)$ e qualquer conjunto $K$ de seus nós, existe uma árvore de cortes mínimos para $(G,u,K)$.

A prova do teorema é um algoritmo de divisão e conquista que pode ser grosseiramente resumido assim: faça uma bipartição $(K',K'')$ de $K$, encontre uma árvore de cortes mínimos para $(G,u,K')$, encontre uma árvore de cortes mínimos para $(G,u,K'')$, e ligue as duas árvores por uma aresta apropriada.  A prova mostrará como construir uma árvore de cortes mínimos quando $|K|=1$, como construir uma árvore de cortes mínimos quando $|K|=2$, e assim por diante.  Para implementar essa ideia, precisamos da operação de contração de nós.

Operação de contração. A contração (= shrinking) de um subconjunto $W$ de $V(G)$ é a operação que produz um novo grafo em que $W$ é tratado como um nó. Mais formalmente, o novo grafo $G'$ tem conjunto de nós $\compl{W}\cup \conj{W}$ e conjunto de arestas definido da seguinte maneira: para cada aresta $vw$ de $G$ tal que $v\in \compl{W}$,

As arestas de $G$ que têm ambas as pontas em $W$ não estão representadas em $G'$. Ademais, $G'$ não tem arestas paralelas: mesmo que $G$ tenha arestas $vw$ e $vw'$ com $v$ em $\compl{W}$ e $w$ e $w'$ ambos em $W$, o grafo $G'$ terá uma só aresta $vW$.

A contração de $W$ tem o efeito de eliminar aqueles — e somente aqueles — cortes de $G$ que dividem $W$, ou seja, aqueles cortes $\cut(Z)$ para os quais $Z\cap W \neq \emptyset$ e $\compl{Z} \cap W\neq \emptyset$.

Se $G$ tem uma tabela de capacidades $u$, a definição da correspondente tabela $u'$ para o grafo contraído $G'$ é previsível: para cada aresta $vW$ de $G'$ tem-se $u'_{vW} := \text{}$ $\sum \left(u_{vw} : vw\in \cut(W)\right)$  e  para cada aresta $vw$ de $G'$ com ambas as pontas em $\compl{W}$ tem-se $u'_{vw} := \text{}$ $u_{vw}$.  Com isso, os cortes de $G'$ têm a mesma capacidade que os correspondentes cortes de $G$. Mais precisamente, para cada subconjunto $Z$ de $V(G')$, se $Z\not\ni W$ então \begin{equation}\label{eq:uprime-equals-u} u'(Z) = u(Z) \end{equation}

e se $Z\ni W$ então \begin{equation}\label{eq:uprime-equals-u-generalized} u'(Z) = u(Z^*) \end{equation}

sendo $Z^* := (Z \setm \conj{W}) \cup W$ o subconjunto de $V(G)$ que corresponde a $Z$.

Prova do teorema 5.9. A prova do teorema 5.9 é uma indução em $|K|$. A base da indução é o caso em que $|K| = 1$. Nesse caso, a árvore de cortes mínimos é o par trivial $(T,L)$ definido por $V(T) := \conj{k}$, $E(T) := \emptyset$, e $L(k) := V(G)$, sendo $k$ o único elemento de $K$.

Suponha agora que $|K| \geq 2$. Sejam $r$ e $s$ dois nós em $K$ e seja $\cut(X)$ um corte $(r,s)$-mínimo de $(G,u)$. Seja $(G',u')$ o grafo capacitado que resulta da contração de $\compl{X}$ e $(G'',u'')$ o grafo capacitado que resulta da contração de $X$.

Seja $K'$ o conjunto $K\cap X$. Podemos supor, por hipótese de indução, que $(G',u',K')$ tem uma árvore de cortes mínimos $(T',L')$. Note que o nó $\compl{X}$ de $G'$ não pertence a $K'$. Seja $k'$ o nó de $K'$ tal que $L'(k') \ni \compl{X}$.  (Nada impede que $k'$ coincida com $r$ ou $s$, mas isso é irrelevante.)

Seja $K''$ o conjunto $K\cap \compl{X}$. Podemos supor, por hipótese de indução, que $(G'',u'',K'')$ tem uma árvore de cortes mínimos $(T'',L'')$. Seja $k''$ o nó de $K''$ tal que $L''(k'') \ni X$.

Seja $T$ a árvore $T'+T'' + k'k''$. Seja $L$ a tabela que associa a cada $k$ em $K$ um subconjunto de $V(G)$ da seguinte maneira:  $L(k') := L'(k') \setm \conj{\compl{X}}$ e $L(k) := L'(k)$ para cada $k$ em $K' \setm \conj{k'}$; $L(k'') := L''(k'') \setm \conj{X}$ e $L(k) := L''(k)$ para cada $k$ em $K'' \setm \conj{k''}$. Mostraremos a seguir que $(T,L)$ é uma árvore de cortes mínimos para $(G,u,K)$.

É claro que $K'\cup K'' = K$. É claro também que $V(T)=K$ e que $L$ é uma partição indexada por $K$.  Resta apenas provar que, para cada aresta $ij$ de $T$, o corte em $(G,u)$ induzido por $T-ij$ e $L$ é $(i,j)$-mínimo.  Seja, pois, $ij$ uma aresta de $T$ e considere, em separado, os casos $ij=k'k''$, $ij\in E(T')$, e $ij\in E(T'')$.

Caso 1: $ij = k'k''$.
Os conjuntos de nós das duas componentes conexas de $T-k'k''$ são $K'$ e $K''$. Ademais, $\bigcup_{k\in K'} L'(k) = \text{}$ $V(G') = X$ e $\bigcup_{k\in K''} L''(k) = \text{}$ $V(G'') = \compl{X}$. Assim, $\cut(X)$ é o corte induzido por $T-k'k''$ e $L$ em $G$. Precisamos mostrar que $u(X) = u(Y)$, sendo $\cut(Y)$ um corte $(k',k'')$-mínimo em $G$. Como $X$ separa $k'$ de $k''$, temos $u(Y) \leq u(X)$. Resta apenas mostrar que \begin{equation}\label{eq:desiderata-caso-1} u(Y) \geq u(X). \end{equation}

Se $Y$ separa $r$ de $s$, essa desigualdade é óbvia pois $\cut(X)$ é $(r,s)$-mínimo. Resta tratar do caso em que $Y$ não separa $r$ de $s$. Ajuste a notação, intercambiando $Y$ com $\compl{Y}$ se necessário, de modo que $r$ e $s$ estejam ambos em $Y$. Agora podemos ter

$k' \in \compl{Y}$  ou   $k' \in Y$.

Na segunda alternativa, $k''$ está necessariamente em $\compl{Y}$. Assim, a segunda alternativa é equivalente à primeira: basta intercambiar $X, k', G'$ com $\compl{X}, k'', G''$, respectivamente.  Podemos supor portanto, sem perder generalidade, que $k' \in \compl{Y}$.

Ajuste a notação, trocando os papéis de $r$ e $s$ se necessário, de modo que $r$ esteja em $X$. Como $r$ e $k'$ estão ambos em $X$, o lema 5.5 garante que existe um corte $(r,k')$-mínimo $\cut(Z)$ em $(G,u)$ tal que $Z\subseteq X$. Como $Y$ separa $r$ de $k'$, temos \begin{equation}\label{eq:uY-geq-uZ} u(Y) \geq u(Z)\text{.} \end{equation}

Se $Z \ni r$ então $Z$ separa $r$ de $s$, donde $u(Z) \geq u(X)$, o que prova \eqref{eq:desiderata-caso-1} e assim encerra a discussão do caso $ij=k'k''$.

Agora suponha que $Z \not\ni r$ e portanto $Z \ni k'$. Considere a árvore de cortes mínimos $(T',L')$ de $(G',u',K')$. Seja $P$ o caminho de $r$ a $k'$ em $T'$. Seja $pq$ uma aresta de $P$ que minimiza a capacidade do corte induzido por $T'-pq$ e $L'$ em $(G',u')$. Seja $R$ a margem desse corte que contém $k'$. De acordo com a generalização óbvia do lema 5.7 (com $G', u', T', r, k'$ nos papéis de $G, u, T, r, s$ respectivamente), o corte $\cut(R)$ é $(r,k')$-mínimo em $(G',u')$.

Como $R \ni k'$, a definição de $k'$ garante que o nó $\compl{X}$ de $G'$ também está em $R$. Seja $R^*$ o conjunto de nós de $G$ que corresponde a $R$, isto é, $R^* := (R \setm \conj{\compl{X}}) \cup \compl{X}$. Então \[ \begin{split} u(Y) & \geq u(Z) \\ & = u'(Z) \\ & \geq u'(R) \\ & = u(R^*) \\ & \geq u(X)\text{,} \end{split} \]

o que prova \eqref{eq:desiderata-caso-1}.  O primeiro $\geq$ segue de \eqref{eq:uY-geq-uZ}. O primeiro $=$ segue de \eqref{eq:uprime-equals-u} pois $Z \subseteq X$. O segundo $\geq$ vale porque $Z$ separa $r$ de $k'$, enquando $\cut(R)$ é um corte $(r,k')$-mínimo em $(G',u')$. O segundo $=$ vale em virtude de \eqref{eq:uprime-equals-u-generalized}, com $R$ no papel de $Z$. O terceiro $\geq$ vale porque $R^*$ separa $r$ de $s$ (uma vez que $r\notin R$ e $r \notin \compl{X}$ enquanto $s \in \compl{X}$) enquanto $\cut(X)$ é $(r,s)$-mínimo em $(G,u)$.

Caso 2: $ij \in E(T') \cup E(T'')$.
Vamos supor que $ij \in E(T')$, pois a alternativa $ij \in E(T'')$ é análoga. Considere o corte induzido por $T'-ij$ e $L'$ em $G'$. Seja $R$ a margem desse corte que não contém $k'$. Então $R \subseteq X$ em virtude da maneira como $k'$ foi definido. Precisamos mostrar que $\cut(R)$ é um corte $(i,j)$-mínimo em $(G,u)$.

Seja $\cut(Z)$ um corte $(i,j)$-mínimo em $(G,u)$. Como $i$ e $j$ estão em $X$, o lema 5.5 permite escolher $Z$ de modo que $Z\subseteq X$. Como $R$ separa $i$ de $j$, \begin{equation}\label{eq:case-2-geq} u(R) \geq u(Z). \end{equation}

Resta provar a desigualdade $\leq$.  O corte $\cut(R)$ é $(i,j)$-mínimo em $(G',u')$ pois $(T',L')$ é uma árvore de cortes mínimos para $(G',u',K')$. Logo, \begin{equation}\label{eq:case-2-leq} \begin{split} u(R) & = u'(R) \\ & \leq u'(Z) \\ & = u(Z) \text{.} \end{split} \end{equation}

O primeiro $=$ vale em virtude de \eqref{eq:uprime-equals-u}, com $R$ no papel de $Z$, pois $R \subseteq X \subseteq V(G')$. O primeiro $\leq$ vale porque $\cut(R)$ é $(i,j)$-mínimo em $(G',u')$ e $Z$ separa $i$ de $j$ em $G'$. O segundo $=$ vale em virtude de \eqref{eq:uprime-equals-u} pois $Z \subseteq X \subseteq V(G')$.

Isso conclui a prova de que $(T,L)$ é uma árvore de cortes mínimos para $(G,u,K)$ e assim encerra a prova do teorema 5.9. ■

Algoritmo. A prova do teorema teorema 5.9 leva imediatamente ao seguinte algoritmo, que calcula uma árvore de cortes mínimos para $(G,u,K)$. Suporemos que a operação de contração está encapsulada numa rotina Contração que recebe $(G,u,W)$ e devolve o resultado $(G',u')$ da contração de $W$ em $(G,u)$.

Gomory­Hu­Tree $(G, u, K)$  $\rhd$ $|K| \geq 1$
01 . se $|K| = 1$
02 .ooo então seja $k$ o elemento de $K$
03 .ooo então $T\larr (\conj{k},\emptyset)$
04 .ooo então $L(k) \larr V(G)$
05 .ooo então devolva $(T,L)$ e pare
06 . sejam $r$ e $s$ dois nós de $K$
07 . $X \larr \text{}$ Local­mente­Mínimo $(G,u,r,s)$
08 . $(G',u') \larr \text{}$ Contração $(G,u,\compl{X})$
09 . $K' \larr K \cap X$
10 . $(T',L') \larr \text{}$ Gomory­Hu­Tree $(G',u',K')$
11 . seja $k'$ o nó de $K'$ tal que $L'(k') \ni \compl{X}$
12 . $(G'',u'') \larr \text{}$ Contração $(G,u,X)$
13 . $K'' \larr K \cap \compl{X}$
14 . $(T'',L'') \larr \text{}$ Gomory­Hu­Tree $(G'',u'',K'')$
15 . seja $k''$ o nó de $K''$ tal que $L''(k'') \ni X$
16 . $T \larr T' + T'' + k'k''$
17 . $L(k') \larr L'(k') \setm \conj{\compl{X}}$
18 . para cada $k$ em $K' \setm \conj{k'}$
19 .ooo $L(k) \larr L'(k)$
20 . $L(k'') \larr L''(k'') \setm \conj{X}$
21 . para cada $k$ em $K'' \setm \conj{k''}$
22 .ooo $L(k) \larr L''(k)$
23 . devolva $(T, L)$ e pare

Tal como o algoritmo Global­mente­Mínimo, o algoritmo Gomory­Hu­Tree consome $\Oh(|K|\,F(n,m))$ unidades de tempo, sendo $n := |V(G)|$, $m := |E(G)|$ e $F(n,m)$ o consumo de Local­mente­Mínimo. Como $|K| \leq n$ e $F(n,m)=\Oh(nm)$, o consumo de tempo de Gomory­Hu­Tree é $\Oh(n^2m)$.

Exercícios 5.6

  1. Construa uma árvore de cortes mínimos para o grafo capacitado da figura.
  2. Construa uma árvore de cortes mínimos para o grafo capacitado da figura.
  3. A matriz de adjacências abaixo define um grafo $G$. (Faça uma figura.) Suponha que todas as arestas têm capacidade $1$. Construa uma árvore de cortes mínimos para $G$.
    \[ \begin{array}[t]{l@{\quad}ccccccccc} & a & b & c & d & e & f & g & h & i \\[0.5ex] a & - & 1 & 1 & - & - & - & - & - & - \\ b & 1 & - & 1 & - & - & 1 & - & - & - \\ c & 1 & 1 & - & - & - & - & - & 1 & - \\ d & - & - & - & - & 1 & 1 & - & - & - \\ e & - & - & - & 1 & - & 1 & - & - & 1 \\ f & - & 1 & - & 1 & 1 & - & - & - & - \\ g & - & - & - & - & - & - & - & 1 & 1 \\ h & - & - & 1 & - & - & - & 1 & - & 1 \\ i & - & - & - & - & 1 & - & 1 & 1 & - \end{array} \]