Risoluzione Traccia

di il
2 risposte

Risoluzione Traccia

Salve sono nuovo e vorrei chiedere un consiglio su una traccia che mi è stata proposta di risolvere,vorrei sapere il ragionamento o la struttura da seguire per la risoluzione,grazie in anticipo.
LA TRACCIA é LA SEGUENTE:
----------------------------------------------
Si richiede di realizzare una forma semplificata di ragionamento automatico. A tale scopo si definiscano
le classi/interfacce seguenti:
Var: classe delle variabili logiche, contenente il nome della variabile (stringa alfanumerica)
costruttore: con parametro String che controlli la validità del parametro (altrimenti solleva
un'eccezione)

Ragionabile: interfaccia che determina la capacità di ragionare attraverso i metodi
conseguenza, puntoFisso, conseguenzaImmediata descritti in seguito
RegolaGenerale: degli oggetti composti da una premessa e una conseguenza, ognuna
come Set di variabili logiche
metodo daStringa(s) crea e restituisce una regola dalla stringa in ingresso
<premessa> -> <conseguenza>
in cui le variabili in <premessa> e una <conseguenza> siano stringhe separate da
blank
ad es. p1 p2 p3 -> c1 c2

metodo applicabile(fatti) booleano, restituisce true sse questa regola ha in
premessa solo variabili presenti nell'insieme in ingresso (fatti) altrimenti false
Regola: un particolare tipo di RegolaGenerale con una (e una sola) variabile logica in
conseguenza
il costruttore deve controllare questo vincolo (sollevando eventualmente un'eccezione)
Base: collezione di istanze di Regola che implementa Ragionabile
metodo toString() utile alla stampa di tutte le regole contenute
metodo cercaRegole(fatti) che restituisce l'insieme di regole della base applicabili a
fatti (usare il metodo precedentemente implementato)

metodo conseguenzaImmediata(fatti) booleano che, usando una regola
applicabile ove possibile, calcola una nuova conseguenza, ossia una variabile che non sia già
presente in fatti, estendendo tale insieme:
data p1 p2 .. pn -> c, se tutti i p (con tra 1 e n) sono in fatti allora
deduce e aggiunge la conseguenza c
ad es. se nella base c'è la regola a b -> c applicabile a b, d, a allora si
può aggiungere c all'insieme fatti in ingresso

NB il metodo restituisce false se nessuna variabile che non sia già presente in
fatti può essere dedotta da regole applicabili, altrimenti restituisce true

metodo puntoFisso(fatti) itera il metodo precedente fino a quando sono calcolabili
altre conseguenze (ossia fino a quando fatti non viene modificato)

metodo booleano conseguenza(var,fatti) restituisce true se la variabile logica
var è tra le conseguenze di fatti (anche non immediata)
sfruttare il metodo precedente
-------------------------------------------------------------------------------
Come ultimo punto poi c è il Test attraverso l utilizzo di tutte le classi e la stampa
Grazie ancora.

2 Risposte

  • Re: Risoluzione Traccia

    Questo, in zeresiama approssiamzione, e' il motore di inferenza del Prolog, un linguaggio di programmazione basato sulla logica dei predicati.

    Ora, se hanno proposto un esercizi del genere, vuol dire che il corso di programmazione e' di PRIMO livello

    I concetti che sono stati introdotti sono TANTI e decisamente SOFISTICATI: si passa dalla BANALE programmazione ad oggetti, alla programmazione logica, alle funzioni ricorsive, ai motori di inferenza, alla logica proposizionale, la logica dei predicati, le clausole di Horn, ecc, ecc..

    Se non lo sai svolgere, caro mio, sono ..zzzi amari.

    Non e' una cosa che si puo' risolvere in qualche post, ma in una 20-na di pagine, forse (vabbe, forse qualcosina di meno).

    Quindi, le domande sorgono spontanee:

    1) e' un esercizio che hai trovato per conto tuo, OPPURE e' un compito per casa?
    2) se e' un compito per casa, quando il professore insegnava queste cose, TU che facevi?

    Condoglianze
  • Re: Risoluzione Traccia

    Purtoppo è una traccia d' esame...
    Non sono riuscito a capire cosa richiedesse la traccia,le strutture dati utilizzate sono chiare ,l utilizzo non proprio,Per esempio in Regola sottoclasse di RegolaGenerale suppongo,come va utilizzata la variabile Var?
Devi accedere o registrarti per scrivere nel forum
2 risposte