Fondamenti di Informatica

Documenti analoghi
Algoritmi e Strutture Dati

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

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

Turing cercò di fornire una risposta matematica al problema CHE COSA SIGNIFICA CALCOLARE?

Sommario Codifica dei dati Macchina Astratta Definizioni Esempi

Principio di composizione delle MT

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

Fondamenti d Informatica: Le Macchine di Turing. Barbara Re, Phd

Problemi, algoritmi, calcolatore

Ma il programma in Fig. 8.2 del libro? Stampa hello, world, dato un input n se e solo se l equazione

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

AUTOMA A STATI FINITI

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

Il concetto di calcolatore e di algoritmo

Algoritmi e Complessità

Fondamenti di Informatica per la Sicurezza a.a. 2008/09. Automi. Stefano Ferrari. Unautomaastatifinitièunmodellomatematico caratterizzato da:

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

L ELABORATORE ELETTRONICO

Linguaggio universale, riduzioni, e teorema di Rice. Linguaggio universale, riduzioni, e teorema di Rice

Aniello Murano Problemi non decidibili e riducibilità

Concetti di base sugli automi e sui linguaggi formali

MODULO 07 LA MACCHINA DI TURING

ELEMENTI DI PROGRAMMAZIONE a.a. 2012/13 MACCHINE, ALGORITMI, PROGRAMMI

L AUTOMA ESECUTORE L AUTOMA ESECUTORE

Scaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1

L ELABORATORE ELETTRONICO!

Le parole dell informatica: algoritmo e decidibilità

Corso di Linguaggi di Programmazione

ELEMENTI DI PROGRAMMAZIONE a.a. 2013/14 UNA GERARCHIA DI MACCHINE

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

Teoria della Calcolabilità!

Elaboratore Elettronico

Algoritmo per A. !(x) Istanza di B

Macchine di TURING. Alan Mathison Turing ( )

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

Cosa è l Informatica?

ALGORITMI: PROPRIETÀ FONDAMENTALI

Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione

Elementi di Complessità Computazionale

Teoria della Calcolabilità!

ITLCC 2006/10/6 19:09 page 7 #3

Richiami di Matematica. 1. Insiemi, relazioni, funzioni. 2. Cardinalitá degli insiemi infiniti e numerabilitá. 3. Notazione asintotica.

Il calcolatore universale, origini e nuovi paradigmi

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

Rappresentazione dei numeri interi in un calcolatore

Sviluppo di programmi

Capitolo 1 Linguaggi e Macchine Astratte

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Macchina di Turing Universale

Concetti Introduttivi. Il Computer

UNA GERARCHIA DI MACCHINE

La macchina di Turing

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.)

Aniello Murano Decidibilità delle teorie logiche

Informatica, Algoritmi, Linguaggi

Informatica Teorica. Macchine a registri

Parte I.5 Cenni alla computazione

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

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

CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1

La tesi di Church-Turing

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

Capitolo 8: Teoria della complessitá

Università degli Studi di Udine. 1 Automi e Linguaggi. Prova Scritta di Fondamenti dell Informatica II Alcune Soluzioni

Introduzione alla programmazione

Fondamenti di Informatica 1 (I Modulo) Introduzione agli algoritmi. Roberto Basili a.a

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

e Algoritmi Marco Piastra Intelligenza Artificiale I Soddisfacibilità

Corso di Linguaggi di Programmazione + Laboratorio

L AUTOMA ESECUTORE L AUTOMA ESECUTORE

2. I numeri reali e le funzioni di variabile reale

Macchine di Turing: somma di due numeri

Logica proposizionale

Macchina di Turing ... !!... !!! a b b! b a! Nastro di Input. testina. s t q i. s r. Unità di Controllo q j S / D / F

La macchina universale

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Fondamenti dell informatica

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Appunti su Indipendenza Lineare di Vettori

Correttezza (prima parte)

Linguaggi Regolari e Linguaggi Liberi

Funzioni calcolabili e linguaggi decidibili

Struttura del calcolatore

Aniello Murano Automi e Pushdown

Rappresentazione dei numeri interi in un calcolatore

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

= < < < < < Matematica 1

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

Fondamenti di Informatica. Algoritmo. Algoritmo funzionale. Prof.ssa Enrica Gentile Informatica e Comunicazione Digitale a.a.

Costruzione di espressioni regolari 4

L ELABORATORE ELETTRONICO

Sistemi di Elaborazione delle Informazioni

Aritmetica dei Calcolatori Elettronici

Scienza dei calcolatori elettronici (Computer Science) Scienza dell informazione. è uno strumento in grado di eseguire insiemi di azioni elementari.

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

Logica e Informatica: cosa i calcolatori possono e non possono fare. Simone Martini

Appunti di informatica. Lezione 7 anno accademico Mario Verdicchio

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 8

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo

Transcript:

Fondamenti di Informatica Università di Camerino Corso di Laurea in Informatica

Teoria della computabilità La teoria della computabilità tratta della definizione formale del concetto di calcolo meccanico. Alcuni importanti formalismi che hanno storicamente condizionato la teoria e l applicazione dei calcolatori sono: Le macchine di Turing Gli schemi ricorsivi di Kleene e McCarthy I sistemi di Post

Teoria della computabilità cont. Uno dei principali risultati della teoria della computabilità è la completa identità delle classi di problemi risolubili nei diversi formalismi. Oggi si ritiene che ogni procedimento di calcolo, purché completamente specificato, sia traducibile in uno qualsiasi dei formalismi. L equivalenza dei formalismi si basa sulla Tesi di Church e la Tesi di Turing Conseguenza Molte proprietà relative, ad esempio, alle macchine di Turing si estendono immediatamente ad un qualsiasi linguaggio di programmazione

Il termine Algoritmo Il termine Algoritmo significa procedimento di calcolo, deriva dal termine latino algorismus che a sua volta deriva dal nome del matematico usbeco Abu Ja far Mohammed ibn-musa al- Khowarismi, vissuto nel IX secolo d.c.

Che cosa è un Algoritmo Un algoritmo è una qualsiasi procedura computazionale ben definita (con un numero finito di regole che conduce al risultato dopo un numero finito di operazioni) che prende un insieme di valori, come input e produce un insieme di valori come output.

Perché parliamo di Algoritmi La teoria degli algoritmi ha iniziato a stabilizzarsi agli inizi del XX secolo, mentre le tecniche di progettazione di algoritmi, di correttezza e efficienza si sono evolute nella seconda metà del XX secolo, grazie alla diffusione dei calcolatori elettronici. Ovunque si impieghi un calcolatore elettronico occorrono algoritmi corretti e efficienti che ne utilizzino al massimo le possibilità Esempi di algoritmi corretti e efficienti: controllo dei voli aerei regolazione reattori nucleari reperimento d informazioni da archivi smistamento di comunicazioni telefoniche gioco degli scacchi controllo della produzione di una catena di montaggio sistemi di puntamento di missili

Correttezza e Efficienza Un algoritmo si dice corretto se, per ogni istanza di input, si ferma con l output corretto Un algoritmo corretto risolve il problema computazionale dato Un algoritmo efficiente risolve il problema computazionale il più velocemente possibile e organizza i dati in modo da usare il minor spazio di memoria possibile

Algoritmi & Programmi Gli algoritmi vengono descritti tramite programmi, che si avvalgono di istruzioni e costrutti dei linguaggi di programmazione per essere eseguiti da calcolatori elettronici Le proprietà degli algoritmi sono fondamentali, generali e robuste da essere indipendenti dalle caratteristiche di specifici linguaggi di programmazione o dai limiti imposti dai calcolatori elettronici a

Metodi Formali I metodi per l analisi della correttezza degli algoritmi I metodi per l analisi dell efficienza degli algoritmi

Definizione di algoritmo Idea empirica Discutiamo le caratteristiche che deve avere un algoritmo partendo dall idea empirica che ne abbiamo: a) Il programma P deve essere di lunghezza finita b) Ci deve essere un agente di calcolo C, capace di eseguire le istruzioni c) L agente di calcolo C ha a disposizione una memoria dove immagazzina i risultati intermedi per poi utilizzarli nelle fasi successive del calcolo d) Il calcolo avviene per passi discreti e) Il calcolo non è probabilistico

Il programma P deve essere di lunghezza finita Ogni algoritmo che sia definibile in pratica, deve essere ricavabile da una quantità finita di informazioni. Esempio Calcolatore con 10 istruzioni-macchina programmato per calcolare l espansione decimale di. Il punto a) è soddisfatto se si considera tale calcolatore come programmato dall algoritmo di lunghezza finita che, dato n, permette di calcolare l n-esima cifra di.

Il calcolo avviene per passi discreti Il punto d) viene soddisfatto se C non ha a disposizione nessun meccanismo di calcolo analogico Il calcolo non è probabilistico Il punto e) è soddisfatto se la modalità di esecuzione del calcolo non è associata a nessuna legge di probabilità

Definizione di algoritmo Caratteristiche discutibili Altre caratteristiche associabili ad un algoritmo sono più discutibili come: f) Non deve esserci alcun limite finito alla lunghezza dei dati di ingresso g) Non deve esserci alcun limite alla quantità di memoria disponibile h) Deve esserci un limite finito al numero e alla complessità delle istruzioni eseguibili da C i) Sono ammesse esecuzioni con un numero di passi illimitato j) Sono ammesse esecuzioni con un numero di passi infinito (cioè esecuzioni che non terminano mai)

Non deve esserci alcun limite finito alla lunghezza dei dati di input Ad esempio somma di n numeri deve essere possibile per un qualsiasi n Non deve esserci alcun limite finito alla quantità di memoria disponibile Ad esempio la moltiplicazione di 2 n x 2 n = 2 2n deve poter essere calcolabile per ogni n

Deve esserci un limite al numero e alla complessità delle istruzioni eseguibili da C Questa condizione è essenziale alla intrinseca finitezza richiesta al nostro sistema formale e quindi deve chiaramente essere soddisfatta. Ciò implica che il numero di celle indirizzabili direttamente con una istruzione-macchina dovrà essere finito. Quindi la memoria illimitata al punto g) non potrà essere tutta indirizzabile direttamente. Ridursi ad indirizzare una cella. Sono ammesse esecuzioni con un numero di passi illimitato Esempio moltiplicazione, il numero di passi cresce al crescere del numero di cifre dei fattori. Si potrà pensare a semplici funzioni della lunghezza dei dati come limiti superiori al numero di passi ammissibili

Algoritmi & Funzioni Sia S un sistema formale, cioè un linguaggio in cui descrivere i nostri algoritmi, più un certo meccanismo di esecuzione. Un algoritmo A definisce quindi una funzione f A avente come dominio l insieme dei possibili dati di input e come codominio l insieme dei possibili risultati. f si dice calcolabile se esiste un algoritmo A tale che f = fa

Esistono algoritmi per tutte le funzioni? Se per alcuni valori dei dati iniziali X un algoritmo non termina, la funzione f A sarà non definita per quei valori. Una funzione che può essere non definita per alcuni valori è detta parziale. Una funzione definita per tutti i valori è detta totale Si noti come ad ogni algoritmo A di S é associata una funzione f=f A, la stessa funzione f può essere associata a più di un algoritmo: f=f A =f A Sia A S l insieme di tutti i possibili algoritmi in S, l insieme F S = {f A A A S } F S è detto l insieme delle funzioni calcolabili in S

Alcune nozioni di logica Completezza: Un sistema formale si dice completo se tutte e sole le verità esprimibili nel linguaggio del sistema sono dimostrabili all interno del sistema stesso. Coerenza: Un sistema formale si dice coerente, se non è possibile ottenere nel sistema una dim. di A e una di non A

Il Teorema di incompletezza di Gödel Gödel logico austriaco nel 1931 affermò che Per ogni formalizzazione coerente dell aritmetica, esistono verità aritmetiche che non possono essere dimostrate, all interno del sistema formale nel quale l aritmetica è rappresentabile o più informalmente L aritmetica non è completamente formalizzabile Esistono proposizioni matematiche di cui non è possibile dimostrare che siano vere o false.

L aritmetizzazione La tecnica usata per dimostrare il teorema di Gödel è particolarmente interessante per noi oggi Si tratta infatti di un metodo che trasformava tutti i simboli e i termini usati nel sistema formale della logica in numeri naturali, in particolare numeri primi

Un altra nozione di logica la decidibilità Un sistema formale è decidibile se esiste un metodo che in un numero finito di passi permette di riconoscere, per ogni formula espressa nel linguaggio del sistema, se è un teorema del sistema o non lo è. Un metodo, quindi, che stabilisca in linea di principio se esiste una dimostrazione per quella formula o no.

Il problema della decidibilità Dopo i risultati di Gödel, restava da risolvere il problema della decisione, che nella formulazione di Turing era posto in questi termini: è possibile avere un metodo meccanico che in un numero finito di passi permetta di riconoscere se una formula espressa nel linguaggio di un sistema formale è o non è un teorema del sistema?

Macchina di Turing Alan Turing introdusse la nozione di MdT nel 1936 come definizione matematica precisa del concetto intuitivo di funzione effettivamente calcolabile per dimostrare l esistenza di problemi indecidibili (tra cui quello della validità logica) Alan Turing pubblicò nel 1936 l articolo: On Computable Numbers with an Application to the decision problem. L idea era di avere una macchina astratta che potesse effettuare ogni tipo di calcolo su numeri e simboli

Macchina di Turing Turing nel 1939 definì così il risultato teorico: Si affermò che una funzione è effettivamente calcolabile se i suoi valori possono essere trovati attraverso un metodo puramente meccanico". Possiamo prendere alla lettera questa asserzione, intendendo per metodo puramente meccanico, un processo che può essere portato a termine da una macchina. E' possibile dare una descrizione matematica delle strutture di queste macchine.

Che vuol dire metodo meccanico? Secondo Turing un metodo meccanico è una procedura eseguita da un dispositivo meccanico, cioè da una macchina Per dimostrare che questo metodo meccanico non esisteva per alcuni problemi, Turing doveva inventare una macchina più generale possibile e mostrare che nemmeno questa era adatta allo scopo

Ma che cos è una macchina di calcolo? E difficile dare una definizione precisa di macchina di calcolo Per Turing è: Lo strumento più generale che si può usare per effettuare calcoli ma I calcoli sono solo manipolazione di simboli allora La macchina è lo strumento più generale e più elementare in grado di manipolare simboli

Una macchina universale Durante la primavera del 1936, Turing inventò la macchina più generale mai concepita, e probabilmente mai concepibile. Il dispositivo era dotato solo di: un nastro bidimensionale diviso in quadrati di lunghezza finita ma illimitata un dispositivo per la lettura, scrittura, eliminazione di simboli e spostamento sul nastro una tavola di istruzioni comprensibile alla macchina che indicava tutte le attività da svolgere senza ambiguità e tutti gli stati in cui la macchina poteva trovarsi

Lo schema di una MdT Dispositivo di lettura/scrittura/cancellazione spostamento sul nastro secondo la tavola delle istruzioni

Il risultato ottenuto da Turing 1. Turing dimostrò che, se un compito era eseguibile da una macchina, allora era simulabile da una MdT 2. Turing dimostrò che esistono calcoli che non possono essere effettuati, manipolazioni di simboli che non vanno a buon fine, procedure che non hanno mai termine anche per una MdT 3. Il problema della decisione è uno dei calcoli che non è possibile effettuare con una MdT

La MdT è una macchina astratta La MdT è un dispositivo astratto, non deve essere realizzabile in pratica E una macchina nella quale non vengono presi in considerazione i vincoli spazio-temporali: Dimensioni della memoria Tempo di calcolo Spazio di calcolo Realizzazione fisica

MdT: descrizioni istantanee 1. Un ingresso finito, cioè un nastro con un numero finito di simboli diversi dal bianco; 2. La posizione della testina di lettura e scrittura 3. Lo stato della macchina 1., 2. e 3. costituiscono la Descrizione Istantanea (DI) iniziale della Mdt Una descrizione Istantanea della MdT è Finale se nella matrice funzionale non esiste configurazione successiva

Introduzione al Modello formale Sia S = {s 0, s n } un alfabeto finito di simboli Q = {q 0, q m } un alfabeto finito rappresentante gli stati, M = {D, S} l insieme dei simboli rappresentante gli spostamenti a destra e sinistra, sia s 0 S il simbolo speciale che denota il bianco. La configurazione di una MdT ad ogni istante (DI) è definita specificando la stringa di simboli sul nastro, la posizione della testina e lo stato della macchina. Questa configurazione può venire rappresentata come una stringa infinita di simboli s 0 s 0 s i1 s i2 s i3 s ik-1 q r s ik s if s 0 s 0 di cui solo un numero finito è diverso da s 0. Il simbolo q r che compare nella stringa specifica lo stato di controllo della macchina e la posizione della testina (si conviene che il simbolo puntato sia quello a destra di q r )

MdT: descrizioni istantanee Se S* è l insieme di tutte le sequenze finite di simboli appartenenti ad S, allora una generica stringa s 0 s 0 s i1 s i2 s i3 s ik-1 q r s ik s if s 0 s 0 Potrà essere rappresentata schematicamente con qs dove, S*, q Q e s S, s rappresenta il simbolo in lettura. Una stringa qs sarà quindi una DI della MdT

MdT: comportamento La Matrice Funzionale rappresenta il comportamento della MdT s j dove: le righe rappresentano gli stati interni q 0, q 1,, q m q i s k q r x t le colonne rappresentano i simboli di ingresso s 0, s 1,, s n.b Mf(q i, s j ) rappresenta l azione che deve essere eseguita dalla macchina nel caso in cui si trovi nello stato q i e legga il simbolo s j. Un passo <s k q r x t > consiste nelle seguenti tre operazioni: 1. scrivere un altro simbolo s k ; 2. modificare lo stato in q r ; 3. spostarsi sul nastro a destra o a sinistra di una casella, a seconda che x t = DESTRA o x t = SINISTRA. In particolare s j può essere uguale a s k, e q i può essere uguale a q r cioè lo stato e il valore contenuti nella casella possono non essere modificati. Casella bianca, termine calcolo.

MdT: comportamento In generale il comportamento di una MdT è descritto da una quintupla che descrive la trasformazione di una DI nella successiva. Ogni trasformazione corrisponde ad un passo della computazione Ogni quintupla è del tipo: q i s j s ij q ij x ij q i,q ij Q, s i,s ij S, x ij M. I primi due simboli rappresentano una possibile situazione in cui la macchina si trova, Gli ultimi tre rappresentano l azione che la macchina deve intraprendere in corrispondenza di tale situazione: cioè la macchina sostituisce nella stringa il simbolo q i con il simbolo q ij, il simbolo s j con il simbolo s ij e sposta q ij di una posizione a destra o a sinistra secondo il valore contenuto in x ij. Esempio: q i s j s ij q ij D s 0 s 0 s 1 s 2 s 3 s j-1 q i s i s k s 0 s 0 s 0 s 0 s 1 s 2 s 3 s j-1 s ij q ij s k s 0 s 0 q i s j s ij q ij S s 0 s 0 s 1 s 2 s 3 s j-1 q i s i s k s 0 s 0 s 0 s 0 s 1 s 2 s 3 q ij s j-1 s ij s k s 0 s 0

Modello matematico della MdT DEF. 1: Una MdT Z è una terna (Q, S, P) in cui: Q è un insieme finito (l insieme degli stati) S è un insieme finito (l insieme dei simboli, un elemento è detto bianco e indicato con s 0 ) P è un sottoinsieme di QxSxSxQx{S,D}, l insieme delle quintuple di Z, ed ha la proprietà che non ci sono due quintuple con i primi due elementi uguali.

Relazione - Introduciamo la relazione - fra DI (Descrizioni Istantanee) di una MdT, che vale quando la seconda DI rappresenta la configurazione ottenuta in un passo da quella rappresentata dalla prima DI DEF. 2: Sia Z=(Q,S,P) una MdT. La relazione - è definita come segue: qs - s q se qss q D P sqs - q ss se qss q S P

Computazione di MdT Z DEF. 3: Una computazione massimale della MdT è una sequenza finita z 0 - z 1 -z 2 - - z m di DI di Z, tale che z m è una DI finale, cioè se z m = qs, allora nessuna quintupla in P inizia con q s ; ed inoltre z j - z j+1 per 0 j m-1. Se facciamo partire Z da una configurazione iniziale z 0, allora o Z si fermerà, nel qual caso z 0 definisce univocamente la computazione massimale della quale z 0 è primo elemento, o Z non si fermerà mai, nel qual caso Z non ha alcuna computazione massimale di cui z 0 è primo elemento.

Chiusura transitiva c1 c2... ci ci+1... Usiamo la chiusura riflessiva e transitiva di, indicata con *, per denotare la relazione tra due configurazioni c e c' che esprime l'esistenza di una computazione che da c porta a c tramite un numero finito (eventualmente 0) di transizioni c * c

MdT Un ulteriore definizione di MdT è la seguente: Def. Macchina di Turing: M=<S,b,Q,q 0,F,d> S alfabeto di simboli b carattere speciale, spazio bianco (blank) Q insieme finito di stati q 0 stato iniziale F insieme di stati finali d funzione di transizione (parziale) d: : Q (S {b}) Q (S {b}) {d,s,i} d,s,i indicano spostamento a destra, a sinistra e immobilita' della testina Sb = S {b}

Computazione massimale Def. Una computazione c1 c2... cn e' massimale se non esiste una DI c tale che cn c NOTA BENE. Una computazione massimale si conclude o con una DI o con una DI finale (lo stato è finale) o con una DI in cui non e' definita la funzione di transizione

Computazione massimale Def. Una computazione massimale <c0, c1,..., cn> e' accettante se c 0 e' iniziale e c n e' finale. Def. Una computazione massimale <c0, c1,..., cn> e' rifiutante se c 0 e' iniziale e c n non e' finale. Convenzioni. Computazione accettante: responso affermativo Computazione rifiutante: responso negativo Computazione infinita: nessun responso

Algoritmo & MdT 1-5 requisiti 1. Il programma P deve essere di lunghezza finita 2. Ci deve essere un agente di calcolo C, capace di eseguire le istruzioni 3. L agente di calcolo C ha a disposizione una memoria dove immagazzina i risultati intermedi per poi utilizzarli nelle fasi successive del calcolo 4. Il calcolo avviene per passi discreti 5. Il calcolo non è probabilistico 1. L insieme di quintuple, o la matrice funzionale, della MdT costituisce un insieme finito di istruzioni. 2. La MdT è l agente di calcolo che esegue le istruzioni di cui al punto 1. 3. La MdT può utilizzare il nastro per memorizzare i risultati intermedi 4. La MdT opera in modo discreto 5. La MdT opera in modo deterministico, in quanto ad ogni condizione corrisponde una sola azione

Algoritmo & MdT 6-10 requisiti 6. Non deve esserci alcun limite finito alla lunghezza dei dati di ingresso 7. Non deve esserci alcun limite alla quantità di memoria disponibile 8. Deve esserci un limite finito al numero e alla complessità delle istruzioni eseguibili da C 9. Sono ammesse esecuzioni con un numero di passi illimitato 10. Sono ammesse esecuzioni con un numero di passi infinito (cioè esecuzioni che non terminano mai) 6. Non esiste nessuna limitazione sulla lunghezza delle stringhe di ingresso, in quanto il nastro è illimitato 7. Il nastro della MdT costituisce una memoria di capacità non limitata 8. Le operazioni che la MdT può eseguire sono molto semplici, quindi di complessità finita 9. Non esiste nessun limite sul numero di istruzioni che vengono eseguite durante una computazione, in quanto non esiste alcun limite al numero di volte che una quintupla può essere usata 10. Poiché esistono DI iniziali che non danno origine ad alcuna computazione mass. Ciò significa che la corrispondente sequenza di DI è infinita.

Calcolabilità Il modello di calcolo delle Macchine di Turing (TM) puo essere utilizzato sia per risolvere problemi di decisione (o accettazione), sia per calcolare funzioni (parziali) su S*.

Funzioni Calcolabili mediante MdT Ad ogni MdT Z può essere facilmente associata la funzione calcolata da Z, una volta che siano fissata una convenzione consistente sia per la codifica dei dati iniziali che del risultato finale. Esempio, data f: N n N una codifica degli argomenti potrebbe essere b b 1 b 2 b b n b b Dove i rappresenta la codifica binaria dell argomento i-mo. Il risultato finale f(x 1, x n ) potrebbe invece essere rappresentato dal numero binario che si trova alla destra della testina alla fine della computazione.

Funzioni calcolabili Def. Macchina di Turing trasduttrice: ogni configurazione finale e' del tipo xbqy, dove x e' il contenuto del nastro all'inizio della computazione Def. Una macchina trasduttrice calcola la funzione f se per tutte e sole le x nel dominio di definizione di f esiste q Q tale che: q 0 x * xbqf(x) Def. Una funzione (parziale) f per la quale esiste una macchina di Turing che la calcola e' detta calcolabile secondo Turing (T-calcolabile).

Esempio MT che calcola f(x) = x per x {0,1}*. M=<{0,1},b,Q,q 0,{q 6 },d> Configurazione iniziale: q 0 10010110 Configurazione finale: 10010110bq 6 10010110 rimpiazza il carattere piu' a sinistra (0 o 1) con una X o, rispettivamente, con una Y Y0010110 (stato q 0 ) si muove a destra verso il primo b (stati q 1 e q 2 ) si muove a destra verso il secondo b e scrive 0 o, rispettivamente, 1 Y0010110b1 (stati q 3 e q 4 ) si muove a sinistra verso la X (o la Y) e la rimpiazza con 0 (1) (stato q 5 ) si muove di una cella a destra sul carattere successivo (stato q 0 ) se in questo ultimo passo trova b allora termina (stato q 6 )

Decidibilità Def. M=<S,b,Q,q 0,F,d> riconosce (decide) un linguaggio L se per ogni x S* esiste q Q tale che q 0 x * q con (S b )* e (S b ) + e la computazione corrispondente e' massimale, x L se e solo se q F Def. Un linguaggio riconosciuto da una macchina di Turing e' detto decidibile. Nota: Con S + denotiamo l'insieme delle stringhe non vuote. Pertanto S * = S + {stringa vuota}

Nota 1 Non e' detto che una macchina di Turing possa sempre riconoscere un linguaggio

ACCETTAZIONE DI LINGUAGGI Informalmente: Una macchina di Turing M riconosce un linguaggio L se per ogni x S*, M e in grado di stabilire se x L o no Una macchina di Turing M accetta un linguaggio L se per tutte e sole le x L, M e in grado di stabilire tale appartenenza, ma se x L, M non garantisce un comportamento prestabilito. Utilizzeremo lo stato finale (gli stati finali) per esprimere che la stringa data in input appartiene al linguaggio.

Semi-decidibilità Def. M=<S,b,Q,q 0,F,D> accetta un linguaggio L se per tutte e sole le x L esiste q F tale che q 0 x * q con (S b )* e (S b ) + In altre parole: Un linguaggio L e' accettato da una macchina di Turing M se: con (S b )*, (S b ) +. L = L(M) = {x x S* q 0 x * q q F} Def. Un linguaggio accettato da una macchina di Turing e' detto semidecidibile.

Nota 2 Se un linguaggio e' decidibile e' anche semidecidibile.

MdT generalizzate Possibili varianti della MdT: Variazione del numero degli stati Variazione del numero dei simboli dell alfabeto Aumento del numero di testine Aumento del numero dei nastri multidimensionali

Equivalenza di MdT La dimostrazione di equivalenza di una MdT modificata con quella di base si basa sul fatto che la MdT di base permette di esprimere qualsiasi operazione che può essere espressa in una MdT modificata. Concretamente ciascuna dimostrazione cercherà una MdT ordinaria che simuli effettivamente il comportamento della MdT di cui vogliamo mostrare l equivalenza

MT NONDETERMINISTICHE (MdT ND ) Def. Macchina di Turing non deterministica: M=<S,b,Q,q0,F, N > S alfabeto di simboli b carattere speciale, spazio bianco Q insieme finito di stati q0 stato iniziale F insieme di stati finali N funzione parziale di transizione N : Q S b P(Q S b {d,s,i}) La macchina di Turing non deterministica puo' eseguire piu' transizioni

Equivalenza tra MT e MdT ND Le MdT ND sono piu' "efficienti" ma non piu' potenti computazionalmente delle MT Teorema. Data una macchina non deterministica M con grado di non-determinismo d esiste una MT M' equivalente che simula k passi di M in O(kd k ) passi

CALCOLABILITA' SECONDO TURING (T-CALCOLABILITA') Le macchine di Turing ci consentono di definire linguaggi decidibili o semidecidibili funzioni (totali o parziali) calcolabili

Tesi di Church Contemporaneamente a Turing anche Alonzo Church ha introdotto un concetto di calcolabilita' ( -definibilita') basato su un sistema formale ( - calcolo). Tale sistema e' stato dimostrato equivalente, dallo stesso Turing. Cio' ha permesso di formulare la cosiddetta Tesi di Church-Turing: "Ogni funzione computabile con qualunque approccio formale e' T-computabile" Tutti i formalismi definiti successivamente hanno confermato la Tesi di Church-Turing.

Macchina di Turing universale E' possibile descrivere una macchina di Turing con una stringa di caratteri e fornire tale descrizione come input ad un'altra macchina di Turing. Esistono vari modi di descrivere una macchina di Turing con una stringa: possiamo fornire la sequenza delle quintuple che costituiscono la funzione di transizione ##d1##d2##... ##dn in cui e' presente la quintupla qi# j#qh# k#t1 se e solo se esiste la regola di transizione (qi,sj)=(qh, k, tl); possiamo sfruttare il fatto che ogni macchina di Turing puo' essere realizzata come composizione di alcune macchine elementari e fornire la descrizione di una macchina come sequenza di tali macchine.

Macchina di Turing universale Sia DM la descrizione della macchina M. Teorema. Esiste una macchina di Turing U, con stato iniziale (detta macchina di Turing universale) q 0U, che, data una qualunque descrizione D M, realizza la computazione q 0U D M #x * q fu, con q fu stato finale, se e solo se la macchina M, con stato iniziale q 0, realizza la computazione q 0 x * q f, con q f stato finale. Dim. La macchina non fa che eseguire una per una le trasformazioni richieste dalle quintuple della macchina M contenute in D M. Al termine cancella dal nastro la descrizione D M.

La MdT è una macchina simulatrice La MdTU emula il comportamento delle altre MdT attraverso una tavola di istruzioni, inserita nella macchina come se fossero i suoi dati La MdTU è perciò una macchina virtuale La MdTU è l insieme di struttura e tavola di istruzioni: Hardware + Software

IL PROBLEMA DELLA TERMINAZIONE (HALTING PROBLEM) Dimostriamo ora l'esistenza di una funzione che non e' calcolabile con una MT. Assumiamo che le macchine di Turing siano macchine ad un nastro, deterministiche con alfabeto S={0,1}.

HALTING PROBLEM (1) Data una MT M=<S,b,Q,q 0,F, > sia D M la codifica di M in S. Per x S* definiamo il predicato della terminazione h(d M,x) =1 se M con input x termina =0 se M con input x non termina Teorema. Il predicato della terminazione delle macchine di Turing non e' T-calcolabile. NOTA BENE. Invece e' T-calcolabile il predicato: h(d M,x) =1 se M con input x termina = indefinito, altrimenti

HALTING PROBLEM (2) Dim. Supponiamo che il predicato sia calcolabile, esista cioe' una macchina di Turing H che calcola h. Costruiamo la macchina H' che calcola il predicato h'(d M ) =1 se M con input D M termina =0 se M con input D M non termina H' non e' altro che la composizione di due macchine: la prima con input D M fornisce D M bd M, la seconda e' la macchina H che prende in input e calcola il predicato della terminazione. In altre parole H' e' la macchina che verifica se una MT termina quando le viene fornito in input il proprio codice. Possiamo ora costruire una nuova macchina H" che prende in input D M e calcola la funzione: h"(d M ) =0 se h'(d M ) = 0 =indefinito altrimenti H", cioe', termina con 1 se H' si e' fermata con 0 e si mette a ciclare, se H' si e' fermata con 1 Cosa accade ora se calcoliamo h"(d H "): h"(d H ") =indefinita se h"(dh") e' definita =0 se h"(d H ") e' indefinita In ogni caso abbiamo una contraddizione. Quindi non puo' esistere la macchina H.

Problemi ricorsivamente insolubili Le funzioni non calcolabili mediante MdT sono associate a problemi che si dicono Ricorsivamente Insolubili Esempi di problemi ricorsivamente insolubili: 1. Decidere se per ogni x, x è una funzione costante o no; 2. Decidere se per ogni x e z, z appartiene al codominio di x ; 3. Decidere se per ogni x1 e x2 x1 = x2 ; 4. Esempi di problemi per i quali è impossibile dimostrare la insolubilità ricorsiva: 1. Ultimo teorema di Fermat (decidere se esistono 4 interi x,y,z, e n con n>2, t.c. x n + y n = z n 2. Il problema dei 4 colori (decidere se sono sufficienti 4 colori per colorare i nodi di un grafo piano in modo tale che due nodi adiacenti non abbiano mai lo stesso colore) 3.