Saltar al contenido

Diario de clases

Clases de Jesús Soto

Menú
  • Fórmulas
Menú

Navegación de entradas

MAD: Representación matricial de un grafo ←

MAD: Árboles

Posted on 20 de abril de 2026

1. Definición y Caracterización

Un árbol es un grafo simple G = (V, E) que cumple cualquiera de las siguientes condiciones equivalentes:

  • Conectividad y Ciclos: Es un grafo conexo y no contiene ciclos.
  • Caminos Únicos: Existe un único camino simple entre cualquier par de vértices u, v.
  • Relación Vértices-Aristas: Para un grafo de n vértices, es un árbol si es conexo y tiene n-1 aristas, o si no tiene ciclos y tiene n-1 aristas.
  • Propiedades Críticas:
    • Es conexo, pero deja de serlo si se prescinde de cualquier arista.
    • No contiene ciclos, pero se forma uno si se añade cualquier arista nueva.
    • Todo árbol es un grafo bipartito.

Ejercicio: Considera un grafo simple conexo G con 15 vértices. a) Si G es un árbol, ¿cuántas aristas debe tener? Justifica tu respuesta. b) Si G tiene 18 aristas, ¿puede ser un árbol? ¿Por qué? c) Si eliminamos 4 aristas de G y obtenemos un bosque con 3 componentes conexas (todas ellas árboles), ¿cuántas aristas tenía G originalmente?

Apartado a) Si G es un árbol con 15 vértices, ¿cuántas aristas debe tener?

Una de las propiedades fundamentales de los árboles establece que un árbol con \( n \) vértices tiene exactamente \( n-1 \) aristas.

En nuestro caso:

  • Número de vértices: \( n = 15 \)
  • Número de aristas: \( n – 1 = 15 – 1 = 14 \)

Por tanto, el grafo G debe tener exactamente 14 aristas.

Esta propiedad se cumple porque un árbol es un grafo conexo (necesitamos al menos 14 aristas para conectar 15 vértices) y sin ciclos (no podemos tener más de 14 aristas porque se formaría un ciclo). La única cantidad posible es exactamente \( n-1 \) aristas.

Apartado b) Si G tiene 18 aristas, ¿puede ser un árbol?

Como hemos visto en el apartado anterior, un árbol con 15 vértices debe tener exactamente 14 aristas.

Si G tiene 18 aristas, tenemos:

  • Aristas de G: 18
  • Aristas necesarias para ser árbol: 14
  • Aristas en exceso: \( 18 – 14 = 4 \)

Consecuentemente, G no puede ser un árbol.

Un grafo con 15 vértices y 18 aristas tiene 4 aristas más de las necesarias. Estas aristas adicionales necesariamente forman ciclos. Por tanto, G no cumple la definición de árbol (que debe ser conexo y sin ciclos).

Apartado c) Bosque con 3 componentes conexas

Partimos de un grafo G con 15 vértices. Al eliminar 4 aristas, obtenemos un bosque con 3 componentes conexas (tres árboles separados).

Paso 1: Calcular cuántas aristas tiene el bosque resultante.

Sea \( n_1, n_2, n_3 \) el número de vértices en cada componente. Sabemos que:

  • \( n_1 + n_2 + n_3 = 15 \) (los vértices se reparten entre las 3 componentes)

Cada componente es un árbol, por tanto:

  • Componente 1 tiene \( n_1 – 1 \) aristas
  • Componente 2 tiene \( n_2 – 1 \) aristas
  • Componente 3 tiene \( n_3 – 1 \) aristas

Total de aristas en el bosque:

\[ (n_1 – 1) + (n_2 – 1) + (n_3 – 1) = n_1 + n_2 + n_3 – 3 = 15 – 3 = 12 \text{ aristas} \]

Paso 2: Calcular cuántas aristas tenía G originalmente.

Si al eliminar 4 aristas quedaron 12 aristas, entonces G tenía:

\[ 12 + 4 = 16 \text{ aristas} \]

Por tanto, G tenía originalmente 16 aristas.

Nota: Observa que G no era un árbol (tendría 14 aristas), sino un grafo con 2 aristas extra que formaban ciclos.


2. Tipos y Conceptos Relacionados

  • Bosque: Grafo simple sin ciclos donde sus componentes conexas son árboles.
  • Árbol Generador (o Recubridor): Subgrafo de un grafo G que es un árbol y contiene a todos los vértices de G. Un grafo tiene árbol generador si y solo si es conexo.
  • Árbol Generador Mínimo: En grafos ponderados, es el árbol generador cuyo peso total (suma de los pesos de sus aristas) es el mínimo posible.
  • Algoritmo de Prim: Procedimiento paso a paso para hallar este árbol partiendo de un vértice inicial y añadiendo la arista de menor peso que conecte con un vértice nuevo.

Ejercicio: Dado el siguiente grafo ponderado que representa conexiones entre servidores (los pesos indican el coste de cada enlace):

a) Dibuja al menos dos árboles generadores diferentes de este grafo.
b) Utilizando el algoritmo de Prim comenzando desde el vértice A, construye paso a paso el árbol generador mínimo. Indica en cada paso qué arista añades y por qué.
c) ¿Cuál es el coste total del árbol generador mínimo?

Apartado a) Dos árboles generadores diferentes.

Un árbol generador debe incluir todos los vértices (A, B, C, D, E, F) y exactamente \( 6 – 1 = 5 \) aristas, sin formar ciclos.

Árbol Generador 1:

  • Aristas: A-C (peso 3), C-D (peso 2), A-B (peso 5), B-E (peso 4), D-F (peso 8)
  • Peso total: \( 3 + 2 + 5 + 4 + 8 = 22 \)
    A ---5--- B
    |         |
    3         4
    |         |
    C--2--D   E
          |
          8
          |
          F

Árbol Generador 2:

  • Aristas: A-D (peso 6), C-D (peso 2), B-E (peso 4), D-E (peso 7), D-F (peso 8)
  • Peso total: \( 6 + 2 + 4 + 7 + 8 = 27 \)
    A         B
     \        |
      \       4
       6      |
        \     E
         \   /
          \ /7
           D
          /|
         / |
        2  8
       /   |
      C    F

Apartado b) Algoritmo de Prim desde A

Solución paso a paso:

El algoritmo de Prim construye el árbol generador mínimo comenzando desde un vértice inicial y añadiendo en cada paso la arista de menor peso que conecte un vértice ya incluido con uno nuevo.

Inicio:

  • Vértices en el árbol: {A}
  • Vértices pendientes: {B, C, D, E, F}

Paso 1:

  • Aristas candidatas desde A: A-B (peso 5), A-C (peso 3), A-D (peso 6)
  • Elegimos la de menor peso: A-C (peso 3)
  • Vértices en el árbol: {A, C}
  • Peso acumulado: 3

Paso 2:

  • Aristas candidatas: A-B (5), A-D (6), C-D (2)
  • Elegimos: C-D (peso 2)
  • Vértices en el árbol: {A, C, D}
  • Peso acumulado: \( 3 + 2 = 5 \)

Paso 3:

  • Aristas candidatas: A-B (5), D-E (7), D-F (8)
  • Elegimos: A-B (peso 5)
  • Vértices en el árbol: {A, B, C, D}
  • Peso acumulado: \( 5 + 5 = 10 \)

Paso 4:

  • Aristas candidatas: B-E (4), D-E (7), D-F (8)
  • Elegimos: B-E (peso 4)
  • Vértices en el árbol: {A, B, C, D, E}
  • Peso acumulado: \( 10 + 4 = 14 \)

Paso 5:

  • Aristas candidatas: D-F (8)
  • Elegimos: D-F (peso 8)
  • Vértices en el árbol: {A, B, C, D, E, F}
  • Peso acumulado: \( 14 + 8 = 22 \)

Árbol Generador Mínimo resultante:

    A ---5--- B
    |         |
    3         4
    |         |
    C--2--D   E
          |
          8
          |
          F

Aristas seleccionadas: A-C, C-D, A-B, B-E, D-F

Apartado c) Coste total del árbol generador mínimo

Sumando los pesos de todas las aristas seleccionadas:

\[ 3 + 2 + 5 + 4 + 8 = 22 \]

El coste total del árbol generador mínimo es 22.


3. Árboles con Raíz

Estructura donde se destaca un vértice especial llamado raíz.

  • Jerarquía:
    • Niveles: La raíz está en el nivel 0; sus adyacentes en el nivel 1, y así sucesivamente.
    • Altura: Valor máximo del nivel de sus vértices, $h(G)$.
    • Relaciones: Se definen conceptos de padre (vértice anterior en el camino desde la raíz), hijo (vértice siguiente), ancestro y descendiente.
  • Tipos de Vértices:
    • Hoja: Vértice que no tiene hijos.
    • Vértice Interno: Vértice que no es una hoja.
  • Clasificación por Grado:
    • Árbol m-ario: Cada vértice interno tiene a lo sumo m hijos. Es «completo» si todos tienen exactamente m hijos.
    • Árbol Binario: Árbol 2-ario donde se distingue entre hijo derecho e hijo izquierdo.

Ejercicio: Considera el siguiente árbol con raíz en A:

a) Indica la altura del árbol.
b) Enumera todos los vértices hoja.
c) Para el vértice E, indica: su padre, sus hijos, sus ancestros y sus descendientes.
d) Determina el nivel de cada vértice.
e) ¿Es este árbol m-ario? En caso afirmativo, ¿qué valor tiene m? ¿Es completo?

Apartado a) Altura del árbol

La altura de un árbol es el nivel máximo de sus vértices (el nivel más alejado de la raíz).

Niveles en el árbol:

  • Nivel 0: A
  • Nivel 1: B, C, D
  • Nivel 2: E, F, G, H
  • Nivel 3: I

Luego, la altura del árbol es 3.

Apartado b) Vértices hoja

Un vértice hoja es aquel que no tiene hijos (es decir, no tiene descendientes).

Analizando cada vértice:

  • A tiene hijos (B, C, D) → NO es hoja
  • B tiene hijos (E, F) → NO es hoja
  • C no tiene hijos → SÍ es hoja
  • D tiene hijos (G, H) → NO es hoja
  • E tiene hijo (I) → NO es hoja
  • F no tiene hijos → SÍ es hoja
  • G no tiene hijos → SÍ es hoja
  • H no tiene hijos → SÍ es hoja
  • I no tiene hijos → SÍ es hoja

Los vértices hoja son: C, F, G, H, I (5 hojas en total).

Apartado c) Información sobre el vértice E

Padre de E: El vértice inmediatamente anterior en el camino desde la raíz hasta E.

  • Camino desde la raíz: A → B → E
  • Padre de E: B

Hijos de E: Los vértices directamente conectados a E y que están en el nivel siguiente.

  • Hijos de E: I

Ancestros de E: Todos los vértices en el camino desde la raíz hasta E (sin incluir a E).

  • Camino: A → B → E
  • Ancestros de E: A, B

Descendientes de E: Todos los vértices en los subárboles que cuelgan de E.

  • Descendientes de E: I

Apartado d) Nivel de cada vértice

El nivel de un vértice es la distancia (número de aristas) desde la raíz hasta ese vértice.

Vértice Nivel Camino desde la raíz
A 0 A
B 1 A → B
C 1 A → C
D 1 A → D
E 2 A → B → E
F 2 A → B → F
G 2 A → D → G
H 2 A → D → H
I 3 A → B → E → I

Apartado e) ¿Es m-ario? ¿Es completo?

Un árbol es m-ario si cada vértice interno tiene a lo sumo m hijos.

Analizando los vértices internos (no hojas):

  • A tiene 3 hijos (B, C, D)
  • B tiene 2 hijos (E, F)
  • D tiene 2 hijos (G, H)
  • E tiene 1 hijo (I)

El máximo número de hijos que tiene un vértice interno es 3 (el vértice A).

Vemos que sí, es un árbol 3-ario (ternario), porque ningún vértice interno tiene más de 3 hijos.

Un árbol m-ario es completo si todos los vértices internos tienen exactamente m hijos.

Verificando:

  • A tiene 3 hijos ✓
  • B tiene 2 hijos ✗ (debería tener 3)
  • D tiene 2 hijos ✗ (debería tener 3)
  • E tiene 1 hijo ✗ (debería tener 3)

Por tanto, no, no es un árbol 3-ario completo, porque no todos los vértices internos tienen exactamente 3 hijos.


4. Árboles Binarios de Búsqueda (ABB)

Es un tipo de árbol binario donde los vértices están ordenados.

  • Propiedad de Orden: Para cada vértice v, los elementos del subárbol izquierdo son menores (anteriores) a v, y los del subárbol derecho son mayores (posteriores).
  • Operaciones Principales:
    • Búsqueda: Localización de un elemento comparándolo con la raíz y descendiendo por la rama correspondiente.
    • Inserción: Añadir un nuevo vértice manteniendo la propiedad de orden.
    • Eliminación: Procedimiento para prescindir de un vértice considerando si es una hoja, si tiene un solo hijo o si tiene dos hijos.

Ejercicio: Dibuja un árbol binario que satisfaga las siguientes condiciones:

a) Tiene exactamente 7 vértices.
b) Tiene altura 3.
c) Tiene exactamente 3 hojas.
d) El vértice raíz tiene dos hijos, y al menos un vértice interno (no hoja, no raíz) tiene un solo hijo.

Pregunta adicional: ¿Cuántos árboles binarios distintos podemos construir con estas condiciones? (No es necesario dibujarlos todos, pero razona si hay más de uno posible)

Construcción del árbol con las condiciones dadas

Condiciones:

  • Exactamente 7 vértices
  • Altura 3
  • Exactamente 3 hojas
  • La raíz tiene dos hijos
  • Al menos un vértice interno (no hoja, no raíz) tiene un solo hijo

Vamos a construir el árbol paso a paso razonando las restricciones.

Paso 1: Identificar la estructura básica.

  • Total: 7 vértices
  • Hojas: 4 vértices
  • Vértices internos: \( 7 – 4 = 3 \) vértices (incluida la raíz)

Paso 2: Distribución por niveles.

  • Nivel 0 (raíz): 1 vértice
  • Nivel 1: 2 vértices (los dos hijos de la raíz)
  • Niveles 2 y 3: \( 7 – 1 – 2 = 4 \) vértices restantes

Paso 3: Cumplir la condición de «al menos un vértice interno con un solo hijo».

Si ambos vértices del nivel 1 tuvieran dos hijos, tendríamos 4 vértices en el nivel 2, y no podríamos alcanzar el nivel 3. Por tanto, uno de los vértices del nivel 1 debe tener un solo hijo (para que ese hijo esté en nivel 2 y pueda tener su propio hijo en nivel 3).

Una solución posible:

         1 (nivel 0) - raíz
        / \
       /   \
      2     3 (nivel 1)
     / \    |
    4   5   6 (nivel 2)
            |
            7 (nivel 3)

Verificación:

  • Vértices totales: 7 ✓
  • Altura: 3 (el vértice 7 está en nivel 3) ✓
  • Hojas: 4, 5 (nivel 2) y 7 (nivel 3) = 3.

Pregunta adicional: ¿Cuántos árboles distintos?

Hay múltiples árboles binarios distintos que cumplen estas condiciones (al menos en configuraciones similares), ya que podemos reorganizar los subárboles izquierdo y derecho en diferentes niveles. El número exacto requeriría enumeración exhaustiva.


Ejercicio: Considera la siguiente secuencia de números que se van insertando en un ABB inicialmente vacío:
\[(50,\, 30,\, 70,\, 20,\, 40,\, 60,\, 80,\, 10,\, 25)\]

a) Dibuja el árbol binario de búsqueda resultante tras insertar todos los elementos en el orden dado.
b) Describe el proceso paso a paso de búsqueda del elemento 25 en el árbol construido. Indica qué vértices se visitan.
c) Describe el proceso de eliminación del vértice 30 del árbol. Dibuja el árbol resultante.
d) Si hubiéramos insertado los mismos números pero en orden ascendente (10, 20, 25, 30, …), ¿qué forma tendría el árbol? ¿Qué problema observas?

Apartado a) Construcción del ABB

Veamos el proceso paso a paso:

Paso 1: Insertar 50

    50

50 se convierte en la raíz (el árbol estaba vacío).

Paso 2: Insertar 30

    50
   /
  30

30 < 50, por tanto, va a la izquierda de 50.

Paso 3: Insertar 70

    50
   /  \
  30   70

70 > 50, por tanto, va a la derecha de 50.

Paso 4: Insertar 20

    50
   /  \
  30   70
 /
20

20 < 50 → izquierda. 20 < 30 → izquierda de 30.

Paso 5: Insertar 40

    50
   /  \
  30   70
 /  \
20  40

40 < 50 → izquierda. 40 > 30 → derecha de 30.

Paso 6: Insertar 60

    50
   /  \
  30   70
 /  \  /
20  40 60

60 > 50 → derecha. 60 < 70 → izquierda de 70.

Paso 7: Insertar 80

    50
   /  \
  30   70
 /  \  / \
20  40 60 80

80 > 50 → derecha. 80 > 70 → derecha de 70.

Paso 8: Insertar 10

      50
     /  \
    30   70
   /  \  / \
  20  40 60 80
 /
10

10 < 50 → izquierda. 10 < 30 → izquierda. 10 < 20 → izquierda de 20.

Paso 9: Insertar 25

      50
     /  \
    30   70
   /  \  / \
  20  40 60 80
 /  \
10  25

25 < 50 → izquierda. 25 < 30 → izquierda. 25 > 20 → derecha de 20.

Árbol final:

        50
       /  \
      30   70
     /  \  / \
    20  40 60 80
   / \
  10 25

Apartado b) Búsqueda del elemento 25

El proceso de búsqueda compara el elemento buscado con cada vértice visitado y decide si continuar por la izquierda o derecha.

Búsqueda de 25:

  1. Visitar raíz (50): 25 < 50 → ir a la izquierda
  2. Visitar 30: 25 < 30 → ir a la izquierda
  3. Visitar 20: 25 > 20 → ir a la derecha
  4. Visitar 25: 25 = 25 → ¡Encontrado!

Vértices visitados en orden: 50 → 30 → 20 → 25

Número de comparaciones: 4

Apartado c) Eliminación del vértice 30

El vértice 30 tiene dos hijos (20 y 40), por lo que debemos aplicar el procedimiento de eliminación para este caso.

Procedimiento estándar:

  1. Buscar el sucesor inmediato de 30 (el menor elemento del subárbol derecho) o el predecesor inmediato (el mayor elemento del subárbol izquierdo).
  2. Reemplazar 30 con ese valor.
  3. Eliminar el vértice del sucesor/predecesor (que tendrá 0 o 1 hijo).

Opción 1: Usar el sucesor (menor del subárbol derecho de 30)

Subárbol derecho de 30: solo contiene 40.

Menor elemento: 40

Pasos:

  1. Reemplazar 30 por 40
  2. Eliminar el vértice 40 original (que es hoja, fácil de eliminar)

Árbol resultante:

        50
       /  \
      40   70
     /    / \
    20   60 80
   / \
  10 25

Opción 2: Usar el predecesor (mayor del subárbol izquierdo de 30)

Subárbol izquierdo de 30: contiene 20, 10, 25.

Mayor elemento: 25

Pasos:

  1. Reemplazar 30 por 25
  2. Eliminar el vértice 25 original (que es hoja)

Árbol resultante (alternativa):

        50
       /  \
      25   70
     /  \  / \
    20  40 60 80
   /
  10

Ambas soluciones son válidas. La primera (usando el sucesor) es más común en las implementaciones estándar.

Apartado d) Inserción en orden ascendente

Si insertamos los elementos en orden ascendente: 10, 20, 25, 30, 40, 50, 60, 70, 80

Construcción paso a paso:

Insertar 10:
10

Insertar 20:
10
  \
  20

Insertar 25:
10
  \
  20
    \
    25

Insertar 30:
10
  \
  20
    \
    25
      \
      30

... y así sucesivamente

Árbol resultante:

10
  \
  20
    \
    25
      \
      30
        \
        40
          \
          50
            \
            60
              \
              70
                \
                80

Problema observado:

El árbol se convierte en una lista enlazada (o cadena lineal). Esto significa que:

  • Altura del árbol: \( n – 1 = 8 \) (muy alto para 9 elementos)
  • Tiempo de búsqueda: En el peor caso, \( O(n) \) en lugar de \( O(\log n) \)
  • Eficiencia perdida: Se pierde la principal ventaja de los ABB: búsqueda eficiente mediante división del espacio en mitades.

Por tanto, para evitar esta degradación, se usan árboles balanceados (como AVL o árboles rojo-negro) que garantizan altura logarítmica mediante rotaciones automáticas tras cada inserción/eliminación.


5. Árboles enraizados

Un árbol enraizado es un árbol conexo y acíclico (con \(n−1\) aristas para \(n\) vértices) donde se selecciona un vértice como raíz, y las aristas se orientan típicamente hacia abajo (hacia los hijos) o hacia la raíz. Esto genera una estructura jerárquica única: cada vértice, excepto la raíz, tiene exactamente un padre, y la raíz tiene grado de entrada 0 en su versión dirigida. En grafos dirigidos, se denomina arborescencia si las aristas apuntan lejos de la raíz, o anti-arborescencia si apuntan hacia ella. Lo que diferencia a los árboles enraizados de los árboles no dirigidos es que un árbol enraizado contiene un vértice distinguido, llamado raíz.

Unlabeled ordered rooted trees of 4 edges and 2 leaves.svg
By Řiťopič – Own work, CC BY-SA 4.0, Link

Navegación de entradas

MAD: Representación matricial de un grafo

Novela

La Loba, la lucha fraticida por un reino

La Loba, la lucha fratricida por un reino.

Urraca, señora de Zamora, acusada de instigar la muerte de su hermano, el rey Sancho de Castilla, deberá defenderse de la acusación, al tiempo que luchará por mantener la cohesión entre los hermanos y los reinos cristianos: una lobera de fieros lobeznos.

👉 En amazon

Entradas recientes

  • MAD: Árboles
  • MAD: Representación matricial de un grafo
  • MAD: Subgrafos, distancia, conexión, conectividad e isomorfismos.
  • MAD: graphs: grafos con maxima
  • MAD: Teoría de Grafos
abril 2026
L M X J V S D
 12345
6789101112
13141516171819
20212223242526
27282930  
« Mar    

Categorías

  • Álgebra Lineal
  • general
  • Matemática Discreta
  • MathBio

Etiquetas

Prácticas MAD Prácticas MathBio Prácticas Álgebra

Meta

  • Acceder
  • Feed de entradas
  • Feed de comentarios
  • WordPress.org
©2026 Diario de clases | Diseño: Tema de WordPress Newspaperly