MOR - Tema 2

MOR
Modelos de Optimización de Redes
Teoría de Grafos
Optimización
2026-01-12
66 min de lectura

Árboles

Bosque. Definición

Sea G=(V,A)G = (V, A), se dice bosque si es un grafo no orientado acíclico, es decir, si no contiene ciclos.

Árbol. Definición

Sea G=(V,A)G = (V, A), se dice árbol si es un grafo no orientado acíclico y conexo.

💡Nota

Llamamos árbol trivial al árbol de orden 1, es decir, el árbol que contiene un único vértice y ningún arco.

Proposición

Sea G=(V,A)G = (V, A) un bosque que no es árbol, entonces cada una de sus componentes conexas es un árbol.

Teorema 2.1

Sea G=(V,A)G = (V, A) grafo no orientado con o(G)=n>1o(G) = n > 1 y t(G)=mt(G) = m, las siguientes expresiones son equivalentes:

  1. GG es un árbol.
  2. Entre cada dos vértices de GG existe una única cadena elemental que los une
  3. GG es conexo y m=n1m = n - 1
  4. GG es acíclico y m=n1m = n - 1

📐Demostración

  • 12)1 \Rightarrow 2) Sea GG árbol, entonces por definición de árbol, es conexo entonces i,jV\forall i, j \in V existe al menos una cadena elemental que los une.

Supongamos que no es única, es decir, para i,jVi, j \in V existen πij\pi_{ij} y πij\pi_{ij}' cadenas elementales distintas que unen ii con jj. Entonces:

πijπij contiene al menos un ciclo\begin{align*} \pi_{ij} \cup \pi_{ij}' \text{ contiene al menos un ciclo} \end{align*}

Esto es imposible porque GG es acíclico por definición de árbol. Por lo tanto, la cadena elemental que une ii con jj es única.

  • 23)2 \Rightarrow 3) Sea GG grafo no orientado tal que entre cada dos vértices existe una única cadena elemental que los une. Entonces, GG es conexo por definición.

Para ver que m=n1m = n - 1 aplicamos inducción sobre nn:

  • Si n=2n = 2. Como existe una única cadena elemental que une los dos vértices, dicha cadena tiene que ser la arista que los une. Al ser única entonces:
m=1=n1\begin{align*} m = 1 = n - 1 \end{align*}
  • Supongamos que se cumple para n=kn = k, entonces se cumple para n=k+1n = k + 1. Sea G=(V,A)G = (V, A) grafo con o(G)=no(G) = n y t(G)=mt(G) = m y e=(i,j)Ae = (i,j) \in A arista cualquiera. Como los vértices ii y jj están unidos por esta arista y por hipótesis existe una única cadena elemental que los une, por el lema 1.4:
G=(V,A{e}) no es conexo\begin{align*} G' = (V, A \setminus \{e\}) \text{ no es conexo} \end{align*}

Por tanto, aplicando el lema 1.8 tenemos que GG' tiene dos componentes conexas G1,G2G_1', G_2' que son grafos de orden menor a nn. Por hipótesis de inducción, cada una de estas componentes cumple:

m1=n11ym2=n21\begin{align*} m_1 = n_1 - 1 \quad \text{y} \quad m_2 = n_2 - 1 \end{align*}

De esta forma:

m=t(G)=t(G)+1e=m1+m2+1==(n11)+(n21)+1=n1+n21=n1\begin{align*} m & = t(G) = t(G') + \overbrace{1}^{e} = m_1 + m_2 + 1 =\\[2ex] & = (n_1 - 1) + (n_2 - 1) + 1 = n_1 + n_2 - 1 = n - 1 \end{align*}
  • 34)3 \Rightarrow 4) Basta ver que GG es acíclico. Sea GG grafo conexo con m=n1m = n - 1, supongamos que GG contiene un ciclo π\pi. Sea eπe \in \pi arista cualquiera, aplicando la proposición 1.6 tenemos que:
G=(V,A{e}) es conexo\begin{align*} G' = (V, A \setminus \{e\}) \text{ es conexo} \end{align*}

Ahora, aplicando el teorema 1.9 tenemos que:

t(G)o(G)1=o(G)1\begin{align*} t(G') \geq o(G') - 1 = o(G) - 1 \end{align*}

Como por hipótesis t(G)=o(G)1t(G) = o(G) - 1, entonces llegamos a que:

t(G)t(G)\begin{align*} t(G') \geq t(G) \end{align*}

Pero por la construcción de GG' tenemos que:

t(G)=t(G)1    t(G)<t(G)#\begin{align*} t(G') = t(G) - 1 \implies t(G') < t(G) \quad \# \end{align*}
  • 41)4 \Rightarrow 1) Basta ver que GG es conexo. Sea GG acíclico con m=n1m = n - 1 con kk componentes conexas G1,G2,,GkG_1, G_2, \dots, G_k. Cada componente GiG_i es conexa y acíclica (por serlo GG), por lo que son árboles. Aplicando 131 \Rightarrow 3 tenemos que:
t(Gi)=o(Gi)1i=1,,k\begin{align*} t(G_i) = o(G_i) - 1 \quad \forall i = 1, \dots, k \end{align*}

Por lo tanto:

t(G)=i=1kt(Gi)=i=1k(o(Gi)1)=o(G)k\begin{align*} t(G) = \displaystyle \sum_{i = 1}^{k} t(G_i) = \displaystyle \sum_{i = 1}^{k} (o(G_i) - 1) = o(G) - k \end{align*}

Y por hipótesis t(G)=o(G)1t(G) = o(G) - 1, entonces:

o(G)k=o(G)1    k=1\begin{align*} o(G) - k = o(G) - 1 \implies k = 1 \end{align*}

Y por tanto, como solo tiene una componente conexa, GG es conexo.

Árbol. Definición equivalente

A partir del teorema 2.1 y la proposición 1.7, podemos definir un árbol de las siguientes maneras equivalentes:

  • GG conexo y sin ciclos
  • Entre cada dos vértices de GG existe una única cadena elemental que los une
  • GG es acíclico y m=n1m = n - 1
  • GG es conexo y m=n1m = n - 1
  • GG es minimalmente conexo
  • GG es conexo y todas sus aristas son puentes

💡Nota

Como consecuencia, tenemos demostrado que un grafo minimalmente conexo tiene exactamente n1n - 1 aristas.

Raíz, nudo y hoja. Definición

Sea G=(V,A)G = (V, A) un árbol, fijado un vértice rVr \in V (llamado raíz) se definen:

  • Nudo: Cualquier vértice intermedio vVv \in V entre la raíz y una hoja, es decir:
vryg(v)>1\begin{align*} v \neq r \quad \text{y} \quad g(v) > 1 \end{align*}
  • Hoja: Cualquier vértice vVv \in V que cumple:
vr y g(v)=1\begin{align*} v \neq r \quad \text{ y } \quad g(v) = 1 \end{align*}

A cada arista de GG se le llama rama.

Nivel de un vértice. Definición

Sea G=(V,A)G = (V, A) árbol y rVr \in V su raíz, el nivel de un vértice es la longitud de la cadena elemental desde la raíz al vértice, es decir, el número de ramas que hay en dicha cadena.

Altura del árbol. Definición

Sea G=(V,A)G = (V, A) árbol y rVr \in V su raíz, la altura del árbol es el máximo nivel entre todos los vértices de GG.

Árbol binario. Definición

Sea G=(V,A)G = (V, A) un árbol, se dice árbol binario si, sea rVr \in V su raíz:

g(r)=2yg(v)=13vV,vr\begin{align*} g(r) = 2 \quad \text{y} \quad g(v) = 1 \lor 3 \quad \forall v \in V, v \neq r \end{align*}

💡Nota

Para aquellos que curséis la asignatura desde el doble grado de informática, notar que en ED un árbol binario podía tener un nudo con un solo hijo, pero aquí no.

Árbol de unión de valor mínimo

Bosque de unión. Definición

Sea G=(V,A)G = (V, A) grafo no orientado, se dice bosque de unión a todo grafo parcial G=(V,A)G' = (V, A') de GG que es un bosque.

✏️Ejercicio

Dada la definición anterior, ¿se cumple que todo grafo contiene un bosque de unión?

Sí, ya que a partir de cualquier grafo, podemos eliminar aristas hasta que no queden ciclos. Incluso, basta notar que el grafo parcial generado a partir de un grafo G=(V,A)G = (V, A) en el que eliminamos todas las aristas, es decir, G=(V,)G' = (V, \emptyset), es un bosque.

Árbol de unión. Definición

Sea G=(V,A)G = (V, A) grafo no orientado, se dice árbol de unión a todo grafo parcial G=(V,A)G' = (V, A') de GG que es un árbol.

✏️Ejemplo

Dada la definición anterior, ¿se cumple que todo grafo contiene un árbol de unión?

No, ya que si el grafo de partida no es conexo, no podrá contener ningún árbol de unión.

No obstante, si se añade el matiz de que el grafo de partida es conexo, entonces sí que se cumple que todo grafo conexo contiene un árbol de unión. Esto se debe a que, partiendo de un grafo conexo, podemos eliminar aristas hasta que no queden ciclos y el grafo siga siendo conexo. Al final, nos quedará un árbol.

Teorema 2.2

Sea G=(V,A)G = (V, A) un grafo no orientado, se cumple que:

G conexo    G contiene un aˊrbol de unioˊn\begin{align*} G \text{ conexo} \iff G \text{ contiene un árbol de unión}\\ \end{align*}

📐Demostración

  • )\Leftarrow) Sea G=(V,A)G = (V, A) grafo que contiene a un árbol de unión G=(V,A)G' = (V, A'), por definición de árbol de unión, se cumple que AAA' \subseteq A y que GG' es conexo. Por lo tanto, para cada par de vértices i,ji, j:
πij cadena en A    πij cadena en A    G conexo\begin{align*} \exists \pi_{ij} \text{ cadena en } A' \implies \pi_{ij} \text{ cadena en } A \implies G \text{ conexo} \end{align*}
  • \Rightarrow) Sea G=(V,A)G = (V, A) grafo conexo se dan dos casos:

Redes

Red. Definición

Sea G=(V,A)G = (V, A) grao orientado (no orientado), se dice red orientada (no orientada) a la terna R=(V,A,p)R = (V, A, p) donde p:ARp : A \to \mathbb{R} es una aplicación que a cada arco (arista) eAe \in A le asigna un peso peRp_e \in \mathbb{R}.

Estos pesos son valores numéricos que indican el valor asociado a cada arco (arista) en la red. Pueden representar costos, distancias, capacidades u otras métricas relevantes según el contexto de la red.

Matriz de distancias de una red orientada. Definición

Sea R=(V,A,p)R = (V, A, p) red orientada de orden nn, se define la matriz de distancias asociada, denotada como D0(G)D_0(G) o D0D_0 como la matriz n×nn \times n cuyos elementos vienen dados por:

D0(i,j)={0 si i=jpij si (i,j)A en otro caso\begin{align*} D_0(i, j) = \left\{ \begin{array}{ll} 0 & \text{ si } i = j\\ p_{ij} & \text{ si } (i, j) \in A\\ \infty & \text{ en otro caso} \end{array} \right. \end{align*}

💡Nota

Notar que a partir de una matriz de pesos D0D_0 se puede obtener la matriz de adyacencia A(G)A(G) de la red RR. Sin embargo, una misma matriz de adyacencia puede corresponder a múltiples matrices de pesos diferentes, dependiendo de los valores asignados a los pesos de los arcos.

Matriz de distancias de una red no orientada. Definición

Sea R=(V,A,p)R = (V, A, p) red no orientada de orden nn, se define la matriz de distancias asociada, denotada como D0(G)D_0(G) o D0D_0 como la matriz n×nn \times n cuyos elementos vienen dados por:

D0(i,j)={0 si i=jpij si (i,j)A o (j,i)A en otro caso\begin{align*} D_0(i, j) = \left\{ \begin{array}{ll} 0 & \text{ si } i = j\\ p_{ij} & \text{ si } (i, j) \in A \text{ o } (j, i) \in A\\ \infty & \text{ en otro caso} \end{array} \right. \end{align*}

💡Nota

Al igual que en el caso de las redes orientadas, a partir de D0D_0 se puede conocer A(G)A(G) pero el recíproco no es cierto.

Red no orientada conexa. Definición

Sea R=(V,A,p)R = (V, A, p) red no orientada, se dice conexa si G=(V,A)G = (V, A) es un grafo no orientado conexo.

Red orientada conexa. Definición

Sea R=(V,A,p)R = (V, A, p) red orientada, se dice débilmente conexa (cuasi-fuertemente conexa; fuertemente conexa) si G=(V,A)G = (V, A) es un grafo orientado débilmente conexo (cuasi-fuertemente conexo; fuertemente conexo).

💡Nota

La conexión es una propiedad intrínseca del grafo, es decir, no depende de los pesos del mismo en una red.

Árbol de unión de una red. Definición

Sea R=(V,A,p)R = (V, A, p) red orientada (no orientada), se dice árbol de unión de la red a todo árbol GG' de RR cuyo grafo asociado es un árbol de unión.

Valor de un árbol de unión

Sea R=(V,A,p)R = (V, A, p) red no orientada conexa y G=(V,A)G' = (V, A') un árbol de unión del grafo (V,A)(V, A) asociado a la red RR, se dice valor del árbol de unión GG' al valor:

p(G)=eApe\begin{align*} p(G') = \displaystyle \sum_{e \in A'} p_e\\ \end{align*}

Árbol de unión de valor mínimo

Sea R=(V,A,p)R = (V, A, p) una red no orientada conexa y sea GG' un árbol de unión de RR, se dice árbol de unión de valor mínimo de RR si:

p(G)=minTAU(R)p(T)\begin{align*} p(G') = \min_{T \in AU(R)} p(T) \end{align*}

donde AU(R)AU(R) es el conjunto de todos los árboles de unión en el grafo (V,A)(V, A) asociados a la red R=(V,A,p)R = (V, A, p).

✏️Ejercicio

¿Podemos asegurar la existencia de un árbol de unión de valor mínimo?

Sí, ya que dado que RR es conexa, por el teorema 2.2 sabemos que existe al menos un árbol de unión en RR. Además, como el conjunto de árboles de unión es finito (pues el conjunto de aristas es finito), existe al menos un árbol de unión con valor mínimo.

Teorema 2.3

Sea R=(V,A,p)R = (V, A, p) red no orientada conexa, GG' un árbol de unión de valor mínimo en RR y G(k)=(V(k),A(k))G^{(k)} = (V^{(k)}, A^{(k)}) con k=1,,qk = 1, \dots, q los qq subgrafos conexos de GG' tales que {V(1),,V(q)}\{V^{(1)}, \dots, V^{(q)}\} forman una partición de VV. Dado s{1,,q}s \in \{1, \dots, q\}, si esAe_s \in A es una arista de menor valor entre las aristas con un extremo en V(s)V^{(s)} y otro en VV(s)V \setminus V^{(s)}, entonces:

es pertenece a un aˊrbol de unioˊn de valor mıˊnimo de R\begin{align*} e_s \text{ pertenece a un árbol de unión de valor mínimo de } R\\ \end{align*}

📐Demostración

Bajo las condiciones previas, sea s{1,,q}s \in \{1, \dots, q\} y esAe_s \in A arista de menor valor entre las aristas con extremos iV(s)i \in V^{(s)} y jV(s)j \notin V^{(s)}. Entonces se dan dos casos:

  • Si esGe_s \in G'. En este caso, ese_s pertenece al árbol de unión de valor mínimo GG' y se cumple lo que queríamos demostrar.
  • Si esGe_s \notin G'. Como GG' conexo, entonces πij\exists \pi_{ij} cadena en GG' que une ii con jj. Así:
e=(x,y)πij con xV(s) e yV(s)\begin{align*} \exists e = (x, y) \in \pi_{ij} \quad \text{ con } x \in V^{(s)} \text{ e } y \notin V^{(s)} \end{align*}

Si consideramos el subgrafo G=(V,A)G'' = (V, A'') con A=A{es}A'' = A' \cup \{e_s\} entonces:

AAG conexo}    G conexo\begin{align*} \left. \begin{array}{l} A' \subseteq A'' \\ G' \text{ conexo} \end{array} \right\} \implies G'' \text{ conexo} \end{align*}

Además, πij{es}\pi_{ij} \cup \{e_s\} es un ciclo en GG'', por lo que aplicando la proposición 1.6 tenemos que:

G^=(V,(A{es}){e}) es conexo\begin{align*} \hat{G} = (V, (A' \cup \{e_s\}) \setminus \{e\}) \text{ es conexo} \end{align*}

Además, se cumple que:

t(G^)=t(G)+11=t(G)=o(G)1=o(G^)1\begin{align*} t(\hat{G}) = t(G') + 1 - 1 = t(G') = o(G') - 1 = o(\hat{G}) - 1 \end{align*}

Por tanto, por el teorema 2.1, G^\hat{G} es un árbol y por tanto, por definición de árbol de unión, G^\hat{G} es un árbol de unión de GG.

Además, como:

p(G^)=p(G)+pespepep(G)\begin{align*} p(\hat{G}) = p(G') + \underbrace{p_{e_s}}_{\leq p_e} - p_e \leq p(G') \end{align*}

Y como GG' es un árbol de unión de valor mínimo, entonces:

p(G^)=p(G)    G^ es un AUVM de R\begin{align*} p(\hat{G}) = p(G') \implies \hat{G} \text{ es un AUVM de } R \end{align*}

Consecuencias del teorema 2.3

Como consecuencias del teorema 2.3, tenemos:

  • Una arista de menor peso en un grafo conexo GG estará contenida en un árbol de unión de valor mínimo de GG.

💡Nota

Basta tomar V(i)={i}V^{(i)} = \{i\} y A(i)=A^{(i)} = \emptyset con i{1,,n}i \in \{1, \dots, n\} y V(s)V^{(s)} como el conjunto formado por uno de los extremos de la arista de menor peso.

  • Si el AUVM es único, entonces es evidente que aplicando sucesivamente el teorema 2.3 se puede reconstruir el AUVM completo.
  • Si no es único, se podría probar que la aplicación reiterada de el teorema 2.3 permite construir uno de los AUVM del grafo.
  • Basándose en el teorema 2.3, se puedeen obtener distintos algoritmos para hallar un AUVM en una red conexa.

Algoritmo de Prim

El algoritmo de Prim es un método voraz para encontrar un árbol de unión de valor mínimo en una red no orientada R=(V,A,p)R = (V, A, p), donde G=(V,A)G = (V, A) es un grafo con o(G)=n2o(G) = n \geq 2 y t(G)>0t(G) > 0:

  1. Seleccionamos vVv \in V cualquiera y definimos V={v}V' = \{v\} y A=A' = \emptyset
  2. Sea e=(x,y)Ae' = (x', y') \in A con xVx' \in V' e yVy' \notin V' tal que:
pe=min{pe:e=(x,y) con xV,yV}\begin{align*} p_{e'} = \min \left\{p_e : e = (x, y) \text{ con } x \in V', y \notin V' \right\} \end{align*}

Hacemos V=V{y}V' = V' \cup \{y'\} y A=A{e}A' = A' \cup \{e'\} y avanzamos a 3. Si no existen ninguna arista, avanzamos a 4. 3. Si A<n1|A'| < n - 1 ir a 2. Si A=n1|A'| = n - 1 parar porque G=(V,A)G' = (V', A') es un AUVM de RR. 4. Parar, el grafo no es conexo y por tanto no existe AUVM.

Unicidad del AUVM. Proposición 2.4

Sea R=(V,A,p)R = (V, A, p) una red no orientada conexa. Si todos los pesos asociados a las aristas son distintos, existe un único árbol de unión de valor mínimo en dicha red.

📐Demostración

Como RR es conexa, entonces G=(V,A)G = (V, A) es conexo y, por el teorema 2.2, contiene al menos un árbol de unión. Además, el número de árboles de unión es finito (ya q ue el grafo es finito), existirá al menos uno con valor mínimo.

Para ver que es único, supongamos que existen dos árboles de unión en RR de valor mínimo y son distintos, es decir: G1=(V,A1)G_1 = (V, A_1) y G2=(V,A2)G_2 = (V, A_2) con A1A2A_1 \neq A_2 y p(G1)=p(G2)p(G_1) = p(G_2). Al ser distintos, se tiene que:

A1A2=(A1A2)(A2A1)\begin{align*} A_1 \triangle A_2 = (A_1 \setminus A_2) \cup (A_2 \setminus A_1) \neq \emptyset \end{align*}

Sea e1e_1 la arista de menor peso en A1A2A_1 \triangle A_2, que es única por hipótesis, supongamos sin pérdida de generalidad que e1A1A2e_1 \in A_1 \setminus A_2. Como G2G_2 es conexo, existe una cadena πe1\pi^{e_1} en G2G_2 que une los extremos de e1e_1. Como e1G2e_1 \notin G_2 y estamos con 1-grafos, entonces la cadena πe1\pi^{e_1} no puede ser una arista. Por lo tanto, GG contendrá un ciclo π\pi formado por:

π=πe1{e1}\begin{align*} \pi = \pi^{e_1} \cup \{e_1\} \end{align*}

Como G1G_1 es un árbol, por definición es acíclico, por lo que tiene que existir al menos una arista e2πe_2 \in \pi tal que e2A2A1e_2 \in A_2 \setminus A_1. Por lo tanto:

e2A2A2\begin{align*} e_2 \in A_2 \triangle A_2 \end{align*}

Por la elección de e1e_1 como la arista de menor peso en A1A2A_1 \triangle A_2, se cumple que:

p(e1)<p(e2)\begin{align*} p(e_1) < p(e_2) \end{align*}

Si consideramos el subgrafo parcial de GG definido como G=(V,A2{e1}{e2})G' = (V, A_2 \cup \{e_1\} \setminus \{e_2\}), será conexo ya que G2G_2 lo era y, por tanto, G=(V,A2{e1})G'' = (V, A_2 \cup \{e_1\}) también. Además, claramente el ciclo π\pi está en GG'', por lo que aplicando la proposición 1.6 tenemos que GG' es conexo.

Además, sea o(G)=no(G) = n, como G2G_2 es árbol, aplicando el teorema 2.1 tenemos que tiene n1n - 1 aristas y, por construcción, GG' también tiene n1n - 1 aristas.

Como GG' es conexo y con n1n - 1 aristas, por el teorema 2.1 tenemos que GG' es un árbol de unión y, por tanto, por definición de árbol de unión, GG' es un árbol de unión de RR.

Finalmente, calculamos el valor de GG':

p(G)=p(G2)+p(e1)p(e2)<p(G2)\begin{align*} p(G') = p(G_2) + p(e_1) - p(e_2) < p(G_2) \end{align*}

Lo que contradice la hipótesis de que G2G_2 es un árbol de unión de valor mínimo. Por lo tanto, nuestra suposición inicial era falsa y el AUVM es único.

✏️Ejercicio

Sea una red no orientada conexa:

  • Si el árbol de unión no es único, ¿existen al menos dos pesos iguales?

Por la proposición anterior aplicando la negación tenemos:

El AUVM no es uˊnico    No todos los pesos son distintos\begin{align*} \text{El AUVM no es único} \implies \text{No todos los pesos son distintos} \end{align*}

Por lo tanto, si el AUVM no es único, existen al menos dos pesos iguales.

  • Si los pesos no son todos distintos, ¿podemos asegurar que el árbol de unión no es único?

No, ya que el hecho de que existan pesos iguales no implica necesariamente que haya múltiples AUVM.

  • Si el árbol de unión es único, ¿podemos asegurar que los pesos son todos distintos?

No, ya que el hecho de que el AUVM sea único no implica necesariamente que todos los pesos sean distintos.

Bosque de unión de valor mínimo

Sea R=(V,A,p)R = (V, A, p) red no conexa, las kk componentes conexas de GG generan kk subgrafos y cada uno de ellos contiene un árbol de unión de valor mínimo. El bosque de unión de valor mínimo de RR es el conjunto formado por los kk árboles de unión de valor mínimo de cada una de las componentes conexas de GG.

Árboles y bosque de unión de valor máximo

Sea R=(V,A,p)R = (V, A, p) red n orientada, si se aplican los algoritmos vistos anteriormente considerando los pesos pe-p_e en lugar de pep_e, se obtienen árboles y bosques de unión de valor máximo.

Transformaciones monótonas de los pesos

Sea R=(V,A,p)R = (V, A, p) red no orientada conexa, puesto que el AUVM los forman las n1n - 1 aristas de menor peso que no formen ciclos, encontrar el AUVM en RR es equivalente a encontrar el AUVM en la red R=(V,A,p)R' = (V, A, p') donde:

pe=f(pe)eA con f:RR funcioˊn estrictamente creciente\begin{align*} p_e' = f(p_e) \quad \forall e \in A \quad \text{ con } f: \mathbb{R} \to \mathbb{R} \text{ función estrictamente creciente}\\ \end{align*}

Análogamente, se llega a que el árbol de unión de valor máximo en RR es equivalente al árbol de unión de valor máximo en R=(V,A,p)R' = (V, A, p') donde:

pe=f(pe)eA con f:RR funcioˊn continua estrictamente creciente\begin{align*} p_e' = - f(p_e) \quad \forall e \in A \quad \text{ con } f: \mathbb{R} \to \mathbb{R} \text{ función continua estrictamente creciente}\\ \end{align*}

Arborescencias

La idea de arborescencia es similar a la de árbol, pero en este caso se trabaja con grafos orientados.

No orientadosOrientadosRaıˊzdeentrada/salidaAˊrbolArborescenciadeentrada/salidaAˊrboldeunioˊnArborescenciadeunioˊndeentrada/salidaGrafoconexoGrafocuasifuertementeconexoensentidoascendiente/descendenteAUVMArborescenciadeunioˊndeentrada/salidadevalormıˊnimo\begin{array}{c|l} \textbf{No orientados} & \textbf{Orientados}\\ \hline \hline & Raíz de entrada/salida\\[2ex] Árbol & Arborescencia de entrada/salida\\[2ex] Árbol de unión & Arborescencia de unión de entrada/salida\\[2ex] Grafo conexo & Grafo cuasi-fuertemente conexo en sentido ascendiente/descendente\\[2ex] AUVM & Arborescencia de unión de entrada/salida de valor mínimo \end{array}

Raíz de un grafo orientado. Definición

Sea G=(V,A)G = (V, A) grafo orientado, se dice que rVr \in V es raíz de salida de GG si todo vértice es alcanzable desde rr, es decir, si para todo vVv \in V existe πrv\pi_{rv} o, en otras palabras:

Ds(r)=V\begin{align*} Ds(r) = V\\ \end{align*}

Análogamente, se dice que rVr \in V es raíz de entrada de GG si todo vértice alcanza a rr, es decir, si para todo vVv \in V existe πvr\pi_{vr} o, en otras palabras:

As(r)=V\begin{align*} As(r) = V\\ \end{align*}

Teorema 2.5

Sea G=(V,A)G = (V, A) grafo orientado:

G tiene raıˊz de entrada/salida    G cuasi-fuertemente conexo\begin{align*} G \text{ tiene raíz de entrada/salida} \iff G \text{ cuasi-fuertemente conexo}\\ \end{align*}

📐Demostración

La demostración es trivial a partir de las definiciones de raíz de entrada/salida y de grafo cuasi-fuertemente conexo en sentido ascendiente/descendente.

Arborescencia de salida/entrada.

Idea

La idea de la arborescencia de salida es que tiene que ser la forma minimal de ir de un vértice a todos los demás, por lo que GG debe tener un vértice del que se pueda ir a todos los demás, es decir, una raíz de salida.

Por otra parte, la forma de ir debería de ser única y no resulta suficiente exigir que GG no tenga circuitos, hay que exigir que GsG^s no tenga ciclos.

Aún así, no es suficiente y hay que exigir que GG no tenga arcos de doble sentido, es decir:

i,jV:(i,j),(j,i)A    G no tiene circuitos\begin{align*} \nexists i, j \in V : (i,j), (j,i) \in A \iff G \text{ no tiene circuitos}\\ \end{align*}

Redundancia de las condiciones

Podemos plantearnos si alguna de las condiciones previas es redundante, es decir, si alguna de ellas se puede deducir de las otras. La condición candidata podría ser:

Gs acıˊclico    G no tiene circuitos\begin{align*} G^s \text{ acíclico} \iff G \text{ no tiene circuitos} \end{align*}

Sin embargo, esto no es cierto en general, existen grafos cuyo grafo subyacente es acíclico pero que contienen circuitos. También pueden existir grafos sin circuitos cuyo grafo subyacente no es acíclico.

Por tanto, ninguna de las condiciones es redundante y todas son necesarias para definir una arborescencia de salida/entrada.

Arborescencia de salida. Definición formal

Sea G=(V,A)G = (V, A) grafo orientado, se dice que es arborescencia de salida si:

  • GG tiene una raíz de salida o equivalentemente, GG es cuasi-fuertemente conexo en sentido descendiente.
  • GsG^s es acíclico.
  • GG no tiene circuitos.

Además, son equivalentes las siguientes condiciones:

  • GG no contiene circuitos entonces i,jV:(i,j),(j,i)A\nexists i, j \in V : (i,j), (j,i) \in A
  • Si GsG^s es acíclico, es suficiente saber que no existen arcos de doble sentido para asegurar que GG no tiene circuitos. Esto se debe a que si el circuito tiene al menos 3 arcos, GsG^s contendrá un ciclo y si tiene 2 arcos, tiene que ser de doble sentido. Por tanto:
i,jV:(i,j),(j,i)A    G no tiene circuitos\begin{align*} \nexists i,j \in V : (i,j), (j,i) \in A \implies G \text{ no tiene circuitos} \end{align*}

Por lo que se puede definir alternativamente la arborescencia de salida mediante las condiciones:

  • G tiene una raíz de salida o equivalentemente, GG es cuasi-fuertemente conexo en sentido descendiente.
  • GsG^s es acíclico.
  • i,jV:(i,j),(j,i)A\nexists i,j \in V : (i,j), (j,i) \in A

Arborescencia de entrada. Definición formal

Análogamente, sea G=(V,A)G = (V, A) grafo orientado, se dice que es arborescencia de entrada si:

  • GG es cuasi-fuertemente conexo en sentido ascendiente o equivalentemente, GG tiene una raíz de entrada.
  • GsG^s es acíclico.
  • GG no tiene circuitos o equivalentemente, no tiene arcos de doble sentido.

Arborescencia de salida/entrada binaria

Se dice que una arborescencia de salida/entrada es binaria a aquella en la que cada vértice tiene grado de salida/entrada igual a 0 o 2

Teorema 2.6

Sea G=(V,A)G = (V, A) grafo orientado con o(G)=n>1o(G) = n > 1 entonces son equivalentes:

  1. GG es una arborescencia de salida con raíz de salida rr.
  2. Existe rVr \in V de GG tal que !πrv\exists ! \pi_{rv} con vV,vrv \in V, v \neq r.
  3. GG es minimalmente cuasi-fuertemente conexo en sentido descendiente con raíz de salida rr

📐Demostración

Sea G=(V,A)G = (V, A) grafo orientado con o(G)=n>1o(G) = n > 1:

  • 121 \Rightarrow 2) Como GG es arborescencia de salida con raíz de salida rr, entonces para cualquier vVv \in V existe πrv\pi_{rv}. Supongamos que existen dos caminos distintos πrv1\pi_{rv}^1 y πrv2\pi_{rv}^2. Entones, se el conjunto de aristas πrv1πrv2\pi_{rv}^1 \cup \pi_{rv}^2 contiene un ciclo en GsG^s, lo que entra en contradicción con la definición de arborescencia de salida. Por lo tanto, existe un único camino πrv\pi_{rv} para cada vV,vrv \in V, v \neq r.
  • 232 \Rightarrow 3) Si rV\exists r \in V tal que !πrv\exists ! \pi_{rv} con vV,vrv \in V, v \neq r, entonces GG es cuasi-fuertemente conexo en sentido descendiente con raíz de salida rr. Supongamos que GG no es minimal, es decir:
e=(i,j)A tq G=(V,A{e}) cuasi-fuerte. conexo en sentido desc.\begin{align*} \exists e = (i, j) \in A \text{ tq } G' = (V, A \setminus \{e\}) \text{ cuasi-fuerte. conexo en sentido desc.} \end{align*}

Por tanto, existen en GG' caminos πri\pi_{ri} y πrj\pi_{rj}. De esta forma, πri{e}\pi_{ri} \cup \{e\} y πrj\pi_{rj} son dos caminos distintos en GG que unen rr con jj, lo que contradice la hipótesis. Por lo tanto, GG es minimalmente cuasi-fuertemente conexo en sentido descendiente con raíz de salida rr.

  • 313 \Rightarrow 1) Sea GG minimalmente cuasi-fuertemente conexo en sentido descendiente, entonces GG es débilmente conexo. Por definición entonces, el grafo subyacente es conexo y, por el teorema 1.9, se cumple que:
t(Gs)o(Gs)1=n1\begin{align*} t(G^s) \geq o(G^s) - 1 = n - 1 \end{align*}

Además, se cumple que g(r)=0g^{ - }(r) = 0 ya que si hubiera algún arco entrante a rr, al eliminarlo el grafo seguiría siendo cuasi-fuertemente conexo en sentido descendiente, lo que contradice la hipótesis de minimalidad.

También, tenemos que g(i)=1g^{ - }(i) = 1 para iV{r}i \in V \setminus \{r\} ya que, al ser GG cuasi-fuertemente conexo en sentido descendiente, existe al menos un arco entrante a ii y si hubiera más de uno, al eliminar alguno de ellos el grafo seguiría siendo cuasi-fuertemente conexo en sentido descendiente, lo que contradice la hipótesis de minimalidad.

Por lo tanto, tenemos que:

t(G)=j=1ngj=gr0+j=1,jrngj1=n1\begin{align*} t(G) = \displaystyle \sum_{j = 1}^n g^{-}_j = \underbrace{g^{-}_r}_{0} + \displaystyle \sum_{j = 1 , j \neq r}^n \underbrace{g^{-}_j}_{1} = n - 1 \end{align*}

De esta forma, el grafo subyacente cumple que:

t(Gs)t(G)=n1t(Gs)=n1\begin{align*} t(G^s) \leq t(G) = n - 1 \xRightarrow[]{} t(G^s) = n - 1 \end{align*}

Además, por ser GsG^s conexo, por el teorema 2.1 tenemos que GsG^s es un árbol y, por tanto, acíclico.

Ahora, falta ver que no existen arcos de doble sentido en GG. Supongamos que existen i,jVi, j \in V tales que (i,j),(j,i)A(i,j), (j,i) \in A. Si eliminamos el arco (i,j)(i,j), el grafo G=(V,A{(i,j)})G' = (V, A \setminus \{(i,j)\}) sigue siendo cuasi-fuertemente conexo en sentido descendiente, lo que contradice la hipótesis de minimalidad. Por lo tanto, no existen arcos de doble sentido en GG.

💡Nota

La arborescencia de salida es equivalente a decir que es cuasi-fuertemente conexo en sentido descendente con t(G)=o(G)1t(G) = o(G) - 1

Arborescencia de unión. Definición

Sea G=(V,A)G = (V, A) grafo orientado, se dice arborescencia de unión (de entrada/salida) a una arborescencia G=(V,A)G' = (V, A') (de entrada/salida) donde AAA'\subseteq A.

💡Nota

La arborescencia de unión podría no existir

Teorema 2.7

Sea G=(V,A)G = (V, A) grafo orientado entonces:

G cuasi-fuertemente conexo    G contiene arborescencia de unioˊn\begin{align*} G \text{ cuasi-fuertemente conexo} \iff G \text{ contiene arborescencia de unión} \end{align*}

📐Demostración

La demostración se hará para el caso cuasi-fuertemente conexo en sentido descendiente y arborescencia de unión de salida, siendo análoga para el caso ascendente/entrada.

  • \Leftarrow) Sea G=(V,A)G' = (V, A) la arborescencia de unión contenida en G=(V,A)G = (V, A), por la definición de arborescencia de salida, GG' es cuasi-fuertemente conexo en sentido descendiente. Por tanto, rV\exists r \in V tal que iV\forall i \in V, existe πri\pi_{ri} en GG'. Como AAA' \subseteq A, entonces πri\pi_{ri} también está en GG y, por tanto, GG es cuasi-fuertemente conexo en sentido descendiente.
  • \Rightarrow) Sea G=(V,A)G = (V, A) cuasi-fuertemente conexo en sentido descendiente, entonces:

Arborescencia de unión de valor mínimo

Idea

Partimos de una red orientada R=(V,A,p)R = (V, A, p) cuasi-fuertemente conexa (ascendiente/descendente) y queremos encontrar una red orientada R=(V,A,p)R' = (V, A', p) tal que G=(V,A)G' = (V, A') sea una arborescencia de unión (de entrada/salida) del grafo G=(V,A)G = (V, A) que minimice el valor:

eApe\begin{align*} \displaystyle \sum_{e \in A'} p_e\\ \end{align*}

AUVM fijada la raíz de salida

Sea R=(V,A,p)R = (V, A, p) red orientada cuasi-fuertemente conexa en sentido descendiente y sea rVr \in V la raíz de salida de una arborescencia de unión de RR. Se dice arborescencia de unión de valor mínimo con raíz de salida rr a toda arborescencia de unión G=(V,A)G' = (V, A') de RR que minimice:

eApe\begin{align*} \displaystyle \sum_{e \in A'} p_e\\ \end{align*}

Análogamente se puede definir la arborescencia de unión de valor mínimo con raíz de entrada rr.

Algoritmo de Edmonds

Este algoritmo se escapa del alcance de este curso. No obstante, si se da el caso particular en el que todos los arcos son en ambos sentidos y el peso es el mismo en todas las direcciones, se podría resolver este problema empleado los algoritmos para grafos no orientados, sin más que adaptar la solución de forma adecuada.

Existencia del AUVM

No siempre el árbol de unión de valor mínimo genera una arborescencia de unión.