soluzione mediante traduzione

problema ⇒ soddisfacibilità di una formula booleana ⇒ risolutore

SAT

problema di stabilire se esiste almeno una valutazione delle variabili che rende vera una formula booleana

(a ∨ b) ∧ (¬a ∨ c) ∧ (¬b ∨ c)
vera quando a=true, b=false, c=true
a ∧ ¬b ∧ (b ∨ ((¬a ∧ c) ∧ ¬b))
vera quando a=true, b=false, c=true
(¬a ∨ b) ∧ (¬b ∨ c) ∧ a ∧ ¬c
falsa per tutte le valutazioni possibili
equivalente ad a → b, b → c, a, ¬c

prime due sat, terza unsat


problema di pianificazione

piano = sequenza di azioni per ottenere l'obiettivo


un problema senza piani

condizioni: bottepiena, moglieubriaca
iniziale: bottepiena=true, moglieubriaca=false
obiettivo bottepiena=true, moglieubriaca=true
azioni:
bere
si può eseguire solo se bottepiena=true
effetto: la botte è vuota ma la moglie è ubriaca
bottepiena=false, moglieubriaca=true

un problema con un piano

condizioni: bottepiena, moglieubriaca
iniziale: bottepiena=true, moglieubriaca=false
obiettivo bottepiena=true, moglieubriaca=true
azioni:
bere
si può eseguire solo se bottepiena=true
effetto: la botte è vuota ma la moglie è ubriaca
bottepiena=false, moglieubriaca=true
riempire
si può eseguire solo se bottepiena=false
effetto: la botte è di nuovo piena
bottepiena=true

piano: bere, riempire


problema, in generale

date le condizioni, lo stato iniziale, l'obiettivo e le azioni
esiste un piano per ottenere l'obiettivo?

difficoltà del problema

scala di valutazione: complessità computazionale
dettagli più avanti nel corso

per il momento: problema relativamente difficile


soluzione per riduzione

trova piano ⇒ trova valutazione

riduzione:

trasformare il problema di pianificazione in un equivalente problema di valutazione booleana


trasformazione

le condizioni sono già booleane: bottepiena, moglieubriaca

ma cambiano nel tempo

ipotizzando tre istanti di tempo:
bottepiena potrebbe cambiare in tutti
moglieubriaca anche


variabili della formula booleana

il numero indica il tempo
bottepiena1 = la botte è piena al tempo 1


stato iniziale

la botte è piena ma la moglie non è ubriaca

bottepiena0 ∧ ¬moglieubriaca0

obiettivo

la botte è piena e la moglie è ubriaca

bottepiena2 ∧ moglieubriaca2

potrebbe essere vero anche prima

(bottepiena0 ∧ moglieubriaca0) ∨ (bottepiena1 ∧ moglieubriaca1) ∨ (bottepiena2 ∧ moglieubriaca2)

azione bevi

rende vero moglieubriaca1 e falso bottepiena1

ma solo se è vero bottepiena0

formula bottepiena0 → moglieubriaca1 ∧ ¬bottepiena1?

no, vorrebbe dire che l'azione è obbligatoria se eseguibile


variabili bevii

bevi0
bevi1

true se si esegue l'azione al tempo 0 o 1


bevi0

bevi0 → bottepiena0 ∧ moglieubriaca1 ∧ ¬bottepiena1

se si esegue l'azione vuole dire che:


bevi1

bevi1 → bottepiena1 ∧ moglieubriaca2 ∧ ¬bottepiena2

stessa cosa al tempo 1 e 2


riempi0 e riempi1

riempi0 → ¬bottepiena0 ∧ bottepiena1
riempi1 → ¬bottepiena1 ∧ bottepiena2

stessa cosa


inerzia

la botte è piena al tempo i se
lo era al tempo i-1
e nessuna azione l'ha svuotata


azioni + inerzia

la botte è piena al tempo i se e solo se
una azione del tempo i-1 l'ha riempita
oppure
era piena al tempo i-1
e nessuna azione l'ha resa falsa

bottepiena1 ≡ ( riempi0 ∨ ( bottepiena0 ∧ ¬bevi0 ) )

moglie ubriaca

lo stesso
questa volta non ci sono azioni che falsificano

moglieubriaca1 ≡ ( bevi0 ∨ ( moglieubriaca0 ) )

azioni nel secondo passo

stessa formula
indici aumentati

bottepiena2 ≡ ( riempi1 ∨ ( bottepiena1 ∧ ¬bevi1 ) )
moglieubriaca2 ≡ ( bevi1 ∨ ( moglieubriaca1 ) )

tutto insieme

(bottepiena0 ∧ ¬moglieubriaca0)
(bottepiena0 ∧ moglieubriaca0) ∨ (bottepiena1 ∧ moglieubriaca1) ∨ (bottepiena2 ∧ moglieubriaca2)
bottepiena1 ≡ ( riempi0 ∨ ( bottepiena0 ∧ ¬bevi0 ) )
moglieubriaca1 ≡ ( bevi0 ∨ ( moglieubriaca0 ) )
bottepiena2 ≡ ( riempi1 ∨ ( bottepiena1 ∧ ¬bevi1 ) )
moglieubriaca2 ≡ ( bevi1 ∨ ( moglieubriaca1 ) )

devono essere tutte vere
congiunzione


formula soddisfacibile

unico modello:

piano: bevi al primo passo, riempi al secondo


formula insoddisfacibile

togliendo l'azione riempi la formula non ha più modelli

nessun piano


altri problemi risolvibili in questo modo

potenzialmente, qualsiasi problema nella classe di complessità NP
si vedrà più avanti