problema ⇒ soddisfacibilità di una formula booleana ⇒ risolutore
problema di stabilire se esiste almeno una valutazione delle variabili che rende vera una formula booleana
prime due sat, terza unsat
piano = sequenza di azioni per ottenere l'obiettivo
piano: bere, riempire
date le condizioni, lo stato iniziale, l'obiettivo e le azioni
esiste un piano per ottenere l'obiettivo?
scala di valutazione: complessità computazionale
dettagli più avanti nel corso
per il momento: problema relativamente difficile
trova piano ⇒ trova valutazione
riduzione:
trasformare il problema di pianificazione in un equivalente problema di valutazione booleana
le condizioni sono già booleane: bottepiena, moglieubriaca
ma cambiano nel tempo
ipotizzando tre istanti di tempo:
bottepiena potrebbe cambiare in tutti
moglieubriaca anche
il numero indica il tempo
bottepiena1
= la botte è piena al tempo 1
la botte è piena ma la moglie non è ubriaca
bottepiena0 ∧ ¬moglieubriaca0
la botte è piena e la moglie è ubriaca
bottepiena2 ∧ moglieubriaca2
potrebbe essere vero anche prima
(bottepiena0 ∧ moglieubriaca0) ∨ (bottepiena1 ∧ moglieubriaca1) ∨ (bottepiena2 ∧ moglieubriaca2)
rende vero moglieubriaca1 e falso bottepiena1
ma solo se è vero bottepiena0
formula bottepiena0 → moglieubriaca1 ∧ ¬bottepiena1?
no, vorrebbe dire che l'azione è obbligatoria se eseguibile
bevi0 bevi1
true se si esegue l'azione al tempo 0 o 1
bevi0 → bottepiena0 ∧ moglieubriaca1 ∧ ¬bottepiena1
se si esegue l'azione vuole dire che:
bevi1 → bottepiena1 ∧ moglieubriaca2 ∧ ¬bottepiena2
stessa cosa al tempo 1 e 2
riempi0 → ¬bottepiena0 ∧ bottepiena1 riempi1 → ¬bottepiena1 ∧ bottepiena2
stessa cosa
la botte è piena al tempo i se
lo era al tempo i-1
e nessuna azione l'ha svuotata
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 ) )
lo stesso
questa volta non ci sono azioni che falsificano
moglieubriaca1 ≡ ( bevi0 ∨ ( moglieubriaca0 ) )
stessa formula
indici aumentati
bottepiena2 ≡ ( riempi1 ∨ ( bottepiena1 ∧ ¬bevi1 ) )
moglieubriaca2 ≡ ( bevi1 ∨ ( moglieubriaca1 ) )
(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
unico modello:
piano: bevi al primo passo, riempi al secondo
togliendo l'azione riempi la formula non ha più modelli
nessun piano
potenzialmente, qualsiasi problema nella classe di complessità NP
si vedrà più avanti