En teoría de grafos, una ruptura de un grafo no dirigido es un corte cuyo conjunto de corte forma un grafo bipartito completo. Un grafo es primo si no tiene ninguna ruptura. Las rupturas de un grafo pueden ser acomodadas siguiendo una estructura de árbol llamada descomposición de ruptura o descomposición conjunta, la cual puede ser construida en tiempo lineal. Esta descomposición ha sido utilizada para el reconocimiento rápido de grafos circulares y grafos de distancia hereditaria, así como para otros problemas en algoritmos de grafos.
Las rupturas y descomposiciones de ruptura fueron introducidas por Cunningham (1982), quien también estudió variantes de estas mismas nociones para grafos dirigidos.[1]
Un corte de un grafo no dirigido es una partición de los vértices en dos subconjuntos no vacíos, los cuales son los lados del corte. El subconjunto de aristas que tiene un vértice en cada lado se llama el conjunto de corte. Cuando un conjunto de corte forma un grafo bipartito completo, a este corte le llamamos ruptura. Así, una ruptura puede ser descrita como una partición de los vértices del grafo en dos subconjuntos X e Y, tal que cada vecino de X en Y es adyacente a cada vecino de Y en X.[2]
Un corte o ruptura es trivial cuando uno de sus dos lados tiene sólo un vértice en él; todo corte trivial es una ruptura. Decimos que un grafo es primo (con respecto a rupturas) si no tiene rupturas notriviales.[2]
Decimos que dos rupturas se cruzan si cada lado de una de las rupturas tiene una intersección no vacía con cada lado de la otra ruptura. Una ruptura es fuerte cuando no es cruzada por ninguna otra ruptura. Como caso especial, toda ruptura trivial es fuerte. Las rupturas fuertes de un grafo inducen una estructura llamada la descomposición de ruptura o descomposición conjunta del grafo. Esta descomposición puede ser representada por un árbol cuyas hojas corresponden uno-a-uno con el grafo dado y cuyas aristas corresponden uno-a-uno con las rupturas fuertes del grafo, tal que la partición de hojas formada removiendo cualquier arista del árbol es igual a la partición de los vértices dada por la ruptura fuerte asociada.[2]
Cada nodo interno i del árbol de descomposición de ruptura de un grafo G está asociado con un grafo Gi, llamado el grafo cociente para el nodo i. El grafo cociente puede ser formado eliminando al vértice i del árbol, formando subconjuntos de vértices en G que corresponden a las hojas en cada uno de los subárboles resultantes, y colapsando cada uno de estos conjuntos de vértices hacia un solo vértice. Cada grafo cociente tiene una de tres formas: puede ser un grafo primo, un grafo completo, o una estrella.[2]
Un grafo puede tener una cantidad exponencial de rupturas diferentes, pero todas estas son representadas en el árbol de descomposición de ruptura, ya sea como una arista de este árbol (para una ruptura fuerte) o como partición arbitraria de un grafo cociente completo o estrella (para una ruptura que no es fuerte).[2]
En un grafo completo o grafo bipartito completo, cada corte es una ruptura.
En un grafo ciclo de longitud cuatro, la partición de los vértices dada a partir de la 2-coloración el ciclo es una ruptura no trivial, pero para ciclos de longitud mayor, no existen rupturas no triviales.
Un puente de un grafo que no es 2-arista-conectado corresponde a una ruptura, con cada lado de la ruptura formada por los vértices de un lado del puente. El conjunto de corte de la ruptura es justo la única arista en el puente, lo cual es un caso especial de un subgrafo completo bipartito. Del mismo modo, si v es un punto de articulación de un grafo que no es 2-vértice-conectado, entonces el grafo tiene múltiples rupturas en las que v y algunos pero no todos los componentes formados por su eliminación están en un lado, y los componentes restantes están en el otro lado. En estos ejemplos, el conjunto de corte de la ruptura forma una estrella.
Cunningham (1982) ya había probado que era posible encontrar la descomposición de ruptura en tiempo polinomial.[1] Después de una serie de mejorías en el diseño del algoritmo,[3][4] algoritmos de tiempo linear fueron descubiertos por Dahlhaus (2000)[5] y Charbit, de Montgolfier y Raffinot (2012).[2]
La descomposición de ruptura ha encontrado aplicaciones en el reconocimiento de varias clases importantes de grafos:
La descomposición de ruptura también ha sido utilizada para simplificar la solución de problemas que son NP-difíciles en grafos arbitrarios:[9]
Estos métodos pueden llevarnos a descubrir algoritmos de tiempo polinomial para grafos en los que cada grafo cociente tiene una estructura sencilla que permite que el subproblema pueda ser computado eficientemente. Por ejemplo, esto es cierto para grafos en los que cada grafo cociente tiene tamaño constante.[9]