Ragionamento nella logica di primo grado con il forward chaining
Il ragionamento nella logica di primo grado può essere elaborato con la logica del primo grado. Il funzionamento è molto semplice, l'algoritmo esplora le funzioni della base di conoscenza e deduce le nuove funzioni da aggiungere, fino a rispondere a una domanda. Un esempio ben fatto è fornito dal libro "intelligenza artificiale" di Russel-Norvig. La base di conoscenza è inizialmente composta dalla seguente affermazione.
"La legge proibisce agli americani di vendere armi
alle nazioni ostili"
Questo divieto può essere trasformato nella logica del primo ordine nel seguente modo:
Americano ( x ) ∧ Arma ( y ) ∧ Vende( x, y, z ) ∧
∧ Ostile( z ) ⇒ Criminale ( x )
Aggiungiamo altre informazioni alla base di conoscenza. L'Iran è considerato un nemico dagli Stati Uniti. Questa informazione può essere espressa nel seguente modo:
Nemico( Iran, America )
Nella base di conoscenza è presente una regola in base alla quale ogni nemico è considerato ostile.
Nemico( x, y ) ⇒ Ostile ( x )
Ipotizziamo che l'Iran sia sicuramente in possesso di missili. Questa informazione può essere espressa nella logica del primo ordine nel seguente modo:
∃ x Possiede( Iran, x ) ∧ Missile( x )
L'istanziazione esistenziale ( ∃ ) può essere sostituita con una costante ( M1 ) per riscrivere l'affermazione nel seguente modo:
Possiede( Iran, M1 )
Missile( M1 )
Ipotizziamo che l'Iran non possieda la conoscenza tecnologica per produrre i missili. Tutti i missili in suo possesso sono stati acquistati da un certo Smith. Nella logica del primo ordine possiamo scriverlo nel seguente modo:
Possiede ( Iran, x ) ∧ Missile ( x ) ⇒ Vende( Smith, x, Iran )
La base di conoscenza non sa che i missili sono armi. È quindi necessario introdurre un'apposita nuova funzione:
Missile( x ) ⇒ Arma( x )
Abbiamo quasi tutto, ci manca soltanto da introdurre nella base di conoscenza la nazionalità di Smith. Ipotizziamo che Smith sia un cittadino americano.
Americano( Smith )
La base di conoscenza iniziale è completa. Possiamo chiedere alla base di conoscenza se Smith è americano e questa ci risponderà affermativamente. La base di conoscenza iniziale è la seguente
L'algoritmo inferenziale può anche dedurre nuove informazioni a partire da quelle iniziali seguendo un processo inferenziale basato sulla concatenazione in avanti.
Processo di inferenza in avanti
L'algoritmo scandaglia le formule alla ricerca di possibili inferenze. Quando giunge alla seguente regola, l'algoritmo utilizza la tecnica dell'unificazione e scopre che può essere soddisfatta con { x/M1 }.
Possiede ( Iran, M1 ) ∧ Missile ( M1 ) ⇒ Vende( Smith, M1, Iran )
Può, quindi, aggiungere una nuova informazione alla base di conoscenza ossia "Smith ha venduto gli M1 all'Iran".
Vende( Smith, M1, Iran )
L'algoritmo riesce a soddisfare anche la seguente regola, sostituendo "M1" alla variabile x.
Missile( M1 ) ⇒ Arma( M1 )
Può, quindi, aggiungere alla base di conoscenza un'altra informazione ossia "M1 è un arma".
Arma( M1 )
Infine, l'algoritmo soddisfa anche la seguente regola sostituendo la variabile x con "Iran".
Nemico( Iran, USA ) ⇒ Ostile ( Iran )
Può aggiungere alla base di conoscenza l'informazione dedotta ossia "l'Iran è un paese ostile".
Ostile ( Iran )
A questo punto, grazie alle nuove informazioni appena dedotte, l'algoritmo può anche dedurre che Smith è un criminale.
Americano ( Smith ) ∧ Arma ( M1 ) ∧
∧ Vende( Smith, M1, Iran ) ∧
∧ Ostile( Iran ) ⇒ Criminale ( Smith )
Tutte le premesse ( congiunzioni ) sono soddisfatte. È quindi possibile affermare che Smith è un criminale poiché è un americano e ha venduto armi a un paese ostile agli Stati Uniti d'America. Grazie alla conclusione del ragionamento è possibile aggiungere alla base di conoscenza la seguente informazione:
Criminale ( Smith )
La concatenazione in avanti ha consentito di aggiungere ulteriore conoscenza nella base dati a partire dalle premesse conosciute. Al termine del processo di inferenza la base di conoscenza è raddoppiata. Tutto questo è accaduto combinando tra loro le regole e le conoscenze già esistenti.
Lo stesso processo inferenziale in avanti può essere utilizzato per rispondere a domande specifiche come la seguente: "Smith è un criminale?" A questo punto, nessun altra inferenza consente di aggiungere nuovi fatti alla base di conoscenza e l'algoritmo conclude l'esecuzione.
La seguente rappresentazione mostra l'albero della dimostrazione del processo inferenziale. I fatti conosciuti all'inizio del processo di inferenza si trovano più in basso, quelli più in alto sono, invece, dedotti nei cicli successivi. L'ultimo fatto dedotto è il nodo più in alto, quello in cui si afferma che Smith è un criminale.