Criteri di valutazione per il terzo compitino D1.1 Una risposta corretta include almeno due motivazioni: 1) rappresentando il problema in maniera opportuna si possono adottare tecniche esistenti per risolverlo. Es: se rappresento il pb come grafo con nodi = stati, archi = transizioni, stato iniziale = un nodo specifico P, stati finali (soluzioni) = un insieme di nodi F1, ..., Fn, allora posso adottare tutte le tecniche note di visita dei grafi (cercare sol = cercare cammino da P a Fi), senza dover inventare niente di nuovo. 2) rappresentazioni "furbe" e non ridondanti migliorano l'efficienza del programma che ricerca la soluzione. Risposta che considera entrambi gli aspetti: A [Gandus, Rossato] Risposta che considera un aspetto e fa un minimo accenno al secondo: A- [Spiniello] Risposta che considera un solo aspetto: B+ [Baldassarre, Bellino, Bisignano, Carrega, Del Gaizo, Parrella, Rebagliati, Usai] Risposta non esauriente: B/C [Lombardi] D1.2 Risposta che spiega (anche sinteticamente) cosa sono le tecniche miste e ne illustra (anche sinteticamente) piu' di una: A+ [Bellino, Parrella] Risposta che spiega (anche sinteticamente) cosa sono le tecniche miste e ne illustra (anche sinteticamente) una: A [Baldassarre, Bisignano, Del Gaizo, Gandus, Lombardi, Rebagliati, Spiniello, Usai, Vassallo] Risposta che spiega (anche sinteticamente) cosa sono le tecniche miste ma illustra la best-first search anziche' una delle tecniche miste viste a lezione: B [Carrega] D1.3 Risposta corretta ed esauriente: A [Carrega] Risposta che spiega correttamente cosa e' un grafo and/or e spiega come si applica l'euristica con alcune imprecisioni (ad esempio non dice come si calcola la funzione H sulle foglie o la funzione F sulla radice dell'albero): A- [Bellino, Lorenzelli, Rossato] Risposta che spiega con qualche imprecisione cosa e' un grafo and/or e spiega come si applica l'euristica con imprecisioni o lacune, ma fornisce un esempio: A/B [Spiniello] Risposta che spiega correttamente cosa e' un grafo and/or e spiega come si applica l'euristica con imprecisioni o lacune, ma fornisce un esempio: B+ [Rebagliati, Vassallo] Risposta che spiega correttamente cosa e' un grafo and/or e spiega come si applica l'euristica con molte imprecisioni o lacune (ad esempio si limita a dire che nel caso di nodi AND vanno considerate TUTTE le possibilita', ma non dice come si calcola la funzione H per il nodo AND, o lo dice in modo errato - e analogamente per nodi OR): B [Bisignano, Del Gaizo, Gandus, Parrella, Usai] Risposta che NON spiega esaurientemente cosa e' un grafo and/or e spiega come si applica l'euristica con molte imprecisioni o lacune: B- [Lombardi] Risposta che spiega correttamente cosa e' un grafo and/or ma NON accenna a come si applica l'euristica ad esso: B/C [Baldassarre] D2.1 Risposta corretta anche se sintetica: A [Baldassarre, Bellino, Bisignano, Carrega, Del Gaizo, Gandus, Lorenzelli, Parrella, Rebagliati, Rossato, Spiniello, Usai, Vassallo] D2.2 Risposta corretta e precisa: A [Bellino, Carrega, Gandus, Lorenzelli, Parrella, Spiniello, Usai] Risposta con alcune imprecisioni, ma con spiegazione di come si possono rappresentagle i fatti "abducible" in Prolog: A [Rebagliati] Risposta corretta ma con alcune imprecisioni o omissioni (es, non dire che forma hanno A ed O): A- [Baldassarre, Bisignano, Del Gaizo, Lombardi, Rossato, Vassallo] D2.3 Risposta corretta con albero SLD: A+ [Baldassarre] Risposta corretta: A [Carrega, Rebagliati, Usai] Risposta sbagliata (ad esempio perche' non si prende il MINIMO tra la credibilita' di due goal congiunti o perche' si dimentica di moltiplicare per la credibilita' della clausola usata): B/C [Bellino, Del Gaizo, Lombardi, Lorenzelli, Parrella, Rossato, Vassallo] E1.1 I "-" si sommano, a seconda di quanti errori sono stati commessi e del loro peso. I voti risultanti sono: - = A- -- = A/B --- = B+ ---- = B ----- = B- ------ = B/C ecc... Codice corretto, spiegazione depth/breadth esauriente: A Codice con errori/omissioni non gravi: - per ogni errore. Errori non gravi sono ad esempio: non si considera esplicitamente il caso che se il suffisso di una parola e' la lista vuota si deve fallire; non si spiega in cosa consistono le configurazioni e le mosse o si spiegano in maniera errata; manca la definizione del predicato che partiziona una parola, ma il suo funzionamento e' spiegato a parole; la definizione di come creare una lista di lettere casuali contiene errori non gravi; descrizione dei nodi dell'albero sbagliata. Codice con errori/omissioni gravi: -- per ogni errore. Errori/omissioni gravi sono ad esempio: manca la definizione del predicato che partiziona la parola, e non c'e' neanche la spiegazione a parole; la definizione del predicato che partiziona le parole e' errata; usando [L|X] si pensa di prendere un qualunque prefisso L delle lista [L|X]. La discussione dfs/bfs c'e', ma e' insoddisfacente: -- Manca la discussione dfs/bfs: --- Il predicato "move" e' gravemente sbagliato/incompleto: ----- Il predicato "move" non e' definito: ------ E1.2 I "-" si sommano, a seconda di quanti errori sono stati commessi e del loro peso. Se alcune parti sono state svolte particolarmente bene si guadagna un "+" che annulla un eventuale "-" I voti risultanti sono: - = A- -- = A/B --- = B+ ---- = B ----- = B- ------ = B/C ecc... Codice corretto, spiegazione depth/breadth esauriente: A Spiegazione Codice con errori/omissioni non gravi: - per ogni errore. Errori non gravi sono ad esempio: descrizione dei nodi dell'albero sbagliata. La discussione dfs/bfs c'e', ma e' insoddisfacente: -- Il predicato "move" opera su blocchi e non su configurazioni e le configurazioni sono implicitamente mantenute nella base di dati (pero' move e' definito ragionevolmente): -- Il predicato "move" opera su blocchi e non su configurazioni contiene anche degli errori non gravi: --- Manca la discussione dfs/bfs: --- Il predicato "move" e' gravemente sbagliato/incompleto: ----- Il predicato "move" non e' definito: ------ E2.1 Metainterprete implementato ragionevolmente (ok la struttura generale, ok meccanismo per proporre solo clausole non usate precedentamente) ma alcuni predicati (chiedere a utente, rimuovere elemento da una lista) non sono implementati: A [Rebagliati] Metainterprete implementato ragionevolmente (ok struttura, ok meccanismo per chiedere all'utente, ok idea di tenere traccia delle clausole gia' usate) ma il meccanismo di come proporre all'utente solo le clausole non ancora usate e' sbagliato o non implementato: B+ [Baldassarre, Carrega, Lombardi, Lorenzelli, Rossato] Metainterprete implementato ragionevolmente (ok struttura, appena accennato il meccanismo per chiedere all'utente) ma manca l'idea di come si possano proporre all'utente solo le clausole non ancora usate: C+ [Gandus, Spiniello] Metainterprete parzialmente implementato, presente una vaga idea di come si possano proporre all'utente solo le clausole non ancora usate: C- [Parrella, Vassallo] E2.2 Implementazione corretta: A [Carrega, Del Gaizo, Lorenzelli] Implementazione con errori/imprecisioni non gravi: A- oppure A/B a seconda degli errori [Gandus, Rossato, Spiniello] C'e' l'idea di come implementare il metainterprete ma con errori e omissioni mediamente gravi: B (con + o - a seconda degli errori) [Baldassarre, Lombardi, Rebagliati] C'e' l'idea di come implementare il metainterprete ma con errori e omissioni gravi: B/C [Parrella, Vassallo