MOR - Tema 1

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

Grafos

Conceptos básicos de teoría de grafos

Grafo. Definición

Llamamos grafo a un par G=(V,A)G = (V, A) donde:

  • VV es un conjunto de puntos que representan elementos cualesquiera con VV \neq \emptyset
  • AA es un conjunto de pares de elementos de VV

💡Nota

Notar que AA es un multiconjunto, es decir, puede contener elementos repetidos.

Grafos orientados y no orientados

Según haya orden o no en los pares de elementos de AA podemos distinguir dos tipos de grafos para un grafo G=(V,A)G = (V, A):

  • Grafo no dirigido: si AA es un conjunto de pares no ordenados de elementos de VV, es decir, dados dos elementos de AA: eI=(i,j)e_I = (i, j) y eK=(j,i)e_K = (j, i) entonces eI=eKe_I = e_K.

Por lo tanto, tenemos que AP(V)A \subseteq \mathcal{P}(V) y solemos representar los pares no ordenados como {i,j}\{i, j\}.

Los elementos del conjunto AA se llaman aristas o ejes y los elementos de VV presentes en un elemento {i,j}\{i, j\} se llaman extremos, vértices o nodos de la arista.

  • Grafo dirigido (orientado): si AA es un conjunto en el que influye el orden de los pares, es decir, dados dos elementos de AA: eI=(i,j)e_I = (i, j) y eK=(j,i)e_K = (j, i) entonces eIeKe_I \neq e_K.

Por lo tanto, tenemos que AV×VA \subseteq V \times V y solemos representar los pares ordenados como (i,j)(i, j).

Los elementos del conjunto AA se llaman arcos y los elementos de VV presentes en un elemento (i,j)(i, j) se les llaman vértice inicial y vértice final del arco, respectivamente.

💡Nota

Visualmente, en los grafos no dirigidos las aristas se representan mediante líneas y en los dirigidos mediante flechas:

TikZ Graph

Y sus representaciones matemáticas serían:

  • Grafo no dirigido:
V={A,B,C}V×VA={(A,B),(A,C),(B,C)}\begin{align*} V & = \{A, B, C\} \\ V \times V \supseteq A & = \{(A, B), (A, C), (B, C)\} \end{align*}
  • Grafo dirigido:
V={D,E,F}VP(V)={{D,E},{D,F},{E,F}}\begin{align*} V & = \{D, E, F\} \\ V \supseteq P(V) & = \{\{D, E\}, \{D, F\}, \{E, F\}\} \end{align*}

💡Observación

Evidentemente un mismo grafo admite muchas representaciones diferentes.

Grafo orientado equivalente a un grafo no orientado. Definición

Sea G=(V,A)G = (V, A) un grafo no orientado, decimos que el grafo orientado equivalente de GG es el grafo orientado G=(V,A)G^\circ = (V, A^\circ) donde:

A={(i,j),(j,i)V×V ⁣:{i,j}A}\begin{align*} A^\circ = \{(i, j), (j, i) \in V \times V \colon \{i, j\} \in A\} \end{align*}

✏️Ejemplo

Si consideramos el grafo no orientado GG:

TikZ Graph

Su grafo orientado equivalente GG^\circ es:

TikZ Graph

Grafo subyacente de un grafo orientado. Definición

Sea un grafo orientado G=(V,A)G = (V, A), decimos que el grafo subyacente de GG es un grafo no orientado GS=(V,AS)G^S = (V, A^S) donde:

AS={{i,j}P(V) ⁣:(i,j)A(j,i)A}\begin{align*} A^S = \{\{i, j\} \in \mathcal{P}(V) \colon (i, j) \in A \lor (j, i) \in A\} \end{align*}

✏️Ejemplo

Si consideramos el grafo orientado GG:

TikZ Graph

Su grafo subyacente GSG^S es:

TikZ Graph

💡Nota

Notar que si GG es un grafo no orientado, entonces (G)S=G(G^\circ)^S = G. Sin embargo, si GG es un grafo orientado, en general (GS)G(G^S)^\circ \neq G.

Orden de un grafo. Definición

Llamamos orden de un grafo G=(V,A)G = (V, A) (se denota o(G)o(G)) al cardinal de VV, es decir:

o(G)=V\begin{align*} o(G) = |V| \end{align*}

Tamaño de un grafo. Definición

Llamamos tamaño de un grafo G=(V,A)G = (V, A) (se denota t(G)t(G)) al cardinal de AA, es decir:

t(G)=A\begin{align*} t(G) = |A| \end{align*}

💡Nota

Notar las siguientes relaciones:

  • Si GG es grafo no orientado y GG^\circ su grafo orientado equivalente entonces:
o(G)=o(G)yt(G)=2t(G)\begin{align*} o(G) = o(G^\circ) \quad \text{y} \quad t(G^\circ) = 2t(G) \end{align*}
  • Si GG es grafo orientado y GSG^S su grafo subyacente entonces:
o(G)=o(GS)yt(GS)t(G)\begin{align*} o(G) = o(G^S) \quad \text{y} \quad t(G^S) \leq t(G) \end{align*}

Grafo trivial. Definición

Sea G=(V,A)G = (V, A) decimos que es un grafo trivial si o(G)=1o(G) = 1 y t(G)=0t(G) = 0.

Grafo finito. Definición

Sea G=(V,A)G = (V, A), es un grafo finito si o(G)<o(G) < \infty, es decir, si VV es un conjunto finito.

P-Grafo. Definición

Sea G=(V,A)G = (V, A) un grafo, decimos que es un p-grafo si AA contiene a lo sumo pp arcos o aristas con los mismos extremos i,ji,j.

💡Notación

En general, usaremos la siguiente notación dado un grafo G=(V,A)G = (V, A):

n=o(G)ym=t(G)\begin{align*} n = o(G) \quad \text{y} \quad m = t(G) \end{align*}

Bucle. Definición

Sea G=(V,A)G = (V, A) un grafo, decimos que GG tiene un bucle en ii si (i,i)A\exists (i,i) \in A.

Grafo simple. Definición

Sea G=(V,A)G = (V, A) grafo decimos que es un grafo simple si es un 1-grafo y no tiene bucles.

Grafos finitos simples. Definición

Sea G=(V,A)G = (V, A) grafo decimos que es un grafo finito simple si es un grafo simple y finito.

Grafos orientados

Durante el resto de la sección, salvo que se indique lo contrario, trabajaremos con grafos orientados finitos simples.

💡Nota

Una duda natural podría ser la cantidad máxima de arcos que puede tener un grafo orientado finito simple de orden nn.

Para hacer el desarrollo intuitivo, consideremos una construcción básica de 4 nodos:

TikZ Graph

Y vamos a ir desarrollando el número de arcos que sale de cada nodo. Empezamos por el nodo AA:

TikZ Graph

A continuación el nodo BB:

TikZ Graph

Ahora el nodo CC:

TikZ Graph

Y finalmente, para el nodo DD ya no quedarían más arco que repartir. Ahora, para hacer las cuentas solo hace falta sumar estas arco (notando que cada arco realmente representa 2, al ser uno de ii a jj y otro de jj a ii):

23A+22B+21C=2(3+2+1)=26=12\begin{align*} \underbrace{2 \cdot 3}_{\text{A}} + \underbrace{2 \cdot 2}_{\text{B}} + \underbrace{2 \cdot 1}_{\text{C}} = 2 \left(3 + 2 + 1\right) = 2 * 6 = 12 \end{align*}

Podríamos observar que este comportamiento se repite indefinidamente por lo que llegamos que la fórmula general será:

t(G)=2((n1)+(n2)++1)=2i=1n1i=2n(n1)2=n(n1)\begin{align*} t(G) = 2 \left((n - 1) + (n - 2) + \dots + 1\right) = 2 \cdot \displaystyle \sum_{i = 1}^{n - 1} i = 2 \cdot \dfrac{n (n - 1)}{2} = n(n - 1) \end{align*}

Grafo orientado completo. Definición

Sea G=(V,A)G = (V, A) grafo orientado, decimos que es completo si es simple y se verifica que i,jV\forall i,j \in V con iji \neq j se cumple:

(i,j),(j,i)A\begin{align*} (i,j), (j,i) \in A \end{align*}

💡Nota

En este caso, el número de arcos de GG siendo o(G)=no(G) = n es claramente el número máximo de arcos que puede tener un grafo orientado simple, es decir:

t(G)=n(n1)\begin{align*} t(G) = n(n - 1) \end{align*}

Subgrafo. Definición

Sea G=(V,A)G = (V, A) grafo, si consideramos VVV' \subseteq V y AAA'\subseteq A, decimos que G=(V,A)G' = (V', A') es subgrafo de GG.

Subgrafo generado. Definición

Sea G=(V,A)G = (V, A) grafo, llamamos subgrafo generado por un conjunto de vértices VVV' \subseteq V a G=(V,A)G' = (V', A') donde:

A=A(V×V)\begin{align*} A' = A \cap (V' \times V')\\ \end{align*}

Grafo parcial. Definición

Sea G=(V,A)G = (V, A) grafo, llamamos grafo parcial a cualquier subgrafo de GG que cumple V=VV' = V.

Grafo complementario. Definición

Sea G=(V,A)G = (V, A) grafo, llamamos grafo complementario de GG al grafo simple Gc=(V,Ac)G^c = (V, A^c) con:

Ac={(i,j):i,jV,ij,(i,j)A}\begin{align*} A^c = \left\{(i,j) : i,j \in V, \, i \neq j, \, (i,j) \notin A\right\}\\[4ex] \end{align*}

✏️Ejemplo

Sea o(G)=no(G) = n, ¿cuánto vale t(G)+t(Gc)t(G) + t(G^c)?.

Sea G=(V,A)G = (V, A) grafo simple orientado finito tal que o(G)=no(G) = n, supongamos que t(G)=mt(G) = m. Ahora, por definición de grafo complementario:

t(Gc)=Ac={(i,j) ⁣:i,jV,ij,(i,j)A}=={(i,j) ⁣:i,jV,ij}{(i,j)A}=={(i,j) ⁣:i,jV,ij}t(G)\begin{align*} t(G^c) & = |A^c| = \left|\left\{(i,j) \colon i,j \in V, \, i \neq j, \, (i,j) \notin A\right\}\right| = \\[2ex] & = \left|\left\{(i,j) \colon i,j \in V, \, i \neq j\right\} \setminus \left\{(i,j) \in A\right\}\right| = \\[2ex] & = \left|\left\{(i,j) \colon i,j \in V, i \neq j\right\}\right| - t(G) \end{align*}

Y basta notar que {(i,j) ⁣:i,jV,ij}\left|\left\{(i,j) \colon i,j \in V, i \neq j\right\}\right| es precisamente el número máximo de arcos de un grafo simple finito orientado de orden nn, por lo tanto:

t(Gc)={(i,j) ⁣:i,jV,ij}n(n1)t(G)m=n(n1)m\begin{align*} t(G^c) = \underbrace{\left|\left\{(i,j) \colon i,j \in V, i \neq j\right\}\right|}_{n(n - 1)} - \underbrace{t(G)}_{m} = n(n - 1) - m \end{align*}

Por lo tanto, para hallar la suma basta con:

t(G)+t(Gc)=m+(n(n1)m)=n(n1)\begin{align*} t(G) + t(G^c) = m + (n(n - 1) - m) = n(n - 1) \end{align*}

Adyacencia. Definción

Sea G=(V,A)G = (V, A) grafo, decimos que dos vértices son adyacentes si hay un arco que los conecta, es decir, dados i,jVi, j \in V son adyacentes si:

(i,j)A(j,i)A\begin{align*} (i,j) \in A \lor (j,i) \in A \end{align*}

Vértice asilado. Definción

Sea G=(V,A)G = (V, A) grafo y dado un vértice iVi \in V decimos que es un vértice asilado si no es adyacente a ningún otro vértice, es decir, si:

jV ⁣:(i,j)A(j,i)A\begin{align*} \nexists j \in V \colon (i,j) \in A \lor (j,i) \in A \end{align*}

Incidencia. Definición

Sea G=(V,A)G = (V, A) grafo, se dice que un arco es incidente en un vértice iVi \in V si ii es el vértice inicial o final del arco, es decir, si:

(i,j)A(j,i)AconjV\begin{align*} (i,j) \in A \lor (j,i) \in A \quad \text{con} \quad j \in V \end{align*}

Grado de incidencia. Definición

Sea G=(V,A)G = (V, A) grafo y dado un vértice iVi \in V llamamos grado de incidencia de ii (se denota g(i)g(i)) al número de arcos incidentes en ii, es decir:

g(i)={(i,j)A ⁣:jV}+{(j,i)A ⁣:jV}\begin{align*} g(i) = |\{(i,j) \in A \colon j \in V\}| + |\{(j,i) \in A \colon j \in V\}| \end{align*}

Por lo que g ⁣:VNg \colon V \longrightarrow \mathbb{N}.

Además, podemos distinguir entre:

  • Grado de salida de ii (se denota g+(i)g^+(i)) al número de arcos que salen de ii, i.e.:
g+(i)={(i,j)A ⁣:jV}\begin{align*} g^+(i) = |\{(i,j) \in A \colon j \in V\}| \end{align*}
  • Grado de entrada de ii (se denota g(i)g^-(i)) al número de arcos que llegan a ii, i.e.:
g(i)={(j,i)A ⁣:jV}\begin{align*} g^-(i) = |\{(j,i) \in A \colon j \in V\}| \end{align*}

✏️Ejemplo

Dado G=(V,A)G = (V, A) y un vértice iVi \in V, ¿Cuánto vale g+(i)+g(i)g^+(i) + g^ - (i)?

Sea G=(V,A)G = (V, A) grafo y iVi \in V un vértice cualquiera, por definición de grado de incidencia, grado de salida y grado de entrada:

g+(i)+g(i)={(i,j)A ⁣:jV}+{(j,i)A ⁣:jV}=g(i)\begin{align*} g^+(i) + g^-(i) = |\{(i,j) \in A \colon j \in V\}| + |\{(j,i) \in A \colon j \in V\}| = g(i) \end{align*}

Sucesores y predecesores. Definición

Sea G=(V,A)G = (V, A) grafo y dada una arcos (i,j)A(i,j) \in A, se dice que jj es el sucesor de ii y que ii es el antecesor/predecesor de jj.

Denotamos como Γ(i)\Gamma(i) al conjunto de sucesores de ii y como Γ(i)\Gamma^{ - }(i) al conjunto de predecesores de ii, es decir:

Γ(i)={jV ⁣:(i,j)A}Γ(i)={jV ⁣:(j,i)A}\begin{align*} \Gamma(i) & = \{j \in V \colon (i,j) \in A\} \\[2ex] \Gamma^{ - }(i) & = \{j \in V \colon (j,i) \in A\} \end{align*}

Podemos notar que Γ\Gamma y Γ\Gamma^ - son funciones reales tales que:

Γ ⁣:VP(V)yΓ ⁣:VP(V)\begin{align*} \Gamma \colon V \longrightarrow \mathcal{P}(V) \quad \text{y} \quad \Gamma^{ - } \colon V \longrightarrow \mathcal{P}(V) \end{align*}

✏️Ejemplo

Dado G=(V,A)G = (V, A) y un vértice iVi \in V, ¿Cuánto vale Γ(i)|\Gamma(i)|?, ¿y Γ(i)|\Gamma^ - (i)|?

Sea G=(V,A)G = (V, A) grafo y iVi \in V un vértice cualquiera, por definición de conjunto de sucesores:

Γ(i)={jV ⁣:(i,j)A}=g+(i)\begin{align*} |\Gamma(i)| = |\{j \in V \colon (i,j) \in A\}| = g^+(i) \end{align*}

Análogamente, por definición de conjunto de predecesores:

Γ(i)={jV ⁣:(j,i)A}=g(i)\begin{align*} |\Gamma^ - (i)| = |\{j \in V \colon (j,i) \in A\}| = g^-(i) \end{align*}

Camino. Definición

Sea G=(V,A)G = (V, A) grafo y dados i1,ilVi_1, i_l \in V, un camino de i1i_1 a ili_l es sucesión alternada de vértices y arcos desde i1i_1 hasta ili_l de la forma:

i1,e1,i2,e2,i3,,el1,il\begin{align*} i_1, \, e_1, \, i_2, \, e_2, \, i_3, \, \dots, \, e_{l - 1}, \, i_l \end{align*}

donde denotamos al arco ek=(ik,ik+1)e_k = (i_k, i_{k + 1}) y el camino de i1i_1 a ili_l se denota πi1il\pi_{i_1 i_l}.

💡Observación

Notar que en el caso de trabajar con grafos simples, podemos emplear una representación abreviada empleando solo los vértices:

i1,i2,i3,,il\begin{align*} i_1, \, i_2, \, i_3, \, \dots, \, i_l \end{align*}

o solo los arcos:

e1,e2,,el1\begin{align*} e_1, \, e_2, \, \dots, \, e_{l - 1} \end{align*}

ya que existe un único arco entre dos vértices cualesquiera.

Longitud de un camino. Definición

Sea G=(V,A)G = (V, A) grafo y πij\pi_{ij} un camino de ii a jj de la forma:

i=i1,e1,i2,e2,i3,,el1,il=j\begin{align*} i = i_1, \, e_1, \, i_2, \, e_2, \, i_3, \, \dots, \, e_{l - 1}, \, i_l = j \end{align*}

llamamos longitud de πij\pi_{ij} al número de arcos que contiene, es decir:

Longitud(πij)=l1\begin{align*} \text{Longitud}(\pi_{ij}) = l - 1 \end{align*}

Se considera el camino de longitud 0, llamado camino trivial, que va de un vértice ii a sí mismo, es decir, πii\pi_{ii}.

Concatenación de caminos. Definición

Sean dos caminos πij\pi_{ij} y πjk\pi_{jk} de la forma:

πijii1i2iljyπjkjj1j2jmk\begin{align*} \pi_{ij} \equiv i - i_1 - i_2 - \dots - i_l - j \quad \text{y} \quad \pi_{jk} \equiv j - j_1 - j_2 - \dots - j_m - k \end{align*}

se define la concatenación o unión de πij\pi_{ij} y πjk\pi_{jk} (y se denota πijπjk\pi_{ij} \cup \pi_{jk}) como el camino:

πijπjkii1i2iljj1j2jmk\begin{align*} \pi_{ij} \cup \pi_{jk} \equiv i - i_1 - i_2 - \dots - i_l - j - j_1 - j_2 - \dots - j_m - k\\ \end{align*}

Subcamino. Definición

Sea un camino πi0in=i0i1in1in\pi_{i_0 i_n} = i_0 - i_1 - \dots - i_{n - 1} - i_n se denomina subcamino a cualquier camino de la forma:

πikir=ikik+1ir1ir con 0k<rn\begin{align*} \pi_{i_k i_r} = i_k - i_{k + 1} - \dots - i_{r - 1} - i_r \quad \text{ con } 0 \leq k < r \leq n\\ \end{align*}

Camino simple. Definición

Sea G=(V,A)G = (V, A) grafo y πi0in\pi_{i_0i_n} un camino de i0i_0 a ini_n, decimos que es un camino simple si no repite ningún arco, es decir, si:

ekerk,r{1,2,,n1} con kr\begin{align*} e_k \neq e_r \quad \forall k, r \in \{1, 2, \dots, n - 1\} \text{ con } k \neq r\\ \end{align*}

Camino elemental. Definición

Sea G=(V,A)G = (V, A) grafo y πi0in\pi_{i_0i_n} un camino de i0i_0 a ini_n, decimos que es un camino elemental si no repite ningún vértice, es decir, si:

ikirk,r{0,1,,n} con kr\begin{align*} i_k \neq i_r \quad \forall k, r \in \{0, 1, \dots, n\} \text{ con } k \neq r\\ \end{align*}

Teorema 1.1

Todo camino elemental es un camino simple.

📐Demostración

Sea G=(V,A)G = (V, A), supongamos por reducción al absurdo que existe un camino que es elemental pero no simple, es decir, que existe al menos un arco e=(i,j)Ae = (i,j) \in A que se repite al menos dos veces en el camino.

De esta forma, el vértice ii aparece al menos dos veces en el camino, lo que contradice la hipótesis de que el camino es elemental.

💡Nota

Podemos notar que el recíproco del teorema no es en general cierto, es decir, no todo camino simple es elemental.

Supongamos un grafo G=(V,A)G = (V, A) con:

V={1,2,3,4}yA={(1,2),(2,3),(3,1),(1,4)}\begin{align*} V = \{1, 2, 3, 4\} \quad \text{y} \quad A = \{(1, 2), (2, 3), (3, 1), (1, 4)\} \end{align*}

Que gráficamente sería:

TikZ Graph

Si construimos el camino simple siguiente:

π1,4=12314\begin{align*} \pi_{1,4} = 1 - 2 - 3 - 1 - 4 \end{align*}

Tenemos que es un camino simple, ya que no se repite ningún arco, pero no es elemental, ya que el vértice 11 se repite.

Alcanzabilidad y descendientes. Definición

Sea G=(V,A)G = (V, A) grafo y dado un vértice jVj \in V, se dice alcanzable desde iVi \in V si existe un camino de ii a jj, es decir, si existe πij\pi_{ij}.

En el caso de que jj sea alcanzable desde ii, se dice que jj es un descendiente de ii.

Sea iVi \in V denotamos Ds(i)Ds(i) al conjunto de descendientes de ii, es decir:

Ds(i)={jV ⁣:πij}\begin{align*} Ds(i) = \left\{j \in V \colon \exists \pi_{ij}\right\} \end{align*}

💡Nota

Notar que iDs(i)i \in Ds(i) ya que existe el camino trivial πii\pi_{ii}.

Ascendientes. Definición

Sea G=(V,A)G = (V, A) grafo y dado un vértice iVi \in V, se dice ascendiente de jVj \in V si existe un camino de ii a jj, es decir, si existe πij\pi_{ij}.

Denotamos As(j)As(j), donde jVj \in V al conjunto de ascendientes de jj, es decir:

As(j)={iV ⁣:πij}\begin{align*} As(j) = \left\{i \in V \colon \exists \pi_{ij}\right\} \end{align*}

💡Nota

Notar que jAs(j)j \in As(j) ya que existe el camino trivial πjj\pi_{jj}.

Circuitos. Definición

Sea G=(V,A)G = (V, A), llamamos circuito a un camino no trivial donde coincide el vértice inicial con el final.

Al igual que con los caminos, la longitud de un circuito es el número de arcos que contiene y podemos distinguir entre:

  • Circuito simple si no repite ningún arco.
  • Circuito elemental si no repite ningún vértice, salvo el inicial y el final.

Camino euleriano. Definción

Se llama camino euleriano a un camino simple que contiene todos los arcos del grafo.

Circuito euleriano. Definición

Se llama circuito euleriano a un camino euleriano que comienza y acaba en el mismo vértice. Equivalentemente, es un circuito simple que contiene todos los arcos del grafo.

Grafo euleriano. Definición

Se dice que un grafo es euleriano si contiene un circuito euleriano.

Camino hamiltoniano. Definición

Se llama camino hamiltoniano a un camino elemental que contiene todos los vértices del grafo.

Circuito hamiltoniano. Definición

Se llama circuito hamiltoniano a un camino hamiltoniano que comienza y acaba en el mismo vértice.

Grafo hamiltoniano. Definción

Se dice que un grafo es hamiltoniano si contiene un circuito hamiltoniano.

Grafos no orientados

Durante esta sección, salvo que se indique lo contrario, trabajaremos con grafos no orientados finitos simples.

Además, introduciremos una serie de conceptos básicos equivalentes a los de los grafos no orientados, pero adaptados a este tipo de grafos. De hecho, en muchas casos basta cambiar la terminología empleada.

Grafos orientadosGrafos no orientadosVeˊrticeinicial/finaldelarcoVeˊrticesdelaaristaArcoAristaGradodeincidencia(entradaysalida)GradodeincidenciaCaminoCadenaCircuitoCiclo\begin{array}{c|c} \textbf{Grafos orientados} & \textbf{Grafos no orientados} \\ \hline\hline Vértice inicial/final del arco & Vértices de la arista\\ \hline Arco & Arista \\ \hline Grado de incidencia (entrada y salida) & Grado de incidencia \\ \hline Camino & Cadena \\ \hline Circuito & Ciclo \\ \hline \end{array}

Grado de incidencia. Definición

Sea G=(V,A)G = (V, A) grafo, dado un vértice ii llamamos grado de incidencia de ii al número de aristas que incluyen a ii, es decir:

g(i)={(i,j)A ⁣:jV}+{(j,i)A ⁣:jV}\begin{align*} g(i) = |\{(i,j) \in A \colon j \in V\}| + |\{(j,i) \in A \colon j \in V\}|\\ \end{align*}

Cadena. Definición

Sea G=(V,A)G = (V, A) grafo y dados i,jVi, j \in V, una cadena de ii a jj es sucesión de vértices y aristas que unen ii y jj.

Ciclos. Definición

Sea G=(V,A)G = (V, A) grafo, llamamos ciclo a una cadena que no repite aristas ni vértices, salvo el inicial y el final.

💡Nota

Notar que cualquier ciclo tiene que tener al menos 3 vértices, ya que en caso contrario se repetiría algún vértice o arista.

✏️Ejemplo

En un grafo GG en el que todas sus aristas forman un único ciclo (por lo que se dice que el grafo es un ciclo), ¿qué relación existe entre o(G)o(G) y t(G)t(G)?

Sea G=(V,A)G = (V, A) un grafo no orientado en el que todas sus aristas forman un único ciclo, supongamos que o(G)=no(G) = n.

Como o(G)=no(G) = n supongamos i1,,inVi_1, \dots, i_n \in V todas las aristas del grafo. Sabemos que todas ellas forman un único ciclo, por lo que podemos construir el ciclo:

{i1,i2},{i2,i3},,{in1,in},{in,i1}\begin{align*} \left\{i_1, i_2\right\}, \, \left\{i_2, i_3\right\}, \, \dots, \, \left\{i_{n - 1}, i_n\right\}, \, \left\{i_n, i_1\right\} \end{align*}

Por lo tanto, como cada arista conecta dos vértices, tenemos que:

t(G)=n=o(G)\begin{align*} t(G) = n = o(G) \end{align*}

Grafo completo. Definción

Sea G=(V,A)G = (V, A) grafo no orientado, se dice completo si es simple y para cualquier par de vértices i,jVi, j \in V con iji \neq j se cumple:

{i,j}A\begin{align*} \{i,j\} \in A \end{align*}

Denotamos KnK_n al grafo completo de orden nn.

💡Nota

Sea el grafo completo KnK_n, ¿cuánto vale t(Kn)t(K_n)?

Sea Kn=(V,A)K_n = (V, A), sabemos que cada par de vértices distintos está unido por exactamente una arista. El número de pares no ordenados de nn vertices es (n2)\binom{n}{2}, es decir, elegir 2 vértices de nn sin importar el orden. Por lo tanto:

t(Kn)=(n2)=n(n1)2\begin{align*} t(K_n) = \binom{n}{2} = \frac{n(n - 1)}{2} \end{align*}

Otra posible forma de hacer esto sería por inducción. Los casos n=1n = 1 y n=2n = 2 son triviales y su fórmula es obvia:

t(K1)=0 y t(K2)=1=K0+1\begin{align*} t(K_1) = 0 \quad \text{ y } \quad t(K_2) = 1 = K_0 + 1 \end{align*}

Supongamos que la fórmula (que podemos obtener de forma similar a cuando calculamos algo similar pero para los grafos orientados) es correcta, es decir:

t(Kn)=n(n1)2\begin{align*} t(K_n) = \frac{n(n - 1)}{2} \end{align*}

Así, si se cumple para KnK_n, veamos si también lo hace para Kn+1K_{n + 1} añadiendo exactamente nn aristas más:

t(Kn+1)=t(Kn)+n=n(n1)2+n=(n+1)n2\begin{align*} t(K_{n + 1}) = t(K_n) + n = \frac{n(n - 1)}{2} + n = \frac{(n + 1)n}{2} \end{align*}

lo que cumple la inducción.

Subgrafo, grafo generado, parcial y complementario. Definición

Estas definiciones son completamente análogas a las vistas para los grafos orientados.

✏️Ejercicio

Dado un grafo no orientado cualquiera GG, ¿cuánto vale t(G)+t(Gc)t(G) + t(G^c)?.

Sea G=(V,A)G = (V, A) un grafo no orientado, supongamos que o(G)=no(G) = n y que t(G)=mt(G) = m. Por definición de grafo complementario Gc=(V,Ac)G^c = (V, A^c) tendríamos que:

t(Gc)={{i,j}:i,jV,ij,{i,j}A}=={{i,j}:i,jV,ij}{{i,j}A}=={{i,j} ⁣:i,jV,ij}t(G)==n(n1)2m\begin{align*} t(G^c) & = \left|\left\{\left\{i,j\right\} : i,j \in V,\, i \neq j,\, \left\{i,j\right\} \notin A\right\}\right| = \\[2ex] & = \left|\left\{\left\{i,j\right\} : i,j \in V,\, i \neq j\right\} \setminus \left\{\left\{i,j\right\} \in A\right\}\right|=\\[2ex] & = \left|\left\{\left\{i,j\right\} \colon i, j \in V, \, i \neq j\right\}\right| - t(G) =\\[2ex] & = \dfrac{n(n - 1)}{2} - m \end{align*}

Por lo tanto:

t(G)+t(Gc)=m+((n1)n2m)=n(n1)2\begin{align*} t(G) + t(G^c) = m + \left(\frac{(n - 1)n}{2} - m \right) = \frac{n(n - 1)}{2} \end{align*}

✏️Ejercicio

¿Cuál es el complementario de KnK_n?

Sea Kn=(V,A)K_n = (V, A) el grafo completo no orientado, por definición de complementario, tenemos que Knc=(V,Ac)K^c_n = (V, A^c) tendrá un conjunto de aristas determinado por:

Ac={{i,j}P(V) ⁣:ij,{i,j}A}\begin{align*} A^c = \left\{\left\{i,j\right\} \subseteq \mathcal{P}(V) \colon i \neq j,\, \left\{i,j\right\} \notin A\right\} \end{align*}

Por lo tanto, al ser KnK_n completo, es decir, que cada par de vértices está conectado por una arista no quedaría ningún par libre para que aparezca AcA^c. Así Knc=(V,)K^c_n = (V, \emptyset ).

Representación matricial

Una de las principales problemáticas de los grafos es que, a medida que crecen en tamaño y grado, su representación gráfica puede ser muy compleja.

Sin embargo, un grafo puede representarse mediante una matriz, lo que facilita el trabajo sobre todo de cara a emplearse un ordenadores. La forma más habitual es mediante la matriz de adyacencia.

Matriz de adyacencia. Definción

Sea G=(V,A)G = (V, A) un grafo orientado de orden nn, definimos la matriz de adyacencia del grafo GG (denotada por A(G)A(G)) como la matriz n×nn \times n con:

A(G)=(aij)i,j{1,2,,n} con aij={1 si (i,j)A0 si (i,j)A\begin{align*} A(G) = \left(a_{ij}\right)_{i,j \in \left\{1, 2, \dots , n\right\}} \quad \text{ con } \quad a_{ij} = \left\{ \begin{array}{ll} 1 & \text{ si } (i,j) \in A\\ 0 & \text{ si } (i,j) \notin A \end{array} \right.\\ \end{align*}

Matriz de adyacencia en grafos orientados

Sea G=(V,A)G = (V, A) es un grafo orientado, podemos notar que Γ(i)\Gamma(i) estará formado por los vértices asociados a las columnas con 1 en la fila ii. De forma similar Γ(i)\Gamma^{ -}(i) estará formado por los vértices asociados a las filas con un 1 en la columna ii, esto es:

Γ(i)={jV:A(G)ij=1}Γ(i)={jV:A(G)ji=1}\begin{align*} \Gamma(i) & = \left\{j \in V : A(G)_{ij} = 1\right\}\\ \Gamma^ - (i) & = \left\{j \in V : A(G)_{ji} = 1\right\} \end{align*}

✏️Ejercicio

Sea G=(V,A)G = (V, A) grafo simple orientado con o(G)=no(G) = n y A(G)A(G) denotando su matriz de adyacencia:

  • ¿Cómo son los elementos de la diagonal A(G)A(G)?

Si entendemos que GG es simple, sabemos que no hay bucles, por lo tanto:

aii=0i=1,,n\begin{align*} a_{ii} = 0 \quad \forall i = 1, \dots, n \end{align*}

Sin embargo, si existiera algún bucle, tendríamos un 1 en la posición ii-ésima donde exista dicho bucle.

  • ¿La matriz A(G) es siempre simétrica?

No necesariamente. Al ser un grafo orientado, la existencia de (i,j)A(i,j) \in A no implica la existencia de (j,i)A(j,i) \in A. Solo sería simétrica si i,jV\forall i,j \in V con iji \neq j se cumple que:

(i,j)A    (j,i)A\begin{align*} (i,j) \in A \iff (j, i) \in A \end{align*}
  • ¿Cuánto vale la suma de todos los elementos de la matriz A(G)A(G)?

Cada entrada en la matriz aija_{ij} vale 1 si existe el arco, es decir, que si hacemos la suma de todos los elementos de la matriz estaríamos contando los arcos, o lo que es lo mismo, calculando el tamaño de GG, esto es:

i=1nj=1naij=A=t(G)\begin{align*} \displaystyle \sum_{i = 1}^{n} \displaystyle \sum_{j = 1}^{n} a_{ij} = |A| = t(G) \end{align*}
  • ¿Cuánto vale la suma de la fila ii de dicha matriz?

Por un razonamiento similar al anterior, podemos notar sumar los elementos de la fila ii-ésima equivale a contar cuántos arcos salen del vértice ii, es decir, el grado de incidencia de salida:

j=1naij=g+(i)\begin{align*} \displaystyle \sum_{j = 1}^{n} a_{ij} = g^{ + } (i) \end{align*}
  • ¿Y la suma de la columna ii?

Análogamente al apartado anterior, sería calcular el grado de incidencia de entrada, es decir:

i=1naij=g(i)\begin{align*} \displaystyle \sum_{i = 1}^{n} a_{ij} = g^ - (i) \end{align*}
  • ¿Cuánto vale iVg+(i)\sum_{i \in V} g^{ + }(i)?

En castellano, lo que estamos haciendo es recorrer todos los vértices sumando su grado de salida, lo que es equivalente a contar el número de arcos del grafo, es decir:

iVg+(i)=A=t(G)\begin{align*} \displaystyle \sum_{i \in V} g^{ + }(i) = |A| = t(G) \end{align*}
  • ¿Y iVg(i)\sum_{i \in V} g^{ - }(i)?

Análogo al apartado anterior, sumar todos los grados de entrada es equivalente a contar todos los arcos:

iVg(i)=A=t(G)\begin{align*} \displaystyle \sum_{i \in V} g^ - (i) = |A| = t(G)\\ \end{align*}
  • ¿Y iVg(i)\sum_{i \in V} g(i)?

En este caso, el razonamiento es similar, sin embargo, como estamos recorriendo todos los vértices y sumando tanto el grado de entrada como el de salida, realmente estamos contado doble cada arco. Basta ver que:

iVg(i)=iV(g+(i)+g(i))=iVg+(i)+iVg(i)==A+A=t(G)+t(G)=2t(G)\begin{align*} \displaystyle \sum_{i \in V} g(i) = \displaystyle \sum_{i \in V} \left(g^ + (i) + g^ - (i)\right) & = \displaystyle \sum_{i \in V} g^ + (i) + \displaystyle \sum_{i \in V} g^ - (i) = \\[2ex] & = |A| + |A| = t(G) + t(G) = 2t(G) \end{align*}

Matriz de adyacencia en grafos no orientados

Sea G=(V,A)G = (V, A) un grafo no orientado de orden nn, la matriz de adyacencia del grafo GG es una matriz n×nn \times n definida por:

A(G)=(aij)i,j{1,2,,n} con aij={1 si {i,j}A{j,i}A0 si {i,j}A\begin{align*} A(G) = \left(a_{ij}\right)_{i,j \in \left\{1, 2, \dots , n\right\}} \quad \text{ con } \quad a_{ij} = \left\{ \begin{array}{ll} 1 & \text{ si } \{i,j\} \in A \lor \{j,i\} \in A\\ 0 & \text{ si } \{i,j\} \notin A \end{array} \right.\\ \end{align*}

✏️Ejercicio

Sea G=(V,A)G = (V, A) un grafo simple no orientado con o(G)=no(G) = n y A(G)A(G) su matriz de adyacencia:

  • ¿Cómo son los elementos de la diagonal A(G)A(G)?

Si GG es simple, sabemos que no hay bucles, por lo que la diagonal estará formada por ceros:

aii=0i=1,,n\begin{align*} a_{ii} = 0 \quad \forall i = 1, \dots, n \end{align*}

Sin embargo, si existiera algún bucle, tendríamos un 1 en la posición ii-ésima donde exista dicho bucle.

  • ¿La matriz A(G) es siempre simétrica?

Sí, ya que en un grafo no orientado se cumple que:

{i,j}A    {j,i}A\begin{align*} \{i,j\} \in A \iff \{j,i\} \in A \end{align*}
  • ¿Cuánto vale la suma de todos los elementos de la matriz A(G)A(G)?

Cada entrada de la matriz vale 1 si existe la arista, es decir, que si hacemos la suma de todos los elementos de la matriz estaríamos contando las aristas, o lo que es lo mismo, calculando el tamaño de GG, esto es:

i=1nj=1naij=A=t(G)\begin{align*} \displaystyle \sum_{i = 1}^{n} \displaystyle \sum_{j = 1}^{n} a_{ij} = |A| = t(G) \end{align*}
  • ¿Cuánto vale la suma de la fila ii de dicha matriz?

Por un razonamiento similar al anterior, podemos notar sumar los elementos de la fila ii-ésima equivale a contar cuántas aristas inciden en el vértice ii, es decir, el grado de incidencia:

j=1naij=g(i)\begin{align*} \displaystyle \sum_{j = 1}^{n} a_{ij} = g(i) \end{align*}
  • ¿Cuánto vale la suma de la columna ii?

Análogamente al apartado anterior, sería calcular el grado de incidencia, es decir:

i=1naij=g(i)\begin{align*} \displaystyle \sum_{i = 1}^{n} a_{ij} = g(i) \end{align*}
  • ¿Cuánto vale iVg(i)\sum_{i \in V} g(i)?

En este caso, el razonamiento es similar, sin embargo, como estamos recorriendo todos los vértices y sumando su grado de incidencia, realmente estamos contado doble cada arista. Basta ver que:

iVg(i)=2A=2t(G)\begin{align*} \displaystyle \sum_{i \in V} g(i) = 2|A| = 2t(G) \end{align*}

💡Observación

A partir de los ejercicios previos, podemos concluir que:

i,jaij={t(G) si G es orientado2t(G) si G es no orientado\begin{align*} \displaystyle \sum_{i,j} a_{ij} = \left\{ \begin{array}{ll} t(G) & \text{ si } G \text{ es orientado}\\[2ex] 2t(G) & \text{ si } G \text{ es no orientado} \end{array} \right. \end{align*}

Y además:

iVg(i)={2ijaij si G es orientadoijaij si G es no orientado\begin{align*} \displaystyle \sum_{i \in V} g(i) = \left\{ \begin{array}{ll} 2 \displaystyle \sum_{ij} a_{ij} & \text{ si } G \text{ es orientado}\\[4ex] \displaystyle \sum_{ij} a_{ij} & \text{ si } G \text{ es no orientado} \end{array} \right. \end{align*}

Por lo tanto, dado un grafo GG (orientado o no orientado) se verifica:

iVg(i)=2t(G)\begin{align*} \displaystyle \sum_{i \in V} g(i) = 2t(G) \end{align*}

Teorema 1.2. Potencias de la matriz de adyacencia

Sea GG un grafo orientado (no orientado) de orden n>1n > 1 y A(G)pA(G)^p denota la potencia pp-ésima de la matriz de adyacencia de GG, el valor del elemento (i,j)(i,j) de dicha matriz A(G)pA(G)^p es el número de caminos (cadenas) que hay de longitud pp de ii a jj para todo p1p \geq 1.

📐Demostración

La demostración se realizará sobre un grafo orientado G=(V,A)G = (V, A) de orden nn. La demostración para grafos no orientados es análoga.

Emplearemos inducción, para ello:

  • Caso base: p=1p = 1. En este caso, denotando [M]ij[M]_{ij} al elemento (i,j)(i, j) de una matriz cualquier MM tenemos:
[A(G)1]ij=[A(G)]ij=aij={1 si (i,j)A0 si (i,j)A\begin{align*} \left[A(G)^1\right]_{ij} = [A(G)]_{ij} = a_{ij} = \left\{ \begin{array}{ll} 1 & \text{ si } (i,j) \in A\\ 0 & \text{ si } (i,j) \notin A \end{array} \right. \end{align*}

Por lo tanto, el elemento (i,j)(i,j) de A(G)1A(G)^1 es el número de caminos de longitud 1 de ii a jj. Al ser GG un 1-grafo, se tiene probado que [A(G)1]ij[A(G)^1]_{ij} es el número de caminos de longitud 1 de ii a jj para todo i,jVi, j \in V.

  • Paso inductivo: Supongamos que se cumple para p1p - 1, y veamos si se cumple para pp. Puesto que:
A(G)p=A(G)p1A(G)\begin{align*} A(G)^p = A(G)^{p - 1} \cdot A(G) \end{align*}

Se tiene que:

[A(G)p]ij=k=1n[A(G)p1]ik[A(G)]kj==k=1,kΓ(j)n[A(G)p1]ik[A(G)]kj1+k=1,k∉Γ(j)n[A(G)p1]ik[A(G)]kj0==k=1,kΓ(j)n[A(G)p1]ik\begin{align*} \left[A(G)^p\right]_{ij} & = \displaystyle \sum_{k = 1}^{n} \left[A(G)^{p - 1}\right]_{ik} \cdot \left[A(G)\right]_{kj} =\\[2ex] & = \displaystyle \sum_{k = 1, k \in \Gamma^{ - (j)}}^{n} \left[A(G)^{p - 1}\right]_{ik} \cdot \underbrace{[A(G)]_{kj}}_{1} + \displaystyle \sum_{k = 1, k \not\in \Gamma^{ - (j)}}^{n} \left[A(G)^{p - 1}\right]_{ik} \cdot \underbrace{[A(G)]_{kj}}_{0} = \\[2ex] & = \displaystyle \sum_{k = 1, k \in \Gamma^{ - (j)}}^{n} \left[A(G)^{p - 1}\right]_{ik}\\ \end{align*}

Como por hipótesis de inducción tenemos que [A(G)p1]ik[A(G)^{p - 1}]_{ik} representa el número de caminos de longitud p1p - 1 de ii a kk y estamos considerando todos los kVk \in V tales que (k,j)A(k, j) \in A tenemos que:

πij camino de longitud p\begin{align*} \exists \pi_{ij} \text{ camino de longitud } p \end{align*}

Y por lo tanto:

k=1,kΓ(j)n[A(G)p1]ik\begin{align*} \displaystyle \sum_{k = 1, k \in \Gamma^{ - (j)}}^{n} \left[A(G)^{p - 1}\right]_{ik} \end{align*}

representa el número de caminos de longitud pp de ii a jj.

Número de caminos de longitud pp. Definición

Sea GG un grafo orientado (no orientado) de orden nn, el número de caminos (cadenas) de longitud pp de ii a jj se define como el elemento (i,j)(i,j) de la matriz A(G)pA(G)^p:

[A(G)p]ij\begin{align*} \left[A(G)^p\right]_{ij}\\ \end{align*}

✏️Ejemplo

Sea G=(V,A)G = (V,A) grafo no orientado y se consideran los vértices i,jVi, j \in V con iji \neq j:

  • ¿Cuánto vale [A(G)]ij[A(G)]_{ij}?

Por definición de matriz de adyacencia, tenemos que:

[A(G)]ij={1 si {i,j}A0 si {i,j}A\begin{align*} [A(G)]_{ij} = \left\{ \begin{array}{ll} 1 & \text{ si } \{i,j\} \in A\\ 0 & \text{ si } \{i,j\} \notin A \end{array} \right. \end{align*}

Por lo tanto, [A(G)]ij[A(G)]_{ij} es el número de cadenas de longitud 1 de ii a jj.

  • ¿Qué representa [A(G)]ii[A(G)]_{ii} + [A(G)2]ii[A(G)^2]_{ii}?

Tenemos que [A(G)]ii[A(G)]_{ii} es el número de cadenas de longitud 1 de ii a ii. Por otro lado, [A(G)2]ii[A(G)^2]_{ii} es el número de cadenas de longitud 2 de ii a ii. Por lo tanto, la suma de ambos términos es el número de cadenas de longitud 1 o 2 que comienzan y terminan en ii.

  • ¿Representa [A(G)]ii+[A(G)2]ii+[A(G)3]ii[A(G)]_{ii} + [A(G)^2]_{ii} + [A(G)^3]_{ii} el número de cadenas de longitud menor o igual a 3 entre ii e ii?

No, ya que no se están considerando las cadenas de longitud 0, que es el camino trivial πii\pi_{ii}.

  • ¿Qué representa [A(G)2]ij+[A(G)2]ji[A(G)^2]_{ij} + [A(G)^2]_{ji}?

Tenemos que [A(G)2]ij[A(G)^2]_{ij} es el número de cadenas de longitud 2 de ii a jj y [A(G)2]ji[A(G)^2]_{ji} es el número de cadenas de longitud 2 de jj a ii. Por lo tanto, la suma de ambos términos es el número de cadenas de longitud 2 entre ii y jj.

  • ¿Qué representa [A(G)]ij+[A(G)2]ij[A(G)]_{ij} + [A(G)^2]_{ij}?

El número de cadenas de longitud 1 o 2 de ii a jj.

Conexión

Una de las propiedades más importantes de un grafo es la conexión. Veremos los grafos no orientados primero y luego pasaremos a los orientados.

Conexión en grafos no orientados

Grafo conexo. Definición

Sea G=(V,A)G = (V, A) grafo no orientado, se dice que GG es conexo si para cualquier par de vértices i,jVi, j \in V existe una cadena que los une, es decir, si existe πij\pi_{ij}.

💡Nota

El grafo trivial se considera conexo dado que existe la cadena trivial.

Componente conexa. Idea intuitiva

Sea G=(V,A)G = (V, A) grafo no orientado, podemos notar que la relación binaria RCR_C definida sobre VV como:

iRCj    πij\begin{align*} iR_Cj \iff \exists \pi_{ij} \end{align*}

es una relación de equivalencia.

Así, llamaremos componentes conexas de GG a las clases de equivalencia de RCR_C.

💡Nota

Notar que cada componente conexa ViV_i con iNi \in \mathbb{N} es subconjunto de VV. Además, cada ViV_i genera un subgrafo conexo de GG definido como:

Gi=(Vi,Ai) con Ai={(i,j)A:i,jVi}\begin{align*} G_i = (V_i, A_i) \qquad \text{ con } A_i = \left\{(i,j) \in A : i, j \in V_i\right\} \end{align*}

A este subgrafo GiG_i también se le denomina componente conexa de GG

✏️Ejemplo

Se considera el siguiente grafo no orientado:

TikZ Graph

Podemos notar [1]RC={1,2,3,4}[1]_{R_C} = \left\{1, 2, 3, 4\right\} y [5]RC={5,6,7}[5]_{R_C} = \left\{5, 6, 7\right\} por lo que GG tiene dos componentes conexas:

V1={1,2,3,4} y V2={5,6,7}\begin{align*} V_1 = \left\{1, 2, 3, 4\right\} \quad \text{ y } \quad V_2 = \left\{5, 6, 7\right\} \end{align*}

Y los subgrafos asociados son:

G1=(V1,A1) con A1={(1,2),(1,3),(2,4),(3,4)}G2=(V2,A2) con A2={(5,6),(5,7),(6,7)}\begin{align*} G_1 = (V_1, A_1) \quad \text{ con } A_1 = \left\{(1,2), (1, 3), (2,4), (3,4)\right\}\\ G_2 = (V_2, A_2) \quad \text{ con } A_2 = \left\{(5,6), (5,7), (6,7)\right\} \end{align*}

Componente conexa. Definición

Sea G=(V,A)G = (V, A) grafo no orientado, llamamos componente conexa de GG a un subconjunto de vértices ViVV_i \subseteq V tal que:

  • El grafo generado por ViV_i es conexo.
  • El grafo generado por VjV_j con ViVjVV_i \subseteq V_j \subseteq V no es conexo.

Orden de conexión. Definición

Sea G=(V,A)G = (V, A) grafo no orientado, se dice orden de conexión de GG al número de componentes conexas de GG y se denota por oc(G)oc(G).

✏️Ejercicio

  • ¿Cuánto vale i=1oc(G)o(Gi)\displaystyle \sum_{i = 1}^{oc(G)}o(G_i)?

Sea G=(V,A)G = (V, A) grafo no orientado con oc(G)=koc(G) = k y G1,G2,,GkG_1, G_2, \dots, G_k sus componentes conexas. Por definición de componente conexa, sabemos que:

V=i=1kVi y ViVj=i,j=1,,k con ij\begin{align*} V = \bigcup_{i = 1}^{k} V_i \quad \text{ y } \quad V_i \cap V_j = \emptyset \quad \forall i, j = 1, \dots, k \text{ con } i \neq j \end{align*}

Por lo tanto, si o(G)=no(G) = n tenemos que:

n=o(G)=V=i=1kVi=i=1kVi=i=1ko(Gi)\begin{align*} n = o(G) = \left|V\right| = \left|\bigcup_{i = 1}^{k} V_i\right| = \sum_{i = 1}^{k} \left|V_i\right| = \sum_{i = 1}^{k} o(G_i) \end{align*}

Es decir, que i=1oc(G)o(Gi)=o(G)\displaystyle \sum_{i = 1}^{oc(G)} o(G_i) = o(G).

  • ¿Cuánto vale i=1oc(G)t(Gi)\displaystyle \sum_{i = 1}^{oc(G)} t(G_i)?

Por un razonamiento similar al anterior, tenemos que:

t(G)=A=i=1kAi=i=1kAi=i=1kt(Gi)\begin{align*} t(G) = \left|A\right| = \left|\bigcup_{i = 1}^{k} A_i\right| = \sum_{i = 1}^{k} \left|A_i\right| = \sum_{i = 1}^{k} t(G_i) \end{align*}

Es decir, que i=1oc(G)t(Gi)=t(G)\displaystyle \sum_{i = 1}^{oc(G)} t(G_i) = t(G).

Teorema 1.3

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

G es conexo     oc(G)=1\begin{align*} G \text{ es conexo } \iff oc(G) = 1 \end{align*}

📐Demostración

Sea G=(V,A)G = (V, A) grafo no orientado, por definición de grafo conexo tenemos que:

G es conexo     i,jV,πij\begin{align*} G \text{ es conexo } \iff \forall i, j \in V,\, \exists \pi_{ij} \end{align*}

Y por definición de la relación RCR_C tenemos que:

iRCj    πij\begin{align*} iR_Cj \iff \exists \pi_{ij} \end{align*}

Por lo que, esto es equivalente a decir que i,jV\forall i, j \in V con iji \neq j se cumple que ii y jj están en la misma clase de equivalencia de RCR_C es decir:

[i]RC=[j]RCi,jV\begin{align*} [i]_{R_C} = [j]_{R_C} \quad \forall i, j \in V \end{align*}

Así, el número de clase de equivalencia de la relación RCR_C es 1 y, por definición de orden de conexión tenemos que:

oc(G)=1\begin{align*} oc(G) = 1 \end{align*}

Lema 1.4

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

G es conexo     i,jV,πij cadena elemental\begin{align*} G \text{ es conexo } \iff \forall i,j \in V, \quad \exists \pi_{ij} \text{ cadena elemental} \end{align*}

📐Demostración

Sea G=(V,A)G = (V, A) grafo no orientado, procederemos por doble implicación:

  • \Rightarrow) Sean i,jVi, j \in V un par de vértices, como GG conexo entonces πij\exists \pi_{ij}. Aquí se dan dos casos:

\item[\Leftarrow)] Sean i,jVi,j \in V con iji \neq j como πij\exists \pi_{ij} cadena elemental, entonces GG es conexo por definición de grafo conexo.

Teorema 1.5

Sea G=(V,A)G = (V, A) grafo no orientado de orden n>1n > 1 con matriz de adyacencia A(G)A(G) y sea CC la matriz definida como:

C:A(G)+A(G)2++A(G)n1\begin{align*} C \coloneq A(G) + A(G)^2 + \dots + A(G)^{n - 1} \end{align*}

donde cijc_{ij} es el elemento (i,j)(i,j) de dicha matriz con i,j{1,,n}i, j \in \{1, \dots, n\}. Se tiene que las siguientes afirmaciones son equivalentes:

  1. GG es conexo.
  2. cij0,i,j{1,,n}c_{ij} \neq 0, \quad \forall i,j \in \{1, \dots, n\} con iji \neq j
  3. i{1,,n}\exists i \in \{1, \dots, n\} tal que cij0,j{1,,n}c_{ij} \neq 0, \quad \forall j \in \{1, \dots, n\} con jij \neq i

📐Demostración

  • 121 \Rightarrow 2) Sea G=(V,A)G = (V, A) grafo conexo, por el lema 1.4 sabemos que:
πij cadena elemental i,jV\begin{align*} \exists \pi_{ij} \text{ cadena elemental } \quad \forall i, j \in V \end{align*}

Puesto que es el elemental y o(G)=no(G) = n, la cadena tiene una longitud como mucho de n1n - 1, es decir:

pij=long(πij)n1\begin{align*} p_{ij} = \text{long}(\pi_{ij}) \leq n - 1 \end{align*}

Por lo tanto, por el teorema 1.2 sabemos que el elemento (i,j)(i,j) de la matriz A(G)pijA(G)^{p_{ij}} es un número positivo. Por lo tanto, por la definición de CC tenemos:

cij1i,jV con ij\begin{align*} c_{ij} \geq 1 \quad \forall i, j \in V \text{ con } i \neq j \end{align*}

Como esto se ha probado para todo par de vértices i,jVi, j \in V con iji \neq j, se tiene:

cij0i,j{1,,n} con ij\begin{align*} c_{ij} \neq 0 \quad \forall i, j \in \{1, \dots, n\} \text{ con } i \neq j\\ \end{align*}
  • 232 \Rightarrow 3) Trivial. Basta tomar cualquier i{1,,n}i \in \{1, \dots, n\} y se cumple que cij0c_{ij} \neq 0 para todo j{1,,n}j \in \{1, \dots, n\} con jij \neq i.
  • 313 \Rightarrow 1) Sean k1,k2Vk_1, k_2 \in V queremos ver que πk1k2\exists \pi_{k_1 k_2} en GG. Así, tenemos dos posibles casos:

Consecuencias I del Teorema 1.5

Como consecuencia del teorema, podemos destacar algunas consecuencias interesantes:

  • Se cumple que GG es conexo si y solo si existe una fila ii de la matriz CC en la que todos los elementos que no están en la diagonal son distintos de cero.
  • Si p\exists p con p[1,n1]p \in [1, n - 1] tal que A(G)+A(G)2++A(G)pA(G) + A(G)^2 + \dots + A(G)^p tiene una fila ii en la que todos los elementos que no están en la diagonal son distintos de cero, entonces GG es conexo.

✏️Ejercicio

  • Dado el grafo GG cuya matriz de adyacencia es:
A(G)=(0110010110110000100100010)\begin{align*} A(G) = \begin{pmatrix} 0 & 1 & 1 & 0 & 0 \\ 1 & 0 & 1 & 1 & 0 \\ 1 & 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 1 \\ 0 & 0 & 0 & 1 & 0 \end{pmatrix} \end{align*}

¿Podemos decir si GG es conexo?

Aún no podemos decir si GG es conexo, ya que A(G)A(G) no tiene ninguna fila con todos los elementos distintos de cero salvo el de la diagonal. Por lo tanto, debemos calcular más potencias de la matriz A(G)A(G).

  • Si se tiene que:
A(G)+A(G)2=(2221023211222101112101011)\begin{align*} A(G) + A(G)^2 = \begin{pmatrix} 2 & 2 & 2 & 1 & 0 \\ 2 & 3 & 2 & 1 & 1 \\ 2 & 2 & 2 & 1 & 0 \\ 1 & 1 & 1 & 2 & 1 \\ 0 & 1 & 0 & 1 & 1 \end{pmatrix} \end{align*}

¿Podemos decir si GG es conexo?

Observando la matriz A(G)+A(G)2A(G) + A(G)^2 podemos ver que la fila 2 tiene todos los elementos distintos de cero salvo el de la diagonal, por lo que podemos concluir que GG es conexo por el teorema 1.5.

  • ¿Es necesario hacer más potencias para determinar si el grafo anterior es conexo o no?

No, no es necesario. Por el teorema 1.5 basta con encontrar una fila ii de la matriz CC en la que todos los elementos que no están en la diagonal son distintos de cero para asegurar que el grafo es conexo.

Consecuencias II del Teorema 1.5

Además, a partir del apartado 2 del teorema 1.5 podemos extraer otras consecuencias:

  • Un grafo no es conexo si y solo si existe algún elemento no diagonal de la matriz CC que sea nulo.
  • En ese caso, no se puede asegurar que no sea conexo hasta llegar a la potencia n1n - 1, ya que la no existencia de una cadena de longitud p<n1p < n - 1 no implica la no existencia de una cadena de longitud p<pn1p < p' \leq n - 1.

✏️Ejercicio

  • Dado el grafo GG cuya matriz de adyacencia es:
A(G)=(0100100000010010)\begin{align*} A(G) = \begin{pmatrix} 0 & 1 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{pmatrix} \end{align*}

¿Podemos decir si GG es conexo o no?

Aún no podemos afirmar si GG es conexo o no, ya que A(G)A(G) no tiene ninguna fila con todos los elementos distintos de cero salvo el de la diagonal, pero tampoco hemos calculado las potencias de la matriz A(G)A(G).

  • Si se tiene que:
A(G)+A(G)2=(1100110000110011)\begin{align*} A(G) + A(G)^2 = \begin{pmatrix} 1 & 1 & 0 & 0 \\ 1 & 1 & 0 & 0 \\ 0 & 0 & 1 & 1 \\ 0 & 0 & 1 & 1 \end{pmatrix}\\ \end{align*}

Seguimos sin poder concluir nada ya que nos faltan potencias de la matriz A(G)A(G) como para negar que es conexo o una fila con todos los elementos distintos de cero salvo el de la diagonal para afirmar que es conexo.

  • ¿Es necesario hacer más potencias para determinar si el grafo es conexo o no?

Sí, es necesario.

  • Si se tiene que:
A(G)+A(G)2+A(G)3=(1200210000120021)\begin{align*} A(G) + A(G)^2 + A(G)^3 = \begin{pmatrix} 1 & 2 & 0 & 0 \\ 2 & 1 & 0 & 0 \\ 0 & 0 & 1 & 2 \\ 0 & 0 & 2 & 1 \end{pmatrix}\\ \end{align*}

En este caso, ya podemos concluir que GG no es conexo, ya que hemos llegado a la potencia n1=41=3n - 1 = 4 - 1 = 3 y no hay ninguna fila con todos los elementos distintos de cero salvo el de la diagonal.

  • ¿Es necesario hacer más potencias para determinar si el grafo es conexo o no?

No, ya hemos determinado que no es conexo.

✏️Ejemplo

Sea GG un grafo simple no orientado con matriz de adyacencia asociada A(G)A(G), ¿cómo son los elementos de la diagonal de A(G)A(G)?

Por definición de matriz de adyacencia, tenemos que:

[A(G)]ii={1 si {i,i}A0 si {i,i}A\begin{align*} [A(G)]_{ii} = \left\{ \begin{array}{ll} 1 & \text{ si } \{i,i\} \in A\\ 0 & \text{ si } \{i,i\} \notin A \end{array} \right. \end{align*}

Pero como GG es un grafo simple, no tiene lazos, por lo que {i,i}A\{i,i\} \notin A y por lo tanto:

[A(G)]ii=0i{1,,n}\begin{align*} [A(G)]_{ii} = 0 \quad \forall i \in \{1, \dots, n\} \end{align*}

Es decir, que todos los elementos de la diagonal de A(G)A(G) son nulos.

Sea GG un grafo simple no orientado conexo con o(G)3o(G) \geq 3 y matriz de adyacencia asociada A(G)A(G):

  • ¿Cómo son los elementos de la diagonal de A(G)2A(G)^2?

Por definición de matriz de adyacencia, tenemos que:

[A(G)2]ii=k=1n[A(G)]ik[A(G)]ki=k=1n[A(G)]ik2\begin{align*} [A(G)^2]_{ii} = \displaystyle \sum_{k = 1}^{n} [A(G)]_{ik} \cdot [A(G)]_{ki} = \displaystyle \sum_{k = 1}^{n} [A(G)]_{ik}^2 \end{align*}

Por lo tanto, los elementos de la diagonal de A(G)2A(G)^2 son el grado de cada vértice, es decir:

[A(G)2]ii=deg(i)i{1,,n}\begin{align*} [A(G)^2]_{ii} = \deg(i) \quad \forall i \in \{1, \dots, n\} \end{align*}
  • ¿Cómo son los elementos de la diagonal de CC?

Por definición de CC tenemos que:

C=A(G)+A(G)2++A(G)n1\begin{align*} C = A(G) + A(G)^2 + \dots + A(G)^{n - 1} \end{align*}

Por lo que ciic_{ii} es la suma de los número de caminos de longitudes 1,2,,n11, 2, \dots, n - 1 desde el vértice ii hasta sí mismo. Como GG es conexo, cada vértice tendrá al menos un vecino, por tanto, existirá al menos un camino de longitud 2, es decir, ir y volver al vecino, por lo que:

[A(G)2]ii1i{1,,n}    cii[A(G)2]ii1i{1,,n}\begin{align*} [A(G)^2]_{ii} \geq 1 \quad \forall i \in \{1, \dots, n\} \implies c_{ii} \geq [A(G)^2]_{ii} \geq 1 \quad \forall i \in \{1, \dots, n\} \end{align*}

Consecuencias III del Teorema 1.5

Finalmente, podemos destacar otra consecuencia del teorema 1.5:

  • Si el grafo no es conexo, la matriz CC nos da sus componentes conexas.
  • La componente conexa que contiene al vértice 1 será la que contiene a todos los vértices jj tales que c1j0c_{1j} \neq 0.
  • Una vez determinada una componente conexa, se pueden eliminar todas sus filas y columnas de la matriz CC y repetir el proceso con la matriz resultante hasta que no queden filas ni columnas.

✏️Ejemplo

Sea el grafo GG descrito como:

TikZ Graph

Y su matriz CC es:

C=(1010100010101000101010000002200022)C=(1010100010101000101010000002200022)\begin{align*} C = \begin{pmatrix} 10 & 10 & 10 & 0 & 0 \\ 10 & 10 & 10 & 0 & 0 \\ 10 & 10 & 10 & 0 & 0 \\ 0 & 0 & 0 & 2 & 2 \\ 0 & 0 & 0 & 2 & 2 \end{pmatrix} \longrightarrow C = \begin{pmatrix} \textcolor{red}{10} & \textcolor{red}{10} & \textcolor{red}{10} & 0 & 0 \\ \textcolor{red}{10} & \textcolor{red}{10} & \textcolor{red}{10} & 0 & 0 \\ \textcolor{red}{10} & \textcolor{red}{10} & \textcolor{red}{10} & 0 & 0 \\ 0 & 0 & 0 & \textcolor{blue}{2} & \textcolor{blue}{2} \\ 0 & 0 & 0 & \textcolor{blue}{2} & \textcolor{blue}{2} \end{pmatrix} \end{align*}

Por lo que las componentes conexas de GG son:

V1={1,2,3} y V2={4,5}\begin{align*} V_1 = \{1, 2, 3\} \quad \text{ y } \quad V_2 = \{4, 5\} \end{align*}

💡Nota

No siempre se dará que las componentes conexas estén formadas por filas y columnas consecutivas. Por ejemplo, podríamos tener algo como:

C=(1001010002002100101001001010002002)\begin{align*} C = \begin{pmatrix} \textcolor{red}{10} & 0 & \textcolor{red}{10} & \textcolor{red}{10} & 0 \\ 0 & \textcolor{blue}{2} & 0 & 0 & \textcolor{blue}{2} \\ \textcolor{red}{10} & 0 & \textcolor{red}{10} & \textcolor{red}{10} & 0 \\ \textcolor{red}{10} & 0 & \textcolor{red}{10} & \textcolor{red}{10} & 0 \\ 0 & \textcolor{blue}{2} & 0 & 0 & \textcolor{blue}{2} \end{pmatrix} \end{align*}

Algoritmo para determinar si un grafo no orientado es conexo

Sea A(G)A(G) la matriz de adyacencia de un grafo no orientado GG entonces:

  1. Hacer C=A(G)C = A(G) y k=1k = 1
  2. Si CC tiene alguna fila con todos sus elementos no diagonales distintos de cero, el grafo es conexo (FIN), si no continuar a paso 3.
  3. Hacer k=k+1k = k + 1:

💡Nota

El algoritmo pese a ser sencillo, no es eficiente. Tiene una complejidad de O(n!)O(n!). Existen algoritmos más eficientes con complejidades de O(n(n1))O(n(n - 1)). Sin embargo, este permite obtener información sobre el número de caminos entre dos vértices.

💡Nota

Notar que se emplea la notación CC para la matriz CC que se va construyendo en el algoritmo, y no para la matriz CC definida en el teorema 1.5, aunque ambas matrices son iguales al finalizar el algoritmo en el caso de que se llegue a la iteración k=n1k = n - 1.

Teorema de Euler

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

G es euleriano     g(i) es par iV\begin{align*} G \text{ es euleriano } \iff g(i) \text{ es par } \quad \forall i \in V\\ \end{align*}

Caminos hamiltonianos en grafos no orientados

Gracias al teorema de Euler, este consiguió caracterizar completamente los grafos en los que existe un ciclo euleriano. Sin embargo, no existe un resultado análogo para los ciclos hamiltonianos.

En el caso de los hamiltonianos, existen determinados resultados que permiten asegurar que algunas formas particulares de grafo son o no hamiltonianas.

💡Nota

Una opción empleada a veces para ver si un grafo es hamiltoniano es intentar dibujarlo de tal forma que se vea claramente que existe un ciclo hamiltoniano. Sin embargo, este método no es fiable, ya que el hecho de no encontrar un ciclo hamiltoniano no implica que no exista.

También existen algoritmos para encontrar ciclos hamiltonianos, aunque no son infalibles.

Grafo bipartito. Definición

Sea G=(V,A)G = (V, A) grafo no orientado, se dice bipartito si es posible separar el conjunto de vértices VV en dos subconjuntos V1V_1 y V2V_2 tales que las aristas de GG solo unen vértices de V1V_1 con vértices de V2V_2, es decir, no existen aristas que unan vértices dentro de V1V_1 ni dentro de V2V_2. Es decir:

V=V1V2 y V1V2= y A{{i,j}:iV1,jV2}\begin{align*} V = V_1 \cup V_2 \quad \text{ y } \quad V_1 \cap V_2 = \emptyset \quad \text{ y } \quad A \subseteq \{\{i,j\} : i \in V_1, j \in V_2\}\\ \end{align*}

✏️Ejemplo

Sea G=(V,A)G = (V, A) un grafo como el que se muestra a continuación:

TikZ Graph

Es un grafo bipartito, ya que podemos separar el conjunto de vértices VV en:

V1={1,3,5,7} y V2={2,4,6,8}\begin{align*} V_1 = \{1, 3, 5, 7\} \quad \text{ y } \quad V_2 = \{2, 4, 6, 8\} \end{align*}

Y todas las aristas unen vértices de V1V_1 con vértices de V2V_2.

Grafo planar. Definición

Sea G=(V,A)G = (V, A) grafo no orientado, se dice planar si es posible dibujar GG en el plano de tal forma que las aristas solo se corten en los vértices. Es decir, si es posible representar GG en el plano sin que las aristas se crucen.

✏️Ejemplo

El grafo anterior admitiría una representación planar como la siguiente:

TikZ Graph

✏️Ejemplo

También es posible representarlo como sigue:

TikZ Graph

Donde es muy evidente que existe un ciclo hamiltoniano, que sería:

π=(1,2,3,4,5,6,7,8,1)\begin{align*} \pi = (1, 2, 3, 4, 5, 6, 7, 8, 1) \end{align*}

Grafo minimalmente conexo. Definición

Sea G=(V,A)G = (V, A) grafo, diremos que es un grafo minimalmente conexo si es conexo y el subgrafo que se obtiene al eliminar cualquier arista de GG no es conexo.

Proposición 1.6

Sea G=(V,A)G = (V, A) grafo no orientado conexo con o(G)>1o(G) > 1, dada eAe \in A y G=(V,A)G' = (V, A') donde A=A{e}A' = A \setminus \{e\}, entonces:

G conexo     π ciclo tal que eπ\begin{align*} G' \text{ conexo } \iff \exists \pi \text{ ciclo tal que } e \in \pi \end{align*}

📐Demostración

Sean los extremos de ee los vértices i,jVi, j \in V, i.e., e=(i,j)Ae = (i, j) \in A tenemos:

  • \Rightarrow) Sea GG' grafo no orientado conexo, por definición se tiene que:
πij cadena G que une i y j\begin{align*} \exists \pi_{ij} \text{ cadena } G' \text{ que une } i \text{ y } j \end{align*}

Como AAA' \subseteq A entonces πij\pi_{ij} es también cadena en GG. Le unimos e=(i,j)e = (i, j):

πij{e}=πij{(i,j)} es un ciclo en G\begin{align*} \pi_{ij} \cup \{e\} = \pi_{ij} \cup \{(i, j)\} \text{ es un ciclo en } G \end{align*}
  • \Leftarrow) Sea π\pi ciclo en GG tal que eπe \in \pi, sean u,vVu, v \in V vértices cualquiera de GG, como GG es conexo, por definición se tiene que:
πuv cadena en G que une u y v\begin{align*} \exists \pi_{uv} \text{ cadena en } G \text{ que une } u \text{ y } v \end{align*}

Así, tenemos dos posibles casos:

Arista puente. Definición

Sea G=(V,A)G = (V, A) un grafo no orientado conexo y eAe \in A, se dice que ee es una arista puente de GG si:

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

Corolario 1.7

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

  1. GG es minimalmente conexo.
  2. GG conexo y sin ciclos
  3. GG conexo y ee es arista puente de GeAG \quad \forall e \in A

📐Demostración

  • 121 \Rightarrow 2) Sea GG minimalmente conexo, entonces es conexo por definición. Si GG tuviera algún ciclo π\pi, por la proposición 1.6, dada cualquier arista ee se tendría que:
G=(V,A{e}) es conexo\begin{align*} G' = (V, A \setminus \{e\}) \text{ es conexo} \end{align*}

Lo que contradice la hipótesis de que GG es minimalmente conexo. Por lo tanto, GG no tiene ciclos.

  • 232 \Rightarrow 3) Por absurdo, supongamos GG conexo y sin ciclos, pero que existe eAe \in A que no es arista puente, esto es:
G=(V,A) con A=A{e} es conexo\begin{align*} G' = (V, A') \quad \text{ con } A' = A \setminus \{e\} \text{ es conexo} \end{align*}

Aplicando la proposición 1.6 tenemos que π\exists \pi ciclo en GG con eπe \in \pi, lo que contradice la hipótesis de que GG no tiene ciclos. Por lo tanto, ee es arista puente de GeAG \quad \forall e \in A.

  • 313 \Rightarrow 1) Sea GG conexo, si todas las aristas son puentes, entonces el subgrafo:
G=(V,A{e}) no es conexo eA\begin{align*} G' = (V, A \setminus \{e\}) \text{ no es conexo } \quad \forall e \in A \end{align*}

Por lo que se cumple la definición de grafo minimalmente conexo.

Lema 1.8

Sea G=(V,A)G = (V, A) grafo no orientado conexo con o(G)>1o(G) > 1 y eAe \in A una arista puente de GG. Si G=(V,A)G = (V, A') el grafo parcial con A=A{e}A' = A \setminus \{e\} entonces:

oc(G)=2\begin{align*} oc(G') = 2 \end{align*}

📐Demostración

Sean i,jVi, j \in V los extremos de ee, i.e., e=(i,j)Ae = (i, j) \in A, como ee arista puente de G=(V,A)G = (V, A) entonces:

G=(V,A) no es conexo  con A=A{e}\begin{align*} G' = (V, A') \text{ no es conexo } \quad \text{ con } A' = A \setminus \{e\} \end{align*}

y tenemos que i,ji, j están en dos componentes conexas distintas de GG'. Además, al añadir ee se conectan dos clases de equivalencia distinta que pasan a ser una así:

oc(G)=oc(G)1\begin{align*} oc(G) = oc(G') - 1 \end{align*}

Y como GG es conexo, se tiene que oc(G)=1oc(G) = 1 y por lo tanto:

oc(G)=oc(G)+1=1+1=2\begin{align*} oc(G') = oc(G) + 1 = 1 + 1 = 2 \end{align*}

Teorema 1.9

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

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

📐Demostración

Sea P(m)P(m) la propiedad ``cualquier grafo conexo con mm aristas que tiene como mucho m+1m + 1 vértices''. Vamos a probar por inducción que P(m)P(m) es cierto para todo m0m \geq 0:

  • Caso base: m=0m = 0. Como GG conexo y no tiene aristas, entonces la única posibilidad es que tenga un único vértice, por lo que:
m=t(G)=0n=o(G)=1}    0m?1n1    mn1\begin{align*} \left. \begin{array}{l} m = t(G) = 0\\ n = o(G) = 1 \end{array} \right\} \implies \underbrace{0}_{m} \overset{?}{\geq} \underbrace{1}_{n} - 1 \implies m \geq n - 1 \end{align*}

Por lo tanto, P(0)P(0) es cierto.

  • Caso general: supongamos que es cierta para todo k0k \geq 0, es decir:
P(k)Todo grafo conexo con karistas tiene como mucho k+1veˊrtices\begin{align*} P(k) \longrightarrow \text{\small Todo grafo conexo con } k \, \text{\small aristas tiene como mucho } k + 1 \, \text{\small vértices} \end{align*}

Así, veamos si es cierto para k+1k + 1 donde se cumpliría que:

P(k+1)Todo grafo conexo con k+1aristas tiene como mucho k+2veˊrtices\begin{align*} P(k + 1) \longrightarrow \text{\small Todo grafo conexo con } k + 1\, \text{\small aristas tiene como mucho } k + 2 \, \text{\small vértices} \end{align*}

Sea G=(V,A)G = (V, A) grafo no orientado conexo cualquiera con m=k+1m = k + 1 aristas y sea eAe \in A cualquier arista de GG, definimos G=(V,A{e})G' = (V, A\setminus \{e\}) y tenemos:

💡Nota

De hecho, se puede ver que para cualquier grafo no orientado GG se tiene:

t(G)o(G)oc(G)\begin{align*} t(G) \geq o(G) - oc(G) \end{align*}

es decir, que si GG tiene kk componentes conexas:

mnk\begin{align*} m \geq n - k \end{align*}

Conexión en grafos orientados

En los grafos orientados, la conexión entre dos vértices ya no es tan sencilla como en los grafos no orientados ya que puede existir una cadena que una dos vértices en un sentido pero no en el otro. Así, se darán varios tipos de conexión que veremos en esta sección.

Conexión débil. Definición

Sea G=(V,A)G = (V, A) grafo orientado, se dice que GG es débilmente conexo si el grafo subyacente GsG^s es conexo.

Conexión fuerte. Definición

Sea G=(V,A)G = (V, A) grafo orientado, se dice que GG es fuertemente conexo si i,jV\forall i, j \in V existen un camino desde ii hasta jj.

💡Observación

Notar que si GG es fuertemente conexo, entonces es débilmente conexo, pero no al revés.

💡Nota

Se considera el grafo trivial fuertemente conexo pues existe el camino trivial πii=i\pi_{ii} = i

Proposición 1.10

Sea G=(V,A)G = (V, A) grafo orientado, las siguientes afirmaciones son equivalentes:

  1. rV\exists r \in V tal que As(r)Ds(r)=VAs(r) \cap Ds(r) = V
  2. GG es fuertemente conexo
  3. iV\forall i \in V se tiene que As(i)Ds(i)=VAs(i) \cap Ds(i) = V

📐Demostración

  • 121 \Rightarrow 2) Sean i,jVi, j \in V cualquiera, como por hipótesis rV\exists r \in V tal que As(r)Ds(r)=VAs(r) \cap Ds(r) = V, entonces:
iAs(r) y jDs(r)\begin{align*} i \in As(r) \quad \text{ y } \quad j \in Ds(r) \end{align*}

Por lo que πir\exists \pi_{ir} camino desde ii hasta rr y πrj\exists \pi_{rj} camino desde rr hasta jj. Por lo tanto, podemos construir el camino:

πij=πirπrj\begin{align*} \pi_{ij} = \pi_{ir} \cup \pi_{rj} \end{align*}

que es un camino desde ii hasta jj. Como i,ji, j son arbitrarios, se cumple la definición de grafo fuertemente conexo.

  • 232 \Rightarrow 3) Sea iVi \in V cualquiera, como GG es fuertemente conexo, por definición se tiene que para cualquier jVj \in V:
πij camino desde i hasta j    jAs(i)πji camino desde j hasta i    jDs(i)}    VAs(i)Ds(i)\begin{align*} \left. \begin{array}{l} \exists \pi_{ij} \text{ camino desde } i \text{ hasta } j \implies j \in As(i)\\ \exists \pi_{ji} \text{ camino desde } j \text{ hasta } i \implies j \in Ds(i) \end{array} \right\} \implies V \subseteq As(i) \cap Ds(i) \end{align*}

Como trivialmente As(i)Ds(i)VAs(i) \cap Ds(i) \subseteq V, se tiene que:

As(i)Ds(i)=V\begin{align*} As(i) \cap Ds(i) = V \end{align*}
  • 313 \Rightarrow 1) Trivial.

💡Nota

Como consecuencias de este resultado tenemos:

  • Si rV\exists r \in V tal que As(r)Ds(r)=VAs(r) \cap Ds(r) = V entonces el grafo es fuertemente conexo.
  • Si rV\exists r \in V tal que As(r)Ds(r)VAs(r) \cap Ds(r) \neq V entonces el grafo no es fuertemente conexo.

Componente fuertemente conexa. Definición

Sea G=(V,A)G = (V, A) grafo orientado, se define la relación binaria RCR_C sobre VV como:

iRCj    πij y πji\begin{align*} i R_C j \iff \exists \pi_{ij} \text{ y } \exists \pi_{ji} \end{align*}

que es una relación de equivalencia. A cada clase de equivalencia se le llama componente fuertemente conexa de GG.

💡Nota

Evidentemente:

[i]RC=As(i)Ds(i)iV\begin{align*} [i]_{R_C} = As(i) \cap Ds(i) \quad \forall i \in V \end{align*}

💡Nota

Por abuso de lenguaje, se suele llamar también componente fuertemente conexa al subgrafo Gi=(Vi,Ai)G_i = (V_i, A_i) generado por Vi=[i]RCV_i = [i]_{R_C}:

Ai={(u,v)A:u,vVi}\begin{align*} A_i = \{(u, v) \in A : u, v \in V_i\} \end{align*}

✏️Ejemplo

Dado el siguiente grafo orientado:

TikZ Graph

Aquí, tendríamos que:

[1]RC={1,2,3} y [4]RC={4,5}\begin{align*} [1]_{R_C} = \{1, 2, 3\} \quad \text{ y } \quad [4]_{R_C} = \{4, 5\} \end{align*}

Por lo que las componentes fuertemente conexas serían:

V1={1,2,3} y V2={4,5}\begin{align*} V_1 = \{1, 2, 3\} \quad \text{ y } \quad V_2 = \{4, 5\} \end{align*}

Y sus subgrafos asociados:

V1={1,2,3}A1={(1,2),(2,3),(3,1),(3,2)}V2={4,5}A2={(4,5),(5,4)}\begin{align*} V_1 = \{1, 2, 3\} & \quad A_1 = \{(1, 2), (2, 3), (3, 1), (3, 2)\}\\ V_2 = \{4, 5\} & \quad A_2 = \{(4, 5), (5, 4)\} \end{align*}

Orden de conexión fuerte. Definición

Sea G=(V,A)G = (V, A) grafo orientado, llamamos orden de conexión fuerte al número de componentes fuertemente conexas de GG y se denota por ocf(G)ocf(G).

✏️Ejercicio

¿Se verifica que o(G)=i=1ocf(G)o(Gi)o(G) = \displaystyle \sum_{i = 1}^{ocf(G)}o(G_i)?

Estaríamos realizando el sumatorio de los órdenes de las componentes fuertemente conexas GiG_i de GG. De esta forma, como las componentes fuertemente conexas son clases de equivalencia que forman una partición del conjunto VV de vértices de GG, por lo tanto, son disjuntas y su unión es VV. Por lo tanto, sí se cumple.

¿Y se verifica que t(G)=i=1ocf(G)t(Gi)t(G) = \displaystyle \sum_{i = 1}^{ocf(G)} t(G_i)?

En este caso, no se cumple necesariamente, ya que las aristas de GG pueden conectar vértices de distintas componentes fuertemente conexas. Por lo tanto, no se cumple en general.

Teorema 1.11

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

G fuertemente conexo    ocf(G)=1\begin{align*} G \text{ fuertemente conexo} \iff ocf(G) = 1 \end{align*}

📐Demostración

Esta demostración es análoga a la del teorema 1.3.

Sea G=(V,A)G = (V, A) grafo orientado, por definición de conexión fuerte se tiene:

G fuertemente conexo     i,jVπij y πji\begin{align*} G \text{ fuertemente conexo } \iff \forall i, j \in V \, \exists \pi_{ij} \text{ y } \exists \pi_{ji} \end{align*}

Por definición de componente fuertemente conexa se tiene:

iRCj    πij y πji\begin{align*} i R_C j \iff \exists \pi_{ij} \text{ y } \exists \pi_{ji} \end{align*}

Por lo tanto, esto equivale a decir que ii y jj pertenecen a la misma clase de equivalencia, es decir:

[i]RC=[j]RCi,jV\begin{align*} [i]_{R_C} = [j]_{R_C} \quad \forall i, j \in V \end{align*}

Lo que implica que existe una única clase de equivalencia, es decir, que ocf(G)=1ocf(G) = 1.

Algoritmo para detectar la conexión débil

Sea G=(V,A)G = (V, A) grafo orientado, para determinar si es débilmente conexo basta estudiar la conexión del grafo subyacente GsG^s mediante el algoritmo visto para grafos no orientados.

Algoritmo para detectar la conexión fuerte

Sea G=(V,A)G = (V, A) grafo orientado y su matriz de adyacencia A(G)A(G):

  1. Elección de un vértice iVi \in V y se calcula Ds(i)Ds(i) y As(i)As(i):

  2. Sea kDs(i)k \in Ds(i) entonces:

  3. La componente fuertemente conexa del vértice ii viene dada por As(i)Ds(i)As(i) \cap Ds(i)

  4. Eliminar de A(G)A(G) las filas y columnas correspondientes a los vértices de As(i)Ds(i)As(i) \cap Ds(i).

  5. Volver a 1 hasta no eliminar todos lo vértices.

💡Nota

Este algoritmo determina en tiempo O(m)O(m) las componentes fuertemente conexas de GG

💡Nota

Por la proposición 1.10, al terminar por primera vez el paso 3 podríamos determinar si es fuertemente conexo o no.

Grafo cuasi-fuertemente conexo. Definición

Sea G=(V,A)G = (V, A) grafo orientado, se dice que:

G cuasi-fuertemente conexo    rV:As(r)=V o Ds(r)=V\begin{align*} G \text{ cuasi-fuertemente conexo} \iff \exists r \in V : As(r) = V \text{ o } Ds(r) = V \end{align*}

💡Nota

Esta definición es equivalente a decir que rV\exists r \in V que verifica al menos una de las siguientes condiciones:

  • πiriV\exists \pi_{ir} \quad \forall i \in V
  • πriiV\exists \pi_{ri} \quad \forall i \in V

Si se da el primero de los supuestos, se dice que GG es cuasi-fuertemente conexo en sentido ascendiente con respecto al vértice rr. En el segundo caso, se dice que GG es cuasi-fuertemente conexo en sentido descendiente con respecto al vértice rr.

Teorema 1.12

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

G fuertemente conexo     G cuasi-fuertemente conexo    G deˊbilmente conexo\begin{align*} G \text{ fuertemente conexo } \implies G \text{ cuasi-fuertemente conexo} \implies G \text{ débilmente conexo} \end{align*}

📐Demostración

Si GG es fuertemente conexo, consideramos cualquier rVr \in V, y sabemos que:

As(r)Ds(r)=V y As(r)Ds(r)Ds(r)V\begin{align*} As(r) \cap Ds(r) = V \quad \text{ y } \quad As(r) \cap Ds(r) \subseteq Ds(r) \subseteq V \end{align*}

Por lo que Ds(r)=VDs(r) = V y cumple la definición de grafo cuasi-fuertemente conexo.

Si GG es cuasi-fuertemente conexo, supongamos que verifica que rV\exists r \in V tal que Ds(r)=VDs(r) = V, entonces sea i,jVi, j \in V cualesquiera, por hipótesis:

πri camino desde r hasta i y πrj camino desde r hasta j\begin{align*} \exists \pi_{r i} \text{ camino desde } r \text{ hasta } i \quad \text{ y } \quad \exists \pi_{r j} \text{ camino desde } r \text{ hasta } j \end{align*}

Las aristas de GsG^s formadas por los arcos de πri\pi_{ri} y πrj\pi_{rj} forman una cadena en GsG^s entre ii y jj. Así, GsG^s es conexo y GG cumple la definición de grafo débilmente conexo.

✏️Ejercicio

Se verifican alguna de las implicaciones contrarias?

No, ya que:

  • GG débilmente conexo no implica que sea cuasi-fuertemente conexo. Por ejemplo, si consideramos el grafo orientado dado por:
G=(V,A) con {V={1,2,3,4}A={(1,2),(3,2),(3,4)}\begin{align*} G = (V, A) \quad \text{ con } \left\{ \begin{array}{l} V = \{1, 2, 3, 4\}\\ A = \{(1, 2), (3, 2), (3,4)\} \end{array} \right. \end{align*}

Es claramente débilmente conexo pero no existe un vértice rr tal que haya camino de rr a todos los demás vértices o de todos los demás vértices a rr, por lo que no es cuasi-fuertemente conexo.

  • GG cuasi-fuertemente conexo no implica que sea fuertemente conexo. Por ejemplo, si consideramos el grafo orientado dado por:
G=(V,A) con {V={1,2,3}A={(1,2),(2,1),(1,3),(2,3)}\begin{align*} G = (V, A) \quad \text{ con } \left\{ \begin{array}{l} V = \{1, 2, 3\}\\ A = \{(1, 2), (2, 1), (1, 3), (2, 3)\} \end{array} \right. \end{align*}

El vértice 1 es raíz: hay caminos π1,2,π2,1,π1,3\pi_{1, 2}, \pi_{2, 1}, \pi_{1, 3} pero no hay π3,1\pi_{3, 1} por ejemplo. Por lo tanto, es cuasi-fuertemente conexo (con r=1r = 1) pero no es fuertemente conexo.

✏️Ejercicio

Sea GG grafo orientado y GsG^s su grafo no orientado subyacente:

  • ¿GG fuertemente conexo     Gs\implies G^s es conexo?

Sí, ya que si GG es fuertemente conexo, entonces por el teorema 1.12 es débilmente conexo, y por definición de conexión débil GsG^s es conexo.

  • ¿GG es cuasi-fuertemente conexo     Gs\implies G^s es conexo?

Sí, ya que si GG es cuasi-fuertemente conexo, entonces por el teorema 1.12 es débilmente conexo, y por definición de conexión débil GsG^s es conexo.

  • ¿GG es débilmente conexo     Gs\implies G^s es conexo?

Sí, ya que por definición de conexión débil GsG^s es conexo.

  • ¿GsG^s es conexo     G\implies G es fuertemente conexo?

No necesariamente, ya que si consideramos el grafo orientado dado por:

G=(V,A) con {V={1,2}A={(1,2)}\begin{align*} G = (V, A) \quad \text{ con } \left\{ \begin{array}{l} V = \{1, 2\}\\ A = \{(1, 2)\} \end{array} \right. \end{align*}

Su grafo subyacente es:

Gs=(V,As) con {V={1,2}As={{1,2}}\begin{align*} G^s = (V, A^s) \quad \text{ con } \left\{ \begin{array}{l} V = \{1, 2\}\\ A^s = \{\{1, 2\}\} \end{array} \right. \end{align*}

que es claramente conexo, pero GG no es fuertemente conexo ya que no existe camino de 2 a 1.

  • ¿GsG^s es conexo     G\implies G es cuasi-fuertemente conexo?

No necesariamente, ya que si consideramos el grafo orientado dado por:

G=(V,A) con {V={1,2,3,4}A={(1,2),(3,2),(3,4)}\begin{align*} G = (V, A) \quad \text{ con } \left\{ \begin{array}{l} V = \{1, 2, 3, 4\}\\ A = \{(1, 2), (3, 2), (3,4)\} \end{array} \right. \end{align*}

Su grafo subyacente es:

Gs=(V,As) con {V={1,2,3,4}As={{1,2},{2,3},{3,4}}\begin{align*} G^s = (V, A^s) \quad \text{ con } \left\{ \begin{array}{l} V = \{1, 2, 3, 4\}\\ A^s = \{\{1, 2\}, \{2, 3\}, \{3, 4\}\} \end{array} \right. \end{align*}

que es claramente conexo, pero GG no es cuasi-fuertemente conexo ya que no existe ningún vértice rr tal que haya camino de rr a todos los demás vértices o de todos los demás vértices a rr.

  • ¿GsG^s es conexo     G\implies G es débilmente conexo?

Sí, ya que por definición de conexión débil GsG^s es conexo implica que GG es débilmente conexo.

✏️Ejercicio

Sea GG grafo no orientado y GoG^o su grafo orientado equivalente:

  • ¿GG es conexo     Go\implies G^o es fuertemente conexo?

Sí, ya que si GG es conexo, entonces el grafo orientado equivalente GoG^o tiene caminos bidireccionales entre cualquier par de vértices, cumpliendo así la definición de grafo fuertemente conexo.

  • ¿GG es conexo     Go\implies G^o es cuasi-fuertemente conexo?

Sí, ya que si GG es conexo, entonces GoG^o es fuertemente conexo y por el teorema 1.12 es cuasi-fuertemente conexo.

  • ¿GG es conexo     Go\implies G^o es débilmente conexo?

Sí, ya que si GG es conexo, entonces GoG^o es fuertemente conexo y por el teorema 1.12 es débilmente conexo.

Minimalmente cuasi-fuermente conexo. Definición

Sea G=(V,A)G = (V, A) grafo orientado, se dice minimalmente cuasi-fuertemente conexo si:

  • G=(V,A)G = (V, A) es cuasi-fuertemente conexo en sentido ascendiente o descendiente con respecto a un vértice rVr \in V
  • G=(V,A{e})G' = (V, A \setminus \{e\}) no es cuasi-fuertemente conexo en sentido ascendiente o descendiente con respecto a rr para toda eAe \in A

💡Nota

Las definiciones de grafo minimalmente fuertemente conexo y minimalmente débilmente conexo son análogas, basta cambiar la palabra cuasi-fuertemente'' por fuertemente'' o ``débilmente''.