Particionar un gráfico en ciclos de nodos separados

15

Problema relacionado: el teorema de Veblen establece que "un gráfico admite una descomposición del ciclo si y solo si es par". Los ciclos son de borde disjunto, pero no necesariamente de nodo disjunto. Dicho de otra manera, "El conjunto de bordes de un gráfico se puede dividir en ciclos si y solo si cada vértice tiene un grado par".

Mi problema: Me pregunto si alguien ha estudiado la partición de un gráfico en ciclos de nodos separados. Es decir, divida los vértices de un gráfico G en V 1 , V 2 , , V k , y cada subgráfico inducido por V i es hamiltoniano.VGV1,V2,,VkVi

¿Es NP-duro o fácil?

Problema más relacionado: la partición en triángulo es NP-completa. (Página 68 de "Ordenadores e intractabilidad")

Gracias por su consejo de antemano. ^^

Peng Zhang
fuente
8
Hay una reducción fácil a la coincidencia. Ejercicio bien conocido en algoritmos.
Chandra Chekuri
1
¿Es este tu problema: en.wikipedia.org/wiki/Vertex_cycle_cover ?
Thomas Ahle
@ThomasAhle Gracias, no tenía conocimiento de esa página wiki. Se llama 'cobertura de ciclo disjunto' mencionado en esa página wiki.
Peng Zhang

Respuestas:

20

Una partición en ciclos vértice-disjuntos es lo mismo que un subgrafo de 2-regular, más comúnmente conocido como factor 2. Se puede encontrar (si existe) en tiempo polinómico mediante un algoritmo basado en la coincidencia. Por ejemplo, vea este enlace .

ETA, noviembre de 2013: según los comentarios a continuación, parece que la reducción de la fuente vinculada anteriormente es incorrecta. Sin embargo, la afirmación de que el problema puede reducirse a una coincidencia perfecta sigue siendo correcta. La reducción correcta está en WT Tutte (1954), "Una breve prueba del teorema del factor para gráficos finitos", Canadian J. Math. 6: 347–352 .

Reemplace cada vértice con grado d por un gráfico bipartito completo G v = K d ,vd , y represente cada bordeuvdel gráfico original por un borde desde un vértice de G u a un vértice de G v (en el lado de la bipartición convérticesd) de tal manera que cada vértice de G v en ese lado de la bipartición tiene exactamente uno de esos incidentes de borde.Gv=Kd,d2uvGuGvdGv

Luego, una coincidencia perfecta en el gráfico modificado debe coincidir con los vértices en su lado de la bipartición de G v con d - 2 fuera de los vértices d en el otro lado, dejando exactamente dos vértices libres que deben coincidir con sus vecinos en otros subgrafos G u . De esta manera, las coincidencias perfectas del gráfico modificado corresponden 1 por 1 con las cubiertas del ciclo del gráfico original.d2Gvd2dGu

David Eppstein
fuente
No lo entiendo Todas las menciones que he encontrado, de este algoritmo, comienzan calculando un recorrido euler. Sin embargo, hay muchos gráficos que son codiciables en el ciclo sin tener un recorrido euler. ¿Está también en P si no requerimos que se usen todos los bordes?
Thomas Ahle
¿Leíste el artículo al que me vinculé? No veo ninguna mención de las giras de Euler allí.
David Eppstein el
Es un poco difícil de entender. Cuando construyes cambiando cada arista ( i , j ) a una arista de V a V ( ( i , j ) ) ¿cómo sabes qué extremo poner en V y cuál poner en V ? El artículo parece "tomar el segundo", pero no es un gráfico dirigido ..E(i,j)VV(i,j)VV
Thomas Ahle
1
Quiero decir, también podría convertir cada borde no dirigido en un borde dirigido en cada dirección, pero luego la coincidencia podría darme muchos ciclos de "longitud 2", ¿no?
Thomas Ahle
1
@ThomasAhle aparentemente confundió los términos; lo que quería decir es un -regular Spanning gráfica, también conocido como K -factorkk
Manfred Weis