vuoi
o PayPal
tutte le volte che vuoi
Algoritmo → insieme di passi che trasformani i dati in ingresso
L’algoritmo, dopo essere stato definito, viene tradotto in un programma scritto in un particolare
linguaggio.
Problema → insieme di stati
Risoluzione → insieme di transizioni tra stati differenti
All’interno di un sistema formale la rappresentazione della conoscenza avviene servendosi di un
opportuno linguaggio.
I primi SF sono stati quelli rule-based.
In essi, la conoscenza su un certo dominio viene rappresentata attraverso delle regole del tipo
if…then
Su tali regole si applicano poi le tecniche di forward/backward chain.
Altri tipi di SF sono quelli logic-based, fortemente assimilabili a quelli rule-based.
Essi ereditano il formalismo della logica matematica, che può essere visto come un’estensione
del formalismo dei sistemi rule-based.
In essi, la rappresentazione della conoscenza è poco più sofisticata di quella dei rule-based; è
basata su clausole (espresse mediante connettivi logici and, or, not) delle quali è possibile
dimostrare la verità o falsità.
Il PROLOG è il più noto rappresentante della famiglia di linguaggi usati per SF logic-based.
Un SF viene espresso come un insieme di regole.
Ogni regola possiede un modello ben preciso:
if (premessa) then (conclusione)
La conclusione è vera laddove sia vera anche la premessa.
La premessa è anche detta testa o precondizione.
La conclusione è anche detta coda o postcondizione.
Il motore inferenziale esamina il database dinamico.
Così facendo, determina quali sono le regole attivate (quelle le cui precondizioni siano verificate
dagli elementi del database), e applica ciascuna di esse, aggiungendo la relativa conclusione al
database.
1. Il motore inferenziale cerca le regole attivate nel database
2. Applica tali regole
3. Aggiunge le relative conclusioni al database
In alternativa, il motore può effettuare una ricerca all’indietro.
Possiamo mettere nel database il goal al posto dello stato iniziale.
Pertanto, il motore inferenziale cercherà nel database tutte le regole attivate quando sono vere
le postcondizioni e metterà nel database le rispettive precondizioni.
La base di conoscenza è costituita da:
- fatti
- regole
Un blocco di selezione regole e dati percorre per intero la base di conoscenza e realizza
l’unificazione.
Esso - nota in un dato istante la memoria di lavoro e selezionato uno dei teoremi - determina
quali regole siano ad esso applicabili.
La regola selezionata va poi applicata.
Per fare questo abbiamo un blocco di interpretazione della regola, il quale - dopo aver
effettuato l’interpretazione - aggiorna la memoria di lavoro.
L’insieme di:
- blocco di selezione regole e dati
- blocco di interpretazione della regola
costituisce il nostro motore inferenziale.
Il blocco di selezione regole e dati comunica anche con un blocco delle metaregole, composto
da regole per la gestione delle strategia di selezione delle regole.
Le metaregole sono regole più generali, le quali forniscono una conoscenza aggiuntiva al
motore inferenziale, che può così dirigere meglio le sue scelte.
Facciamo un esempio sulle metaregole.
Si consideri un sistema per l’analisi dei guasti di un’autovettura.
Si è riscontrato un problema ai freni e si vuole stabilirne la causa.
Possiamo ipotizzare che i guasti dell’impianto elettrico non potrebbero mai condizionare il
corretto funzionamento dell’impianto frenante.
Se durante il processo inferenziale possono essere applicate 150 regole per rilevare guasti sul
sistema elettrico, è inutile applicarle perché il tipo di guasto per sua natura non è sicuramente
ascrivibile all’impianto elettrico e si passerà ad applicare un altro set di regole più adatto.
Il nostro sistema porrà quindi innanzitutto delle domande generali per scoprire la natura del
guasto, il che gli permetterà di escludere l’applicazione di certe regole.
Facciamo un altro esempio sulle metaregole.
Nel caso di un sistema formale, supposto che in ogni istante esistano 500 regole applicabili ai
teoremi, possiamo immaginare che esse siano suddivise in più gruppi di regole (ad esempio,
gruppo A e gruppo B)
Il sistema non cerca di applicarle tutte, ma le metaregole gli suggeriscono di provare
innanzitutto con A, perché l’utilizo di B non porta a risultati utili.
Dunque, una metaregola inibisce un gruppo di regole a favore di un altro.
Il PROLOG sta per PROgramming in LOgic.
Si tratta di un linguaggio di alto livello, ottimo per rapid prototyping.
Un programma logico ha duplice significato:
significato dichiarativo significato operazionale
un programma consiste di fatti e regole che il programma prevede un meccanismo di
definiscono relazioni esecuzione (motore di inferenza) basato
sull’unificazione e la risoluzione, per estrarre
conseguenze implicite nel programma
Dunque, per programmare in Prolog dobiamo cambiare modo di pensare: dichiarativamente,
non proceduralmente.