Compito esame ragionamento automatico
Terzo appello 2007

Domanda 1

Testo

Eseguire l'algoritmo di Davis-Putnam (DPLL) sul seguente insieme, e dire se è o meno soddisfacibile. Mostrare l'albero di ricerca, evidenziando in ogni nodo i letterali che si ottengono per propagazione unitaria e uso dei letterali puri.

{ a ∨ ¬ b, a ∨ c ∨ d, a ∨ f, b ∨ ¬ c ∨ ¬ f, b ∨ ¬ d ∨ ¬ f, ¬ a ∨ e,
¬ a ∨ c ∨ d, e ∨ ¬ b ∨ c ∨ d, c ∨ ¬ d ∨ ¬ e, ¬ c ∨ ¬ d ∨ ¬ e, ¬ a ∨ ¬ c ∨ d ∨ ¬ e }

Soluzione

Nell'insieme, il letterale che appare più volte in clausole binarie è a (tre volte). Dal momento che a appare positiva in due clausole binarie e negata in una, si prova prima il valore a=1.

La propagazione di a=1 ha il seguente effetto:

{ a ∨ ¬ b, a ∨ c ∨ d, a ∨ f, b ∨ ¬ c ∨ ¬ f, b ∨ ¬ d ∨ ¬ f, ¬ a ∨ e,
¬ a ∨ c ∨ d, e ∨ ¬ b ∨ c ∨ d, c ∨ ¬ d ∨ ¬ e, ¬ c ∨ ¬ d ∨ ¬ e, ¬ a ∨ ¬ c ∨ d ∨ ¬ e }
=
{ b ∨ ¬ c ∨ ¬ f, b ∨ ¬ d ∨ ¬ f, e, c ∨ d, e ∨ ¬ b ∨ c ∨ d, c ∨ ¬ d ∨ ¬ e, ¬ c ∨ ¬ d ∨ ¬ e, ¬ c ∨ d ∨ ¬ e }

Propagando e=1 si ottiene:

{ b ∨ ¬ c ∨ ¬ f, b ∨ ¬ d ∨ ¬ f, c ∨ d, e ∨ ¬ b ∨ c ∨ d, c ∨ ¬ d ∨ ¬ e, ¬ c ∨ ¬ d ∨ ¬ e, ¬ c ∨ d ∨ ¬ e } =
{ b ∨ ¬ c ∨ ¬ f, b ∨ ¬ d ∨ ¬ f, c ∨ d, c ∨ ¬ d, ¬ c ∨ ¬ d, ¬ c ∨ d }

Non ci sono altre clausole unitarie. Dal momento che b compare solo positiva ed f solo negativa, la regola dei letterali puri genera b=1 e f=0, e si eliminano tutte le clausole che contengono queste due variabili.

{ c ∨ d, c ∨ ¬ d, ¬ c ∨ ¬ d, ¬ c ∨ d }

Si deve ora scegliere un altro letterale da valutare. Dal momento che sia c che d compaiono in quattro clausole binarie, si può scegliere uno qualsiasi dei due. Dal momento che compaiono due volte positivi e due volte negativi in clausole binarie, si può scegliere prima il valore positivo o il valore negativo. In questo caso, si è scelto di valutare c, usando prima il valore c=0 e poi c=1.

La propagazione di c=0 ha i seguenti effetti.

{ c ∨ d, c ∨ ¬ d, ¬ c ∨ ¬ d, ¬ c ∨ d }

Si ottengono sia d che ¬ d, generando quindi una contraddizione.

Si passa ora a valutare c=1.

{ c ∨ d, c ∨ ¬ d, ¬ c ∨ ¬ d, ¬ c ∨ d }

Dato che si ottengono sia d che ¬ d anche in questo caso, si ha una inconsistenza.

Si passa ora a valutare a=0.

{ a ∨ ¬ b, a ∨ c ∨ d, a ∨ f, b ∨ ¬ c ∨ ¬ f, b ∨ ¬ d ∨ ¬ f, ¬ a ∨ e,
¬ a ∨ c ∨ d, e ∨ ¬ b ∨ c ∨ d, c ∨ ¬ d ∨ ¬ e, ¬ c ∨ ¬ d ∨ ¬ e, ¬ a ∨ ¬ c ∨ d ∨ ¬ e }
=
{ ¬ b, c ∨ d, f, b ∨ ¬ c ∨ ¬ f, b ∨ ¬ d ∨ ¬ f, e ∨ ¬ b ∨ c ∨ d, c ∨ ¬ d ∨ ¬ e, ¬ c ∨ ¬ d ∨ ¬ e }

Vengono quindi generati ¬ b e f. La loro propagazione ha i seguenti effetti:

{ c ∨ d, b ∨ ¬ c ∨ ¬ f, b ∨ ¬ d ∨ ¬ f, e ∨ ¬ b ∨ c ∨ d, c ∨ ¬ d ∨ ¬ e, ¬ c ∨ ¬ d ∨ ¬ e } =
{ c ∨ d, ¬ c, ¬ d, e ∨ ¬ b ∨ c ∨ d, c ∨ ¬ d ∨ ¬ e, ¬ c ∨ ¬ d ∨ ¬ e }

La propagazione di ¬ c produce d a causa della prima clausola; questo letterale è inconsistente con ¬ d generato in precedenza.

L'albero di ricerca è quindi il seguente:

Domanda 2

Testo

Verificare se il seguente insieme è soddisfacibile o meno usando il metodo dei tableaux (B=box, D=diamond). In caso di soddisfacibilità, indicare come è fatto un modello.

{ □ x ∧ ◇ y, ◇ (¬ x ∨ ¬ y) }

Soluzione

Il secondo ramo rimane aperto dal momento che in esso sono state applicate tutte le regole applicabili. Gli unici letterali (non modali) di questo ramo sono 1.1 ¬ y e 1.1 x. Un modello è quindi quello in cui c'è un mondo 1 con una interpretazione qualsiasi e un mondo 1.1 con x e ¬ y.

Non è necessario espandere ulteriormente il terzo ramo.

Domanda 3

Testo

Eseguire l'algoritmo AC-3 sul seguente problema di vincoli. Mostrare come cambiano i singoli domini ad ogni passo.

variabili:
x, y, z
dominii:
Dx = Dy = Dz = {1, 2, 3}
vincoli:
x<y, y<z, z<x

Soluzione

L'algoritmo AC-3 usa un insieme di vincoli che potrebbero non soddisfare la condizione di arc consistency. Sia P questo insieme. Inizialmente P contiene tutti i vincoli P={x<y, y<z, z<x}. Ad ogni passo viene scelto un vincolo ed estratto da questo insieme.

vincolo estratto da P valori che violano
la arc consistency
domini dopo la modifica nuovo P
x<y x=2, y=0 Dx={0,1}, Dy={1,2}, Dx={0,1,2} P={y<z, z<x}
y<z y=2, z=0, z=1 Dx={0,1}, Dy={1}, Dx={2} P={x<y, z<x}
Dy modificato, si rimette x<y perchè contiene y
x<y x=1 Dx={0}, Dy={1}, Dx={2} P={z<x}
solo Dx modificato a questo passo
z<x x=0, z=2 Dx={}, Dy={1}, Dx={} -

A questo punto ci si ferma dato che il dominio di almeno una variabile è diventato vuoto. Non si prosegue oltre (non è necessario arrivare al punto in cui anche il dominio di y diventa vuoto.