Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
<< Atras
80
pij
jA iA
para todo i, j A
kA{j}
S
olo hay una reina por fila
pij
pmj ,
para todo i, j A
mA{i}
S
olo hay una reina por diagonal
^
pij
pmk ,
para todo i, j A
m,kA,ij=mk,i6=m
<< Atras
81
<< Atras
82
<< Atras
83
El algoritmo DPLL
Este es un algoritmo sistem
atico para encontrar satisfactibilidad.
Propuesto en 1962, utiliza f
ormulas en FNC y asigna un valor de verdad de tal
manera de simplificar al maximo la f
ormula.
Supongamos que tenemos la siguiente f
ormula en FNC:
= (A B E) (B C D) (A) (C E)
En el primer paso, el algoritmo se da cuenta que A debe ser falsa.
Dada esa valuaci
on, el problema se reduce a encontrar el valor de verdad de la
siguiente f
ormula.
(A) = (B E) (B C D) (C E)
Se usa la notaci
on (u) para denotar la f
ormula que resulta de hacer verdadero
el literal u en y luego simplificar.
Jorge Baier Aranda, PUC
<< Atras
84
As,
(B) = (A) (C E).
<< Atras
85
El algoritmo es el siguiente:
<< Atras
86
GSAT
Una forma alternativa de resolver el problema de satisfactibilidad es a traves de
algoritmos estoc
asticos (no sistematicos).
Estos algoritmos han tenido gran exito en aplicaciones de inteligencia artificial.
La idea es partir de una valuaci
on aleatoria e ir modificandola hasta encontrar
una valuaci
on precisa.
Si tenemos suerte encontraremos una valuaci
on rapidamente.
<< Atras
87
El siguiente es el algoritmo:
procedure GSAT(formula CNF: , enteros: N restart, N f lips)
For i := 1 to N restarts,
Escoger una valuaci
on aleatoria A
For j := 1 to N f lips,
Si A satisface retornar 1
en caso contrario
Seleccione la variable v que al cambiar su valor de
verdad produce el mayor aumento de cl
ausulas satisfechas;
Modifique A, cambiando el valor de verdad de v
El algoritmo es greedy.
Es incompleto, pero efectivo.
Mejoras se han obtenido permitiendo que, con cierta probabilidad decreciente en
el tiempo, el algoritmo no elija el mejor flip.
<< Atras
88
..... ..................................
......
... ...
.....
... ...
.....
... ...
...
.. ..
..
.... ....
...
.
.
.....
.
.
.
.
...
.. ....
.
.
.
.
.
.
.
.
..... .................................
X1 X
..... ..................................
......
... ...
.....
... ...
.....
... ...
...
.. ..
..
.. ...
...
.
. ...
....
.
.
.
.
.
.
...
.. .....
.
.
.
.
.
.
.
.
.
.... ...............................
X2
D=1
...........
.....
...
...
..
..
..
..
.
.
.
...
.
.
.
.
.
.
.
.....
C=1
A2 Z
...........
.....
...
...
..
.
..
..
.
.
..
.
.
.
.
.
..........
A1 Y
..................................
......
...
.....
...
.....
...
...
..
..
....
...
.
.....
.
.
.
...
..
.
.
.
.
.
.
.
..................................
O1
E=0
<< Atras
89
Es posible modelar l
ogicamente el comportamiento del circuito.
Si una compuerta funciona correctamente, entonces el comportamiento del esta
es el correcto.
El siguiente conjunto de f
ormulas Sist describe el funcionamiento del sistema.
okX1 X A B
okA1 Y A B
okX2 D X C
okO1 E Z Y
okA2 Z C X
Las variables proposicionales que comienzan con ok son verdaderas ssi la
compuerta en el resto del nombre de la variable funciona correctamente.
Por otro lado, las observaciones del sistema quedan dadas por las siguientes
Jorge Baier Aranda, PUC
<< Atras
90
f
ormulas:
A>
(3)
C>
D>
(4)
(5)
p
Jorge Baier Aranda, PUC
p} {
p}
pCOM P
<< Atras
91
es consistente.
Obviamente, lo que nos interesa conocer son los conjuntos con el mnimo
conjunto posible de elementos tal que la relaci
on anterior se cumpla. Por que?
El conjunto se puede construir incrementalmente a partir de una serie de
observaciones.
Mientras mayor cantidad de observaciones se tenga, menos elementos tendra el
conjunto.
Pero c
omo podemos encontrar un diagn
ostico?
Una estrategia consiste en encontrar conjuntos de conflictos.
Un conflicto es un subconjunto de C de COM P tal que:
sist obs {
p}
pC
es inconsistente.
Jorge Baier Aranda, PUC
<< Atras
92
Si, por ejemplo {ok1, ok5, ok6} es un conjunto conflicto, entonces significa que
las compuertas correspondientes no pueden estar todas juntas funcionando al
mismo tiempo.
Dado un conjunto de observaciones para un sistema que funciona incorrectamente
es posible encontrar muchos conjuntos conflicto.
De estos, algunos seran minimales si al quitar un elemento del conjunto, dejan
de ser un conjunto conflicto.
Un diagn
ostico es un conjunto que contiene, al menos, un elemento de cada
conjunto conflicto que se pueda encontrar. Por que?
En nuestro ejemplo, para las observaciones de la figura, es posible encontrar dos
<< Atras
93
<< Atras
94
OTTER
Sus caractersticas son las siguientes:
Puede usar resolucion estandar o hiper-resolucion .
Recibe como entrada a formulas proposicionales de cualquier tipo.
Para el caso proposicional, es correcto y completo, porque implementa resolucion
proposicional.
La entrada com
un de otter son dos listas:
La lista usable: las formulas de la base de conocimiento.
La lista sos: contiene las formulas queremos obtener como consecuencia de la lista
usable. Importante: el conjunto de f
ormulas debe estar negado.
<< Atras
95
Sintaxis de OTTER
Basicamente, la entrada para otter es un archivo con la siguiente estructura:
[seteo opciones]
formula_list(usable).
[formulas (cada una terminada en punto)]
end_of_list.
formula_list(sos).
[formulas (cada una terminada en punto)]
end_of_list.
La sintaxis de las f
ormulas es similar a la de l
ogica proposicional. Los conectivos
que se ocupan se describen en la siguiente tabla:
negaci
on ()
disyuncion ()
conjuncion ()
implicacion ()
equivalencia ()
Jorge Baier Aranda, PUC
|
&
<->
<< Atras
96
<< Atras
97
Ejemplos
Consideremos el siguiente ejemplo:
set(binary_res).
formula_list(usable).
(p & -q) -> (r|s).
-r & -q.
end_of_list.
formula_list(sos).
- (p->s).
end_of_list.
Lo que intenta hacer este ejemplo es demostrar que
{p q r s, r q} |= p s
El siguiente es un resumen de la salida de otter:
Jorge Baier Aranda, PUC
<< Atras
98
<< Atras
99
Vemos que se llega a la clausula vaca $F, con lo que hemos demostrado lo que
queramos demostrar.
Supongamos que queremos saber si s se deduce de ese mismo conjunto de
clausulas.
Deberamos agregar -s a la lista sos.
En este caso Otter no llega a ninguna respuesta, mostrando el siguiente mensaje
dentro de su salida:
Search stopped because sos empty.
<< Atras
100
<< Atras
101
El siguiente conjunto de f
ormulas modela la situacion:
formula_list(usable).
a_miente
-> - a_dice_que_miente.
- a_miente -> - a_dice_que_miente.
b_miente <-> a_dice_que_miente.
- c_miente <-> b_miente.
end_of_list.
<< Atras
102
<< Atras
103
(*)
<< Atras
104
Sin embargo esta conjetura no pudo ser demostrada hasta 1996, cuando EQP
(que es similar a otter) demostr
o la equivalencia.
En el a
no 2000, se publico un artculo en el que, usando Otter, se demuestr
o que:
(((x + y)0 + z 0) + (x + (z 0 + (z + u)0)0)0)0 = z
es suficiente para axiomatizar el algebra de Boole.
<< Atras
105
<< Atras
106
<< Atras
107
END proposicional
<< Atras
108
Demostrando teoremas
Para demostrar un teorema es necesario cargar el demostrador, luego el archivo
con la teora, y luego presionar control+c seguido de p sobre el teorema a
demostrar.
Los dos comandos basicos para demostrar teoremas proposicionales son:
(flatten) Desarma secuentes que tienen conjunciones en el antecedente o
disyunciones o implicaciones en el consecuente.
Por ejemplo, al aplicar (flatten) al secuente
A1 A2
An
BC
Se obtiene
A1
A2
An
B
C
<< Atras
109
A2
An
B
El comando (prop) realiza estos dos procesos en forma automatica hasta que
no puede seguir mas adelante.
<< Atras
110