Está en la página 1de 64

Stephem Cook demostró que el problema SAT el problema de

satisfatibilidad era un problema al cual se podían reducir


todos los problemas NP

Un problema se conoce como NP cuando se pueden verificar


polinomialmente ¿ que significa que se pueda verificar
polinomialmente? Cuando se tiene la solución a un problema
se pueda verificar que el costo de esa solución es polinomial y
si el costo de la solución es polinomial el problema es FLP.

Los NP completo son una subclase un subconjunto que esta


dentro de los problemas NP que ademas de poderse verificar
polinomialmente son los problemas mas difíciles dentro de
esa categoría ¿ como podemos saber que son los mas
difíciles? Porque todos los demás problemas NP se pueden
reducir a ellos.
Hace 51 años se propuso o se demostró también que
cualquier problema NP se podía reducir a un problema en
concreto se podían reducir al problema SAT.

Cualquier problema NP se podía transformar en una instancia


del problema SAT si llegamos a solucionar esa instancia del
problema SAT estaríamos solucionando el problema original
que teníamos cuando se propuso eso se identifico que
entonces en la medida en que SAT fuera fácilmente resuelto
pues cualquier problema que hace parte del conjunto NP
también lo seria porque entonces SAT el algoritmo que
soluciona SAT se volvería en un puente en una herramienta
para poder solucionar cualquier otro problema NP.

El problema con los problemas NP ¿ cual es?


Lo que sabemos es que los problemas NP se verifican
polinomialmente pero NO sabemos que encontrar dicha
solución también lo es.
Lo que se propuso en ese año fue tener a SAT como un
problema central dentro de lo que es el estudio de la
complejidad.

Si uno encuentra herramientas que resuelven el problema


SAT se supone que siempre esas herramientas servirían para
poder resolver muchos problemas utilizando a SAT como un
problema intermedio

¿ esto para que nos sirve?

Nos sirve mucho porque en este curso partiendo de ese


problema SAT (problema de satisfactibilidad) lo que vamos
hacer es también identificar otros problemas que son del
mismo grado de complejidad y esos problemas se conocen
como problemas NP completos (NPC).

La idea es ver un conjunto de problemas que entran en la


categoría NPC (NP completos).

NP Completos

Problemas que se pueden verificar polinomialmente pero que


adicionalmente cumplen con una característica muy
interesante y es que todos los problemas NP son reducibles a
ellos en tiempo polinomial.

Eso ¿ que significa?

Que si se encontrara una solución eficiente para el problema


SAT o para el problema 3SAT o para eñ problema vertex
cover
Esa solución eficiente serviría como puente para encontrar
soluciones eficientes a muchos mas problemas.

En un conjunto V de n variables booleanas que vamos a referirnos a


ellas como v1, v2, v3, v4, .., vn

y un conjunto C compuesto de n clausulas desde c1 hasta cn donde


eso esta en forma normal conjuntiva.

Por ejemplo.

Tenemos una declaración y esta declaración esta en forma normal


conjuntiva.
¿ que es forma normal conjuntiva?

Una conjunción de clausulas

Las clausulas son una disyunción de literales.

¿ que significa literales?

Los literales son las variables proposicionales como X o la negación


de una variable proposicional -X.

Los literales son una variable proposicional o su negación.

Las clausulas son las disyunciones de los literales.

En este caso tenemos cinco clausulas la ultima clausula es un caso


trivial de clausula es una clausula pequeña.

Tenemos cinco clausulas que están conectadas por medio de


conjunciones.
¿ por que me dice que es forma normal conjuntiva?

Porque la forma en que esta organizada esa declaración es esa.

Es una conjunción de disyunciones.

NO es una disyunción de conjunciones sino que siempre va a cumplir


con esta estructura.

El problema SAT (problema de satisfactibilidad)


¿ en que consiste?

Consiste en recibir una declaración como esta.

Y determinar si dicha declaración es satisfactible o no lo es


esta declaración ¿ es satisfactible o no lo es?

Tenemos que darle valores a cada una de las variables que participan

¿ cuanto valdría X true o false?

X = true

Y = true

Z= true

W = false
si tenemos esta asignación de valores de verdad verifiquemos que
pasa con cada clausula.

Cada una de ellas debería ser verdadero

Primera clausula.

Bastaría con que un literal que participe sea verdadero.


Porque es una disyunción
¿ alguno de ellos es verdadero?

La segunda clausula ¿que seria?

La tercera clausula

En la tercera clausula tenemos problemas porque es false.


¿ que significa esto?

Que como una de las clausulas es falsa y las clausulas están


conectadas por medio de una conjunción

por lo tanto necesitamos que todas las clausulas sean verdaderas.


Como es un and o una conjunción significa que esta asignación

NO hace verdadera la clausula por lo tanto esa asignación NO nos da


respuesta a que el problema sea satisfactible.

Si la declaración es satisfactible significa que debe existir otra


asignación de valores que haga que la instancia proposicional sea
verdadera.

Entonces modificamos la asignación.

X = false
Y = true
Z = true
W = false
Hemos encontrado una interpretación de esa declaración que es true.
Hemos encontrado una asignación que la satisface.

Eso ¿que quiere decir?

Que si tuviéramos un algoritmo que soluciones el problema SAT

¿ que recibe como entrada?

Debería haber recibido como entrada C,

C seria la instancia de entrada del algoritmo

¿ cual hubiera sido la respuesta que daría el algoritmo SAT?

Da true aunque depende de lo que sea el problema SAT


si el problema SAT lo definimos como un problema de desicion.

De true o false.
La respuesta hubiera sido un true si lo definimos como un problema
de desicion.

Eso quiere decir que la entrada fue satisfactible silo definimos como
un problema NO booleano sino como un problema mas general
NO solamente daría true sino que pudo haber dicho

Esta es la asignación de valores de verdad que la hacen verdadera.

Estos problemas siempre los vamos a delimitar para que sean


problemas booleanos de true o false.

Que estos problemas para nosotros siempre van a recibir una entrada
y siempre la respuesta va a ser un true o un false con el fin de
simplificar el tratado de estos problemas.

Para esta segunda instancia es ¿true o false?.

NO existe una asignación de valores que satisfaga esta clausula.

Porque esta clausula nos dice que X tiene que ser false para que con
el complemento sea true.

Pero al hacer que X sea false la segunda clausula tambien es false.


NO hay una asignación de valores que satisfaga la clausula.

La respuesta para esta segunda instancia es false.

Esto es lo que debe hacer un algoritmo que solucione este problema.

El algoritmo va a dar como respuesta un true o false dependiendo de


la entrada.

Las entradas del algoritmo son declaraciones son formulas


proposicionales

dependiendo de la formula proposicional la respuesta puede ser un


true o un false.

Dependiendo si la formula es satisfactible o no lo es.

Muchas personas están trabajando encontrar solución al problema


SAT.

Lo están haciendo porque muchos n problemas están relacionados


con el problema SAT

en la medida en que hayan soluciones rápidas, eficientes para SAT


esas soluciones van a poder ser adaptadas y utilizadas para resolver
otros problemas.

Hay muchas técnicas que permiten reducir muchos problemas al SAT.


El resultado de un algoritmo que solucione este problema va a
depender de la entrada va a depender de la formula proposicional
que tengamos.

¿ por que SAT e un problema NP?

SAT es un problema NP porque si a nosotros nos dieran una


declaración era satisfactible y adicionalmente nos pasaban una
asignación de valores de verdad.

Podemos darnos cuenta si esa asignación de valores de verdad


corresponde a una solución del problema o no.

¿ que pasaría si a nosotros no nos daban solamente la declaración si


no que también nos dan un candidato a ser la solución del problema
(certificado) ?

Certificado es la prueba de que realmente el problema de desicion


tendría un true como respuesta.

¿ El certificado en este caso que seria?


Seria una asignación de valores de verdad

por ejemplo

esto seria un posible certificado

Cuanto nos tardaríamos en verificar con esa asignación de valores de


verdad esta declaración da true o false
¿ que tan complicado seria eso?
Si ya nos dan la asignación de valores de verdad que tan complicado
seria determinar si esa asignación hace que esa declaración sea true
o false ¿ que tan costoso seria hacer eso?
Tendría un costo polinomial.

¿ por que tiene un costo polinomial?

Verificar que una asignación de valores de verdad hace que esta


declaración sea true o false
por que ¿ que tenemos que hacer nosotros?

Tenemos que tomar cada una de las clausulas


Tenemos que sustituir en el lugar de cada uno de los literales el valor
que le corresponde según la asignación de valores de verdad.

Hacer ese proceso de sustitución ¿ que costo va a tener?

Va a tener un costo que va a depender ¿de que ?

De que tan grande sea la formula porque a mayor tamaño hay que
hacer mayor sustitución.

El tamaño esta acotado por el tamaño de la formula por lo tanto seria


la suma de los tamaños de las clausulas porque eso es lo que
tenemos que hacer.

Tenemos que verificar que ocurre con esto.

Tendría un costo que depende de la suma de los tamaños de las


clausulas y como las clausulas y su tamaño es un dato de entrada
osea que si depende de ese tamaño el costo seria polinomial.

Como el costo es polinomial ¿ que significa? Que si una asignación


de valores de verdad lleva a que una declaración sea satisfactible nos
cuesta mini polinomial por ende el problema se torna NP.

Si NO existiera forma de verificarlo polinomialmente ya NO seria NP


estaría fuera de la categoría de los problemas NP
Los problemas indecidibles son problemas que NO tiene solución
algorítmica ni siquiera en un costo exponencial.

Seria un problema que esta fuera de la categoría NP.

¿ por que el problema SAT es NP?

Porque si nos dan una posible solución verificarla seria polinomial.

¿ que es un certificado?

Es la evidencia de que el problema realmente se puede solucionar


¿ que hubiera pasaría si la delcaracion de entrada fuera
insatisfactible?

Que por mas que ensayemos con cualquier posible certificado


ninguno nos va a servir porque con cualquier asignación de valores
de verdad nos hubiera dado false.

Pero para habernos dado cuenta de que el resultado daba false


hubiera sido polinomial.

Por o tanto se concluye que SAT es NP


lo primero es entender que el problema es NP

para que un problema sea NP completo el problema ademas de ser


NP debe ser NP hard (NP duro)

¿ que significa eso?

Que dada una maquina de turing NO determinista cualquiera es


posible que se pueda resolver un problema NP completo y una
entrada se pueda producir una formula en FNC de SAT
tal que si la maquina acepta la entrada la formula es satisfactible y si
la maquina NO acepta la entrada la formula NO es satisfactible.
¿ que quiere decir esto?

Que tenemos un problema NP completo lo podemos reducir al


problema SAT y si el problema SAT nos dice que es satisfactible
significa que el problema inicial NP completo hubiera sido true

Y si la formula NO es satisfactible significa que la solución al


problema inicial NP completo hubiera sido false.

El numero de variables que se necesitan para poder codificar una


maquina en una formula es polinomial con respecto al tamaño de la
maquina.
Finalmente el numero de clausulas de la formula es polinomial en el
tamaño de la maquina esto lo que quiere decir es que si hacemos
esa transformación en un problema al problema SAT esa
transformación va a ser polinomial pero eso NO lo vamos a demostrar
en este curso.

¿ que vamos a hacer en este curso?


Lo que vamos a hacer es tomar otros problemas y vamos a ver como
se puede reducir el problema SAT a esos otros problemas de tal
manera que esos otros problemas nos demos cuenta que si son NP
completo.

Para hacer eso vamos a tener en cuenta

que si B es un problema tal que A se reduzca polinomialmente a B

Esto significa que el problema A se puede reducir polinomialmente al


problema B
si B es un problema tal que A se pueda reducir polinomialmente a E
donde A es un problema NP completo quiere decir entonces que B es
un problema almenos tan dificil como el problema A y como el
problema A es NP completo significara que el problema B al menos
va a ser NP completo.

Pero si sabemos que se puede verificar en NP sabemos que es


exactamente NP completo.

Si tenemos un problema B resulta que hay un problemas NP


completo que se reduce a El significa que se problema B que sea al
menos tan difícil como el problema que se redujo a El.

si el problema que se redujo a El fue NP completo significa que se


problema B tiene que ser al menos tan difícil como NP completo pero
si ese problema B adicionalmente se puede verificar en tiempo
polinomial significa que es exactamente de esa categoría

Conclusión

un problema ¿ cuando es NP completo?

1) Cuando es NP cuando se puede verificar en tiempo polinomial

2) si tomamos un problema NP completo cualquiera y lo logramos


reducir polinomialmente a El se vuelve NP hard y al ser NP hard + NP
se vuelve un problema NP completo.

Ser NP completo es ser NP y NP hard

para ser NP basta con verificarlo en tiempo polinomial y para ser NP


duro basta con reducir un problema NP completo a El
un problema es NP completo si cumple con ser NP y ser NP duro.

¿ como nos damos cuenta si un problema es NP?

Porque verificar la solución para ese problema lo podemos hacer en


tiempo polinomial

¿ como nos damos cuenta que es NP hard?

Porque existe alguna reducción polinomial a dicho problema


y el de un problema que ya sepamos que es NP

y como ya sabemos que es NP y NP completo se torna en NP


completo.

1) probar que el problema es NP.

2) Probamos que es NP hard

Para probar que es NP hard hay que tener en cuenta


que tenemos que seleccionar un problema NP completo conocido.
La destreza para demostrar que un problema es NP completo se va
ganando haciendo ejercicios.

Una vez hemos seleccionado el problema que se puede reducir al de


uno hay que pensar en un algoritmo que haga esa transformación
que transforme las instancias del algoritmo original en el problema
que tenemos actualmente

Una vez se ha propuesto ese algoritmo hay que asegurarse que ese
algoritmo que estamos proponiendo sea polinomial y que sea
correcto.

¿ por que un problema muy similar al problema SAT también es NP


completo?

Problema 3SAT.

La restricción de este problema es que para una de esas clausulas va


a tener exactamente tres literales cada clausula va a ser de tamaño
tres literales por eso se llama 3SAT si fuera por ejemplo 4SAT
entonces cada clausula tendría cuatro literales.
Esta formula es una formula 3SAT porque tenemos cuatro clausulas y
cada una de ellas tiene tres literales.

Esta formula es satisfactible entonces si tuviéramos un algoritmo que


solucione el problema 3SAT ¿ que esperaríamos?

Este es el problema 3SAT ¿ que diferencia hay con el SAT? El


tamaño de la entrada,

el problema 3SAT es mas restringido.

Como el problema es mas restringido si tuviéramos una herramienta


que solucione el problema SAT en general nos serviría mucho para
resolver el problema SAT porque si podemos tener formulas de
cualquier tamaño pues si le ponemos tamaño tres esta bien

El problema es hacerlo al contrario pensar que si tengo una clausula


que puede tener muchos tamaños.

Podamos reducirla a una forma que solamente permite clausulas de


tamaño tres.

El problema SAT tiene que ser al menos tan complicado como el


problema 3SAT

Lo que no esta claro es que el problema SAT sea exactamente igual


de complicado.
Si tuviéramos una herramienta que solucione el problema 3SAT ¿ la
hubieran podido utilizar para resolver la formula?

Tenemos un algoritmo que soluciona el problema 3SAT pudimos


haber usado ese algoritmo para haber resuelto este problema SAT?

La declaración de arriba ¿ se ajusta a la forma 3SAT?

NO se ajusta ¿ que problemas tenemos? La primera clausula tiene


tamaño cuatro.
Las segunda clausula tiene tamaño dos, la tercera tiene tamaño tres,
la cuarta tiene tamaño dos, la ultima tiene tamaño uno.

Entonces si tuviéramos una herramienta que soluciona el problema


3SAT NO podemos pesarle esta declaración

¿ existe alguna forma de tomar C transformarlo de tal manera que si


sea una entrada equivalente para que pueda ser admitida por un
algoritmo que resuelva el problema 3SAT?

Si la respuesta es true
Convertir 3SAT a SAT.

¿ por que 3SAT es NP?

¿que significa certificado de una solución?

El certificado de solución en este caso es una asignación de valores


es posible verificarla en tiempo polinomial

eso es cierto porque si tuviéramos una instancia positiva de 3SAT


¿ que significa una instancia positiva de 3SAT? Significa una
declaración satisfactible

La instancia positiva significa una entrada del problema para la cual el


algoritmo daría la respuesta true
una instancia negativa ¿ que significa?

Significa una instancia una entrada del problema para la cual el


algoritmo que soluciona el problema de como respuesta false.

Si tuviéramos una instancia positiva de 3SAT y un certificado


(asignación de valores de verdad) en tiempo polinomial puede
determinar que esa asignación efectivamente hace verdadera a esa
formula simplemente hay que sustituir la clausula y verificar el valor
de las clausulas

¿ cuanto nos costaría eso?

Nos costaría costo lineal respecto al numero de clausulas.


3*|C| por que lo que vamos a hacer es encontrar el numero de
clausulas.

¿ cual es el tamaño de cada clausula?

El tamaño de cada clausula seria X porque es un factor constante


por lo tanto realmente el costo computacional va a ser 3 * |C|
(numero de clausulas) significa que va a crecer linealmente con
respecto al numero de clausulas
una instancia negativa significa que es una formula insatisfactible.

Si tenemos una formula insatisfactible ningún certificado nos va a


servir el proceso de darnos cuenta que ninguno NO va a servir va a
ser el mismo vamos a tener que reemplazar cada literal por el
certificado (asignación de valores).

Ya sabemos que 3SAT es NP ¿ que nos falta? Nos falta demostrar


que 3SAT es NP hard para demostrar que 3SAT es NP hard

¿ que tenemos que hacer?


Tenemos que reducir un problema que ya sepamos que es NP
completo al problema 3SAT donde esa reducción tiene que ser
correcta y tiene que ser polinomial tenemos que demostrar esto.

En la medida en que esto sea cierto significa que 3SAT es al menos


tan difícil como SAT por lo tanto 3SAT se va a tornar como NP
completo.

Demostrar que 3SAT es NO hard.

Cuales serian las transformaciones que hay que hacer a una


declaración cualquiera para convertirla en una que sea lógicamente
equivalente y que sea la misma 3SAT.
Vamos a demostrar que 3SAT es NP hard.

Transformar cada clausula de una instancia de SAT en un conjunto de


clausulas de 3SAT lógicamente equivalentes

Tenemos una declaración C y esa declaración C tiene cuatro


clausulas.

C es una instancia del problema SAT.

Los tamaños de estas clausulas pueden ser cualquiera.


La transformación que vamos a ver ¿ der que trata?

Trata de que vamos a transformar cada una de estas clausulas.

Haremos una transformación sobre C1,C2,C3 y C4.

Y una vez las transformemos cada una de ellas nos va a dar un


conjunto de clausulas.
Por lo tanto la clausula 1 se puede terminar convirtiendo en dos tres o
cuatro clausulas.

La C1 ahora se convirtió en C11 la clausula C12 la clausula C13.

Pude haber el caso de que una clausula se transforme solamente en


una clausula.

Cada clausula se puede terminar convirtiendo en un conjunto de


clausulas.

Pero ese conjunto de clausulas se van a seguir conectando ¿ por


medio de que? De conjunciones.
Y esto va a dar resultado a la clausula CI

donde cada clausula Cij va a tener tamaño tres.


Mientras que la cardinalidad de Ci en la parte superior puede ser
cualquiera.

Las clausulas unidas por medio de una conjunción nos va a dar como
resultado la nueva formula proposicional y esa nueva formula
proposicional ¿ debe ser que? Equivalente a la clausula original.
¿ como explicamos eso?

¿ que significa que C sea lógicamente equivalente a CI?

Quiere decir que si había una asignación de valores de verdad que


hacia verdadera a C debería ser verdadera para CI

y si hay una instancia que haga false a C también hace false a CI y


viceversa ¿ eso que significa?

Que si C es satisfactible quiere decir que por lo menos hay una


asignación de valores de verdad que hace satisfactible a C por lo
tanto también hay asignación de valores de verdad que hace
satisfactible a CI y viceversa.

Si NO hubiera una asignación de valores de verdad que haga


satisfactible a C tampoco va a haber ninguna que haga satisfactible a
CI

Entonces el problema de demostrar que C es satisfactible se


transforma ¿ en que? En demostrar si CI es satisfactible.

Si tuviéramos una herramienta que me soluciona 3SAT y sabemos


como transformar el problema SAT a 3SAT se aplica la
transformación a SAT para que se convierta en SAT y luego le
pasamos esa instancia al algoritmo que soluciona 3SAT.
¿ como hacemos estas transformaciones?

Empezamos manejando diferentes pasos

¿ de que van a depender los pasos que va,os a manejar? Van a


depender del tamaño porque NO es lo mismo tener una clausula de
tamaño uno que tener una de tamaño dos y si tuviéramos una
clausula de tamaño tres estaríamos hechos porque la clausula e
tamaño tres NO hay que modificarla.

Veremos caso por caso según el tamaño


caso 1): tamaño uno.

Caso 2): tamaño dos

caso 3): tamaño tres

caso 4 ): tamaño cuatro o mas que se puede generar.

¿ que pasa cuando tenemos una clausula de tamaño uno?

Si tenemos una clausula de tamaño uno significa que solamente


tenemos un literal en esa clausula por ejemplo

si tenemos que K = 1 significa que la clausula original solamente tiene


un literal Ci = z1 a ese literal lo llamamos z1 entonces la estrategia va
a ser la siguiente.

Vamos a generar a partir de esta clausula Ci = z1 estas cuatro


clausulas unidos por medio de conjunción

son equivalentes a la clausula original las clausulas originales son las


que hacen parte del problema SAT en el cual las clausulas pueden
ser de tamaño totalmente diferentes incluyendo clausulas de tamaño
uno hasta cualquier valor.
Caso en que k = 1.

Por ejemplo tenemos la C es clausula.

C1 = Y.

Esta C1 se va a poder transformar en C1I

La C1I va a tener cuatro clausulas.

Esas cuatro clausulas ¿ cuales van a ser?

Como nos damos cuenta que C1 es lógicamente equivalente a C1I


tenemos que ensayar con todos los valores de verdad posible.

En el caso de C1 ¿ cuantas variables tenemos?

Por lo tanto basta con hacer una tabla de valores de verdad donde le
damos valores a Y.
Pero Y ¿ que valores pueden tomar? Pueden tomar valor true o false.

¿ que pasa si Y es true?

Si Y es true C1 es satisfactible pero ¿ que debería pasar con C1I ?

¿ que valores da C1I cuando Y es true?

¿ C1I es true?

Es true ¿ por que ?

Porque como Y esta en cada clausula hace que todo sea true
¿ que pasa si Y es false?

C1 es false ¿pero que pasa con C1I?.

C1I es false cuando V1 Y V2 sean false.

Cuando Y es false ¿ por que C1I es false?

Sabemos que Y es false en cada clausula como Y es false en cada


clausula

el hecho de que C1I sea true¿ de que va a depender? Va a depender


de lo que valga V1 y valga V2 como depende de V1 y V2 depende de
que NO importa que asignación le demos a V1 o a V2 siempre va a
ver una de estas cuatro clausulas que sea false.
Por ejemplo tenemos que V1 y V2 son true ¿ cual clausula de estas
cuatro se tornaría false? La ultima clausula se tornaría false.

La ultima clausula se tornaría false.

Y si V1 y V2 son false ¿ cual de estas clausulas se tornaría false?

La primera clausula se tornaría false.

Y si V1 es true y V2 es false

La tercera clausula es false.

Por lo tanto para los cuatro posibles valores que pueda tener V1 y V2
si Y es false ninguno de esos cuatro valores va a servir para que C1I
sea true.
Por lo tanto si Y es false la formula que nos queda es una formula
insatisfactible y como es una formula insatisfactible quiere decir que
todas las formulas van a dar false para todas las asignaciones.

Para estar mas seguro se puede crear la tabla de valores de verdad


no solamente considerando a Y sino considerando ¿ a quien?
A V1 y a V2.

¿ que podemos hacer?

Podemos generar todos los valores de verdad que tendría V1 y V2


cuando Y es false y podemos darnos cuenta de que en esos cuatro
casos ¿ que pasa? C1I ¿ nos va a dar cuanto? C1I va a dar false.
Primera fila es la ultima clausula

ultima fila es la primera clausula

segunda fila es la tercera clausula

tercera fila es la segunda clausula

con esta tabla de valores de verdad queda mas claro que cuando Y
es false siempre C1I es false por eso pusimos false en esta tabla.
Caso en que k = 2.

si k = 2 significa que la clausula puede tener la forma z1 o z2.


Donde z1 y z2 son dos literales.

En ese caso la transformación de C1I va a ser generando dos


clausulas de esta forma.

Donde vamos a tener z1 y z2 en ambas clausulas y el tercer termino


que forma parte de esas clausulas es una variable adicional y su
complemento.

¿ que pasa en este caso?

Si hacemos esa transformación reservamos la equivalencia


por ejemplo tenemos esta formula proposicional.

¿ como nos quedaría la transformación?

V1 es la variable artificial.

Demostrar que C1 es equivalente a C1I

de esta forma estamos asegurando que la transformación que


estamos haciendo es correcta.

¿ que valores de verdad tendríamos?.

Tendremos ocho posibilidades.


Para esos ocho casos ¿ que va a pasar?

Cuando Y es true C1 es true.

Cuando Y es true ¿C1I es true?

Es true porque Y esta en ambas clausulas y al haber una disyunción


en ambas clausulas es verdadero haciendo que las clausulas unidas
por una conjunción den true.
¿ que pasa con Z?

Cuando Z es true depende porque depende el valor de Y.

Cuando Y es false X es false si X es false ¿ que pasa?

Cuando Y es false y Z es false en el caso de la primera fila es true


porque la negación de Z lo vuelve true

C1 seria true en la primera fila.


Cuando Y es false Z es false si Y es false significa que el Y NO va a
ayudar a ninguna de las clausulas entonces Z va a entrar al rescate

cada caso de cada fila se ensaya en la formula proposicional de C y


de C1I

Los valores de verdad de C1 son los mismos valores de C1I


son equivalentes porque si C1 es true C1I también va a ser true
porque las clausulas de C1I contienen a la clausula original.

Por concepto de que C1 es true C1I cambien es true.

Pero si C1 es false ¿ que quiere decir?

Que el valor de verdad de las clausulas que hemos creado va a


depender ¿de quien ? Exclusivamente de la variable artificial pero
como la variable artificial NO se encuentra en C1 NO importa los
valores que le demos a esa variable artificial siempre una de esas dos
clausulas va a ser false y por ende la formula va a ser false
En el caso de tres clausulas.

En el caso 3 la clausula ya se encuentra en 3SAT y la dejamos como


esta.

¿ que pasa si tenemos una clausula de tamaño mayor a 3?

creamos k-3 variables artificiales que son de v1 hasta vk-3 vamos a


agregar K – 2 clausulas.

Haciendo un encadenamiento de la siguiente forma.


Ejemplo

V es el símbolo para representar esas variable artificiales.

¿ que nos propone esta transformación?

Usamos X y Y que son de C1 y lo unimos con la variable artificial


¿ con quien vamos a crear encadenamiento?

Hacemos encadenamiento con V1 pero negado donde vamos a poner


los otros dos literales que teníamos en la clausula original.

Tenemos una clausula de tamaño cuatro.

Y pasamos a crear dos clausulas k-2 hemos cumplido con este


requisito.

El encadenamiento garantiza que C1 sea lógicamente equivalente a


C1I
en la medida que la clausula original sea falsa las clausulas que
vamos a ir generando van a depender exclusivamente ¿ de quien?
De esa variable artificial y como la variable artificial lleva un
encadenamiento a partir de su complemento va a ser que de una vez
se tiene false.

Si C1 es true significa que por ser C1 true al menos una de estas dos
clausulas es true.

Porque si C1 es true es porque al menos uno de estos literales es


true.

Si alguno de estos literales es true debe estar en una de las dos


clausulas en la clausula uno o en la clausula dos y esa clausula tiene
que ser true.

Por ejemplo X es true y Y , Z, W son false ¿ que hubiera pasado?


C1 hubiera sido true la primera clausula de C1I también hubiera sido
true porque X es true.

La segunda clausula ¿ hubiera sido true?

Si depende de Z y de W porque Z y W son false pero como hay una


variable artificial que es V1 si le asignamos a V1 false ¿ que pasa?
Esta clausula va a ser true.

Cuando tenemos una clausula de tamaño cuatro si la clausula es


verdadera uno de los literales tiene que ser true.

Por lo tanto una de las dos clausulas que se van a generar tiene que
ser true.

La otra clausula va a ser true gracias al valor de verdad que voy a


ajustarle a la variable artificial.

La variable artificial se encarga de hacer ese ajuste que pasa si los


cuatro literales originales son false.

Si X,Y,Z,W hubieran sido false.


Esta clausula la única forma de que sea true ¿ hubiera dependido de
quien? De V1

esta clausula la única forma de que sea true ¿ hubiera dependido de


quien? Del complemento de V1.

Como depende exclusivamente de una variable artificial que esta


encadenada y por ende se complementa significa que las dos
clausulas NO van a poder true necesariamente y por ende la
conjunción es false.

En el caso de cinco clausulas.


¿ por que la terna inicial y la terna final tiene dos literales y finales
cada una? Porque son las que empiezan y las que cierran y todas las
demás clausulas que vamos a generar van a ser ternas que van a
tener que tener el suplemento del medio un literal de las clausulas
originales y los dos extremos van a ser valores artificiales que se van
a encadenar con las otras ternas

¿ por que C1 es lógicamente equivalente a C1I ?

¿ como podemos argumentarlo?

Por ejemplo si C1 es true ¿ que significa?

Que alguno de estos literales tiene que ser true.

Por ejemplo tenemos que Z1 es true y todos los demás son false
si Z1 es true ¿ que quiere decir?

Que la primera clausula de C1I va a ser true.

Y las otras dos clausulas para que sean true gracias a las variables
artificiales

¿ que valores de verdad le tendría que asignar a V1 y a V2 para que


estas dos clausulas sean true?.
V1 tendría que ser true y V2 tendría que ser false para que la clausula
1 y la clausula 3 sean verdaderas

cuando C1 es true al menos un literal es true y por ende una de las


clausulas que vamos a generar va a ser true gracias a ese valor
y las demás clausulas que aparezcan en la formula 3SAT lo van a ser
¿ gracias a quien? A las variables artificiales que hemos creado
donde siempre existe una forme de encontrar una solución.

Que pasa si C1 es false si C1 es false quiere decir NO hay asignación


de valores de verdad que satisfaga C1 lo cual quiere decir que todos
estos literales deben ser false.

Y si todos esos literales son false quiere decir que el valor de verdad
de C1I para que sea diferente de false tendría que depender ¿ de
quien? De las variables artificiales pero ¿ que pasa con las variables
artificiales? Que tenemos V1 y complemento de V1

por lo tanto si V1 es true para volver esta clausula true.


La segunda serias false

entonces ¿ de que dependería?

De la otra variable artificial que es V2 el problema es que si hacemos


V2 true ¿ que va a pasar? Inmediatamente la tercera clausula seria
false porque ¿ que va a pasar con la tercera clausula?
Que complemento de V2 seria false.

Cuando la clausula original sea false todos los literales son false
entonces va a existir por lo menos una clausula en la formula
transformada que sea false porque las variables artificiales pues la
forma en que sean concatenadas lleva a que se produzca una
contradicción.
Esto es un ejemplo de lo que pasa cuando hay una instancia positiva

si Z1 es true en C1 (la clausula original ) z1 haría true a la primera


clausula y las demás clausulas ¿ dependerían de quien?
De los valores artificiales

si tuviéramos una instancia positiva pero que NO depende de z1 sino


que hubiera dependido zi + 2 entonces la demás clausulas pueden
terminar dependiendo si lo necesitan de las variables artificiales
Instancias negativas

si tuviéramos una instancia negativa la instancia negativa es que


todos los literales son negativo y como son negativos dependemos
exclusivamente ¿ de quien? De las variables artificiales y si
dependemos de las variables artificiales por encadenamiento va a
existir por lo menos una clausula que se torne false el
encadenamiento causa que al menos una clausula NO pueda
depender de las variables artificiales.
la complejidad depende de que tantas clausulas tengamos y que
tantos literales tengamos la complejidad en este caso va a depender
de que tan grandes pueden ser esas clausulas por ejemplo si
tenemos una clausula que es de tamaño 40 el algoritmo va a tardar
mas si la clausula hubiera sido de tamaño 10.

si tenemos una clausula de tamaño 40 vamos a terminar creando 38


clausulas para reemplazar esa clausula de tamaño 40.

La complejidad termina dependiendo del numero de literales que


tengamos en la clausula original y termina dependiendo de la
cantidad de clausulas que tengamos originalmente

si tenemos m clausula originales y el tamaño máximo que tiene una


de esas clausulas es K por lo tanto podemos asumir que en el peor
de los casos todas las clausulas son de ese peor tamaño del tamaño
mas grande donde el tamaño de la instancia seria de orden O(mk)

porque si las clausulas son m y lka clausula mas grande es de


tamaño k

El costo es polinomial porque depende directamente de las entradas.


Por ejemplo que la complejidad NO nos hubiera dado mk sino por
ejemplo 2k

O omega y theta O es una cota superior para decir que un algoritmo


es exponencial mas que decir que es O(2K) mas bien decimos que es
omega de un orden exponencial

3SAT es NP completo porque verificar que un problema es


satisfactible con base a una asignación de valores de verdad es
sencillo y porque nos hemos dado cuenta de que podemos
transformar cualquier clausula, cualquier formula independientemente
del tamaño de las clausulas la podemos transformar a una formula
3SAT.

Cualquier formula proposicional se puede transformar en una formula


normal conjuntiva
¿ por que 3SAT? ¿ porque NO 4SAT 6 SAT 8SAT?

Los problemas 4SAT 8 SAT todos ellos se puede hacer lo mismo con
un SAT se puede reducir cualquier problema SAT a esos tamaños el
mas pequeño de todos ellos es el 3SAT

¿ que significa esto?

Que si hacemos una reducción del problema 3SAT al problema 2SAT


eso NO se puede hacer porque el problema 2SAT si se puede
resolver polinomialmente el problema 2SAT es mas sencillo de
solucionar que el problema 3SAT y NO hay forma de que el problema
3SAT se pueda resolver de forma 2SAT si hubiera forma de pasar el
problema 3SAT al problema 2SAT si hubiera forma de pasar formulas
de tamaño tres clausulas (3SAT) a formulas de tamaño de dos
clausulas (2SAT) si se pueden pasar pero el problema es garantizar
la equivalencia ¿ que pasaría? Estamos demostrando que hay
algoritmos polinomiales para el problema 3SAT y si hubieran
algoritmos polinomiales para el problema 3SAT habrían algoritmos
polinomiales para el problema SAT y si hubieran algoritmos
polinomiales para el problema SAT significa que habrían algoritmos
polinomiales para todos los problemas NP y si hubieran algoritmos
polinomiales para todos los problemas NP significa que NP = P.
en las transformaciones de 1 dos hacia tres los valores artificiales NO
tienen importancia No tiene importancia el valor que toma la variable
artificial y si tenemos de tamaño cuatro ya empieza a importar que
valores tiene la variable artificial ¿ como se determinaría que valor
debería tener esas variables artificiales? Se mirar desde la original
¿ como debería quedar?

Por construcción en cualquiera de los casos se sabe que va a haber


un valor artificial que permita satisfacer esa formula por construcción
lo que nos interesa es generar la transformación pero NO
necesariamente encontrar la asignación de valores de verdad nos
interesa es garantizar que independientemente de la formula que
tengamos originalmente exista una forma que lo permita

dependiendo de la formula original se puede saber si lo que mas nos


convienes que v1 sea true y que v2 sea true dependiendo de la
combinación que tengamos

por ejemplo NOS dan el problema 1SAT el 1SAT ¿ como lo podemos


resolver en tiempo polinomial?

¿ que seria el problema 1SAT? Todas las clausulas son de tamaño


uno

¿ que significa que todas las clausulas son de tamaño uno?

Que tenemos simplemente una conjunción de literales y si tenemos


una conjunción de literales como podemos verificar que esa
conjunción de literales sea ¿satisfactible o no ? Simplemente si solo
una de ellas es false todas false
si tuviéramos una conjunción de literales por ejemplo

Tenemos una formula en 1SAT porque NO tiene ninguna conjunción.


Porque tenemos cinco clausulas y cada clausula es de tamaño uno.

Es satisfactible porque ¿ que basta para que sea satisfactible?

Conque al menos uno de los literales sea verdadero.

Siempre que tengamos una formula en 1SAT ¿ va a ser satisfactible?


NO porque por ejemplo si en vez de complemento de W tenemos
complemento de X en ese caso deja de ser satisfactible.

¿ cuanto nos costaría hacer un algoritmo que se encargue de verificar


si C1 es satisfactible o no?

Nos costaría lineal porque bastaría cuando hacemos un recorrido


sobre todos los literales e identificar una pareja de literales que sea
complementarios si hay una pareja de literales que son
complementarios quiere decir que va a ver una contradicción
entonces la formula NO es satisfactible pero si NO hay ninguna
pareja que sea complementaria la formula significa que va a haber
una asignación que traiga a todas se puede hacer un algoritmo lineal
para resolver 1SAT pero so queremos resolver 3SAT NO existe
ningún algoritmo que sea polinomial

También podría gustarte