stringtranslate.com

Búsqueda lexicográfica en amplitud

En informática , la búsqueda lexicográfica en amplitud o Lex-BFS es un algoritmo de tiempo lineal para ordenar los vértices de un grafo . El algoritmo es diferente de una búsqueda en amplitud , pero produce un orden que es consistente con la búsqueda en amplitud.

El algoritmo de búsqueda lexicográfica en amplitud se basa en la idea del refinamiento de la partición y fue desarrollado por primera vez por Donald J. Rose, Robert E. Tarjan y George S. Lueker (1976). Corneil (2004) presenta un estudio más detallado del tema. Se ha utilizado como subrutina en otros algoritmos de grafos, incluido el reconocimiento de grafos cordales y la coloración óptima de grafos hereditarios de distancia .

Fondo

El algoritmo de búsqueda en amplitud se define comúnmente mediante el siguiente proceso:

Sin embargo, en lugar de definir el vértice que se debe elegir en cada paso de forma imperativa , como se hace con la operación de desencolado de una cola, se puede definir la misma secuencia de vértices de forma declarativa mediante las propiedades de estos vértices. Es decir, una búsqueda estándar en amplitud es simplemente el resultado de aplicar repetidamente esta regla:

En algunos casos, este orden de los vértices según las posiciones de salida de sus predecesores puede tener vínculos: dos vértices diferentes tienen el mismo predecesor más antiguo. En este caso, el orden en el que se eligen esos dos vértices puede ser arbitrario. El resultado de una búsqueda lexicográfica en amplitud se diferencia de una búsqueda en amplitud estándar en que tiene una regla consistente para romper esos vínculos. En una búsqueda lexicográfica en amplitud, el orden de salida es el que se produciría según la regla:

Por lo tanto, cuando dos vértices v y w tienen el mismo predecesor más antiguo, anterior a cualquier otro vértice no elegido, el algoritmo estándar de búsqueda en amplitud los ordenará de forma arbitraria. En cambio, en este caso, el algoritmo LexBFS elegiría entre v y w según el orden de salida de sus segundos predecesores más antiguos. Si solo uno de ellos tiene un segundo predecesor más antiguo que ya se ha generado, se elige ese. Si tanto v como w tienen el mismo segundo predecesor más antiguo, entonces el empate se deshace considerando sus terceros predecesores más antiguos, y así sucesivamente.

La aplicación directa de esta regla mediante la comparación de vértices según esta regla daría lugar a un algoritmo ineficiente. En cambio, la búsqueda lexicográfica en amplitud utiliza una estructura de datos de partición de conjuntos para producir el mismo ordenamiento de manera más eficiente, de la misma manera que una búsqueda en amplitud estándar utiliza una estructura de datos de cola para producir su ordenamiento de manera eficiente.

Algoritmo

El algoritmo de búsqueda en amplitud lexicográfica reemplaza la cola de vértices de una búsqueda en amplitud estándar con una secuencia ordenada de conjuntos de vértices. Los conjuntos de la secuencia forman una partición de los vértices restantes. En cada paso, se elimina un vértice v del primer conjunto de la secuencia de ese conjunto y, si esa eliminación hace que el conjunto quede vacío, se elimina el conjunto de la secuencia. Luego, cada conjunto de la secuencia se reemplaza por dos subconjuntos: los vecinos de v y los no vecinos de v . El subconjunto de vecinos se coloca antes en la secuencia que el subconjunto de no vecinos. En pseudocódigo , el algoritmo se puede expresar de la siguiente manera:

Cada vértice se procesa una vez, cada arista se examina solo cuando se procesan sus dos puntos finales y (con una representación apropiada para los conjuntos en Σ que permite mover elementos de un conjunto a otro en tiempo constante) cada iteración del bucle interno toma solo tiempo constante. Por lo tanto, al igual que los algoritmos de búsqueda de grafos más simples, como la búsqueda en amplitud y la búsqueda en profundidad , este algoritmo toma tiempo lineal.

El algoritmo se llama búsqueda en amplitud lexicográfica porque el orden que produce es un orden que también podría haber sido producido por una búsqueda en amplitud, y porque si el orden se utiliza para indexar las filas y columnas de una matriz de adyacencia de un gráfico, entonces el algoritmo ordena las filas y columnas en orden lexicográfico .

Aplicaciones

Gráficas cordales

Un grafo G se define como cordal si sus vértices tienen un orden de eliminación perfecto , un orden tal que para cualquier vértice v los vecinos que aparecen más adelante en el orden forman una camarilla. En un grafo cordal, el reverso de un orden lexicográfico es siempre un orden de eliminación perfecto. Por lo tanto, se puede comprobar si un grafo es cordal en tiempo lineal mediante el siguiente algoritmo:

Esta aplicación fue la motivación original que llevó a Rose, Tarjan y Lueker (1976) a desarrollar el algoritmo de búsqueda de amplitud lexicográfica. [1]

Coloración de gráficos

Se dice que un grafo G es perfectamente ordenable si existe una secuencia de sus vértices con la propiedad de que, para cualquier subgrafo inducido de G , se garantiza que un algoritmo de coloración voraz que coloree los vértices en el orden de secuencia inducido producirá una coloración óptima.

Para un grafo cordal, un ordenamiento de eliminación perfecto es un ordenamiento perfecto: la cantidad de color utilizado para cualquier vértice es el tamaño de la camarilla formada por él y sus vecinos anteriores, por lo que la cantidad máxima de colores utilizados es igual al tamaño de la camarilla más grande en el grafo, y ninguna coloración puede usar menos colores. Un subgrafo inducido de un grafo cordal es cordal y la subsecuencia inducida de su ordenamiento de eliminación perfecto es un ordenamiento de eliminación perfecto en el subgrafo, por lo que los grafos cordales son perfectamente ordenables y se puede usar la búsqueda lexicográfica en amplitud para colorearlos de manera óptima.

La misma propiedad es válida para una clase más grande de gráficos, los gráficos hereditarios de distancia : los gráficos hereditarios de distancia son perfectamente ordenables, con un orden perfecto dado por el reverso de un orden lexicográfico, por lo que la búsqueda en amplitud lexicográfica se puede utilizar junto con algoritmos de coloración voraz para colorearlos de manera óptima en tiempo lineal. [2]

Otras aplicaciones

Bretscher et al. (2008) describen una extensión de la búsqueda lexicográfica en amplitud que rompe cualquier vínculo adicional utilizando el gráfico complementario del gráfico de entrada. Como muestran, esto se puede utilizar para reconocer cografos en tiempo lineal. Habib et al. (2000) describen aplicaciones adicionales de la búsqueda lexicográfica en amplitud, incluido el reconocimiento de gráficos de comparabilidad y gráficos de intervalo .

Pedidos LexBFS

Se dice que una enumeración de los vértices de un gráfico es un ordenamiento LexBFS si es la salida posible de la aplicación de LexBFS a este gráfico.

Sea un grafo con vértices. Recordemos que es el conjunto de vecinos de . Sea una enumeración de los vértices de . La enumeración es un ordenamiento LexBFS (con origen ) si, para todos con , existe tal que .

Notas

  1. ^ Corneil (2004).
  2. ^ Brandstädt, Le y Spinrad (1999), Teorema 5.2.4, p. 71.

Referencias