OKPEDIA LOGICA PRIMO ORDINE

Indicizzazione dei predicati

L'indicizzazione dei predicati è una tecnica di organizzazione dei dati di una base di conoscenza. Le regole sono suddivise in sottoinsiemi ( bucket ) sulla base del predicato che le caratterizza, rendendo più veloce l'accesso e la selezione dei dati agli algoritmi di ricerca inferenziale. Ad esempio, la base di conoscenza è composta da tre predicati ( Conosce, Amico, Fratello ) e da dieci formule logiche. Per rispondere alla domanda "chi è il fratello di Caio" l'algoritmo inferenziale impiega dieci passi per eseguire il processo di sostituzione/unificazione e, infine, giungere alla risposta ( "Tizio" ).

La ricerca non è efficiente, in quanto l'algoritmo confronta tutte le formule logiche della base dati con quella della query. Per rendere più veloce l'accesso alle sole formule con predicato "Fratello" è consigliabile indicizzare la base di conoscenza in funzione dei tre predicati, ottenendo tre tabelle distinte.

Quando la base di conoscenza è suddivisa ( indicizzata ) in sottoinsiemi per predatato, l'algoritmo inferenziale può eseguire la procedura di unificazione soltanto nel buket "Fratello" e, quindi, giungere alla soluzione ( "Tizio" ) in soli due passaggi.

Tempo di esecuzione. L'indicizzazione dei predicati è utile quando la base di conoscenza è caratterizzata da molti predicati, ognuno dei quali è composto da poche formule logiche. In questi casi l'accesso ai dati per bucket/predicato rende il processo di unificazione più rapido ed efficiente.

Spazio di memoria. L'uso degli indici consente di ridurre il tempo di esecuzione di un algoritmo. Il beneficio dell'indicizzazione potrebbe però essere sovrastato dalla necessità di gestire molti indici e chiavi multiple nello spazio della memoria di massa.

https://www.okpedia.it/indicizzazione_dei_predicati


Segnala un errore o invia un suggerimento per migliorare la pagina


note


  • L'indicizzazione per predicati è poco utile quando la base di conoscenza è caratterizzata da pochi predicati, ognuno dei quali è composto da molti simboli e formule logiche. Ad esempio, la seguente base di conoscenza include tutti i giocatori di calcio di serie A e le squadre in cui giocano.

    In questo caso è poco efficiente suddividere in sottoinsiemi ( bucket ) la base di conoscenza, in quanto il bucket "Gioca" sarebbe comunque molto grande per qualsiasi processo di unificazione. Per rispondere alla domanda "quali giocatori giocano nella Juventus?" l'algoritmo impiega 8 operazioni di confronto ( step ). Il problema può essere risolto con l'indicizzazione per predicato e per argomento suddividendo la base di conoscenza per il predicato ( Gioca ) e per l'argomento più importante ( squadra ) o per chiavi multiple. Il bucket Gioca è così suddiviso in n sottoinsiemi per ciascuna delle n squadre, ognuno dei quali include i giocatori che indossano quella maglia nel campionato di calcio.
    rispondere alla domanda "quali giocatori giocano nella Juventus?" l'algoritmo impiega soltanto 3 operazioni di confronto ( step ), poiché concentra le operazioni di sostituzione e di unificazione soltanto nel bucket Gioca e nel sottoinsieme "Juventus".
  • Modus Ponens. Il processo di inferenza del primo ordine basato sul Modus Ponens mette a confronto le formule atomiche ( f1, f2, q ) e, qualora esista, mette in evidenza una sostituzione tale che SUBST( θ , f2 ) = SUBST ( f1, θ ). Le premesse ( f1, f2 ) dell'implicazione ( q ) coincidono tramite una sostituzione θ.
    MODUS PONENS


Logica del primo ordine


FacebookTwitterLinkedinLinkedin