¿Cuál es la complejidad de este problema gráfico?


16

Dado un gráfico no dirigido simple G, encuentre un subconjunto A de vértices, de modo que

  1. para cualquier vértice al menos la mitad de los vecinos de x también están en A , yxAxA

  2. El tamaño de es mínimo.A

Es decir, estamos buscando un grupo, en el que al menos la mitad del vecindario de cada vértice interno permanezca interno. La mera existencia de tal grupo es obvia, ya que todo el conjunto de vértices siempre tiene la propiedad 1. Pero, ¿qué tan difícil es encontrar el grupo más pequeño (no vacío)?V(G)

¿Existe un nombre estándar para este problema? ¿Qué se sabe sobre su complejidad?


2
Parece una variante del problema de partición satisfactoria . No sé si su variante es conocida y se ha demostrado que es NPC; pero probablemente una reducción de k-clique debería funcionar: vincula cada nodo del gráfico original a k + 1 nodos de una "camarilla externa" C i de tamaño 2 ( k + 1 ) (cada nodo tiene su camarilla externa). Luego puede encontrar un conjunto no trivial A de tamaño k si y solo si a kvik+1Ci2(k+1)Akk-la camarilla existe en el gráfico original (debe elegir al menos un nodo, pero debe evitar cualquier camarilla externa). Pero es solo una idea; si tengo suficiente tiempo, intentaré ver si la reducción es correcta.
Marzio De Biasi

@MarzioDeBiasi Gracias, después de una búsqueda descubrí que el problema de partición satisfactoria está relacionado. Sin embargo, en cada variante que pude encontrar, buscan una partición, en lugar de un solo conjunto. No está claro cómo están relacionados. En su reducción, a menos que haya entendido mal algo, una -clique del gráfico original no satisface la definición, ya que cada nodo tendrá k - 1 vecinos internos, pero al menos k + 1 vecinos externos, debido a la agregación externa camarillas kk1k+1
Andras Farago

2
Creo que este problema se conoce como "alianza defensiva"
daniello

1
@daniello: genial, busqué en la encuesta IG Yero, JA Rodríguez-Velázquez, "Alianzas defensivas en gráficos: una encuesta", 2013 pero no encontré la palabra "mitad"; cuando tenga tiempo suficiente, lo leeré detenidamente; ¡es probable que el problema de OP ya sea conocido!
Marzio De Biasi

2
Parece formularse como "cada vértice tiene al menos tantos vecinos adentro como afuera", que es lo mismo que en la pregunta hasta el redondeo, y posiblemente incluye / no incluye el vértice mismo en el conteo
daniello

Respuestas:


6

Esta es una reducción de Clique a su problema.

Comenzamos con una instancia de Clique: una gráfica y un número entero k , permiten V = { v 1 , v 2 , . . . , v n } .GkV={v1,v2,...,vn}

Clique sigue siendo NPC incluso bajo la restricción de que (bosquejo de prueba: si m a x ( d e g ( v i ) > 2 ( k - 1 ) luego agregue un K t donde t = 2 ( k - 1 ) - m a xmax(deg(vi))2(k1)max(deg(vi)>2(k1)Kt y conéctelo a todos los nodos de G y solicite una camarilla de tamaño k = k + t en el nuevo gráfico).t=2(k1)max(deg(vi))Gk=k+t

Entonces suponemos que en , m a x ( d e g ( v i ) ) 2 ( k - 1 ) . Para cada nodo v i para el que d e g ( v i ) <Gmax(deg(vi))2(k1)vi creamos una camarilla "externa" C i de tamaño 2 ( k + 1 ) + 1 (cada nodo de Cdeg(vi)<2(k1)Ci2(k+1)+1 camarilla tiene al menos 2 ( k + 1 ) vecinos).Ci2(k+1)

Si es el grado de v i , conectamos v i a 2 ( k - 1 ) - d e g ( v i ) nodos de C i .deg(vi)vivi2(k1)deg(vi)Ci

En el resultante , cada v i tiene grado 2 ( k - 1 ) ; entonces | A | k porque se debe seleccionar al menos un vértice.Gvi2(k1)|A|k

Está claro que si uno de los vértices de está incluido en A, entonces al menos 2 ( k + 1 ) / 2 = k + 1 nodos también deben insertarse en él. Tenga en cuenta que si un nodo original tiene d e g ( v i ) < k - 1, entonces debe incluirse al menos un nodo del C i vinculado , lo que lleva a | A | > k .CiA2(k+1)/2=k+1deg(vi)<k1Ci|A|>k

Entonces podemos construir un conjunto de tamaño mínimo | A | = k si y solo si G contiene una camarilla de tamaño k .A|A|=kGk

Un ejemplo de la reducción en la que preguntamos si el gráfico representado por los nodos amarillos y los bordes en negrita contiene una camarilla de tamaño k = 3 (un triángulo).Gk=3

satisfactory problem variant 30CC0991E0BCCCD16E41CBD9CD3EEECC

Los nodos azules (agrupados para una mejor legibilidad) son , los bordes rojos son los enlaces entre los nodos de G con d e g ( v i ) < 2 ( k - 1 ) .K9Gdeg(vi)<2(k1)


@WillardZhan: porque cada vértice de tiene un grado 2 ( k - 1 ) por construcción, por lo que si A contiene un vértice, debe contener al menos 2 ( k - 1 ) / 2 = k - 1 vecinos (y el mismo se aplica a todos los vértices de A ), entonces | A | k . El "tamaño mínimo" k solo se puede lograr si A es una camarilla de tamaño k . G2(k1)A2(k1)/2=k1A|A|kkAk
Marzio De Biasi

@WillardZhan: Agregué otra condición al problema de la camarilla inicial (pero debería seguir siendo NPC) ... Todavía lo estoy comprobando (no estoy completamente convencido de que sea correcto).
Marzio De Biasi

1
Sí, ahora funciona perfectamente (aunque debería ser en la expresión de tkt ). ¿Quizás elimine mis comentarios?
Willard Zhan

@WillardZhan: Creo que es correcto, porque en ese párrafo me refiero a la reducción de Clique [instancia ] a Clique + restricción m a x ( d e g ( v i ) ) 2 ( k - 1 ) [instancia ( G ' , k ' ) ]. t es el número de nodos (camarilla) que se agregará a G para obtener la nueva instancia de camarilla que confirma la restricción. (G,k)max(deg(vi))2(k1)(G,k)t
Marzio De Biasi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.