Le parole dell informatica: algoritmo e decidibilità

Похожие документы
Per un vocabolario filosofico dell informatica. Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine

Teoria della Calcolabilità!

Problemi, algoritmi, calcolatore

Il concetto di calcolatore e di algoritmo

Corso di Linguaggi di Programmazione

Macchine di Turing. Francesco Paoli. Istituzioni di logica, Francesco Paoli (Istituzioni di logica, ) Macchine di Turing 1 / 29

Elementi di Complessità Computazionale

Algoritmi e Strutture Dati

Alcune Tracce dei Precedenti Esami del Dottorato di Siena in Logica Matematica ed Informatica Teorica

LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13)

Aniello Murano Problemi non decidibili e riducibilità

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Luca Costabile Esercizi di Logica Matematica Dispensa Calcolo Proposizionale 1

Introduzione alla programmazione

Struttura del calcolatore

La cardinalità di Q e R

NOTE SULLE FUNZIONI CONVESSE DI UNA VARIABILE REALE

LA METAFORA DELL UFFICIO

Appunti su Indipendenza Lineare di Vettori

Informatica Teorica. Appunti della lezione su tesi di Church-Turing e problemi indecidibili

Corso Programmazione

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

Cosa è l Informatica?

Principio di composizione delle MT

Logica proposizionale

CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1

Appunti di informatica. Lezione 7 anno accademico Mario Verdicchio

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

04 - Logica delle dimostrazioni

NOTE DI ALGEBRA LINEARE v = a 1 v a n v n, w = b 1 v b n v n

Informatica teorica Lez. n 7 Macchine di Turing. Macchine di Turing. Prof. Giorgio Ausiello Università di Roma La Sapienza

RISOLUZIONE IN LOGICA PROPOSIZIONALE. Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

01 - Elementi di Teoria degli Insiemi

01 - Elementi di Teoria degli Insiemi

IL TEOREMA FONDAMENTALE DELL ARITMETICA: DIMOSTRAZIONE VELOCE.

Maiuscole e minuscole

ALGORITMI: PROPRIETÀ FONDAMENTALI

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

PROBLEMI ALGORITMI E PROGRAMMAZIONE

NOZIONI DI LOGICA PROPOSIZIONI.

Informatica Teorica. Sezione Cremona + Como. Appello del 20 Luglio 2004

Dispensa di Informatica II.1

A lezione sono stati presentati i seguenti passi per risolvere un problema:

Il calcolatore universale, origini e nuovi paradigmi

La matematica non è un opinione, lo è oppure...?

Esercitazioni per il corso di Logica Matematica

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science)

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi

Appunti di informatica. Lezione 5 anno accademico Mario Verdicchio

Linguaggi di Programmazione

Primo modulo: Aritmetica

Gestione della produzione e della supply chain Logistica distributiva

Matlab. Istruzioni condizionali, cicli for e cicli while.

Introduzione ai grafi

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 25/02/2016/ Foglio delle domande / VERSIONE 1

La codifica digitale

Logica proposizionale

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

Le parole dell informatica: modello di calcolo, complessità e trattabilità

Informatica. Come si risolve un problema?

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

Problemi algoritmici e Complessità degli algoritmi

Studio degli algoritmi

Il linguaggio di programmazione Python

Argomenti diagonali. Gianluigi Bellin

Esercizi sugli Algoritmi numerici

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

LA METAFORA DELL UFFICIO

PROBLEMA: «Stabilire se un numero è pari o dispari?»

Lezione 1 - Insiemi. Laboratorio di Programmazione M1 UD2 Matematica e Logica per la Programmazione

Programmazione dinamica

Fondamenti di Informatica. Definizione di Algoritmo. Algoritmo Euclideo. Prof.V.L.Plantamura Informatica e Comunicazione Digitale a.a.

Università degli Studi di Roma Tor Vergata. Principio di induzione matematica

1 Giochi di Ehrenfeucht-Fraissé e Logica del Prim ordine

Lezione 7. Relazione di coniugio. Equazione delle classi. { x} C( x) { } { }

Транскрипт:

Le parole dell informatica: algoritmo e decidibilità Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Ciclo di seminari su un Vocabolario Filosofico dell Informatica Udine, 28 novembre, 2014

Le parole dell informatica algoritmi (teoria degli) decidibilità/indecidibilità modelli di calcolo complessità (teoria della) trattabilità

Algoritmi (teoria degli) Il concetto di algoritmo non è di per sé un contributo originale dell'informatica. Gli algoritmi sono noti da sempre non solo in matematica (l'algoritmo per il calcolo del massimo comun divisore di due numeri interi positivi fu inventato da Euclide nel quarto secolo a.c.), ma anche in numerose altre discipline (architettura) Ciò che è nuovo è il ruolo centrale che essi assumono nell'informatica (teoria degli algoritmi o algoritmica)

La nozione di algoritmo Un algoritmo è una descrizione finita e non ambigua di una sequenza di passi che consente di risolvere un determinato problema In generale un problema può essere risolto da vari algoritmi (esempi: il problema della ricerca del massimo di un insieme di numeri naturali distinti e il problema dell'ordinamento) Due possibili algoritmi per la ricerca del massimo di un insieme di numeri naturali distinti

Proprietà degli algoritmi Caratteristiche essenziali di un algoritmo: Uniformità: un algoritmo si applica a tutte le istanze di un dato problema, potenzialmente infinite, e non ad una singola istanza, e la sua formulazione non dipende dalla singola istanza, ma è la stessa per ogni istanza Effettività: la raggiungibilità della soluzione voluta in un tempo finito o, equivalentemente, in un numero finito di passi

Algoritmi e programmi Un programma è una formulazione di un algoritmo in uno specifico linguaggio (linguaggio di programmazione) che può essere letto e interpretato da un computer Osservazione: la formulazione di un algoritmo dipende dal soggetto (macchina) che lo deve eseguire, ossia un algoritmo deve essere formulato utilizzando i comandi (istruzioni) di un linguaggio che il soggetto (macchina) è in grado di comprendere ed eseguire

Gerarchia di linguaggi Tale dipendenza è all'origine della gerarchia di linguaggi di programmazione, che spaziano dai linguaggi di programmazione di alto livello (C, JAVA, Prolog, Haskell) che utilizzano istruzioni di controllo complesse, ai linguaggi macchina, che utilizzano istruzioni direttamente eseguibili dalla macchina, e di algoritmi/programmi (compilatori/interpreti) che consentono di passare dagli uni agli altri

Decidibilità e indecidibilità La risposta alla domanda (ingenua): esiste un algoritmo per ogni problema? è negativa L'esistenza di problemi per i quali non esistono algoritmi si può mostrare facendo vedere che esistono funzioni non computabili (funzioni per le quali non esiste un algoritmo in grado di computarle). Esistono, infatti, più funzioni che nomi per designarle e algoritmi per computarle. L'argomento può essere formalizzato usando il metodo della diagonale di Cantor

Una semplice dimostrazione Dimostrazione per assurdo. Si assuma che per ogni funzione computabile esista un algoritmo/programma che la computa. Ogni algoritmo altro non è che una stringa di lunghezza finita su un qualche alfabeto finito ed è, quindi, finitamente specificabile. Da ciò segue che l'insieme di tutti gli algoritmi è numerabile. Si considerino ora tutte le funzioni che mappano gli interi in 0 e 1. Si supponga, per assurdo, che l'insieme di tali funzioni sia numerabile e che i suoi elementi (le funzioni) siano stati messi in corrispondenza con l'insieme dei numeri interi. Sia fi la funzione che corrisponde all'intero i-esimo. E immediato vedere come la funzione f che assegna il valore 0 all i-esimo intero se fi assegna ad esso valore 1, e il valore 1 altrimenti, non corrisponda ad alcun intero, ossia come f è diversa da fk per ogni intero k (contraddizione).

I problemi algoritmici Una domanda meno ingenua è: che tipo di problemi intendono risolvere gli algoritmi (ossia quali sono i problemi algoritmici) e quali fra questi problemi sono effettivamente in grado di risolvere? Esistono varie categorie di problemi algoritmici (numerici, di ordinamento, di ricerca su grafi, di ottimizzazione)

I problemi di decisione Un ruolo particolare è quello dei cosiddetti problemi decisionali, il cui algoritmo deve decidere se una data proprietà è vera o falsa e fornisce, quindi, una risposta di tipo sì/no Esempio di problema decisionale: stabilire se un dato numero intero positivo n sia o meno primo Un problema algoritmico privo di soluzione è detto problema non computabile; nel caso dei problemi decisionali, un problema privo di soluzione è detto indecidibile

Problemi indecidibili Esistono importanti problemi decisionali indecidibili nell'ambito della (logica) matematica Esempio 1 (Goedel). Il teorema di incompletezza di Goedel dimostra che all'interno di ogni sistema formale contenente l'aritmetica esistono proposizioni che il sistema non riesce a decidere (non riesce, cioè, a dare una dimostrazione né di esse né della loro negazione)

Il programma hilbertiano Osservazione (importante). Fra le proposizioni che un sistema formale contenente l'aritmetica non riesce a dimostrare c è anche quella che, in termini numerici, esprime la non-contraddittorietà del sistema (fallimento del programma hilbertiano che voleva dimostrare la non-contraddittorietà dell'intera teoria formale dei numeri sfruttando la sola aritmetica finitistica)

Il problema della decisione Esempio 2 (Turing-Church). L Entscheidungsproblem (problema della decisione), posto sempre da Hilbert, era il problema di trovare un algoritmo che, data una formula della logica del primo ordine, fosse in grado di determinare se essa era o meno valida L'indecidibilità dell'entscheidungsproblem fu dimostrata da Turing facendo ricorso alla cosiddetta macchina di Turing e, contemporaneamente, da Church attraverso il lambda calcolo

Alcune ricadute sorprendenti Osservazione. I risultati negativi di Turing e Church hanno avuto conseguenze importanti e imprevedibili: il modello proposto da Church è alla base del paradigma della programmazione funzionale, mentre il modello di Turing si riflette nel paradigma della programmazione imperativa

Il problema della terminazione Esistono importanti problemi decisionali indecidibili in informatica Esempio 3 (Turing). Il problema della terminazione, ossia il problema di stabilire, ricevuti in ingresso un qualsiasi programma e un suo possibile input, se l'esecuzione di tale programma sullo specifico input termina o meno, è indecidibile.

Teorema di Rice Esempio 4 (Rice). Il teorema di Rice mostra che non esiste un algoritmo in grado di stabilire se una data computazione gode di una qualsiasi proprietà non banale (una proprietà non banale dei programmi è una proprietà che è soddisfatta da alcuni programmi, ma non da tutti, e che non dipende dallo specifico linguaggio di programmazione utilizzato, ma dagli algoritmi in sè).

Il problema del ricoprimento Fra i problemi indecidibili ve ne sono alcuni molto semplici. E questo il caso di molti problemi di ricoprimento (tiling problem) Un problema di ricoprimento richiede di stabilire, ricevuto in ingresso un insieme finito di tipi diversi di piastrelle colorate (quadrati di dimensioni unitarie divisi in quattro parti dalle diagonali, ognuna delle quali colorata in un certo modo), se sia possibile o meno coprire una determinata superficie del piano con piastrelle dei tipi dati, rispettando alcune semplici condizioni sui colori delle piastrelle adiacenti (ad esempio, stesso colore)

La tecnica della riduzione E' molto comune mostrare l'indecidibilità di un problema riducendo ad esso un altro problema di cui già si conosce l indecidibilità (tecnica di riduzione) Tale tecnica sfrutta molto spesso le varianti indecidibili del problema del ricoprimento

Equivalenza di problemi E' possibile definire una relazione di equivalenza sull'insieme dei problemi indecidibili in termini di riducibilità: due problemi indecidibili si dicono equivalenti se l'algoritmo immaginario in grado di decidere l'uno (oracolo) potrebbe essere utilizzato per risolvere l'altro, e viceversa Esempio. Il problema della terminazione e il problema del ricoprimento sono equivalenti

Gerarchia di problemi Non tutti i problemi indecidibili sono equivalenti: ve ne sono alcuni più indecidibili di altri. Vi sono cioè situazioni in cui la riduzione precedente vale in una direzione, ma non nell'altra E' possibile definire una gerarchia infinita di problemi sempre più indecidibili (livelli di indecidibilità)