Programmazione logica abduttiva

Da Wikipedia, l'enciclopedia libera.

La Programmazione Logica Abduttiva (ALP, dall'inglese Abductive Logic Programming) è una sottoarea della programmazione logica che inserisce nella programmazione logica regole di inferenza basate sulla abduzione.

Formalmente, un programma logico abduttivo è definito con una tripla , dove P è un programma logico (un insieme di clausole di Horn), A è un insieme distinto di predicati, denominati 'abducibili' ed IC è un insieme di formule logiche, dette 'vincoli di integrità'.

Lo scopo dell'abduzione è quello di trovare una spiegazione per delle cause. Un classico esempio è la 'diagnosi': partendo dagli effetti e dalle regole che collegano cause ed effetti, si cerca di abdurre quali sono le possibili cause.

Ad esempio, un programma logico abduttivo potrebbe essere il seguente:

sintomo(mal di testa):- influenza.
sintomo(mal di testa):- tumore.

che indica che due possibili cause del mal di testa sono il tumore e l'influenza. Chiaramente sarebbe possibile abdurre qualsiasi cosa; per questo spesso si aggiungono i vincoli di integrità, che servono a limitare le possibili combinazioni di abducibili che vengono ipotizzati.

Un altro classico esempio è la pianificazione: dato un programma logico che definisce quali sono gli effetti di alcune azioni ed una sequenza di eventi, si può ottenere tramite deduzione la situazione finale. Usando lo stesso programma logico con una procedura abduttiva, fornendo come goal lo stato finale che si vuole raggiungere, si può ottenere una possibile sequenza di eventi che fornisce quello stato finale. Questo metodo è stato spesso usato con il calcolo degli eventi di Sergot e Kowalski.

Procedure abduttive[modifica | modifica wikitesto]

Varie procedure abduttive sono state proposte. In ordine cronologico:

  • Kakas-Mancarella
  • SLDNFA
  • ACLP, ada.cs.ucy.ac.cy.
  • IFF
  • A-system, cs.kuleuven.ac.be.
  • SCIFF, lia.deis.unibo.it.