Você está na página 1de 19

Teorema de Cook

Publicado por Stephen Cook en "The Complexity of Theorem


Proving Procedures” (1971), establece:
El Problema de Satisfactibilidad booleana (SAT) es NP-
completo.
Definición 6.9. SAT es el lenguaje de las fórmulas
proposicionales satisfactibles (se hacen verdaderas con alguna
asignación de valor de verdad a sus variables).
Se usan paréntesis, disyunción ∨, conjunción ∧, y negación ∼.
Los nombres de las variables son cadenas sobre algún alfabeto de letras
(se usará letras individuales sin pérdida de generalidad.
Literales son variables o variables negadas.
Conjunciones son fórmulas de la forma P1 ∧ . . . ∧ Pq.
Disyunciones son fórmulas de la forma P1 ∨ . . . ∨ Pq.
Ejemplo 6.4

La fórmula:

P = (p ∨ ∼q ∨ r) ∧ (∼p ∨ q ∨ ∼r) ∧ (∼p ∨ ∼q ∨ r) ∧ (p ∨ ∼q ∨ ∼r) ∧


(∼p ∨ ∼q ∨ ∼r) ∧ (p ∨ q ∨ r)

es satisfactible para
● p = 0, q = 0 y r = 1 y
● p = 1, q = 0 y r = 0
Si la cantidad de variables es pequeña (k)
Habrá 2k combinaciones de valores de verdad,
Se puede probar una a una las combinaciones y
Verificar cual(es) combinación(es) hace(n) que una
proposición P sea verdadera.

Pero k puede ser cercano al largo de la proposición, con lo cual


este método toma tiempo exponencial en el largo de la entrada.
Teorema 6.1. SAT es NP-completo

SAT es NP porque
Una MTND puede adivinar todas las combinaciones de
valores posibles para las variables y
La evaluación de la proposición se hace en tiempo polinomial.
Se puede reducir polinomialmente cualquier L ∈ NP a SAT
puesto que es posible programar una MT construyendo una
fórmula proposicional P = fM,p(ω) que dice que existe una
computación de M que empieza en la configuración (s,#ω#) y
llega al estado h en el paso p(n). |P| = O(p′(n)3 log n), es decir
polinomial en |ω| y puede construirse fácilmente en tiempo
polinomial.
Forma Normal Conjuntiva (FNC)

Definición 6.10. Una fórmula proposicional está en Forma


Normal Conjuntiva (FNC) si es una conjunción de disyunciones
de literales.

SAT-FNC es el lenguaje de las fórmulas satisfactibles que están


en forma normal conjuntiva.

Lema 6.9. SAT-FNC es NP-completo.


Otros problemas NP-
completos.
3-SAT

Definición 6.11. 3-SAT es el conjunto de fórmulas


proposicionales satisfactibles en FNC, donde ninguna disyunción
tiene más de 3 literales.
Ejemplos:
(x1 ∨ x2 ∨ x3) ∧ (x4 ∨ x5 ∨ x6)
La proposición del ejemplo 6.4 está en formato 3-SAT
3-SAT es NP-completo
Hay instancias de SAT que se encuentran en la práctica en
inteligencia artificial, diseño de circuitos y demostración
automática de teoremas. Usualmente se resuelven usando
heurísticas.
k-clique

Sea G = (V, E) un grafo no dirigido. Un k-clique es un


subconjunto de V de tamaño k donde todos los vértices están
conectados entre sí.
El lenguaje clique es el conjunto de pares (G, k) tal que G tiene
un k-clique. Corresponde al problema de, dado un grafo,
determinar si contiene un k-clique.
Origen: la palabra inglesa clique, que define a un grupo de
personas que comparten intereses en común. En esta analogía,
los vértices representan a las personas, las aristas a las
relaciones de interés y el hecho de que todas compartan un
mismo interés, el grafo completo, es decir, el clique en si.
Clique es NP-completo.
Ejemplo de un 3-clique
Recubrimiento de Vértices

Definición 6.13 Un recubrimiento de vértices (vertex cover) de


tamaño k de un grafo no dirigido G = (V,E) es un subconjunto de
k nodos de V tal que para toda arista (u, v) ∈ E, al menos uno
entre u y v están en el subconjunto elegido.
El lenguaje vc se define como los pares (G, k) tal que G tiene un
recubrimiento de vértices de tamaño k.
vc es NP-completo.
Corresponde a problemas de optimización.
Recubrimiento de Conjuntos

Definición 6.14. Dados conjuntos S1, S2, . . . , Sn, un


recubrimiento de conjuntos (set cover) de tamaño k es un grupo
de k conjuntos Si1 , Si2 , . . . , Sik , tal que U1≤j≤k Sij = U1≤i≤n Si.
El lenguaje sc es el de los pares (S = {S1, S2, . . . , Sn}, k) tal que
S tiene un recubrimiento de conjuntos de tamaño k.
sc es NP completo
Ejemplo:
Sea U = {1, 2, 3, 4, 5} y los conjuntos S = {{1, 2, 3}, {2, 4}, {3,
4}, {4, 5}}. Entonces, {{1, 2, 3}, {4, 5}} es un recubrimiento de
tamaño 2.
Concepto utilizado en algoritmos de aproximación y
optimización.
Una estación de bomberos puede cubrir las emergencias de su
comuna y de las adyacentes a ella: una estación en la comuna
1 cubrirá las emergencias de las comunas 1, 2, 3 y 5. Se
construirán estaciones de bomberos para cubrir todas las
comunas, de manera que todas las comunas estén cubiertas por
al menos una estación.
Circuito Hamiltoniano

Definición 6.15. Un circuito hamiltoniano (Hamiltonian Circuit) en


un grafo dirigido G = (V, E) es aquel que parte de uno de sus
nodos y, moviéndose por aristas, va tocando cada nodo de V
exactamente una vez, hasta volver al nodo original.
hc es el lenguaje de los grafos dirigidos G que tienen un circuito
hamiltoniano.
hc es NP-completo
Ejemplos:
El problema del vendedor viajero puede plantearse en
términos que cada ciudad sea visitada una sola vez.
El paseo del caballo conlleva el análisis de circuitos
hamiltonianos.
k-coloración de un grafo

Definición 6.16. Una k-coloración de un grafo no dirigido


G = (V,E) es una función c : V → [1, k], tal que si (u, v) ∈ E ,
entonces c(u) ≠ c(v).
El lenguaje COLOR es el conjunto de los pares (G, k) tal que G
tiene una k-coloración.
COLOR es NP-completo
Ejemplo
El Sudoku puede resolverse aplicando el concepto de
coloración.
Recubrimiento Exacto

Definición 6.17. Dados conjuntos S1, S2, . . . , Sn, un


recubrimiento exacto (exact cover) es un grupo de conjuntos Si1,
Si2, . . . , Sik, tal que U1≤j≤k Sij = U1≤i≤n Si y Sij ∩ Sij′ = ∅ para todo
j ≠ j′.
El lenguaje ec es el de los conjuntos S = {S1, S2, . . . , Sn} tal
que S tiene un recubrimiento exacto.
ec es NP-completo.
Ejemplo
Sea S = {N, O, P, E} una colección de subconjuntos de
X = {1, 2, 3, 4} donde N = { }, O = {1, 3}, P = {2, 3} y
E = {2, 4}.
El subgrupo {O, E} es un recubrimiento exacto de X, puesto
que O ∩ E = ∅ y O U E = X.
Aplicaciones:
Pentominó, Sudoku, Las N Reinas
Problema de la Mochila

Definición 6.18. El problema de la mochila (knapsack) es el de,


dado un multiconjunto(*) finito de números naturales y un natural
K, determinar si es posible elegir un subconjunto de esos
números que sume exactamente K.
El lenguaje knapsack es el de los pares (S,K) tal que un
subconjunto de S suma K.
Knapsack es NP-completo.
Aplicaciones:
Criptografía.
Optimización de la atención en un casino.

(*)Multiconjunto: difiere de un conjunto en que cada miembro del mismo tiene asociada
una multiplicidad (un número natural), indicando cuántas veces el elemento es miembro
del conjunto.
21 problemas NPcompletos de Karp

El informático teórico Richard Karp publica en 1972 "Reducibility


Among Combinatorial Problems" (Reductibilidad entre
Problemas Combinatorios).
Son 21 problemas computacionales famosos, acerca de
combinatoria y teoría de grafos y que tienen en común que todos
ellos pertenecen a la clase de complejidad de los NP-completos.
Inicia el estudio de la NP-completitud y de la indagación en la
famosa pregunta, de si P = NP.
SAT (Problema de satisfacibilidad booleana, para fórmulas en
forma normal conjuntiva)
01-INTEGER PROGRAMMING (Problema de la
programación lineal entera)
CLIQUE (Problema del clique, véase también Problema del
conjunto independiente)
SET PACKING (Problema del empaquetamiento de
conjuntos)
VERTEX COVER (Problema de la cobertura de vértices)
– SET COVERING (Problema del conjunto de cobertura)
– FEEDBACK NODE SET
– FEEDBACK ARC SET
– DIRECTED HAMILTONIAN CIRCUIT (Problema del
circuito hamiltoniano dirigido)
● UNDIRECTED HAMILTONIAN CIRCUIT (Problema

del circuito hamiltoniano no dirigido)


3SAT (Problema de satisfacibilidad booleana de 3
variables por cláusula)
CHROMATIC NUMBER (Problema de la coloración de
grafos)
– CLIQUE COVER (Problema de la cobertura de
cliques)
– EXACT COVER (Problema de la cobertura exacta)
● HITTING SET

● STEINER TREE

● 3DIMENSIONAL MATCHING (Problema del


matching tridimensional)
● KNAPSACK (Problema de la mochila)

● JOB SEQUENCING (Problema de las


secuencias de trabajo)
● PARTITION (Problema de la partición)

● MAXCUT (Problema del corte máximo)

Você também pode gostar