Articulo de referencia

Árbol SPQR

Un grafo y su árbol SPQR. Las líneas negras discontinuas conectan pares de aristas virtuales, representadas en negro; las aristas restantes están coloreadas según el componente ...

Un grafo y su árbol SPQR. Las líneas negras discontinuas conectan pares de aristas virtuales, representadas en negro; las aristas restantes están coloreadas según el componente triconectado al que pertenecen.

En la teoría de grafos , una rama de las matemáticas, los componentes triconectados de un grafo biconectado son un sistema de grafos más pequeños que describen todos los cortes de 2 vértices en el grafo. Un árbol SPQR es una estructura de datos de árbol utilizada en informática , y más específicamente en algoritmos de grafos , para representar los componentes triconectados de un grafo. El árbol SPQR de un grafo se puede construir en tiempo lineal [ 1 ] y tiene varias aplicaciones en algoritmos de grafos dinámicos y dibujo de grafos .

Las estructuras básicas subyacentes al árbol SPQR, los componentes triconectados de un grafo y la conexión entre esta descomposición y las incrustaciones planares de un grafo planar , fueron investigadas por primera vez por Saunders Mac Lane ( 1937 ) ; estas estructuras fueron utilizadas en algoritmos eficientes por varios otros investigadores [ 2 ] antes de su formalización como el árbol SPQR por Di Battista y Tamassia ( 1989 , 1990 , 1996 ) .  

Estructura

Un árbol SPQR tiene la forma de un árbol sin raíz en el que a cada nodo x se le asocia un grafo no dirigido o multigrafo G x . El nodo, y el grafo asociado a él, pueden tener uno de cuatro tipos, según las iniciales SPQR:

  • En un nodo S, el grafo asociado es un grafo cíclico con tres o más vértices y aristas. Este caso es análogo a la composición en serie en grafos serie-paralelo ; la S significa "serie". [ 3 ]
  • En un nodo P, el grafo asociado es un grafo dipolar , un multigrafo con dos vértices y tres o más aristas, el dual planar de un grafo cíclico. Este caso es análogo a la composición paralela en grafos serie-paralelo ; la P significa "paralelo". [ 3 ]
  • En un nodo Q, el grafo asociado tiene una única arista real. Este caso trivial es necesario para manejar el grafo que tiene una sola arista. En algunos trabajos sobre árboles SPQR, este tipo de nodo no aparece en los árboles SPQR de grafos con más de una arista; en otros trabajos, se requiere que todas las aristas no virtuales estén representadas por nodos Q con una arista real y una virtual, y que las aristas en los demás tipos de nodos sean todas virtuales.
  • En un nodo R, el grafo asociado es un grafo 3-conectado que no es un ciclo ni un dipolo. La R significa "rígido": en la aplicación de árboles SPQR en la incrustación de grafos planares, el grafo asociado de un nodo R tiene una incrustación planar única. [ 3 ]

Cada arista xy entre dos nodos del árbol SPQR está asociada con dos aristas virtuales dirigidas , una de las cuales es una arista en G x y la otra es una arista en G y . Cada arista en un grafo G x puede ser una arista virtual para como máximo una arista del árbol SPQR.

Un árbol SPQR T representa un grafo 2-conexo G T , formado de la siguiente manera. Siempre que la arista xy del árbol SPQR asocie la arista virtual ab de G x con la arista virtual cd de G y , se forma un único grafo mayor fusionando a y c en un único supervértice, fusionando b y d en otro único supervértice y eliminando las dos aristas virtuales. Es decir, el grafo mayor es la suma de 2-cliques de G x y G y . Al realizar este paso de pegado en cada arista del árbol SPQR se obtiene el grafo G T ; el orden en que se realizan los pasos de pegado no afecta al resultado. Cada vértice en uno de los grafos G x puede asociarse de esta manera con un único vértice en G T , el supervértice en el que se fusionó.

Normalmente, en un árbol SPQR no se permite que dos nodos S sean adyacentes, ni que dos nodos P lo sean, ya que si se produjera tal adyacencia, los dos nodos podrían fusionarse en un único nodo mayor. Bajo esta premisa, el árbol SPQR se determina de forma única a partir de su grafo. Cuando un grafo G se representa mediante un árbol SPQR sin nodos P adyacentes ni nodos S adyacentes, entonces los grafos G x asociados a los nodos del árbol SPQR se conocen como los componentes triconectados de G.

Construcción

El árbol SPQR de un grafo conexo de 2 vértices dado se puede construir en tiempo lineal . [ 1 ]

El problema de construir los componentes triconectados de un grafo fue resuelto por primera vez en tiempo lineal por Hopcroft y Tarjan (1973) . Basándose en este algoritmo, Di Battista y Tamassia (1996) sugirieron que la estructura completa del árbol SPQR, y no solo la lista de componentes, debería poder construirse en tiempo lineal. Tras la inclusión de una implementación de un algoritmo más lento para árboles SPQR en la biblioteca GDToolkit, Gutwenger y Mutzel (2001) proporcionaron la primera implementación en tiempo lineal. Durante este proceso de implementación, también corrigieron algunos errores del trabajo anterior de Hopcroft y Tarjan (1973) .

El algoritmo de Gutwenger y Mutzel (2001) incluye los siguientes pasos generales.

  1. Ordena las aristas del grafo según los pares de índices numéricos de sus extremos, utilizando una variante del algoritmo de ordenación por radix que realiza dos pasadas del algoritmo de ordenación por cubetas , una para cada extremo. Tras este paso de ordenación, las aristas paralelas entre los mismos dos vértices serán adyacentes en la lista ordenada y podrán separarse en un nodo P del árbol SPQR resultante, lo que simplifica el grafo restante.
  2. Dividir el grafo en componentes separados; estos son grafos que se pueden formar encontrando un par de vértices separadores, dividiendo el grafo en estos dos vértices en dos grafos más pequeños (con un par de aristas virtuales enlazadas que tienen los vértices separadores como extremos) y repitiendo este proceso de división hasta que no existan más pares separadores. La partición encontrada de esta manera no está definida de forma única, ya que las partes del grafo que deberían convertirse en nodos S del árbol SPQR se subdividirán en múltiples triángulos.
  3. Etiqueta cada componente dividido con una P (un componente dividido de dos vértices con múltiples aristas), una S (un componente dividido en forma de triángulo) o una R (cualquier otro componente dividido). Si existen dos componentes divididos que comparten un par de aristas virtuales vinculadas, y ambos componentes son de tipo S o ambos son de tipo P, combínalos en un único componente más grande del mismo tipo.

Para encontrar los componentes divididos, Gutwenger y Mutzel (2001) utilizan una búsqueda en profundidad para hallar una estructura que denominan árbol de palmeras. Este árbol, construido mediante búsqueda en profundidad, tiene sus aristas orientadas desde la raíz, en el caso de las aristas que pertenecen al árbol, y hacia la raíz para todas las demás. A continuación, encuentran una numeración de preorden especial para los nodos del árbol y utilizan ciertos patrones en esta numeración para identificar pares de vértices que pueden separar el grafo en componentes más pequeños. Cuando se encuentra un componente de esta manera, se utiliza una estructura de datos de pila para identificar las aristas que deben formar parte del nuevo componente.

Uso

Cómo encontrar cortes de 2 vértices

Con el árbol SPQR de un grafo G (sin nodos Q) es sencillo encontrar cada par de vértices u y v en G tales que al eliminar u y v de G se obtiene un grafo desconectado, y los componentes conectados de los grafos restantes:

  • Los dos vértices u y v pueden ser los dos extremos de una arista virtual en el grafo asociado con un nodo R y un nodo S o un nodo R, en cuyo caso los dos componentes están representados por los dos subárboles del árbol SPQR formados al eliminar la arista correspondiente del árbol SPQR.
  • Los dos vértices u y v pueden ser los dos vértices del grafo asociados a un nodo P que posee dos o más aristas virtuales. En este caso, los componentes formados al eliminar u y v se representan mediante subárboles del árbol SPQR, uno por cada arista virtual del nodo.
  • Los dos vértices u y v pueden ser dos vértices del grafo asociado a un nodo S, de modo que u y v no sean adyacentes o la arista uv sea virtual. Si la arista es virtual, el par ( u , v ) también pertenece a un nodo de tipo P o R, y sus componentes son las descritas anteriormente. Si los dos vértices no son adyacentes, sus componentes están representadas por dos caminos del grafo cíclico asociado al nodo S, con los nodos del árbol SPQR conectados a dichos caminos.

El número de cortes de 2 vértices de G viene dado por el número de aristas en el árbol SPQR más, para cada nodo S con k vértices, el número de pares no ordenados de vértices no adyacentes en el ciclo correspondiente (es decir, k ( k − 3)/2).

Representación de todas las incrustaciones de grafos planares

Si un grafo planar es 3-conexo, tiene una incrustación planar única, salvo por la elección de qué cara es la cara exterior y de la orientación de la incrustación: las caras de la incrustación son exactamente los ciclos no separables del grafo. Sin embargo, para un grafo planar (con vértices y aristas etiquetados) que es 2-conexo pero no 3-conexo, puede haber mayor libertad para encontrar una incrustación planar. Específicamente, siempre que dos nodos en el árbol SPQR del grafo estén conectados por un par de aristas virtuales, es posible invertir la orientación de uno de los nodos (reemplazándolo por su imagen especular) con respecto al otro. Además, en un nodo P del árbol SPQR, las diferentes partes del grafo conectadas a las aristas virtuales del nodo P pueden permutarse arbitrariamente . Todas las representaciones planares pueden describirse de esta manera. [ 4 ]

Véase también

Notas

Referencias

  • Implementación del árbol SPQR en el marco de dibujo de Open Graph.
  • El árbol de componentes triconectados Implementación en Java en la biblioteca jBPT (ver clase TCTree).