Esercizio - Risoluzione, forward e backward chaining sul caso Criminal West (slide del corso)
In questa pagina 5
Testo (dalle slide "Inference in first-order logic" del corso di Intelligenza Artificiale, Ing. dell'Informazione UniPD; teoria in Logica del primo ordine - unificazione, forward e backward chainingLogica del primo ordine (oggetti, relazioni, funzioni, quantificatori e errori tipici), sostituzioni, istanziazione universale ed esistenziale (Skolem), proposizionalizzazione e suoi limiti, unificazione con occur check, risoluzione nel primo ordine con conversione in CNF, esempio Criminal(West), clausole definite, forward e backward chaining, ingegneria della conoscenza.Logica del primo ordine - unificazione, forward e backward chaining →). La legge dice che è un reato per un americano vendere armi a nazioni ostili. Il paese Nono, nemico dell'America, ha dei missili, e tutti i suoi missili gli sono stati venduti dal colonnello West, che è americano.
- Tradurre il testo in logica del primo ordine, con le convenzioni che un nemico dell'America è ostile e che un missile è un'arma.
- Dimostrare per risoluzione, per backward chaining e per forward chaining.
- Cosa succede se si toglie un fatto alla volta? Quale risposta dà la domanda ?
Punto 1: formalizzazione
| Frase | Logica |
|---|---|
| reato vendere armi a nazioni ostili | |
| Nono è nemica dell'America | |
| un nemico dell'America è ostile | |
| Nono ha dei missili | , con EI: e |
| i missili sono armi | |
| West ha venduto a Nono tutti i missili di Nono | |
| West è americano |
L'esistenziale è eliminato con la costante di Skolem (nome nuovo). Le variabili sono quantificate universalmente. Sono tutte clausole definite: un solo letterale positivo per clausola, quindi vanno bene sia forward sia backward chaining.
Punto 2a: risoluzione
Negazione della tesi: . Nove passi, riportati con le sostituzioni, nella nota; in sintesi: con la regola del reato (), poi , la regola (), (), la regola delle vendite (, ), ancora , , la regola dei nemici () e , che dà . La clausola vuota prova .
Punto 2b: backward chaining
Si parte da e si cercano clausole la cui conseguenza si unifica con l'obiettivo. Le variabili della regola sono rinominate a ogni uso (apice). In profondità, da sinistra a destra:
- Obiettivo : la regola del reato ha conseguenza , con . Nuovi obiettivi (premesse): , , , .
- : è un fatto. .
- : la regola dà e obiettivo ; il fatto dà , cioè .
- : la regola si unifica con . Obiettivi: (fatto) e (fatto).
- (con ): la regola dà ; obiettivo , fatto.
Tutte le foglie sono fatti: è dimostrato con . Un solo ramo, nessun vicolo cieco: ogni obiettivo ha una sola clausola che si unifica (il programma Python di verifica trova la risposta senza tornare indietro su nessuna scelta).
Punto 2c: forward chaining
Si applicano le regole le cui premesse sono già tutte fatti, finché non compare nulla di nuovo.
| Giro | Regola | Sostituzione | Fatto nuovo |
|---|---|---|---|
| 1 | |||
| 1 | |||
| 1 | |||
| 2 | |||
| 3 | nessuna regola dà qualcosa di nuovo | punto fisso |
La regola del reato non poteva scattare al giro 1: mancavano , e . Per questo servono due giri. Al punto fisso i fatti sono (i iniziali più derivati).
Punto 3: togliere un fatto, domanda
Si rifanno forward e backward chaining togliendo un fatto alla volta (controllo con Python). In ogni caso non si deriva, sia con forward sia con backward chaining:
| Fatto tolto | Cosa manca | Fatti derivati dal forward |
|---|---|---|
| non si può provare | , | |
| non si può provare | , | |
| manca la prima premessa | , , | |
| manca l'arma, e anche la vendita | solo |
È il debug della KB: togliere o cambiare un enunciato e vedere quale conclusione cade. Se la KB è completa per il problema, ogni fatto è necessario.
Domanda con variabile. Ask(KB, Criminal(x)): il backward chaining, con la stessa catena di prima, restituisce la sostituzione (e le altre variabili legate, e , non fanno parte della risposta). È l'unico criminale derivabile.
Versione ripasso
- Formalizzazione (clausole definite): ; ; ; EI su "ha missili": , ; ; ; .
- Risoluzione: negare la tesi, ; sequenza regola del reato (), , (), (), regola vendite (, ), , , regola nemici (), : in passi.
- Backward chaining (in profondità): con ; premesse (fatto), via con , con (premesse , ), via . Risultato , nessun ritorno indietro.
- Forward chaining: giro 1 , , ; giro 2 ; giro 3 punto fisso; fatti in tutto.
- Debug: senza , , o , non si deriva.
Ask(KB, Criminal(x))dà . - Errore tipico: dimenticare di rinominare le variabili a ogni uso della regola, o di propagare la sostituzione (es. ) alle premesse successive.