Elementi di Teoria della Computazione (ETC) MATRICOLE DISPARI Docente: Prof. Luisa Gargano BENVENUTI!
Finalità: Fornire gli elementi di base delle teorie che sono di fondamento all'informatica 1. Computabilità 2. Complessità
Cosa è la Computazione? Treccani Computazione: Il computare e il modo con cui si computa; computo, calcolo. Computare Calcolare, fare il conto di qualche cosa: c. il tempo necessario; metodo di c. gli anni;
Carta e Penna Abaco. Mezzi di Computazione Calcolatori/programmi
Cosa è la Computazione? Possiamo definire la computazione senza far riferimento ad un calcolatore attuale?
Cosa è la Computazione? Possiamo definire la computazione senza far riferimento ad un calcolatore attuale? Possiamo definire la computazione indipendentemente dai limiti odierni della scienza (ingegneria, fisica, )?
Cosa è la Computazione? Possiamo definire la computazione senza far riferimento ad un calcolatore attuale? Possiamo definire la computazione indipendentemente dai limiti odierni della scienza (ingegneria, fisica, )? Possiamo definire formalmente (matematicamente) un calcolatore? Possiamo dimostrare teoremi circa ciò che può o non può essere computato?
Avendo a disposizione risorse (memoria, tempo, ) sufficienti
Avendo a disposizione risorse (memoria, tempo, ) sufficienti un calcolatore può risolvere qualsiasi problema? oppure esistono limiti fondamentali a ciò che si può computare?
Cosa è la Computazione? Treccani Computazione: Il computare e il modo con cui si computa; computo, calcolo. Computare Calcolare, fare il conto di qualche cosa: c. il tempo necessario; metodo di c. gli anni; Computabile : Che si può computare; di cui si può o si deve tener conto In logica matematica e in informatica teorica, detto di una funzione (per es., l insieme dei numeri naturali) che si può calcolare effettivamente, cioè per la quale esiste un procedimento che permette di determinarne i valori; con sign. più concreto si dicono computabili quelle funzioni che, in linea di principio, possono essere calcolate con un elaboratore adeguatamente programmato; la teoria della computabilità (o della ricorsività) studia i limiti teorici di tale possibilità.
Computabilità: Quali problemi possono essere computati? (con qualsiasi macchina, linguaggio, ) Esempi di problemi computazionali Problemi numerici Data una stringa binaria, il numero di 1 è maggiore del numero di 0? Dati due numeri x e y, calcola x+y Dato un intero, risulta x primo? Problemi riguardanti programmi (es. in C) Data una sequenza di caratteri ASCII, rispetta la sintassi del C? Dato un programma in C, esiste un input che lo manda in loop?
Computabilità: Quali problemi possono essere computati? (con qualsiasi macchina, linguaggio, ) Macchine a stati finiti/automi: Quali problemi possiamo risolvere con memoria costante?
Macchina a stati finiti
Distributore di bibite/snack a 50c Accetta monete da 10c e da 20c non da resto, rifiuta moneta troppo grande E (semplice) macchina a stati finiti che opera in accordo all input (monete)
Macchina a stati finiti o Automa finito Astrazione Più semplice modello di calcolo Chip Parte di molti apparecchi elettromeccanici Analizzatori lessicali e sintattici di compilatori,
Computabilità: Quali problemi possono essere computati? (con qualsiasi macchina, linguaggio, ) Macchine a stati finiti/automi: Quali problemi possiamo risolvere con memoria costante?
Computabilità: Quali problemi possono essere computati? Non tutti!!! Esempi di problemi computazionali Problemi numerici Data una stringa binaria, il numero di 1 è maggiore del numero di 0? Dati due numeri x e y, calcola x+y Dato un intero, risulta x primo? Problemi riguardanti programmi (es. in C) Data una sequenza di caratteri ASCII, rispetta la sintassi del C? Dato un programma in C, esiste un input che lo manda in loop?
Computabilità: Quali problemi possono essere computati? Non tutti!!! Es. Dato un qualsiasi programma in C, possiamo stabiliure se termina su ogni input? Risposta: NO input n; while (n!=1) { if (n is even) n := n/2; else n := 3*n+1; } Termina per ogni n>1? 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1.
Computabilità: Modello di computazione indipendente dalla tecnologia presente? Macchine di Turing Ideate da Alan Turing nel 1936. Modello di calcolatore più semplice: - macchina a stati finiti - Nastro (lettura e scrittura) memoria, processore
Macchine di Turing Ideate da Alan Turing nel 1936. Modello di calcolatore più semplice: - macchina a stati finiti - Nastro memoria, processore Scopo: formalizzare in maniera esatta (matematica) il concetto di computazione (indipendentemente dalla potenza di calcolo )
Tesi di Church-Turing: Equivalenza tra programmi e Macchine di Turing Macchine di Turing: Concetto di Computabilità indipendente dalla tecnologia
Tesi di Church-Turing: Equivalenza tra programmi e Macchine di Turing Limiti delle macchine di Turing (e della computazione): Problemi non computabili
Computabilità: Cosa può essere computato? Cosa non può esserlo? (con qualsiasi macchina, linguaggio, ) Dove si trova il confine? Calcolabilità: Quali sono le le risorse minime necessarie (es. tempo di calcolo e memoria) per la risoluzione di un problema?
Lista luoghi con associato il l interesse a visitare il luogo (voto da 0 a 100) Vogliamo ordinare i luoghi in ordine di interesse Facile!
Usando I collegamenti esistenti (metro, bus). Facile?
Prova tutti i siti vicini non ancora visitati
Algoritmi utili in pratica Algoritmi P efficienti: Utilizzano un tempo polinomiale su tutti gli input Algoritmi inefficienti: Utilizzano un tempo esponenziale su qualche input Nota. Definizione indipendente da sviluppo tecnologico Cosa rende un problema facile o meno?
Cosa rende un problema facile o meno?
Le classi P e NP Definizione (informale) della classe P: insieme di problemi risolubili in tempo polinomiale da una macchina di Turing deterministica Tesi Church-Turing insieme di problemi che ammettono un algoritmo efficiente
Le classi P e NP Definizione (informale) della classe NP: insieme di problemi che ammettono un algoritmo efficiente di verifica di una soluzione fornita
Problemi NP-completi Travelling Salesman Problem, 3-coloring di grafi, Scheduling Multiprocessore, Folding Proteine, Programmazione lineare intera: esiste soluzione intera per un sistema del tipo Tutti risolvibili efficientemente o nessuno!
Argomenti di massima: Macchine a stati finiti Macchine di Turing Le classi P e NP
Finalità Computabilità Comprendere la nozione di di computabilità Limiti intrinsechi della computabilità Modelli più semplici di computazione
Risultati attesi: Saprete che è impossibile dimostrare che un programma in C termina fornire una dimostrazione formale di ciò nessun calcolatore futuro può cambiare la situazione
Finalità Computabilità Comprendere la nozione di di computabilità Limiti intrinsechi della computabilità Modelli più semplici di computazione Complessità classificazione problemi solubili: difficoltà riconoscere problemi difficili
Risultati attesi: Saprete Come riconoscere un problema intrattabile se vi capita Es. PROTEIN FOLDING, NEURON TRAINING, AUCTION WINNER-DETERMINATION, MIN-ENERGY CONFIGURATION OF A GAS
Informazioni Pratiche ORARIO: Martedì: 11:00 13:00 Giovedì: 16:00 18:00 Venerdì: 14:00 16:00 N.B.: Tutte le lezioni sono ugualmente importanti!
Informazioni Pratiche SITO WEB: http://www.dia.unisa.it/professori/lg/etc.html di riferimento per il materiale relativo al corso - copie delle slides, esercizi, - date delle prove, - comunicazioni varie, - etc.
Suggerimenti (per superare facilmente l esame) Seguire il corso È più difficile imparare da soli dal libro (ancora di più dalle slide!) Studiare lezione per lezione Gli argomenti diventano più complessi Studiare dal libro di testo Fare gli esercizi
Testo Michael Sipser, Introduction to the Theory of Computation, Course Technology.
Testo Jon Kleinberg, Eva Tardos, Algorithm Design, Pearson
Prove di Esame Prova scritta con esercizi e teoria (nessun materiale ammesso) Eventuale prova orale Requisito minimo: 50% del totale
Prove in Itinere Bonus Prossima lezione
Progamma sintetico Nozioni preliminari Automi Finiti Macchine di Turing Limiti delle macchine di Turing La tesi di Church-Turing Le classi P e NP
Nozioni preliminari Conoscenza del significato dei termini: Definizione, Enunciato, Dimostrazione, Implicazione, Equivalenza,... Familiarità con i vari tipi di dimostrazioni: per contraddizione, prova per induzione, Definizioni delle operazioni logiche AND, OR, NOT. Alfabeti Stringhe Linguaggi
DIMOSTRAZIONE Metodo per stabilire una verità Differente in vari campi Legale: giuria prove processuali Scientifica: esperimenti ripetibili Filosofica: persuasione basata su argomenti plausibili Cartesio: Cogito ergo sum, Deriva esistenza dal fatto di pensare sull'esistenza
PROVA Matematica Una prova formale è una catena di deduzioni logiche che portano ad una affermazione partendo da un insieme di assunzioni
c=cent E=Euro Assunzione 1E=100c 1 c= 0,01 E=(0,1 E) 2 =(10c) 2 =100c=1E?
Dimostrazione c=cent E=Euro 1 c= 0,01 E=(0,1 E) 2 =(10c) 2 =100c=1E ERRATA!!
Affermazione Se a e b sono due numeri reali uguali allora a = 0. Dimostrazione Assunzione a=b
Affermazione errata: Se a e b sono due numeri reali uguali allora a = 0. Dimostrazione sbagliata:
Proposizione: affermazione che può essere vera o falsa Proposizioni matematiche devono riferirsi ad oggetti ben definiti matematicamente (numeri, insiemi, funzioni,...) Devono essere formulate in modo preciso Es. 2 + 3 = 5.
Proposizione: può essere vera o falsa Dimostrazione: Data una proposizione, vogliamo dimostrare che essa è vera.
Es. Proposizione p(n)=n 2 +n+41 è numero primo per ogni n > 1. Come facciamo?
Es. p(n)=n 2 +n+41 è primo per ogni n > 1. Proviamo per qualche valore p(1)=43 primo P(2)=47 primo P(3)=53 primo P(20)=461 primo P(39)=1601 primo VERA?
Es. p(n)=n 2 +n+41 è primo per ogni n > 1. Proviamo per qualche valore p(1)=43 primo P(2)=47 primo P(3)=53 primo P(20)=461 primo P(39)=1601 primo P(40)=40x40+40+41=41x41 FALSO! Dimostrazione per esempi = Esempio di dimostrazione sbagliata
Es. Proposizione a 4 +b 4 +c 4 = d 4 non ha soluzione con a, b, c, d interi positivi Congettura di Eulero del 1769. Dimostrata FALSA 218 anni dopo da Noam Elkies: a = 95800; b = 217519; c = 414560; d = 422481.
Es. Proposizione 313(x 3 +y 3 ) = z 3 non ha soluzione con x,y,z interi positivi FALSA: controesempio più piccolo ha più di 1000 digit!
Es. Congettura di Goldbach (1742) Proposizione P(n): n si può scrivere come somma di due primi per ogni n>2?
Es. Congettura di Goldbach (1742) Proposizione P(n): n si può scrivere come somma di due primi per ogni n>2? Non possimo stabilire VERO provando per un numero finito di valori! Servono altri metodi!
Proposizione: affermazione che può essere può essere vera o falsa Dimostrazione: Data una proposizione, vogliamo dimostrare che essa è vera.
Proposizione P: vera (T) o falsa (F) Operazioni Logiche: NOT, OR, AND Tavole di verità:
Implicazioni: Deduzioni logiche per provare nuove proposizioni a partire da altre note (vere) P Q (P implica Q: se P è vera allora Q è vera ) Es. Se gli asini volano, allora voi capirete questa lezione. E un insulto? Nel linguaggio comune: Si Matematicamente è un affermazione vera! P Q è vera ogni volta che P è falsa o Q è vera
Deduzioni logiche: per provare nuove proposizioni a partire da altre note (vere) (P vera, P Q) ALLORA Q vera (P Q; Q falsa) ALLORA P Falsa
Deduzioni logiche NOT(Q) NOT(P) Equivalente a P Q NOTA NOT(P) NOT(Q) ALLORA P Q: ERRATA
Come dimostrare che P Q: 1. Assumiamo P. 2. mostriamo che Q segue Es. Se 0 < x < 2, allora -x 3 + 4x + 1 > 0. Dim. Assumiamo 0 < x < 2 Scriviamo -x 3 + 4x = x(2 - x)(2 + x) Sappiamo che x, 2 - x, e 2 + x nonnegativi ( >0 ). Allora il loro prodotto è nonnegativo (>0). Sommando 1 abbiamo numero positivo (>0): -x 3 + 4x+1= x(2 - x)(2 + x) + 1 > 0.
P IFF Q equivale a P Q AND Q P.
P IFF Q equivale a P Q AND Q P. Provare iff : 1. Proviamo che P implica Q e vice-versa. 2. Per prima cosa, mostriamo che P implica Q. (Come prima) 3. Secondo passo, mostriamo che Q implica P. (Come prima)
ES.
Schema: Dimostrazione per contraddizione per dimostrare P 1.Assumiamo che l ipotesi P è falsa 2.Dimostriamo che NOT(P) NOT(Q) per qualche Q che sappiamo essere vera 3.A questo punto abbiamo una contraddizione e possiamo concludere che P deve essere vera
Dim. Teorema. La radice quadrata di 2 è un numero irrazionale. Assumiamo che l ipotesi P è falsa, cioè sqrt(2)=m/n (m,n interi primi fra loro) Dimostriamo NOT(P) NOT(Q) [Q: m, n primi tra loro] m 2 =(n sqrt(2)) 2 =n 2 2 m 2 =2n 2 m 2 pari m pari, Poniamo m=2k Allora 2n 2 = m 2= 4k 2 n 2 =2k 2 n pari Abbiamo che n,m entrambi pari m,n hanno fattore comune 2 A questo punto abbiamo NOT(Q) possiamo dedurre che P è falsa (cioè sqrt(2) è irrazionale)
Teorema. La radice quadrata di 2 è un numero irrazionale. Dim. Assumiamo che l ipotesi è falsa, possiamo scrivere a) sqrt(2)=m/n b) con m,n interi primi fra loro Abbiamo m 2 =(n sqrt(2)) 2 =n 2 2 m 2 =2n 2 m 2 pari m pari, Ponendo m=2k si ha 2n 2 = m 2= 4k 2 n 2 =2k 2 n pari Quindi n,m entrambi pari m,n hanno fattore comune 2 che contraddice punto b) possiamo concludere che sqrt(2) è irrazionale.
Dimostrazioni Corrette in Pratica Definire il metodo che si vuole seguire es. Usiamo un distinzione di casi o Ragioniamo per assurdo. Una dimostrazione e` un saggio non un calcolo Approccio errato: sequenza di espressioni senza commenti Una dimostrazione comprensibile e` un saggio inframmezzato da calcoli
Buone dimostrazioni <=> Buoni programmi Stesso rigore necessario per scrivere programmi funzionanti Programma che ''sembra funzionare'' può causare molti problemi Es. Therac 25: macchina per radioterapia che ''ogni tanto'' ha ucciso i pazienti per eccesso di radiazioni (problema software) Es. (Agosto 2004) problema software usato da United e American Airlines ha messo a terra l'intera flotta delle due compagnie
INDUZIONE Data una affermazione, vogliamo dimostrare che essa vale per ogni intero n>a. Es. La somma dei primi n interi vale n(n+1)/2 per ogni n > 1.
INDUZIONE Vogliamo dimostrare che un certo predicato è vero. Formaliziamo con affermazione S(n) dimostriamo per induzione che S(n) vera (per ogni intero n>a). Una dimostrazione per induzione consiste di 2 fasi 1. BASE INDUTTIVA. Si dimostra che l affermazione è vera per il primo valore, cioè S(a) è vera. 1. PASSO INDUTTIVO. Assumiamo che S(n-1) è vera e dimostriamo che allora anche S(n) è vera.
INDUZIONE Es. La somma dei primi n interi vale n(n+1)/2 per ogni n > 1. Formalizzazione S(n): n n ( nn )1 i 1(2... n(n 1) n) i (1... n) i 1 2 2 i 1 Si vuole dimostrare per induzione che S(n) vale per ogni n > 1.
INDUZIONE 1. BASE INDUTTIVA. S(a) è vera. 2. PASSO INDUTTIVO. S(n-1) implica S(n) vera. Es. S(n): Si vuole dimostrare che S(n) vale per ogni n > 1. Base. S(1) è vera perché Passo. Ipotesi induttiva S(n-1): Si ha n i (1... n) i 1 n i i 1 n 1 i 1 i n Quindi S(n) è vera. n(n 1) 2 (n 1)n 2 1 i 1 1(1 )1/2 i 1 n 1 i 1 n i ( n )1 n/2 (n 1)n 2n 2 n(n 1) 2
INDUZIONE Esercizio. Dimostrare per induzione che la seguente affermazione S(n) è vera per ogni intero n>0. S(n): n 2 i 2 n 1 1 i 0
INDUZIONE Es. Se x 4, allora 2 x x 2 Affermazione S(x): 2 x x 2 Mostriamo per induzione che S(x) vera per ogni x 4. Base: x = 4 2 x = 2 4 = 16 e x 2 = 4 2 = 16 Passo I.: Supponiamo che 2 x x 2 per x 4 Dobbiamo dimostrare che 2 x +1 (x + 1) 2 Abbiamo: 2 x +1 = 2 2 x 2 x 2 (dalla ipotesi induttiva) Dimostriamo adesso che 2x 2 (x + 1) 2 =x 2 +1+2x Semplificando: x 2-2x 1 Se x 4, x(x-2) 8>1
VALIDITA delle dimostrazioni per INDUZIONE Dim. per induzione Base: S(a) vera Passo induttivo S(n) vera, ogni n>a Minimo controesempio. IPOTESI: S(n) falsa per qualche n. Sia b il più piccolo intero tale che S(b) falsa. DEDUCIAMO: Se b=a contraddiciamo la base. Quindi b>a. Essendo b = minimo intero per cui l affermazione è falsa, risulta S(b-1) vera (nota b-1 > a). Per il Passo Induttivo, S(b-1) S(b). Allora S(b) vera: contraddizione con assunzione che S(b) falsa. Quindi ipotesi è sbagliata, Cioè non esiste intero per cui l affermazione è falsa Cioè S(n) vera per ogni intero
Teorema. Tutti i cavalli hanno lo stesso colore Dim. Sia P(n): ''in ogni insieme di n cavalli, tutti i cavalli hanno lo stesso colore.'' Mostriamo per induzione che P(n) vera per ogni n 1. Base : P (1) vera. Passo. Assumiamo P (n) vera, n>1. Consideriamo insieme di n + 1 cavalli: h1, h2,..., hn, hn+1 Per I.I. I primi n cavalli h1, h2,..., hn hanno stesso colore, Per I.I. Gli ultimi n cavalli h2, h3,..., hn+1 hanno stesso colore, Quindi h1, h2,..., hn+1 hanno stesso colore, e P(n+1) vera Poiche` P (n) P (n + 1), allora P(n) vera per ogni n 1.
Teorema. Tutti i cavalli hanno lo stesso colore Dim. Per induzione su n. Sia P(n): ''in ogni insieme di n cavalli, tutti i cavalli hanno lo stesso colore.'' Conseguenza: se n=(numero cavalli nel mondo) allora tutti cavalli hanno lo stesso colore. Abbiamo provato una cosa FALSA! ERRORE? Abbiamo provato: P (1) P (2) P (3), P (3) P (4), etc. NON P (1) P (2)
INDUZIONE COMPLETA Vogliamo dimostrare che P(n) vale per ogni intero n>a. Dimostrazione per induzione completa: 1. BASE INDUTTIVA. Si dimostra che l affermazione è vera per il primo valore, cioè P(a) è vera. 2. PASSO INDUTTIVO. Assumiamo che P(a), P(a+1),, P(n-1) sono tutte vere e dimostriamo che anche P(n) è vera.
Definizioni Induttive ; Una definizione per induzione (o induttiva o ricorsiva) di un insieme di oggetti consiste di una base e di un passo induttivo. BASE definisce uno o più oggetti elementari. Passo Induttivo definisce la regola che permette di costruire oggetti più complessi in termini di quelli già definiti
Definizioni Induttive ; BASE definisce uno o più oggetti elementari. Passo Induttivo definisce la regola che permette di costruire oggetti più complessi in termini di quelli già definiti Es. Definizione induttiva di n! (prodotto primi n interi) BASE 1! P.I. n!=n (n-1)! Per ogni n>1
Definizioni Induttive ; BASE definisce uno o più oggetti elementari. Passo Induttivo definisce la regola che permette di costruire oggetti più complessi in termini di quelli già definiti Es. Definizione dei numeri di fibonacci BASE f(0)=f(1)=1 P.I. f(n)=f(n-1)+f(n-2), per ogni n>1
Teorema. Ogni intero maggiore di 1 è un prodotto di primi Dim. Stabiliamo affermazione P(n): l intero n è un prodotto di primi Vogliamo dimostrare per induzione completa che p(n) vera per ogni n>1. Base. P(2) vera, poichè 2 è primo Passo. II: p(2),,p(n-1) vere Proviamo che P(n) è vera. Se n è primo, ok Se n non è primo allora n=km per qualche k e m II ci dice che P(k), p(m) vere, Cioè k ed m sono prodotti di primi Quindi anche il loro prodotto n=km è un prodotto di primi.
Definizioni Induttive ; Una definizione per induzione (o induttiva o ricorsiva) di un insieme di oggetti consiste di una base e di un passo induttivo. BASE definisce uno o più oggetti elementari. Passo Induttivo definisce la regola che permette di costruire oggetti più complessi in termini di quelli già definiti
Definizioni Induttive ; BASE definisce uno o più oggetti elementari. Passo Induttivo definisce la regola che permette di costruire oggetti più complessi in termini di quelli già definiti Es. Definizione induttiva di n! (prodotto primi n interi) BASE 1! P.I. n!=n (n-1)! Per ogni n>1
Definizioni Induttive ; BASE definisce uno o più oggetti elementari. Passo Induttivo definisce la regola che permette di costruire oggetti più complessi in termini di quelli già definiti Es. Definizione dei numeri di fibonacci BASE f(0)=f(1)=1 P.I. f(n)=f(n-1)+f(n-2), per ogni n>1
Definizioni Induttive e Dimostrazioni Induttive ; Es. Mostrare che il numero di fibonacci f(n) soddisfa f(n)<2 n, per ogni n>0