Sistemi basati su conoscenza Esercizi Prolog

Slides:



Advertisements
Presentazioni simili
DB -Algebra Relazionale
Advertisements

Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME HOSTTYPE Per visualizzare il valore di tutte le variabili dambiente si usa il comando set.
Precorso di Matematica
Analizzatori Lessicali con JLex
Linguaggi di programmazione
File System Cos’è un File System File e Directory
SPECIFICA LOOSE DELLE MAPPE FINITE v. 1.1 Gianna Reggio
Algoritmi e Programmazione
Ciao! Sono Bart Simpson e questa è la mia famiglia:
Ripasso dei parenti Capitolo 8.
Interfaccia del file system
Il ragionamento classico
Intelligenza Artificiale 2 Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
FMZ, Giugno 2001 Parsing del linguaggio naturale Fabio Massimo Zanzotto Università di Tor Vergata.
Tail recursion: esempio
Esercizi di esonero (a.a. 2007/2008) Compito C, terzo esercizio Data una sequenza di caratteri s1 ed una stringa s2 diciamo che s1 è contenuta in s2 se.
LISP.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Fogli elettronici - Spreadsheet
Fogli di Calcolo Elettronici Corso di Informatica Generale per SMID a.a. 2002/03 docente: Giorgio Delzanno (DISI)
SPECIFICA DELLE MAPPE FINITE Gianna Reggio
CAPITOLO 7.
Esercizi Interi.
Programmazione logica
Ingegneria della conoscenza e sistemi esperti Dario Bianchi, 1999 Conoscenza e ragionamento Logica dei predicati del primo ordine.
Ingegneria della conoscenza e sistemi esperti Dario Bianchi, 1999 Logica dei predicati del primo ordine.
Vettori e Funzioni 3 Maggio Esercizio 1 Si scriva un programma in linguaggio C che, dopo aver acquisito il contenuto di un vettore di interi da.
1 XPath. 2 What is XPath? XPath is a syntax for defining parts of an XML document XPath uses paths to define XML elements XPath defines a library of standard.
JESS: Esercizi Ettore Colombo Dicembre 2006 Ingegneria della Conoscenza e Sistemi Esperti.
Biologia Computazionale - Algoritmi
GLI INSIEMI Presentazione a cura della Prof.ssa anNUNZIAta DI BIASE
GLI INSIEMI 2^PARTE LE OPERAZIONI.
1.Scrivere una funzione per cercare un numero x in una lista circolare di interi. La funzione deve restituire NULL se il numero non esiste. 2.Scrivere.
15 maggio 2002 Avvisi: Ultima lezione: mercoledì 29 maggio II Esonero: mercoledì 5 giugno, ora da stabilire.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
MODELLO LOGICO DEI DATI
Com’é la tua famiglia?.
Esecuzione dei programmi Prolog Liste ed operatori aritmetici
Il primo passo: I basilari del Prolog
Introduzione ai linguaggi formali e alle stringhe
Recuperare tutte le risposte Gestione di input-output Fabio Massimo Zanzotto (slides di Andrea Turbati)
Strategie per il problem solving
The Family La Famiglia Sostantivi maggiormente utilizzati per esprimere il rapporto di parentela: Father (Padre) Mother.
AB =x/xA  xB Unione tra insiemi o
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Tail recursion: esempio
La mia famiglia.
1 Esempi domande di esame. 2 Dato il seguente programma #include int main(){ int *p,j=9,i=5; p=&j; *p=i; printf("%d %d %d\n", i,j,*p); scanf("%d",p);/*
FMZ 1 Sistemi basati su conoscenza Costruzione automatica di ontologie di dominio Dott. Fabio Massimo Zanzotto a.a
CORSO DI PROGRAMMAZIONE II Lezione 22
Ordinamento e Operazioni su Strutture Dati Fabio Massimo Zanzotto.
Esercitazioni su liste
Recuperare tutte le risposte Gestione di input-output Fabio Massimo Zanzotto (slides di Andrea Turbati)
Percorsi su grafi, Sottoalberi Comuni e Programmazione Dinamica Fabio Massimo Zanzotto.
FMZ Sistemi basati su conoscenza Da logica proposizionale a logica del primo ordine Dott. Fabio Massimo Zanzotto a.a
FMZ Sistemi basati su conoscenza Prolog (1) Dott. Fabio Zanzotto a.a
Cenni di Logica Fabio Massimo Zanzotto. Calcolo proposizionale.
Esercizio Si legga una sequenza di numeri interi da tastiera (terminatore: 0), quindi: Creare lista L1 con inserimento in testa; cons Creare lista L2 con.
Controllare Tipi Dati Decomporre fatti Controllare il database Fabio Massimo Zanzotto (slides di Andrea Turbati)
Intelligenza artificiale.. un assaggio. Oggi modelleremo la famiglia diPaperino in base alle regole di Prolog Ripensiamo al nostro lavoro.
1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Corso di lingua inglese a cura della Prof.ssa Luisa PONTILLO
GLI INSIEMI SI INDICA CON IL NOME INSIEME MATEMATICO
Ti presento… (Le presento… / Vi presento) la mia famiglia *
FAMILY by maestra Pamela LEARNING ENGLISH.
Esercizi.
Ripasso dei parenti Capitolo 8.
Transcript della presentazione:

Sistemi basati su conoscenza Esercizi Prolog Dott. Fabio Massimo Zanzotto a.a. 2001-2002

Esercizi FATTI: male(…). female(…). father(Father,Son). mother(Mother,Son).

Esercizio X è uno dei genitori di Y. part_of_parent(X,Y). father(X,Y). mother(X,Y).

Esercizio X,Y sono i genitori di Z. parents(X,Y,Z). parents(X,Y,Z):- father(X,Z), mother(Y,Z). mother(X,Z), father(Y,Z).

Esercizio X è fratello di Y. brother(X,Y). brother(X,Y):- mother(Z,X), mother(Z,Y), male(X).

Esercizio X è zia di Y. aunt(X,Y). aunt(X,Y):- female(X), mother(Z,Y), sister(X,Z). father(Z,Y),

Esercizio a,b,c,d… sono punti in un piano e i fatti sono del tipo line(X,Y). Definire una regola che stabilisca se quello in memoria è un triangolo. triangle:- line(A,B), line(B,C), line(C,A). Proviamo sui fatti: line(a,b). line(a,c). line(c,b).

Esercizio a,b,c,d… sono punti in un piano e i fatti sono del tipo line(X,Y). Definire una regola che stabilisca se quello in memoria è un triangolo. triangle:- connected(A,B), connected(B,C), connected(C,A). connected(A,B):- line(B,A). line(A,B).

Esercizio a,b,c,d… sono punti in un piano e i fatti sono del tipo line(X,Y). Definire una regola path(X,P,Y). che sia vera quando esiste un percorso di due passi che tocchi il punto P. path(A,P,B):- line(A,P), line(P,B).

Esercizio b a d c Ci sono due soluzioni possibili!! path(A,P,B):- line(A,P), line(P,B). b a d c Ci sono due soluzioni possibili!!

Tipi di dato: associate ai termini Caratteri Interi Reali Stringhe Liste

Funzioni built-in Gestione I/O Gestione Regole write(predicate) tell(file_name) told Gestione Regole assert(fatto) retract(fatto)

Operatori Operatori matematici Comparazione =/= non uguale is : assegnamento + - * \ A is B + C. Comparazione =/= non uguale

Le liste Definizione Accedere ad una lista [Head¦Tail] [a1,a2,…,an] Accedere ad una lista [Head¦Tail] Esempi di head-tail LIST Head Tail [a,b,c] a [b,c] [[a,b,c],d,e] [a,b,c] [d,e] [a] a [] [] nessun valore

Esercizi sulle liste Contare gli elementi di una lista member append: unire due liste rivoltare una lista Usiamo la lista per modellare gli insiemi: unione intersezione

Esercizi Lunghezza lenght(Lista,N). vera se N è il numero di elementi della lista. lenght([],0). lenght([Elemento|Resto],N):- lenght(Resto,M), N is M + 1.

member(Elemento,Lista). Esercizi Membro della lista member(Elemento,Lista). vera se Elemento è un elemento della lista. member(Elemento,[Elemento|_]). member(Elemento,[_|Resto]):- member(Elemento,Resto).

Esercizi Concatenazione tra liste append(L1,L2,L12). vera se L12 è la concatenazione di L1 e L2. append([],L2,L2). append([El|Resto],L2,[El|L12]):- append(Resto,L2,L12).

last_element(List,Rest,LastEl). Esercizi Restanti Ultimo elemento last_element(List,Rest,LastEl). vera se List è una lista e LastEl il suo ultimo elemento e Rest il resto rella lista. last_element([El],[],El). last_element([El|Rest],[El|RestB],Last):- last_element(Rest,RestB,Last).

reverse(A,A_Reversed). Esercizi Reverse di una lista reverse(A,A_Reversed). vera se A è rivoltata rispetto a A_Reversed. reverse([],[]). reverse([A|ARest],B):- last_element(B,BRest,A), reverse(ARest,BRest).

reverse(A,A_Reversed). Esercizi Reverse di una lista reverse(A,A_Reversed). vera se A è rivoltata rispetto a A_Reversed. reverse([],[]). reverse(A,B):- reverse(A,[],B). reverse([],A,B). reverse([A|ARest],C,B):- reverse(ARest,[A|C],B).

Esercizi Intersezione di due insiemi intersect(A,B,AIB). vera se AIB è l’intersezione di A e B. intersect(A,[],[]). intersect([],B,[]). intersect(A,[B|BR],[B|AIB]):- memeber(B,A), intersect(A,BR,AIB).

Esercizi Unione di due insiemi union(A,B,AUB). vera se AUB è l’unione di A e B. union(A,[],A). union(A,[B|BR],[B|AIB]):- intersect(A,BR,AIB).

Esercizi Verifica se una lista è un insieme set(A). vera se A è un insieme, ovvero A non contiene elementi duplicati. set([]). set([A|B]):- \+member(A,B), set(B).

Esercizi Lista equivalente senza duplicati duplicates(A,B). vera se A contiene una sola volta tutti gli elementi di B.

Riflessioni \+ not Implica la ricerca in tutto lo spazio delle soluzioni per affermare che sia vero.

average(ListaDiNumeri,Media). Esercizi Media average(ListaDiNumeri,Media). vera se Media è la lista dei numeri in ListaDiNumeri. average(ListaDiNumeri,Media):- somma(ListaDiNumeri,N), lenght(ListaNumeri,M), Media is N/M.

Esercizi somma([],0). somma([El|Rest],N):- lenght(Rest,M), N is El + M.