¿Qué es un árbol de expansión?

Introducción:

  • Un árbol de expansión T de un gráfico G no dirigido es un subgráfico que es un árbol que incluye todos los vértices de G, con el mínimo número posible de aristas.
  • En general, un gráfico puede tener varios árboles de expansión, pero un gráfico que no está conectado no contendrá un árbol de expansión.
  • Si todos los bordes de G son también bordes de un árbol de expansión T de G, entonces G es un árbol y es idéntico a T, eso significa que un árbol tiene un árbol de expansión único y es él mismo.

Definición:

  • Un árbol es un gráfico conectado no dirigido sin ciclos. Es un árbol de expansión de un gráfico G si incluye todos los vértices de G y es un subgrafo de G significa que cada borde del árbol pertenece a G.
  • Un árbol de expansión de un gráfico G conectado también se puede definir como un conjunto máximo de bordes de G que no contiene ningún ciclo, o como un conjunto mínimo de bordes que conectan todos los vértices.
  • El peso de un árbol de expansión es la suma de los pesos dados a cada borde del árbol de expansión.

Aplicaciones:

  • Varios algoritmos de búsqueda de rutas, incluido el algoritmo de Dijkstra y el algoritmo de búsqueda A *, construyen internamente un árbol de expansión como un paso intermedio para resolver el problema.
  • Con el fin de minimizar el costo de las redes de energía, conexiones de cableado, tuberías, reconocimiento automático de voz, etc., las personas a menudo usan algoritmos que construyen gradualmente un árbol de expansión como pasos intermedios en el proceso de encontrar el árbol de expansión mínimo.
  • Internet y muchas otras redes de telecomunicaciones tienen enlaces de transmisión que conectan nodos entre sí en una topología de malla que incluye algunos bucles.
  • Para “evitar bucles de puente y” bucles de enrutamiento “, muchos protocolos de enrutamiento diseñados para tales redes, incluido el Protocolo de árbol de expansión, Abrir primero la ruta más corta, el protocolo de enrutamiento de estado de enlace, Enrutamiento basado en árbol aumentado, etc., requieren cada enrutador para recordar un árbol de expansión.

Deje que [matemática] V (G) [/ matemática] y [matemática] E (G) [/ matemática] sean los conjuntos de vértices y aristas de un gráfico [matemática] G [/ matemática] respectivamente. Un árbol de expansión [matemática] T [/ matemática] de [matemática] G [/ matemática] es un árbol conectado que tiene [matemática] V (T) = V (G) [/ matemática] y [matemática] E (T) \ subsec E (G) [/ matemáticas]. Un gráfico no tiene árboles de expansión si y solo si está desconectado.

Como comentario interesante, el número de posibles árboles de expansión de cualquier gráfico [matemática] G [/ matemática] puede calcularse encontrando cualquier cofactor de la matriz laplaciana de [matemática] G [/ matemática]. De manera equivalente, si [math] G [/ math] está conectado, entonces el producto de los valores propios distintos de cero de su matriz laplaciana es igual al producto del número de vértices de [math] G [/ math] y el número de árboles que se extienden de [matemáticas] G [/ matemáticas]. Este es el famoso (en la comunidad de teoría de gráficos) Matrix Tree Theorem , y demuestra que el número de árboles de expansión de un gráfico puede calcularse en tiempo polinómico.

Como se describe en la página wiki del árbol de expansión, si toma todos los nodos en un gráfico y conecta cada uno, tiene un árbol de expansión.

Hay muchos árboles de expansión en un solo gráfico típicamente. Contar el número de árboles de expansión es una forma de caracterizar un gráfico. También puede tener algo llamado árbol de expansión mínimo, que es un árbol de expansión donde se minimizan los pesos de las ramas.

En el campo matemático de la teoría de grafos, un árbol de expansión T de un gráfico no dirigido G es un subgráfico que es un árbol que incluye todos los vértices de G. En general, un gráfico puede tener varios árboles de expansión, pero un gráfico que no es conectado no contendrá un árbol de expansión (pero vea Bosques de expansión a continuación). Si todos los bordes de G son también bordes de un árbol de expansión T de G, entonces G es un árbol y es idéntico a T (es decir, un árbol tiene un árbol de expansión único y es él mismo).

Dado un gráfico G = (V, E), un árbol de expansión es un árbol que se puede formar utilizando los vértices y los bordes del gráfico G. Dado que un árbol es acíclico, podemos deducir fácilmente que el número de bordes en el árbol de expansión es menor que eso en el gráfico G.

Sin embargo, es posible tener lo que se llama un bosque de expansión y esto es solo más de un árbol de expansión.

Una manera simple de encontrar un árbol de expansión es mediante la búsqueda en profundidad en el gráfico.

More Interesting

¿Cuáles son algunos problemas de práctica en la estructura de datos de árbol en sitios web competitivos?

¿Cuáles son algunos ejemplos bien conocidos donde se usa la programación dinámica?

Cómo saber cuándo usar .add o .put para agregar a una matriz en Java

¿Cuáles son las capacidades máximas de almacenamiento de las estructuras de datos (pila, cola, listas enlazadas)?

¿Cuáles son los usos de un puntero en una estructura de datos?

Cómo insertar un valor al final de una lista vinculada

Dada la matriz a [n + 1] de elementos 1 <= a [i] <= n, ¿de cuántas maneras podemos elegir k de n + 1 sin repetición?

¿Existe un límite superior para la capacidad de comprensión de un individuo? Si es así, ¿qué se debe hacer para mejorarlo?

Cómo resolver un problema después de unos días si no pude encontrar la más mínima idea de cómo resolver ese problema

Cómo implementar este algoritmo usando Matlab

¿Cuáles son los algoritmos básicos de aprendizaje automático que todo principiante debe saber antes de comenzar el aprendizaje automático?

Un problema importante con los algoritmos de programación prioritarios es el bloqueo indefinido o la inanición. ¿Puede explicar el concepto de inanición y cómo a menudo se resuelve en la programación de prioridades?

¿Cuáles son las aplicaciones de la vida real de los algoritmos?

Tenemos una serie de N palabras, ¿cómo podríamos clasificarlas con O (N) complejidad de tiempo?

Si está utilizando Java durante las entrevistas algorítmicas, ¿puede omitir las clases de escritura y acceder directamente a los métodos?