En teoría de grafos , el ancho de árbol de un grafo no dirigido es un número entero que especifica, informalmente, a qué distancia está el grafo de ser un árbol . El ancho de árbol más pequeño es 1; los grafos con ancho de árbol 1 son exactamente los árboles y los bosques . Los grafos con ancho de árbol como máximo 2 son los grafos serie-paralelos . Los grafos máximos con ancho de árbol exactamente k se denominan k -árboles , y los grafos con ancho de árbol como máximo k se denominan k -árboles parciales . [1] Muchas otras familias de grafos bien estudiadas también tienen ancho de árbol acotado.
El ancho del árbol se puede definir formalmente de varias maneras equivalentes: en términos del tamaño del conjunto de vértices más grande en una descomposición en árbol del gráfico, en términos del tamaño de la camarilla más grande en una completitud cordal del gráfico, en términos del orden máximo de un refugio que describe una estrategia para un juego de persecución-evasión en el gráfico, o en términos del orden máximo de una zarza , una colección de subgráficos conectados que se tocan entre sí.
El ancho del árbol se utiliza comúnmente como parámetro en el análisis de complejidad parametrizada de algoritmos de grafos . Muchos algoritmos que son NP-hard para grafos generales se vuelven más fáciles cuando el ancho del árbol está limitado por una constante.
El concepto de ancho de árbol fue introducido originalmente por Umberto Bertelè y Francesco Brioschi (1972) bajo el nombre de dimensión . Más tarde fue redescubierto por Rudolf Halin (1976), basándose en propiedades que comparte con un parámetro gráfico diferente, el número de Hadwiger . Más tarde fue redescubierto nuevamente por Neil Robertson y Paul Seymour (1984) y desde entonces ha sido estudiado por muchos otros autores. [2]
Una descomposición en árbol de un grafo G = ( V , E ) es un árbol T con nodos X 1 , …, X n , donde cada X i es un subconjunto de V , que satisface las siguientes propiedades [3] (el término nodo se utiliza para referirse a un vértice de T para evitar confusiones con los vértices de G ):
El ancho de una descomposición en árbol es el tamaño de su conjunto más grande, Xi , menos uno. El ancho de árbol tw( G ) de un grafo G es el ancho mínimo entre todas las descomposiciones en árbol posibles de G . En esta definición, el tamaño del conjunto más grande se reduce en uno para que el ancho de árbol de un árbol sea igual a uno.
De manera equivalente, el ancho del árbol de G es uno menos que el tamaño de la camarilla más grande en el grafo cordal que contiene a G con el número de camarilla más pequeño . Un grafo cordal con este tamaño de camarilla se puede obtener agregando a G una arista entre cada dos vértices que pertenezcan a al menos uno de los conjuntos X i .
El ancho de árbol también puede caracterizarse en términos de refugios , funciones que describen una estrategia de evasión para un cierto juego de persecución-evasión definido en un grafo. Un grafo G tiene un ancho de árbol k si y solo si tiene un refugio de orden k + 1 pero de ningún orden superior, donde un refugio de orden k + 1 es una función β que mapea cada conjunto X de como máximo k vértices en G en uno de los componentes conectados de G \ X y que obedece la propiedad de monotonía que β ( Y ) ⊆ β ( X ) siempre que X ⊆ Y .
También se puede realizar una caracterización similar utilizando zarzas , familias de subgrafos conectados que se tocan entre sí (lo que significa que comparten un vértice o están conectados por un borde). [4] El orden de una zarza es el conjunto de impacto más pequeño para la familia de subgrafos, y el ancho de árbol de un gráfico es uno menos que el orden máximo de una zarza.
Todo grafo completo K n tiene un ancho de árbol n – 1. Esto se ve más fácilmente usando la definición de ancho de árbol en términos de grafos cordales: el grafo completo ya es cordal, y agregar más aristas no puede reducir el tamaño de su grupo más grande.
Un grafo conexo con al menos dos vértices tiene un ancho de árbol de 1 si y solo si es un árbol. Un árbol tiene un ancho de árbol de uno por el mismo razonamiento que para los grafos completos (es decir, es cordal y tiene un tamaño máximo de grupo de dos). Por el contrario, si un grafo tiene un ciclo, entonces cada completitud cordal del grafo incluye al menos un triángulo que consta de tres vértices consecutivos del ciclo, de lo que se sigue que su ancho de árbol es al menos dos.
Para cualquier constante fija k , los grafos con un ancho de árbol de k como máximo se denominan k -árboles parciales . Otras familias de grafos con un ancho de árbol acotado incluyen los grafos de cactus , los pseudobosques , los grafos serie-paralelos , los grafos planos exteriores , los grafos de Halin y las redes apolíneas . [5] Los grafos de flujo de control que surgen en la compilación de programas estructurados también tienen un ancho de árbol acotado, lo que permite que ciertas tareas, como la asignación de registros, se realicen de manera eficiente en ellos. [6]
Los grafos planares no tienen un ancho de árbol acotado, porque el grafo de cuadrícula n × n es un grafo planar con un ancho de árbol exactamente n . Por lo tanto, si F es una familia de grafos cerrada menor con un ancho de árbol acotado, no puede incluir todos los grafos planares. Por el contrario, si algún grafo planar no puede ocurrir como menor para los grafos de la familia F , entonces existe una constante k tal que todos los grafos en F tienen un ancho de árbol como máximo k . Es decir, las siguientes tres condiciones son equivalentes entre sí: [7]
Para cada valor finito de k , los grafos con un ancho de árbol de k como máximo pueden caracterizarse por un conjunto finito de menores prohibidos . (Es decir, cualquier grafo con un ancho de árbol > k incluye uno de los grafos del conjunto como menor). Cada uno de estos conjuntos de menores prohibidos incluye al menos un grafo planar.
Para valores mayores de k , el número de menores prohibidos crece al menos tan rápido como el exponencial de la raíz cuadrada de k . [9] Sin embargo, los límites superiores conocidos sobre el tamaño y el número de menores prohibidos son mucho más altos que este límite inferior. [10]
Es NP-completo determinar si un gráfico dado G tiene un ancho de árbol como máximo de una variable dada k . [11] Sin embargo, cuando k es cualquier constante fija, los gráficos con ancho de árbol k se pueden reconocer y se puede construir una descomposición en árbol de ancho k para ellos, en tiempo lineal. [12] La dependencia temporal de este algoritmo en k es exponencial.
Debido a los roles que desempeña el ancho del árbol en una enorme cantidad de campos, se desarrollaron diferentes algoritmos prácticos y teóricos para calcular el ancho del árbol de un grafo. Dependiendo de la aplicación en cuestión, se puede preferir una mejor relación de aproximación o una mejor dependencia en el tiempo de ejecución del tamaño de la entrada o del ancho del árbol. La siguiente tabla proporciona una descripción general de algunos de los algoritmos de ancho de árbol. Aquí k es el ancho del árbol y n es el número de vértices de un grafo de entrada G . Cada uno de los algoritmos genera en el tiempo f ( k ) ⋅ g ( n ) una descomposición del ancho dada en la columna Aproximación. Por ejemplo, el algoritmo de Bodlaender (1996) en el tiempo 2 O ( k 3 ) ⋅ n o bien construye una descomposición del árbol del grafo de entrada G de ancho como máximo k o bien informa que el ancho del árbol de G es mayor que k . De manera similar, el algoritmo de Bodlaender et al. (2016) en el tiempo 2 O ( k ) ⋅ n o bien construye una descomposición en árbol del gráfico de entrada G con un ancho de como máximo 5 k + 4 o bien informa que el ancho del árbol de G es mayor que k . Korhonen (2021) mejoró esto a 2 k + 1 en el mismo tiempo de ejecución.
No se sabe si la determinación del ancho de árbol de gráficos planares es NP-completo o si su ancho de árbol se puede calcular en tiempo polinomial. [13]
En la práctica, un algoritmo de Shoikhet & Geiger (1997) puede determinar el ancho de árbol de grafos con hasta 100 vértices y hasta 11, encontrando una completitud cordal de estos grafos con el ancho de árbol óptimo.
Para gráficos más grandes, se pueden utilizar técnicas basadas en búsqueda, como la búsqueda de ramificación y límite (BnB) y la búsqueda de mejor primero, para calcular el ancho del árbol. Estos algoritmos son útiles en cualquier momento , ya que, si se detienen antes, generarán un límite superior para el ancho del árbol.
El primer algoritmo BnB para calcular el ancho de árbol, llamado algoritmo QuickBB [14] fue propuesto por Gogate y Dechter [15] . Dado que la calidad de cualquier algoritmo BnB depende en gran medida de la calidad del límite inferior utilizado, Gogate y Dechter [15] también propusieron un algoritmo novedoso para calcular un límite inferior del ancho de árbol llamado minor-min-width [15] . En un nivel alto, el algoritmo minor-min-width combina los hechos de que el ancho de árbol de un grafo nunca es mayor que su grado mínimo o su menor para producir un límite inferior del ancho de árbol. El algoritmo minor-min-width construye repetidamente un menor de grafo contrayendo una arista entre un vértice de grado mínimo y uno de sus vecinos, hasta que solo queda un vértice. Se garantiza que el máximo del grado mínimo sobre estos menores construidos sea un límite inferior del ancho de árbol del grafo.
Dow y Korf [16] mejoraron el algoritmo QuickBB utilizando la búsqueda de mejor primero . En ciertos gráficos, este algoritmo de búsqueda de mejor primero es un orden de magnitud más rápido que QuickBB.
A principios de la década de 1970, se observó que una gran clase de problemas de optimización combinatoria definidos en grafos se podían resolver de manera eficiente mediante programación dinámica no serial siempre que el grafo tuviera una dimensión acotada [17] , un parámetro que Bodlaender (1998) demostró que era equivalente al ancho del árbol. Más tarde, varios autores observaron de manera independiente a fines de la década de 1980 [18] que muchos problemas algorítmicos que son NP-completos para grafos arbitrarios se pueden resolver de manera eficiente mediante programación dinámica para grafos de ancho de árbol acotado, utilizando las descomposiciones en árbol de estos grafos.
Como ejemplo, el problema de colorear un gráfico de ancho de árbol k se puede resolver utilizando un algoritmo de programación dinámica en una descomposición en árbol del gráfico. Para cada conjunto X i de la descomposición en árbol, y cada partición de los vértices de X i en clases de color, el algoritmo determina si esa coloración es válida y se puede extender a todos los nodos descendientes en la descomposición en árbol, combinando información de un tipo similar calculada y almacenada en esos nodos. El algoritmo resultante encuentra una coloración óptima de un gráfico de n vértices en el tiempo O ( k k + O (1) n ) , un límite de tiempo que hace que este problema sea manejable con parámetros fijos .
Para una gran clase de problemas, existe un algoritmo de tiempo lineal para resolver un problema de la clase si se proporciona una descomposición en árbol con un ancho de árbol acotado constante. Específicamente, el teorema de Courcelle [19] establece que si un problema de grafos se puede expresar en la lógica de grafos utilizando lógica monádica de segundo orden , entonces se puede resolver en tiempo lineal en grafos con un ancho de árbol acotado. La lógica monádica de segundo orden es un lenguaje para describir propiedades de grafos que utiliza las siguientes construcciones:
Consideremos, por ejemplo, el problema de los 3 colores para grafos. Para un grafo G = ( V , E ) , este problema plantea la pregunta de si es posible asignar a cada vértice v ∈ V uno de los 3 colores de modo que no haya dos vértices adyacentes con el mismo color asignado. Este problema se puede expresar en lógica monádica de segundo orden de la siguiente manera:
donde W 1 , W 2 , W 3 representan los subconjuntos de vértices que tienen cada uno de los 3 colores. Por lo tanto, mediante los resultados de Courcelle, el problema de los 3 colores se puede resolver en tiempo lineal para un grafo dada una descomposición en árbol de ancho de árbol constante y acotado.
El ancho de ruta de un grafo tiene una definición muy similar al ancho de árbol a través de descomposiciones de árboles, pero está restringido a descomposiciones de árboles en las que el árbol subyacente de la descomposición es un grafo de ruta . Alternativamente, el ancho de ruta se puede definir a partir de grafos de intervalo de manera análoga a la definición de ancho de árbol a partir de grafos cordales. Como consecuencia, el ancho de ruta de un grafo es siempre al menos tan grande como su ancho de árbol, pero solo puede ser mayor por un factor logarítmico. [5] Otro parámetro, el ancho de banda del grafo , tiene una definición análoga a partir de grafos de intervalo adecuados , y es al menos tan grande como el ancho de ruta. Otros parámetros relacionados incluyen la profundidad del árbol , un número que está acotado para una familia de grafos cerrados menores si y solo si la familia excluye un camino, y la degeneración , una medida de la escasez de un grafo que es como máximo igual a su ancho de árbol.
Como el ancho del árbol de un gráfico de cuadrícula n × n es n , el ancho del árbol de un gráfico G siempre es mayor o igual que el tamaño del menor cuadrado de cuadrícula más grande de G . En la otra dirección, el teorema del menor de cuadrícula de Robertson y Seymour muestra que existe una función ilimitada f tal que el menor cuadrado de cuadrícula más grande tiene un tamaño de al menos f ( r ) donde r es el ancho del árbol. [20] Los mejores límites conocidos en f son que f debe ser al menos Ω( r d ) para alguna constante fija d > 0 , y como máximo [21]
Para la notación Ω en el límite inferior, consulte la notación O grande . Se conocen límites más estrictos para familias de gráficos restringidas, lo que conduce a algoritmos eficientes para muchos problemas de optimización de gráficos en esas familias a través de la teoría de la bidimensionalidad . [22] El teorema de cuadrícula de Halin proporciona un análogo de la relación entre el ancho del árbol y el tamaño menor de la cuadrícula para gráficos infinitos. [23]
Se dice que una familia F de grafos cerrados bajo la toma de subgrafos tiene ancho de árbol local acotado , o la propiedad de ancho de árbol de diámetro , si el ancho de árbol de los grafos en la familia está acotado superiormente por una función de su diámetro . Si también se supone que la clase está cerrada bajo la toma de menores , entonces F tiene ancho de árbol local acotado si y solo si uno de los menores prohibidos para F es un grafo de vértice . [24] Las pruebas originales de este resultado mostraron que el ancho de árbol en una familia de grafos sin menores de vértice crece como máximo de manera doblemente exponencial como función del diámetro; [25] más tarde esto se redujo a exponencial simple [22] y finalmente a un límite lineal. [26] El ancho de árbol local acotado está estrechamente relacionado con la teoría algorítmica de bidimensionalidad , [27] y cada propiedad gráfica definible en lógica de primer orden se puede decidir para una familia gráfica libre de vértices menores en una cantidad de tiempo que es solo ligeramente superlineal. [28]
También es posible que una clase de grafos que no esté cerrada bajo menores tenga un ancho de árbol local acotado. En particular, esto es trivialmente cierto para una clase de grafos de grado acotado, ya que los subgrafos de diámetro acotado tienen un tamaño acotado. Otro ejemplo lo dan los grafos 1-planares , grafos que se pueden dibujar en el plano con un cruce por arista, y más generalmente para los grafos que se pueden dibujar en una superficie de género acotado con un número acotado de cruces por arista. Al igual que con las familias de grafos cerrados menores de ancho de árbol local acotado, esta propiedad ha señalado el camino hacia algoritmos de aproximación eficientes para estos grafos. [29]
Halin (1976) define una clase de parámetros de grafos que él llama S -funciones, que incluyen el ancho del árbol. Se requiere que estas funciones, desde grafos hasta números enteros, sean cero en grafos sin aristas , que sean menores monótonas (una función f se denomina "menor monótona" si, siempre que H es un menor de G , se tiene f ( H ) ≤ f ( G ) ), que aumenten en uno cuando se agrega un nuevo vértice que es adyacente a todos los vértices anteriores , y que tomen el valor más grande de los dos subgrafos a cada lado de un separador de camarilla . El conjunto de todas estas funciones forma una red completa bajo las operaciones de minimización y maximización elemento por elemento. El elemento superior en esta red es el ancho del árbol, y el elemento inferior es el número de Hadwiger , el tamaño del menor completo más grande en el grafo dado.
problema abierto desde hace mucho tiempo es si existe un algoritmo de tiempo polinomial para calcular el ancho de árbol de los gráficos planares.