Definiciones¶
- Conexión mínima: Al eliminar una arista cualquiera, el grafo se desconecta.
- Recorridos: DFS y BFS siempre producen el mismo resultado en árboles.
- Utilidad: Muchos algoritmos trabajan sobre esta estructura (divide y vencerás) y la complejidad de estos algoritmos depende de relaciones de recurrencia que podemos resolver usando árboles.
Árbol libre¶
Es un grafo no dirigido, conexo y acíclico.
No existen circuitos ni ciclos: un ciclo es un camino simple que va desde un vértice a sí mismo (sin repetir aristas ni vértices).
graph TD
A --- B
A --- C
B --- D
B --- E
C --- F
Ejemplo: El grafo anterior es un árbol libre con 6 vértices y 5 aristas (|E| = |V| - 1 = 5). Es conexo y acíclico.
Bosque¶
Es un grafo no dirigido, acíclico y no necesariamente conexo: cada componente conexa es un árbol.
graph TD
A --- B
A --- C
D --- E
F
Ejemplo: El grafo anterior tiene tres componentes: un árbol con vértices {A,B,C}, otro árbol con {D,E} y un vértice aislado {F} (que también es un árbol trivial). Esto constituye un bosque.
Propiedades¶
Sea G un grafo no dirigido. Las siguientes afirmaciones son equivalentes (definen un árbol libre):
- G es un árbol libre.
- Cualquier par de vértices está conectado por un camino simple único.
- G es conexo, pero al eliminar una arista se desconecta.
- G es conexo y |E| = |V| - 1.
- G es acíclico y |E| = |V| - 1.
- G es acíclico y al agregar una arista aparece un ciclo.
Ejemplo: La propiedad 3 se ilustra eliminando cualquier arista del árbol anterior. Si se elimina la arista A–B, el grafo se desconecta en dos componentes.
Árbol con raíz¶
Es un árbol libre T al cual hemos seleccionado un vértice como raíz. Esto lo transforma en una estructura jerárquica que parte desde la raíz como fuente hacia los demás.
La elección de la raíz es arbitraria; de un árbol libre pueden obtenerse muchos árboles con raíz diferentes.
graph TD
R[A] --> B
R --> C
B --> D
B --> E
C --> F
Ejemplo: Partiendo del árbol libre anterior, elegimos A como raíz. Se definen relaciones jerárquicas: A es padre de B y C; B es padre de D y E; C es padre de F.
Terminología¶
Sea u, v, r vértices de un árbol con raíz r, y supongamos que hay un camino desde r hasta v que pasa por u, con una arista (u, v).
- Padre e hijo: u es el padre de v, denotado P(v), y v es hijo de u.
- Raíz: La raíz r no tiene padre: P(r) = NIL.
- Hermanos: Vértices que comparten el mismo padre.
- Tíos: Vértices hermanos del padre de v.
- Ancestros: Vértices en el camino desde r hasta v (incluyendo r y v). v es descendiente de cada ancestro.
- Ancestro/descendiente propio: No incluye al mismo vértice.
- Hoja: Vértice sin hijos.
- Vértice interno o nodo interno: Vértice con al menos un hijo.
- Subárbol: Al elegir un vértice cualquiera, separarlo del árbol y definirlo como raíz, se obtiene un subárbol.
graph TD
R[A] --> B
R --> C
B --> D
B --> E
C --> F
C --> G[G]
D --> H[H]
Ejemplo: En este árbol con raíz A: - A es raíz, no tiene padre. - B y C son hijos de A, por lo tanto hermanos. - D, E son hijos de B; F, G son hijos de C. - D tiene como tío a C (hermano del padre B). - Ancestros de H: A, B, D. Descendientes de B: D, E, H. - H es hoja (sin hijos); B es vértice interno (tiene hijos). - Si elegimos B como raíz del subárbol, obtenemos el subárbol con vértices {B, D, E, H}.
Altura y profundidad¶
La profundidad de un vértice v, denotada d(v), es el número de aristas del camino desde la raíz hasta v. La profundidad de la raíz es 0.
La altura de un árbol es la mayor profundidad que tenga algún vértice (es decir, la profundidad máxima).
graph TD
R[A0] --> B1[B1]
R --> C1[C1]
B1 --> D2[D2]
B1 --> E2[E2]
C1 --> F2[F2]
D2 --> G3[G3]
Ejemplo: En este árbol con raíz A: - Profundidad de A: 0 - Profundidad de B y C: 1 - Profundidad de D, E, F: 2 - Profundidad de G: 3 - Altura del árbol: 3
Tabla resumen¶
| Concepto | Definición | Ejemplo (diagrama) |
|---|---|---|
| Árbol libre | Grafo no dirigido, conexo y acíclico. | [[árbol libre]] |
| Bosque | Grafo no dirigido acíclico, no necesariamente conexo; cada componente es un árbol. | [[bosque]] |
| Propiedades | Conjunto de 6 condiciones equivalentes que caracterizan un árbol libre. | [[propiedades]] |
| Árbol con raíz | Árbol libre con un vértice seleccionado como raíz, creando jerarquía. | [[árbol con raíz]] |
| Padre/Hijo | Relación directa en un árbol con raíz: u padre de v si (u,v) es arista en el camino desde la raíz. | [[terminología]] |
| Hermanos | Vértices con el mismo padre. | [[terminología]] |
| Tíos | Hermanos del padre de un vértice. | [[terminología]] |
| Ancestros/Descendientes | Vértices en el camino raíz–vértice; ancestro propio excluye a sí mismo. | [[terminología]] |
| Hoja | Vértice sin hijos. | [[terminología]] |
| Vértice interno | Vértice con al menos un hijo. | [[terminología]] |
| Subárbol | Árbol obtenido al tomar un vértice como raíz y removerlo del árbol original. | [[subárbol]] |
| Profundidad | Número de aristas desde la raíz hasta el vértice. | [[altura y profundidad]] |
| Altura | Máxima profundidad de cualquier vértice en el árbol. | [[altura y profundidad]] |
Comentarios adicionales: - Los árboles son fundamentales en ciencias de la computación: estructuran datos jerárquicos, expresiones, decisiones, etc. - El concepto de árbol libre no tiene raíz, mientras que el árbol con raíz es la versión orientada para representar relaciones padre–hijo. - La propiedad de |E| = |V| – 1 es la más usada para verificar si un grafo conexo es un árbol. - En algoritmos, la altura determina la complejidad de operaciones en árboles binarios de búsqueda, heaps, etc. - Recuerda que un árbol puede representarse recursivamente: un árbol es un nodo raíz con una lista de subárboles (sus hijos).