Necesito un algoritmo que me proporcione un conjunto [matemático] T [/ matemático] de cardinalidad mínima ([matemático] T \ subseteq U [/ matemático]), tal que [matemático] T \ cap S_i \ ne \ phi, \ forall i [/ math], donde [math] 1 \ le i \ le n [/ math]?

Esto se llama el problema del conjunto de golpes mínimos . Es equivalente al problema de cobertura del conjunto.

En la formulación de la cubierta del conjunto, debe encontrar una familia mínima de conjuntos cuya unión cubra todos los vértices. Establezca un gráfico bipartito con un vértice a la izquierda por cada conjunto, y un vértice a la derecha por cada elemento. Conecte un conjunto a un elemento si el conjunto contiene el elemento.

Ahora, una “cubierta de conjunto” es una colección mínima de vértices izquierdos que están conectados entre ellos a todo a la derecha, mientras que un “conjunto de golpe” es una colección mínima de vértices derechos que están conectados entre sí a todo a la izquierda . Obviamente, es el mismo problema.

El problema es de hecho NP-completo. Existen varios algoritmos estándar que garantizan encontrar el conjunto mínimo y otros algoritmos que solo logran resultados aproximados. Qué algoritmo elegir depende en gran medida de la configuración: ¿Sabe algo sobre los conjuntos [math] S_i [/ ​​math]? Son grandes? ¿Pequeña? ¿Aleatorio? ¿Tiende a cruzarse más de lo esperado? ¿Menos? En cualquier situación, es probable que haya algunos algoritmos que funcionen mucho mejor que los demás.

Como dijo Alon Amit, este es el problema del conjunto de golpes mínimos y el problema es NP-Hard. Aquí hay una reducción simple de la cubierta Vertex:

Digamos que tenemos alguna instancia de cobertura de vértice en un gráfico [matemática] G (V, E) [/ matemática].

Podemos transformar esta instancia del problema de cobertura de vértice en este problema considerando el conjunto de aristas en [matemática] G [/ matemática] como [matemática] S [/ matemática] es decir

[matemáticas] S = \ {S_i = \ {u, v \} \ mid (u, v) \ en E (G) \} [/ matemáticas]

Es fácil ver que encontrar un conjunto mínimo de cardinalidad [matemática] T [/ matemática] proporciona una cobertura mínima de vértice para [matemática] G [/ matemática], ya que dicho conjunto mínimo de cardinalidad (de vértices) debe cubrir todos los conjuntos en [matemática] S [/ matemática] (y por lo tanto todos los bordes en [matemática] G [/ matemática]).