stringtranslate.com

árbol SPQR

Un gráfico y su árbol SPQR. Las líneas discontinuas negras conectan pares de bordes virtuales, que se muestran en negro; los bordes restantes están coloreados según el componente triconectado al que pertenecen.

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

Las estructuras básicas subyacentes al árbol SPQR, los componentes triconectados de un gráfico y la conexión entre esta descomposición y las incrustaciones planas de un gráfico plano 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 árbol SPQR por Di Battista y Tamassia (1989, 1990, 1996).

Estructura

Un árbol SPQR toma la forma de un árbol sin raíz en el que para cada nodo x hay asociado un grafo o multigrafo no dirigido Gx . El nodo y el gráfico asociado a él pueden tener uno de cuatro tipos, dadas las iniciales SPQR:

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 borde en un gráfico Gx puede ser un borde virtual para como máximo un borde del árbol SPQR .

Un árbol SPQR T representa un gráfico G T de 2 conexiones , formado de la siguiente manera. Siempre que el borde del árbol SPQR xy asocie el borde virtual ab de G x con el borde virtual cd de G y , forme un único gráfico más grande fusionando a y c en un solo supervértice, fusionando b y d en otro único supervértice y eliminando los dos. bordes virtuales. Es decir, la gráfica más grande es la suma de 2 camarillas de G x y G y . Al realizar este paso de pegado en cada borde del árbol SPQR se produce el gráfico G T ; el orden de realización de los pasos de pegado no afecta el resultado. Cada vértice en uno de los gráficos G x puede asociarse de esta manera con un vértice único en G T , el supervértice en el que se fusionó.

Normalmente, dentro de un árbol SPQR no se permite que dos nodos S sean adyacentes, ni que dos nodos P sean adyacentes, porque si tal adyacencia ocurriera, los dos nodos podrían fusionarse en un solo nodo más grande. Con esta suposición, el árbol SPQR se determina únicamente a partir de su gráfico. Cuando un gráfico G está representado por un árbol SPQR sin nodos P adyacentes ni nodos S adyacentes, entonces los gráficos G x asociados con los nodos del árbol SPQR se conocen como componentes triconectados de G.

Construcción

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

El problema de construir los componentes triconectados de un gráfico 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 sólo la lista de componentes, debería poder construirse en tiempo lineal. Después de que se proporcionó una implementación de un algoritmo más lento para árboles SPQR como parte de la biblioteca GDToolkit, Gutwenger y Mutzel (2001) proporcionaron la primera implementación de tiempo lineal. Como parte de este proceso de implementación de este algoritmo, también corrigieron algunos errores en el trabajo anterior de Hopcroft y Tarjan (1973).

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

  1. Ordene los bordes del gráfico por los pares de índices numéricos de sus puntos finales, utilizando una variante de clasificación por base que realiza dos pasadas de clasificación por cubo , una para cada punto final. Después de este paso de clasificación, los bordes paralelos entre los mismos dos vértices serán adyacentes entre sí en la lista ordenada y se pueden dividir en un nodo P del eventual árbol SPQR, dejando el gráfico restante simple.
  2. Divida el gráfico en componentes divididos; estos son gráficos que se pueden formar encontrando un par de vértices de separación, dividiendo el gráfico en estos dos vértices en dos gráficos más pequeños (con un par vinculado de aristas virtuales que tienen los vértices de separación como puntos finales) y repitiendo este proceso de división hasta que no haya más existen pares separadores. La partición encontrada de esta manera no está definida de forma única, porque las partes del gráfico que deberían convertirse en nodos S del árbol SPQR se subdividirán en múltiples triángulos.
  3. Etiquete 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 bien existen dos componentes divididos que comparten un par vinculado de bordes virtuales, y ambos componentes tienen el tipo S o ambos tienen el tipo P, combínelos en un solo componente más grande del mismo tipo.

Para encontrar los componentes divididos, Gutwenger y Mutzel (2001) utilizan la búsqueda en profundidad para encontrar una estructura a la que llaman palmera; Este es un árbol de búsqueda en profundidad con sus bordes orientados lejos de la raíz del árbol, para los bordes que pertenecen al árbol, y hacia la raíz para todos los demás bordes. Luego encuentran una numeración de preorden especial de los nodos en el árbol y usan ciertos patrones en esta numeración para identificar pares de vértices que pueden separar el gráfico en componentes más pequeños. Cuando se encuentra un componente de esta manera, se utiliza una estructura de datos de pila para identificar los bordes que deberían formar parte del nuevo componente.

Uso

Encontrar cortes de 2 vértices

Con el árbol SPQR de un gráfico G (sin Q nodos) es sencillo encontrar cada par de vértices u y v en G de modo que eliminar u y v de G deje un gráfico desconectado y los componentes conectados de los gráficos restantes:

Representando todas las incrustaciones de gráficos planos.

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

Ver también

Notas

  1. ^ ab Hopcroft y Tarjan (1973); Gutwenger y Mutzel (2001).
  2. ^ Por ejemplo, Hopcroft & Tarjan (1973) y Bienstock & Monma (1988), ambos citados como precedentes por Di Battista y Tamassia.
  3. ^ abc Di Battista y Tamassia (1989).
  4. ^ MacLane (1937).

Referencias

enlaces externos