Scaletta Cenni di computabilità Steano Mizzaro Dipartimento di matematica e inormatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@dimi.uniud.it Programmazione, lezione 12a 12 novembre 2007, domande, risposte Algoritmi, programmi, linguaggi di programmazione Algoritmi che calcolano unzioni computabili e non Steano Mizzaro - Computabilità 2 Cosa a un programma? Fornisce risposte a domande Qual è la radice quadrata di 2345? Qual è il massimo comun divisore di 234 e 36? Fornisce risposte a una classe di domande Programma per calcolare la radice quadrata di un numero Risolve problemi Deinizioni (1/2) Problema = insieme di domande omogenee Esempi: P1 = Calcolare sqrt(n) P2 = Calcolare mcd(x,y) Domanda ( istanza di un problema ) Esempi: I1 = Quanto vale sqrt(341)? I2 = Quanto vale mcd(48,36)? Steano Mizzaro - Computabilità 3 Steano Mizzaro - Computabilità 4 e domande Deinizioni (2/2) Risposta (a una domanda) = soluzione di un istanza Soluzione di un problema = metodo generale che permette di ornire in modo uniorme la risposta a tutte le istanze di un problema = Algoritmo risolvente Steano Mizzaro - Computabilità 5 Steano Mizzaro - Computabilità 6 Steano Mizzaro 1
Algoritmi e programmi Algoritmo Metodo, procedimento, sequenza di passi Astratto Non si può toccare/vedere Programma Rappresentazione precisa di un algoritmo in un certo linguaggio di programmazione Per eseguire/comunicare un algoritmo bisogna rappresentarlo!! e Steano Mizzaro - Computabilità 7 Steano Mizzaro - Computabilità 8 Algoritmi e programmi,, programmi Progr. per Progr. per Progr. per Progr. per Steano Mizzaro - Computabilità 9 Steano Mizzaro - Computabilità 10 Il calcolatore È un: Esecutore di rappresentati da programmi mediante un linguaggio di programmazione Esecutore universale di Un algoritmo va eseguito su dati Es.: calcola sqrt(897) Calcolatore, programma e dati Problema Algoritmo Istanza Programma Dati Risultati Calcolatore Steano Mizzaro - Computabilità 11 Steano Mizzaro - Computabilità 12 Steano Mizzaro 2
Finitezza, univocità, eettività Un programma/algoritmo deve essere: Finito (# inito di istruzioni) i (x == 0) return 1; else i (x == 1) return 2; else i (x == 2) return 3; else i (x == 3) return 4; else i (x == 4) return 5; Univoco, non ambiguo (x x = x + un po ) Eettivo: deve esistere un calcolatore in grado di eseguire le istruzioni prossimavincitaallotto() Steano Mizzaro - Computabilità 13 Curiosità legittime Ma con gli si può are tutto? E se no, che cos è che si può are? E quello che si può are dipende dal linguaggio di programmazione scelto? A queste domande risponde la teoria della computabilità (tà) Approccio ormale, matematico, preciso Steano Mizzaro - Computabilità 14 4 Domini e codomini Funzione = legge che associa a un elemento di un insieme (dominio) un elemento di un insieme (codominio) b a d codominio 3 2 5 3 64 9 5 dominio c e Steano Mizzaro - Computabilità 15 1 codominio dominio Steano Mizzaro - Computabilità 16 Algoritmi calcolano unzioni Algoritmo per calcolare la radice quadrata calcola la unzione che associa a un numero la sua radice quadrata Algoritmo di Euclide calcola la unzione che dati 2 numeri restituisce il loro MCD Sembra riduttivo, ma codiica Quali unzioni? : R R: analisi matematica La teoria della computabilità si occupa delle unzioni : N N Parziali Ad esempio programma con un ciclo ininito che non dà nessun output Funzione non deinita Steano Mizzaro - Computabilità 17 Steano Mizzaro - Computabilità 18 Steano Mizzaro 3
Le unzioni : N N Curiosità legittime 2 : N N De.: Funzione calcolabile (computabile) = unzione per cui esiste un algoritmo che la calcola Ora, inalmente, possiamo porci una domanda precisa: Le unzioni : N N sono tutte? Data una qualsiasi unzione, esiste sempre un algoritmo che la calcola? MCD: ok. Somma: ok. Radice quadrata:ok. Ma in generale? Steano Mizzaro - Computabilità 19 Steano Mizzaro - Computabilità 20 No! e non No? Voglio un esempio 2 : N N Il problema della terminazione (Halting problem) Trovare un algoritmo A in grado di dirci se un qualsiasi algoritmo A i su dati D termina. (un algoritmo potrebbe non terminare perché entra in un ciclo ininito) non Steano Mizzaro - Computabilità 21 Steano Mizzaro - Computabilità 22 Il problema della terminazione Una soluzione? Descrizione di un algoritmo A i Dati di ingresso D Algoritmo A? Calcolatore Termina / Non termina Beh, potrei ar eseguire A i sui dati e attendere Se termina so che termina Se dopo 2 ore non ha terminato so che non ha terminato in due ore ma quanto devo aspettare?! Non va! Teorema: A non esiste Steano Mizzaro - Computabilità 23 Steano Mizzaro - Computabilità 24 Steano Mizzaro 4
non e problemi non risolubili,, programmi non risolubili P 1 P 2 P 3 P 4 risolubili non : N --> N 2 Steano Mizzaro - Computabilità 25 Steano Mizzaro - Computabilità 26 5 ] Progr. per Progr. per P2(mcd(X,Y)) risolubili mcd(21,63) mcd(135,207) P1( N ) P3() 27 144 : N N 2 [mcd(x,y)] 2 (21,63) 2 (135,207) [] [ N (27) (5) 1 (144) A3: gli per P3 A1: gli per P1 A2: gli, e programmi 2 per P2 (Euclide) l'algoritmo di Euclide l'algoritmo l'algoritmo Rierimenti http://www.dimi.uniud.it/mizzaro/papers/ algoritmo.pd Capp. 3 e 4 Sostituite: Uicio / Calcolatore Impiegato / Processore Diagramma di lusso / Programma Steano Mizzaro - Computabilità 27 Steano Mizzaro - Computabilità 28 Riassunto, domande, risposte Algoritmi, programmi, linguaggi di programmazione Algoritmi che calcolano unzioni computabili e non Steano Mizzaro - Computabilità 29 Steano Mizzaro 5