Giorgio Gambosi Dipartimento di Matematica Centro di Ricerca e Formazione Permanente per l’Insegnamento delle Discipline Scientifiche Università di Roma “Tor Vergata” 1 19 dicembre 2015 Sono convinto che l'informatica abbia molto in comune con la fisica. Entrambe si occupano di come funziona il mondo a un livello abbastanza fondamentale. La differenza, naturalmente, è che mentre in fisica devi capire come è fatto il mondo, in informatica sei tu a crearlo. Dentro i confini del computer, sei tu il creatore. Controlli -- almeno potenzialmente -- tutto ciò che vi succede. Se sei abbastanza bravo, puoi essere un dio. Su piccola scala. Linus Torvalds L’informatica ha a che fare con i computer non più di quanto l’astronomia abbia a che fare con i telescopi. Edsger W. Dijkstra 2 19 dicembre 2015 Problemi di immagine dell’informatica Disciplina culturalmente povera rispetto a “hard sciences” 3 lo stesso avviene per scienze rispetto a materie umanistiche tecnologia, non scienza informatica come programmazione assenza (irrilevanza) di fondamenti concettuali modello “garage programming” 19 dicembre 2015 Problemi di immagine Informatico = nerd, “smanettone” Non è una professione “di successo” Problema comune con le altre discipline scientifiche scienziato = secchione Grande fatica, scarso ritorno Fondamenti poco importanti 4 19 dicembre 2015 L’informatica nella scuola Apprendimento strumentale: informatica = computer Scuola media: utilizzo strumenti Scuola secondaria superiore: al massimo, programmazione In generale, informatica vista come funzionale ad altre discipline 5 Produzione documenti, presentazioni, piccoli programmi di simulazione, fogli elettronici 19 dicembre 2015 L’informatica nella scuola Riforma Gelmini 6 Informatica soltanto nel Liceo scientifico, opzione scienze applicate Impostazione tecnologica del programma 19 dicembre 2015 Scarso appeal della matematica Materia difficile Scarso stimolo concettuale per gli studenti Non sembra avere applicazioni immediatamente significative 7 19 dicembre 2015 Test PISA, TIMSS, INVALSI Insufficienti risultati a partire dalla scuola media (K8) Soprattutto relativamente alle competenze e agli aspetti procedurali e di problem solving Difficoltà di descrizione dei procedimenti di soluzione La matematica insegnata sembra troppo poco attenta agli aspetti di applicazione delle conoscenze ed alla risoluzione (algoritmica) di problemi 8 19 dicembre 2015 Cosa fare? Come valorizzare l’informatica? Come rendere più gratificante la matematica? Sinergie: i concetti e i metodi fondamentali dell’informatica sono utili nell’insegnamento della matematica (e non solo) 9 19 dicembre 2015 Maggiore attenzione all’utilizzo di metodi e concetti Modellazione matematica Computazione Risoluzione di problemi Pensare in modo computazionale 10 19 dicembre 2015 Come valorizzare l’informatica? Combattere idee sbagliate Dare una definizione chiara della disciplina Come corpus concettuale fondamentale Rilevanza sull’acquisizione di un modo di pensare (rispetto a competenze specifiche) 11 19 dicembre 2015 Idee sbagliate CS = programmazione CS = alfabetizzazione informatica (es. ECDL) CS = strumento per lo studio di altre discipline CS = non disciplina scientifica CS = per maschi 12 19 dicembre 2015 Come valorizzare l’informatica? Informatica intesa come disciplina inerente: 13 La modellizzazione La rappresentazione e la gestione dell’informazione La risoluzione procedurale di problemi La programmazione ha un ruolo del tutto ancillare 19 dicembre 2015 Come valorizzare l’informatica? Distinzione tra informatica e computer Avvicinamento all’informatica non incentrato su computer 14 Unplugged CS Presto: scuola elementare, scuola media Presenza “trasversale” (ad es. relazioni con linguistica) 19 dicembre 2015 Come valorizzare l’informatica? Programmazione come formalizzazione di una procedura algoritmica Utilizzo di ambienti di programmazione di tipo “educational” Storytelling (Alice, Scratch) Test e verifica di correttezza come “sfida mentale” 15 19 dicembre 2015 Concetti chiave Informazione, codifica e organizzazione Algoritmi e loro implementazione Astrazioni concettuali Correttezza di una procedura Efficienza 16 19 dicembre 2015 Ruolo dei docenti Formazione insegnanti fondamentale Percezione sbagliata della CS trasmessa da docenti a studenti Studenti validi orientati verso altri corsi di studio Chi insegna cosa? 17 Ruolo dei laureati in informatica e in ingegneria informatica 19 dicembre 2015 Cosa fare? Presenza della comunità accademica per la definizione di programmi e obiettivi (non solo per informatica) Collaborazione scuola-università 18 Non finalizzata alle sole immatricolazioni Iniziative nazionali (olimpiadi informatica) Lauree scientifiche 19 dicembre 2015 Matematica Definisce un linguaggio 19 Esprime situazioni e problemi reali in un formalismo rigoroso (modelli) definisce proprietà che risultano in possibili modalità di risoluzioni dei problemi 19 dicembre 2015 Rimane una questione aperta quanto è effettivamente praticabile risolvere un problema? quanto devo calcolare? Praticabile: quante risorse di calcolo mi servono? Tempo: il tempo è una risorsa 20 19 dicembre 2015 Risolubilità effettiva di problemi. Esempio: TSP 110 province in Italia, per ogni coppia tempo stimato di trasferimento Voglio partire da Roma e tornare a Roma attraverso tutti i capoluoghi nel minor tempo possibile Soluzione semplice: prova tutti i percorsi e scegli il più veloce percorso=permutazione dei rimanenti 109 capoluoghi 21 19 dicembre 2015 Risolubilità effettiva di problemi. Esempio: TSP sono 109! permutazioni, circa 1.45x10^176 permutazioni supponiamo di poter esaminare un percorso al minuto: servono circa 3x10^160 miliardi di anni! Idea! Potrei usare un computer! un percorso ogni miliardesimo di secondo servono circa 5x10^150 miliardi di anni 22 19 dicembre 2015 Cosa fare? Devo trovare un modo più efficiente di risolvere il problema Ma esiste un modo più efficiente? Magari esiste un modo efficiente per trovare un percorso molto vicino al migliore, ma non proprio quello 23 19 dicembre 2015 Questioni Dato un problema: 24 Quanto efficientemente è possibile risolverlo? In che modo? Possiamo trovare modi efficienti per risolverlo “più o meno”? Come descriviamo il problema e le sue soluzioni? Come descriviamo il modo di risolverlo? E’ possibile, in assoluto, risolvere il problema in generale? 19 dicembre 2015 Obiettivi dell’informatica soluzione efficiente di problemi mediante procedure generali rappresentazione efficiente dell’informazione 25 19 dicembre 2015 Algoritmi Sequenze di istruzioni elementari (modello di calcolo) di composizione Modelli di calcolo 26 istruzioni possibili loro significato in termini di esecuzione 19 dicembre 2015 Algoritmi Linguistica: Algoritmi come testi di lunghezza finita Eseguibili da un agente (modello di calcolo): esecuzione potenzialmente infinita Generalità della soluzione 27 funzionano su input diversi (calcolano una funzione) input ammissibili codifica (ancora linguistica) 19 dicembre 2015 Problema e algoritmo Problema: Insieme input ammissibili Output definito da funzione dell’input Soluzione algoritmica Input ammissibile 28 Algoritmo Output richiesto 19 dicembre 2015 Tipi di problemi P1 29 input, J,K interi output J^2+3K problema aritmetico, esecuzione di durata costante (sotto qualche ipotesi) 19 dicembre 2015 Tipi di problemi P2 30 input K intero output somma dei primi K interi aritmetico, la durata dell’esecuzione dipende dall’input 19 dicembre 2015 Tipi di problemi P3 31 input K intero output “Y” se K è primo, “N” se composto problema di decisione, output non numerico 19 dicembre 2015 Tipi di problemi P4 32 Insieme di N parole Le N parole in ordine alfabetico non numerico 19 dicembre 2015 Tipi di problemi P5 33 input due testi output parole comuni non numerico 19 dicembre 2015 Tipi di problemi P6 34 input carta stradale, 2 città output descrizione tragitto più breve tra le due città problema di ottimizzazione, input strutturato 19 dicembre 2015 Tipi di problemi P7 35 input carta stradale, N città, K intero output “Y” se esiste un percorso tra tutte le città di lunghezza al più K, “N” altrimenti problema di ottimizzazione visto come problema di decisione 19 dicembre 2015 Tipi di problemi P8 36 input, posizione degli scacchi output “Y” se esiste una sequenza di mosse per il bianco che gli fa vincere la partita, “N” altrimenti problema di decisione relativo ad un gioco 19 dicembre 2015 Tipi di problemi P9 37 input programma P, 2 variabili X (di input),Y, K intero output 2K se P pone sempre Y=X^2, 3k altrimenti riguarda il comportamento di un programma “osservato” 19 dicembre 2015 Tipi di problemi decisionali di ricerca di ottimizzazione In molti casi difficile enunciare esattamente 38 output difficile: scacchi: come definire la mossa migliore input complesso: problema di distribuzione (20000 giornali, 1000 rivenditori, 100 città, 50 furgoni) insieme dei costi, funzione di costo previsioni del tempo (input?, output?): codifica di input e output 19 dicembre 2015 Risolubilità Problema risolubile se esiste un algoritmo che deriva l’output corretto per ogni input ammissibiledipendenza dal modello di calcolo Problema trattabile se è risolubile ed esiste un algoritmo che lo risolve in modo efficiente (? Da definire) 39 19 dicembre 2015 I computer Sono una implementazione di un particolare modello di calcolo Implementazione realizzata per mezzo di circuiti elettronici Modello di calcolo molto semplice: sa fare poche cose elementari ==> è complicato descrivere un algoritmo per essere eseguito da questo modello di calcolo Perché li usiamo? Perché l’implementazione elettronica del modello di calcolo fornisce operazioni molto veloci da eseguire 40 19 dicembre 2015 Linguaggi di programmazione Modelli di calcolo più articolati Implementazione realizzata mediante software eseguito dal modello di calcolo del computer Modello di calcolo più potente: sa fare a livello elementare più cose ==> è più semplice descrivere un algoritmo Perché li usiamo? Sono un buon compromesso tra semplicità di descrizione di algoritmi e velocità di esecuzione 41 19 dicembre 2015 Comunicazione Definizione di algoritmi intesa come comunicazione Destinatario: agente di calcolo, conosce la semantica, sa come eseguire i passi dell’algoritmo Messaggio: descrizione dell’algoritmo, programma 42 19 dicembre 2015 Linguistica Algoritmi (e programmi) come frasi di un linguaggio Sintassi: definisce cosa è corretto dal punto di vista di un insieme di regole di costruzione di “frasi” Semantica: definisce il significato di una frase (in termini di esecuzione) Modello di calcolo (linguaggio di programmazione): insieme delle frasi (programmi) corretti che posso scrivere 43 19 dicembre 2015 La macchina di Turing Modello di calcolo particolarmente semplice 44 Nastro di memoria Testina di lettura/scrittura Stato interno Funzione di transizione 19 dicembre 2015 La macchina di Turing Esempio: un algoritmo di copia 45 19 dicembre 2015 La tesi di Church-Turing Un problema risolubile da un algoritmo su un qualche modello di calcolo è risolubile da una macchina di Turing La macchina di Turing è il modello di calcolo più potente Esistono modelli di calcolo meno potenti 46 Automi a stati finiti 19 dicembre 2015 Algoritmi “sbagliati” Su qualche input, viene fornito un output scorretto Potrei accettarlo, se succede raramente (valutazione probabilistica) A volte, non termina mai 47 19 dicembre 2015 Un problema, tanti algoritmi Ricerca in un insieme Ricerca sequenziale: Ricerca a caso 48 quanti passi? tempo peggiore, tempo medio, tempo migliore (1-1/n)^(k-1)1/n probabilità in k passi, media n Ci potrei mettere di meno? No, come minimo li devo guardare 19 dicembre 2015 Un problema, tanti algoritmi Ricerca in un insieme Ipotesi aggiuntiva: insieme ordinato Ricerca binaria 49 tempo peggiore lg n Ci potrei mettere di meno? No (è possibile mostrarlo) 19 dicembre 2015 Proporzionalità nella valutazione Consideriamo la proporzione tra il numero di passi (il tempo) e la dimensione dell’istanza di problema Semplificazione: le istanze di stessa dimensione non richiedono lo stesso tempo 50 Caso peggiore (caso medio) 19 dicembre 2015 Un problema, tanti algoritmi Ordinamento di un insieme Generazione permutazioni e verifica sequenza ordinata Selezione/inserimento: n^2 Fusione: nlgn Ci potrei mettere di meno? 51 n! permutazioni, circa (n/2.7)^n, per ognuna n passi per verificare che sia ordinata Sicuramente non meno di n (li devo guardare tutti): lower bound Sicuramente non più di nlgn (ce la so fare, così): upper bound Gap di complessità: o abbasso l’u.b. (trovo algoritmi più efficienti) o alzo il l.b. (faccio una analisi più precisa) Vale il secondo caso: mi serve almeno nlgn (se il mio algoritmo è basato su confronti) 19 dicembre 2015 Un problema, tanti algoritmi Torri di Hanoi Soluzione iterativa: 2^n-1 mosse ad esempio, n=30, una mossa al minuto, 2000 anni circa Soluzione ricorsiva: 2^n-1 mosse Ci potrei mettere di meno? No (è stato mostrato) In effetti, l’output è lungo 2^n-1 (elenco delle mosse) 1 secondo per mossa: 52 19 dicembre 2015 Un problema, tanti algoritmi Sistemi logici formali sull’aritmetica affermazioni del tipo “se P è vera allora Q è vera” P,Q proposizioni su interi 0,1 con = e +, oltre a operatori logici (aritmetica di Presburger) ad esempio “se X=1 allora non esiste Y tale che X=Y+Y” P: “X=1” Q: “non esiste Y tale che X=Y+Y” Problema: data una affermazione, stabilire se è vera Qualunque algoritmo richiede tempo (numero di passi) almeno 2^2^n (n lunghezza dell’affermazione) n=1 --> 4; 2 --> 16 ; 3 --> 256; 4 --> 65536; ...; 9 --> 1.3x10^154; 10 --> 1.8x10^308 53 19 dicembre 2015 Complessità esponenziale e polinomiale N=2 N=5 N=10 N=20 N=50 N=100 N=1000 N 2s 5s 10 s 20 s 50 s 2m 17 m N lgN 2s 11 s 33 s 86 s 5m 11 m 2h 45 m N^2 4s 25 s 1 m 40 s 6m 41 m 2h 45 m 11 g N^3 8s 2m 16 m 2h 1.5 g 11 g 31 a 2^n 4s 32 s 17 m 12 g 35 M anni 4x10^22 anni 3x10^293 anni Età dell’universo: 14x10^9 anni 54 19 dicembre 2015 Complessità esponenziale e polinomiale La tecnologia aiuta poco Aumenti della velocità di ordini di grandezza fanno diventare trattabili istanze poco più grandi 55 19 dicembre 2015 Complessità esponenziale e polinomiale Identifichiamo trattabilità con tempo di soluzione polinomiale Correlazione polinomiale tra modelli di calcolo (tesi di Church-Turing) Limiti 56 Costanti moltiplicative Grado elevato 19 dicembre 2015 Problemi polinomiali MCD Ricerca in un insieme Massimo in un insieme Ordinamento Ricerca in un labirinto Percorso minimo Ciclo euleriano 2-soddisfacibilità nel calcolo proposizionale … 57 19 dicembre 2015 Zona intermedia La classicazione dei problemi ha in realtà una zona grigia localizzata tra i problemi trattabili e quelli intrattabili Sudoku 58 Si procede per tentativi-errori-ritorno indietro (backtrack) 19 dicembre 2015 Zona intermedia Tempo di soluzione esponenziale, al più 9^n (n è il numero di caselle vuote, n<=9x9) Avendo N cifre, tabella di dimensioni NxN Al più N^(N^2)=2^(N^2*log N) Per verificare se una possibile soluzione (assegnazione di interi a caselle) è corretta, basta tempo proporzionale a N Trovare una soluzione sembra difficile Verificare una soluzione è semplice 59 19 dicembre 2015 Problemi verificabili Moltissimi problemi con le stesse caratteristiche Problemi di decisione Verifica effettuata su istanza + certificato Certificato: informazione aggiuntiva, di lunghezza limitata (polinomiale) Tipicamente, la soluzione stessa Algoritmo di verifica: esamina istanza + certificato e stabilisce che l’istanza è positiva Verificabili in tempo limitato (polinomiale) In tempo polinomiale E se l’istanza è negativa? 60 19 dicembre 2015 Problemi verificabili Un problema risolubile in tempo polinomiale è anche verificabile in tempo polinomiale Certificato vuoto P è l’insieme dei problemi risolubili in tempo polinomiale NP è l’insieme dei problemi verificabili in tempo polinomiale Esistono problemi in NP che non si sa risolvere in tempo polinomiale 61 19 dicembre 2015 Artù, Merlino e la tavola rotonda Artù: ha intelligenza limitata Merlino: infinitamente intelligente Tavola rotonda: ha N posti I cavalieri (N) non vogliono sedersi vicino ai loro rivali E’ possibile disporre i cavalieri intorno alla tavola? Difficile da risolvere: Merlino può farlo, Artù no Possibile: Merlino può convincere Artù (gli mostra la soluzione) Non possibile: come può Merlino convincere Artù? 62 19 dicembre 2015 Esempi di problemi NP Numero composto Isomorfismo tra grafi Colorazione di grafi Percorso hamiltoniano TSP 3 soddisfacibilità nel calcolo proposizionale Bisaccia Sequenziamento di attività Copertura di nodi Insieme indipendente … 63 19 dicembre 2015 Problemi NP Non sappiamo risolvere i problemi precedenti in modo efficiente (polinomiale) Sono tutti verificabili in modo efficiente (polinomiale) Per quasi tutti, non si sa verificare in modo efficiente il problema complementare (istanze positive e negative scambiate): eccezione, numero composto Alcuni sono simili a problemi in P (2-SAT e 3-SAT, percorso euleriano e hamiltoniano) 64 19 dicembre 2015 Trasformazione di problemi Una istanza di un problema può essere trasformata in una istanza equivalente di un altro problema in modo efficiente (polinomiale) Esempio:Copertura con nodi e Insieme indipendente In G=(V,E), un insieme S di nodi copre tutti gli archi se e solo se V-S è un insieme indipendente Istanza di Insieme indipendente: G=(V,E), K Trasformata in istanza di Copertura con nodi: G=(V,E), |V|-K Se so risolvere CN n modo efficiente posso risolvere in modo efficiente II 65 19 dicembre 2015 Problemi NP-completi Esistono problemi per cui esistono trasformazioni efficienti delle istanze da qualunque problema NP Se so risolvere in modo efficiente uno qualunque di questi problemi so risolvere tutti i problemi NP Sono i problemi su cui conviene “concentrare” gli sforzi: se un problema NP-completo è in P, allora P=NP I problemi citati sopra (eccetto i primi due) sono NPcompleti 66 19 dicembre 2015 La questione P=NP? Il maggiore problema aperto in informatica Uno dei maggiori nell’intera matematica Se P=NP (improbabile), grandi conseguenze pratiche 67 Problemi di ottimizzazione intera Ricerca operativa: gestione risorse, logistica, sequenziamento, allocazione risorse Biologia: struttura proteine Crittografia: indebolimento schemi 19 dicembre 2015 Problemi di ottimizzazione Sono sicuramente non più semplici dei corrispondenti problemi di decisione Spesso, sono equivalenti (polinomialemente): se so risolvere efficientemente il problema di decisione, so risolvere efficientemente il problema di ottimizzazione NP-completi NP-hard 68 19 dicembre 2015 Ma esistono sempre algoritmi di soluzione? Quanti sono gli algoritmi? Un algoritmo è descritto da una sequenza di simboli da un alfabeto Può essere interpretato come codifica di un intero (in una base opportuna) Gli algoritmi sono non più degli interi: infiniti numerabili Quanti sono i problemi? 69 Consideriamo i soli problemi di decisione su interi Un problema è descritto da una sequenza infinita di simboli 0,1 associati ai vari interi; ogni sequenza infinita corrisponde a un problema I problemi sono almeno pari ai reali: infiniti non numerabili 19 dicembre 2015 Problemi senza algoritmi Dimostrazione più precisa per diagonalizzazione Esistono (infinitamente) più problemi che algoritmi Esistono infiniti problemi non risolubili Lo stesso argomento vale se consideriamo la descrizione di un problema Esistono infiniti problemi che non possono essere descritti “Ci sono più cose in cielo e terra, Orazio, di quante ne sogni la tua filosofia”, Amleto 1,5 70 19 dicembre 2015 Problemi non risolubili Problema della fermata Dato un programma P e un suo input X, l’esecuzione di P su X si fermerà o continuerà indefinitamente? Il problema non è risolubile in modo algoritmico Vale un argomento di auto-referenzialità: 71 In generale, P eseguirà una qualche azione specifica (restituirà un valore, porrà una variabile a un valore, etc.)? Paradosso del mentitore Paradosso del barbiere Teorema di incompletezza di Godel 19 dicembre 2015 Problema della fermata Termina(P,X) determina se P si ferma su input X Paradosso(P) While (Termina(P,P)); Paradosso(P) termina se e solo se Termina(P,P) è falso; quindi solo se P non termina su input P Paradosso(Paradosso) termina se e solo se Paradosso non termina su input Paradosso: contraddizione Termina(P,X) non esiste 72 19 dicembre 2015 Altre tematiche interessanti Rappresentazione e gestione dell’informazione Linguistica Codici di compressione e di correzione Teoria dell’informazione Strutture di dati Grammatiche generative Automi di riconoscimento Analisi lessicale e sintattica Programmazione e linguaggi 73 Paradigmi di programmazione 19 dicembre 2015