130 likes | 240 Views
Seminario Lugo 7/05/14. Alberi soluzione Pseudolinguaggi di programmazione. Il metodo Problem solver. Metodo generale per trovare procedimenti di soluzione per problemi del tipo Dati a, b, c trovare (o dedurre) g
E N D
Seminario Lugo 7/05/14 Alberi soluzione Pseudolinguaggi di programmazione
Il metodo Problem solver Metodo generale per trovare procedimenti di soluzione per problemi del tipo Dati a, b, c trovare (o dedurre) g Contesto: sistemi in cui il procedimento è rappresentato da un elenco di regole di deduzione, di calcolo e di inferenza rappresentabili per esempio con un termine regola(<sigla>,<antecedenti>,<conseguente>) regola(7,[a,b,c],g).
Formulazione regola(1,[e,f],b). regola(2,[m,g],n). regola(3,[m],f). regola(4,[m,f],g). regola(5,[f,g],c) regola(6,[g,q],a). Per esempio, noti gli elementi e, f, m con la regola 1 si può dedurre b e col la 4 si deduce g. Un procedimento di deduzione (o di calcolo) è rappresentato da un elenco di regole da applicare. ed è descritto dalla lista delle sigle di queste regole. Dato m, trovare c. [3,4,5] no (3,4,5) no [3, 4, 5] Ipsa forma est substantia
Una regola può essere rappresentata come un albero (rovesciato) radice g n f 2 4 5 foglie m f m g m
Problema: dato m trovare un procedimento per dedurre n Trovare una regola per dedurre n n (?)
Problema: dato m trovare un procedimento per dedurre n Trovare una regola per dedurre n Trovare unaq regola per dedurre g n 2 m g (?)
Problema: dato m trovare un procedimento per dedurre n Trovare una regola per dedurre n Trovare una regola per dedurre g Trovare una regola per dedurre f n 2 m g 4 m f (?)
Problema: dato m trovare un procedimento per dedurre n Ricerca terminata: tutte le foglie sono note. n 2 m g 4 m f 5 m La lista soluzione è [5,4,2]
Pseudolinguaggio La procedura e le variabili procedure PROVA1; variables A, B, C integer; input A, B; C A + B; A C + B; B A + C; C A + B; output A, B, C; endprocedure; In input vengono forniti i seguenti dati. A = 3, B = 5. Quali valori vengono restituiti in output?
Pseudolinguaggio L’alternativa procedure PROVA2; variables A, B, C, K integer; input A, B; C A × B; if A > C then K A - C; else K C - A; endif; If A = B then AA + B; output A, C, K; endprocedure; In input A = 1, B = 1; trovare i valori di output.
Pseudolinguaggio La ripetizione “semplice” procedure PROVA1; variables A, B, J integer; A 0; B 1; for J from 1 to 4 step 1 do A A + J; B B x J; endfor; output A, B; endprocedure; ? A = ; B = .
Pseudolinguaggio Ripetizioni annidate procedure PROVA1; variables A, B, J, I integer; Input B; for J from 1 to 4 step 1 do A 0; for I from 1 to 6 step 1 do A I+J+A; endfor; if A > B then output A; endif; endfor; endprocedure; Se B = 20, qual è il primo valore di A reso ndisponibile in output?
Pseudolinguaggio Ripetizione condizionata procedure PROVA1; variables A, B, J, I integer; Input B; for J from 1 to 4 step 1 do A 0; I 0; while A < B do I I + 1; A I+J+A; endwhile; output A, I; endfor; endprocedure; Se B = 10, quali sono i 4 valori di A e I resi in output?