Centro Interdipartimentale di Logica e Applicazioni Dicembre 2003

Slides:



Advertisements
Presentazioni simili
I Linguaggi di programmazione
Advertisements

MACCHINA di TURING e CALCOLABILITA’
2. Introduzione alla probabilità
Intelligenza artificiale
IL COMPUTER.
UNIVERSITÀ DEGLI STUDI DI PARMA
Milano, 22 febbraio 2008 Rappresentazione digitale: dallinformazione ai dati Goffredo Haus LIM - Laboratorio di Informatica Musicale, scientific director.
Intelligenza Artificiale
Intelligenza Artificiale - AA 2001/2002 Logiche sfumate - 1 Intelligenza Artificiale Breve introduzione alla logiche sfumate (fuzzy logics) Marco Piastra.
Società dell’informazione
1 2. Introduzione alla probabilità Definizioni preliminari: Prova: è un esperimento il cui esito è aleatorio Spazio degli eventi elementari : è linsieme.
Deduzione naturale + Logica & Calcolabilità
Le reti KL-ONE Sono un esempio di rappresentazione della conoscenza a reti semantiche. Sono state sviluppate verso la fine degli anni ’70 sulla base di.
Metodi Quantitativi per Economia, Finanza e Management Lezione n° 11.
MACCHINE DI TURING Le macchine di Turing sono dispositivi astratti per la manipolazione di simboli, ideati nel 1936 dal matematico e logico britannico.
Competenze e Assi culturali Reggio Emilia, 11 maggio 2009.
Carlo Culla & Marco Vezzani
Programmazione a vincoli: algoritmi di scheduling in OPL
LA CRISI DEI FONDAMENTI DELLA MATEMATICA
Modelli simulativi per le Scienze Cognitive
Algoritmi e Strutture Dati
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
Le categorie possono essere definite operativamente, trasformate in scale o questionari, adattate al contesto Le scale valutative esistenti possono essere.
CAPI 04 Sviluppo di un modello meteorologico ad altissima risoluzione per simulazioni su orografia complessa e su aree urbane Luca Bonaventura Davide Cesari.
Università degli Studi di Perugia - Dipartimento di Ingegneria Industriale Prof. Francesco Castellani -
Alcune definizioni dellAI Dario Bianchi 1999 Sistemi che pensano come gli esseri umani: modellizzazione cognitiva. Sistemi che pensano razionalmente: le.
L’AUTOMA ESECUTORE Un automa capace di ricevere dall’esterno una descrizione dello algoritmo richiesto cioè capace di interpretare un linguaggio (linguaggio.
Intelligenza Artificiale - AA 2002/2003 Logica formale (Parte 2) - 1 Intelligenza Artificiale Breve introduzione alla logica classica (Parte 2) Marco Piastra.
VHDL come strumento di progetto di circuiti digitali
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
ALGORITMI E COMPLESSITÀ
May 2011 Davide Maccarone The information contained in this document is to be considered strictly confidential.Any retaining, dissemination, distribution.
Descrizione Semantica ad Alto Livello di Ambienti Virtuali in X3D
Linguaggi e Modelli Computazionali LS - Prof E.Denti
Cosa sono i sistemi distribuiti Prof. Andrea Omicini Corso di Sistemi Distribuiti A.A. 2001/2002 Parte I.
Biologia Computazionale
MODELLO LOGICO DEI DATI
Uso dei Modelli in Statistica
Grammatiche, Linguaggio e Automi R. Basili TAL - a.a
Biologia Computazionale
Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 3 -Modelli di fase d’analisi Ernesto Damiani Università degli Studi.
Pensieri e suggestioni Roberto Baglioni. Perché il trittico è difficile: relazioni tra le immagini Perché il trittico è difficile: relazioni tra le immagini.
DAL WEB AL SEMANTIC WEB Aspetti teorici e tecnologici Carmagnola Francesca Dipartimento Informatica C.so Svizzera 185, Torino
P roge t GRAMMATICA TECNICA STRUMENTI taz i one. Il termine PROGETTAZIONE (in inglese design) indica l'attività, promossa dal progettista alla base della.
FMZ Sistemi basati su conoscenza Prolog (1) Dott. Fabio Zanzotto a.a
Introduzione: informatica 18/2/2013 Informatica applicata alla comunicazione multimediale Cristina Bosco.
4/21/20151 Metodi formali nel software a.a.2013/2014 Prof.Anna Labella.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
(Grilli Masciandaro e Tabellini, GMT)
Intelligenza Artificiale: possono le machine ragionare?
1 Interpretazione astratta: un approccio sistematico all’analisi statica.
La nuova Teoria della moltiplicazione, somma e sottrazione di Cristiano Armellini
ANNUNCIO DI SEMINARIO Il giorno Venerdi' 21 Maggio 2004 alle ore 11:30 presso l'Aula C3.4 della Facolta' di Scienze Matematiche Fisiche e Naturali dell'Universita'
1 Ordinamento (Sorting) INPUT: Sequenza di n numeri OUTPUT: Permutazione π = tale che a 1 ’  a 2 ’  … …  a n ’ Continuiamo a discutere il problema dell’ordinamento:
Algoritmi.
AOT Lab Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Intelligenza Artificiale Rappresentazione della Conoscenza e Ragionamento.
1 Ordinamento (Sorting) Input: Sequenza di n numeri Output: Permutazione π = tale che: a i 1  a i 2  ……  a i n Continuiamo a discutere il problema dell’ordinamento:
Intelligenza Artificiale 1 Gestione della conoscenza lezione 15 Prof. M.T. PAZIENZA a.a
Il software Claudia Raibulet
Automi temporizzati.
Università degli Studi di Firenze Facoltà di Ingegneria Dipartimento di Sistemi e Informatica Corso di Laurea in Ingegneria Informatica Modelli e strumenti.
Biologia Computazionale Giulio Pavesi
18 ottobre 2010Il Fenomeno Sonoro1 Misura della pressione acustica.
L'ORA DEL CODICE. Il lato scientifico-culturale dell’informatica, definito anche pensiero computazionale, aiuta a sviluppare competenze logiche e capacità.
Buon giorno, ragazzi oggi è il quattro aprile duemilasedici.
Pubblicato su piattaforma Twinspace (eTwinning) Introduzione Il materiale utilizzato è stato in gran parte cartoncino, cartone e stoffa di riciclo Materials.
Settimana dal 7 al 13 dicembre Cos'è l'Ora del Codice L'Ora del Codice, in inglese The Hour of Code, è un'iniziativa nata negli Stati Uniti nel.
ROMA 23 GIUGNO 2016 AREA TEMATICA 1. PROSPETTIVE DEI SISTEMI STATISTICI Validation: un approccio metodologico comune per la validazione dei dati e l’automazione.
Tratto da: Anna Labella (a cura), E questo tutti chiamano Informatica, Manuali Scienze e Tecnologie – Formazione, La Sapienza Roma.
Macchine Parlanti A.A. 2018/19 Titolo progetto (es. orologio parlante senza display) template per il progetto finale del corso di Documentazione Linguistica.
Transcript della presentazione:

Centro Interdipartimentale di Logica e Applicazioni Dicembre 2003 che catturano Linguaggi per la descrizione di classi di complessità computazionale (orologi, smash, punto e virgola, circoli)

classi di complessità computazionale classi di complessità computazionale  modelli di calcolo (macchina di Turing) + limiti espliciti sulle risorse temporali o spaziali. possiamo descrivere le classi con linguaggi, piuttosto che con modelli di calcolo? quali restrizioni dobbiamo imporre ai linguaggi? esiste un principio comune a tutte le restrizioni?

1964 - Alan Cobham The intrinsic computational difficulty of functions “is it harder to multiply than to add?” indipendenza da algoritmo e modello analisi metamatematica: proof systems, struttura delle dimostrazioni e adeguatezza dei sistemi analisi metanumerica: sistemi computazionali e categorie di macchine complessità computazionale  classi di funzioni Ma quale classe di funzioni??

1953 - A. Grzegorczyk Some classes of recursive functions … la candidata potrebbe essere la gerarchia di Grzegorczyk! E0 = x+y E1 = x*y E2 = xy E3 = xx...x (x volte) E3 = xx...x (xx...x volte) E0  E1  E2  E3 ... ottenuta come chisura rispetto a composizione e ricorsione limitata  Ei = PR

t(n) indica il tempo, s(n) lo spazio fEk esiste una TM che calcola f con  in Ek esiste una TM che calcola f con  in Ek f<g (f è “più semplice” di g)  fEk, gEh, con k<h l’implicazione contraria NON è vera! … sapere che una funzione è in una classe non è molto indicativo della sua complessità ...

La prima classificazione di polytime. 0, ik, s, 2|x||y| f(x) = h(g(x), …,g(x)) ricorsione limitata: indecidibile f(0,x)=g(x) f(yi,x)=hi(x,y,f(x,y)) con f(y,x)  k(y,x)

1988 - Harold Simmons The realm of primitive recursion “ it is known that many complex constructions are reducible to primitive recursion. The question is: why is this so? there is an illuminating proof of this fact? how far can these refinement be pushed and still remain in the realm of the primitive recursion?”

1988 - Harold Simmons The realm of primitive recursion f(0,x)=g(x) f(r+1,x)=H(r,x ; f(r,)) a noi interessa il punto e virgola; divide le variabili in normal e dormant è un funzionale; Simmons trova la (giusta) classe dei funzionali in cui definire H

una piccola digressione: come si fa l’addizione? e la moltiplicazione? (0,x)=x (y+1,x)=((y,x))+1 (0,a)=0 (b+1,a)=(a,(b,a)) (3,5)=(5,(2,5)) cosa so di questa funzione? so come calcolarla?

c’è un altro modo per calcolare il prodotto... (0,x)=x (y+1,x)=((y,x))+1 (0,a)=0 (b+1,a)=( (b,a),a) (3,5)=((2,5),5) quante volte devo applicare il successore a 5? (2,5) volte! Sto definendo la funzione prodotto in termini di se stessa.

predicativo - impredicativo la prima definizione di  è predicativa la seconda no: definisco  in termini di se stesso Non ci sorprendiamo del fatto che in Simmons la prima definizione di  sia legittima, la seconda no. E osserviamo che NON possiamo definire l’esponente (x,2)=2x in modo predicativo: (0,2)=1 (y+1, 2)=((y,2), (y,2))

1992 - Bellantoni & Cook - A new recursion-theoretic characterization of the polytime functions Possiamo usare gli strumenti forniti da Simmons (normal and dormant variables) per caratterizzare Polytime? Possiamo fornire una caratterizzazione predicativa, rinunciando alla ricorsione limitata?

f(yi,x ; a) = hi(y,x ; a,f(y,x ; a)) 1992 - Bellantoni & Cook - A new recursion-theoretic characterization of the polytime functions f(x,… ; y, ...) normal safe 0, p, s(;a), p(;a), if(;a,b,c) f(0,x ; a) = g(x ; a) f(yi,x ; a) = hi(y,x ; a,f(y,x ; a)) f(x ; a) = h(r(x ;) ; t(x ; a)) initial functions safe recursion safe composition

Polytime = chiusura delle funzioni iniziali sotto ricorsione e composizione safe, senza input safe. Riscriviamo somma e prodotto con la safe recursion: (0 ; x) = x (y+1 ; x) = s( ; (y ; x)) (0,x ; ) = 0 (y+1,x ; ) = (x ;  (y,x ; ))

funzioni iniziali + safe rec + safe comp = Polytime. Abbiamo una caratterizazione predicativa: funzioni iniziali + safe rec + safe comp = Polytime. Cosa succede se violiamo il vincolo di non trasportare le variabili dalla zona safe a quella unsafe? iniziali + safe rec + safe comp + k violazioni = Ek k violazioni  k-ma classe di Grzegorczyk !!

critica a questo approccio ... ... anche se la ricorsione safe riesce a catturare Polytime, lo fa passando attraverso il modello di Turing, in modo inefficiente … ...ad esempio, semplici ordinamenti (polinomiali) non possono essere descritti con la ricorsione safe semplici funzioni (come il minimo) sono calcolate con complessità troppo alta.

Martin Hofmann - The strength of non-size-increasing computation insert(x, nil) = cons(x,nil) insert(x,cons(y,l)) = if x<y then cons(x,cons(y,l)) else cons(x,insert(x,l)) sort(nil) = nil sort(cons(x,l)) = insert(x,sort(l)) questo algoritmo non è nella forma della safe recursion.

Loic Colson - Intensional aspects of functional systems min(0,y) = 0 min(s(x),0) = 0 min(s(x),s(y)) = s(min(x,y)) il tempo di calcolo di min è O(min(x,y)) min è ricorsiva primitiva? min’(x,y) = if(sub(x,y),y,x) il tempo di calcolo di min’ è O(y) O(10,1016) = 1016 O(1016,10) = 10. Come facciamo a conoscere il più piccolo fra i due input, se stiamo ancora definendo min?

the programming style we employ (functional, imperative, ...) on the 1999 - Neil Jones - LOGSPACE and PTIME characterized by programming languages “… what is the effect of the programming style we employ (functional, imperative, ...) on the efficiency of the programs we can possibly write?”

L. Kristiansen & K.H. Niggl - On the computational complexity of imperative programming languages un linguaggio che lavora su stack: pop(X) push(a,X) nil(X) P1;P2 if top(X)a [P] foreach X [P] sequenza selezione iterazione

tre esempi di stack program (1) P1  foreach X [foreach X [foreach X [push(a,Y)]]] se X = v, dopo l’esecuzione di P1 si ha Y = a|v|3

tre esempi di stack program (2) P2  foreach X [nil(Z); foreach Y [push(a,Z); push(a,Z)]; nil(Y); foreach Z [push(a,Y)]] se X = v, dopo l’esecuzione di P2 si ha Z = a2|w|

tre esempi di stack program (3) P3  nil(Y); push(a,Y); nil(Z); foreach X [foreach Y [ push(a,Z); push(a,Z)];push(a,Y)] se X = v, dopo l’esecuzione di P3 si ha Z = a|v|2

Diciamo che P2 ha k-measure pari a 1. cosa produce (in P2) la crescita esponenziale? P2  foreach X [nil(Z); foreach Y [push(a,Z); push(a,Z)]; nil(Y); foreach Z [push(a,Y)]] c’è un circolo fra Y e Z; non accade in P1 o P3. Diciamo che P2 ha k-measure pari a 1.

Diciamo che P2 ha k-measure pari a 2. … la crescita esponenziale in P2 è dovuta alla presenza della struttura circolo… … cosa succede se ci sono due livelli di circoli annidati? Diciamo che P2 ha k-measure pari a 2.

abbiamo una misura del livello di annidamento dei circoli in un programma... k(pop) = k(push) = k(nil) := 0 k(if top(X)a [P]) = k(P) k(P1;P2) = max{ k(P1) ; k(P2) } k(foreach X [P]) = k(P)+1 se in P c’è un circolo k(foreach X [P]) = k(P) se non ci sono circoli in P

… con questa misura il cerchio (quello del nostro ragionamento) si chiude. programmi con k-measure pari a n possono essere simulati da MdT con complessità temporale in En+2 (la n+2esima classe di Grzegorczyk) MdT con complessità temporale in En+2 possono essere simulate da programmi di misura n.

… una obiezione sulla natura dei programmi ... programmi honestly feasible: ogni sottoprogramma può essere simulato da una MdT polinomiale programmi dishonestly feasible: che calcolano una funzione polinomiale, in tempo più che polinomiale che girano in tempo polinomiale, ma qualche sottoprogramma, eseguito separatamente, gira in tempo più che polinomiale.

… ci sono due linee di ricerca: restringere il linguaggio degli stack program (per catturare solo programmi “onesti”) migliorare la misura degli stack program (per catturare il maggior numero possibile di programmi, anche “disonesti”)

Covino & Pani - A refinement of the k-measure for stack programs Fatto: se annidiamo un circolo, la k-measure del programma cresce. Domande: cosa succede se... annidiamo istruzioni che non modificano lo spazio complessivo? annidiamo sottoprogrammi che non modificano lo spazio complessivo? annidiamo circoli che non modificano lo spazio complessivo?

Risposta: non c’è nessuna crescita nella complessità della funzione calcolata ... . … ma la k-measure non se ne accorge !

Per riconoscere questa situazione, definiamo una nuova misura s distinguiamo i circoli in increasing, che fanno aumentare le dimensioni degli stack coinvolti nel circolo stesso not-increasing, che lasciano immutata la dimensione complessiva dei registri Se un circolo è not increasing, s non lo considera.

… abbiamo una migliore classificazione dei programmi (s<k per tutti i programmi dishonest ). stack program con s-measure pari a n possono essere simulati da MdT con complessità temporale in En+2 (la n+2esima classe di Grzegorczyk) MdT con complessità temporale in En+2 possono essere simulate da stack program di misura n.

Buone vacanze !