La tesi di Church-Turing
|
|
|
- Andrea Salvatore
- 9 anni fa
- Visualizzazioni
Transcript
1 ITLCC 2006/11/12 21:06 page 79 #3 Capitolo 5 La tesi di Church-Turing SOMMARIO Sebbene il concetto di algoritmo abbia avuto una lunga storia nel campo della matematica, il concetto formale di algoritmo non fu introdotto prima dell inizio del diciannovesimo secolo: prima di allora, i matematici avevano una nozione intuitiva di cosa fosse un algoritmo e su di essa facevano affidamento per usare e descrivere algoritmi. Tuttavia, tale nozione intuitiva era insufficiente per comprendere appieno le potenzialità del calcolo algoritmico: per questo motivo, come già detto nell introduzione, diversi ricercatori nel campo della logica matematica proposero una definizione formale del concetto di algoritmo. In questo capitolo, presenteremo tre di queste definizioni formali, dimostrando, per ciascuna di esse, come essa non introduca un modello di calcolo più potente delle macchine di Turing ed enunciando (senza dimostrarla) la sua equivalenza con il modello di calcolo della macchina di Turing: in base a tali risultati, enunceremo infine quella che tutt ora è nota coma la tesi di Church-Turing. 5.1 Algoritmi di Markov All inizio degli anni cinquanta il matematico e logico russo Markov, propose un modello di calcolo basato sull elaborazione di stringhe, che dimostrò essere equivalente alle macchine di Turing. A differenza delle macchine di Turing, gli algoritmi di Markov operano esclusivamente in funzione del contenuto della stringa e non in funzione di uno stato interno dell algoritmo. In particolare, un algoritmo di Markov è definito mediante una serie di regole di riscrittura che permettono di trasformare, in modo univoco, il contenuto di una stringa in un altra stringa. Formalmente, esso consiste di: un alfabeto Σ, di cui un sotto-insieme Γ costituisce l alfabeto dei caratteri di cui può essere costituita la stringa iniziale o di input;
2 ITLCC 2006/11/12 21:06 page 80 #4 80 Capitolo 5 La tesi di Church-Turing un insieme finito e ordinato R di regole del tipo x y oppure del tipo x y, dove x e y sono stringhe su Σ (le regole del secondo tipo sono anche dette regole terminali). Una regola x y o x y si dice essere applicabile a una stringa z su Σ, se z = z 1 xz 2, dove z 1 e z 2 sono due stringhe su Σ tali che z 1 x contiene una sola occorrenza della stringa x: applicare la regola a z, significa sostituire la prima occorrenza di x in z con y. Partendo da una stringa x Γ di input, un algoritmo di Markov opera nel modo seguente. 1. Scandisce tutte le regole in R nell ordine stabilito, alla ricerca di una che sia applicabile alla stringa corrente: se nessuna regola viene trovata, l algoritmo termina producendo in output la stringa corrente. 2. Se r è la regola trovata al passo precedente, applica r alla stringa corrente: la nuova stringa diviene la stringa corrente. 3. Se r non è terminale, torna al primo passo, altrimenti termina producendo in output la stringa corrente. Esempio 5.1: algoritmo di Markov per il successore Dato un numero naturale n codificato in unario mediante la stringa 1 n+1, un semplice algoritmo di Markov che produce la codifica del suo successore è costituito dalla sola regola terminale ɛ 1. Tale regola è sempre applicabile e inserisce un simbolo 1 in testa alla stringa di input. Esempio 5.2: algoritmo di Markov per la somma Dati due numeri naturali n e m codificati in unario e separati da un simbolo 0, un semplice algoritmo di Markov che produce la codifica della loro somma è costituito dalla sola regola terminale 10 ɛ. Tale regola elimina il separatore tra i due numeri insieme al simbolo 1 di troppo. Il prossimo esempio illustra come l ordine con cui le regole sono presenti nell insieme R sia determinante per il corretto funzionamento dell algoritmo. In particolare, osserviamo che se R contiene due regole x 1 y 1 e x 2 y 2 (eventualmente terminali) tali che x 1 è un prefisso di x 2, allora la regola x 2 y 2 deve precedere la regola x 1 y 1, perché altrimenti essa non verrebbe mai selezionata durante l esecuzione dell algoritmo: in particolare, se R include una regola ɛ y (eventualmente terminale), questa deve essere la sua ultima regola.
3 ITLCC 2006/11/12 21:06 page 81 #5 5.1 Algoritmi di Markov Esempio 5.3: algoritmo di Markov per il prodotto Dati due numeri naturali n e m codificati in unario e separati da un simbolo 0, un algoritmo di Markov che produce la codifica del loro prodotto può essere realizzato immaginando di eseguire la moltiplicazione in modo simile a quanto fatto con le macchine di Turing nel terzo capitolo. In particolare, l algoritmo cancella un simbolo 1 da entrambe le sequenze, quindi, per ogni simbolo 1 della prima sequenza esegue una copia della seconda sequenza in fondo alla stringa corrente e, infine, cancella la seconda sequenza: l insieme di regole che implementa tale strategia è la seguente. 1 π1 π 0 10 α0 λ 19 1δ 1 δ π 0 1 1π 0 11 α1 β 20 2δ 1 2γ 3 π 0 0 0ρ 12 β1 1β 21 2µ µ1 4 ρ1 ρ 0 13 β0 0γ 22 0µ ν0 5 ρ 0 1 1ρ 0 14 γ1 2δ 23 1ν ν1 6 ρ 0 σ= 15 δ1 1δ 24 ν α 7 1σ σ1 16 δ= δ 0 = 1 25 λ1 λ 8 0σ σ0 17 1δ 0 δ λ=.1 9 σ α 18 2δ 0 µ1 27 ɛ π Le regole 1-9 realizzano la cancellazione di un simbolo 1 nelle due sequenze e l inserimento di un separatore (ovvero il simbolo =) al termine della seconda sequenza, mentre le regole eseguono, per ogni simbolo 1 della prima sequenza, una copia della seconda sequenza immediatamente dopo il simbolo =. Infine, le regole 25, 26 e 27 consentono di cancellare la seconda sequenza e il simbolo =. Una funzione f : Σ Σ è detta essere Markov-calcolabile se esiste un algoritmo di Markov che, partendo da una stringa x Σ, produce in output f(x). Teorema 5.1 Se una funzione f : Σ Σ è Markov-calcolabile, allora esiste una macchina di Turing che calcola f. Dimostrazione. Sia R l insieme delle regole di riscrittura dell algoritmo di Markov che calcola f, con n = R, e sia a i b i o a i b i l i-esima regola di R, per i compreso tra 1 e n. La macchina di Turing T che calcola f include uno stato q [i] 0, per ogni i con 1 i n: in particolare, q [1] 0 è lo stato iniziale di T. Tale macchina opera nel modo seguente. Trovandosi nello stato q [i] 0, cerca la prima occorrenza di a i: se non la trova, scorre il nastro verso sinistra fino a incontrare un e, se i < n, si sposta a destra e passa nello stato q [i+1] 0, altrimenti (ovvero i = n), si sposta a destra e passa nello stato finale q end. Se, invece, T trova un occorrenza di a i, allora trasforma a i in una sequenza
4 ITLCC 2006/11/12 21:06 page 82 #6 82 Capitolo 5 La tesi di Church-Turing di *, a cui aggiunge o sottrae tanti simboli * quanti ne servono per ottenere una sequenza di lunghezza pari a b i e trasforma la sequenza di * così ottenuta in b i. Se la i-esima regola è terminale, allora passa nello stato q pre end altrimenti passa nello stato q next : in entrambi i casi, scorre il nastro verso sinistra fino a trovare Infine, se si trova nello stato q pre end, si sposta a destra e passa nello stato finale q end, altrimenti (ovvero si trova nello stato q next ) passa nello stato q [1] 0. Abbiamo dunque dimostrato che gli algoritmi di Markov non sono un modello più potente delle macchine di Turing e, quindi, che tutto ciò che non può essere calcolato da una macchina di Turing non può essere calcolato da un algoritmo di Markov. In particolare, tutti i linguaggi non decidibili che abbiamo mostrato nel precedente capitolo non sono decidibili facendo uso degli algoritmi di Markov. 5.2 Funzioni ricorsive La teoria delle funzioni ricorsive fu sviluppata dal logico matematico Kleene, sulla base di quanto fatto in precedenza da Gödel per definire in modo ragionevole il concetto di funzione calcolabile. Una funzione ricorsiva è una funzione che può essere ottenuta, a partire da tre funzioni di base, applicando uno di tre possibili operatori, ovvero l operatore di composizione, quello di ricorsione primitiva e quello di minimalizzazione. In particolare, una funzione f : N n N è detta essere ricorsiva se una delle seguenti condizioni è vera: 1. f è la funzione successore S, tale che, per ogni numero naturale x, S(x) = x + 1; 2. f è la funzione zero Z n, tale che, per ogni n-tupla di numeri naturali x 1,..., x n, Z n (x 1,..., x n ) = 0; 3. f è la funzione selettore U n k con 1 k n, tale che, per ogni n-tupla di numeri naturali x 1,..., x n, U n k (x 1,..., x n ) = x k ; 4. esistono m funzioni ricorsive g 1,..., g m : N n N e una funzione ricorsiva h : N m N, tali che, per ogni n-tupla di numeri naturali x 1,..., x n, f(x 1,..., x n ) = h(g 1 (x 1,..., x n ),..., g m (x 1,..., x n )) 5. esiste una funzione ricorsiva b : N n N e una funzione ricorsiva i : N n+1 N, tali che, per ogni n-tupla di numeri naturali x 1,..., x n, { b(x1,..., x f(x 1,..., n ) se x x n ) = 1 = 0, i(x 1 1,..., x n, f(x 1 1,..., x n )) altrimenti
5 ITLCC 2006/11/12 21:06 page 83 #7 5.2 Funzioni ricorsive esiste una funzione ricorsiva p : N n+1 N, tale che, per ogni n-tupla di numeri naturali x 1,..., x n, f(x 1,..., x n ) = min t 0 [p(x 1,..., x n, t) = 0] Esempio 5.4: funzione ricorsiva per il calcolo del predecessore È facile dimostrare che la funzione predecessore è una funzione ricorsiva (assumendo che il predecessore di 0 sia 0 stesso). Infatti, tale funzione può essere definita nel modo seguente: { Z 1 (x) se x = 0, f(x) = U 2 1 (x 1, f(x 1)) altrimenti Esempio 5.5: funzione ricorsiva per il calcolo della somma È anche facile dimostrare che la funzione di somma di due numeri naturali è una funzione ricorsiva. Infatti, tale funzione può essere definita nel modo seguente: { U 2 f(x, y) = 2 (x, y) se x = 0, S(U 3 3 (x 1, y, f(x 1, y))) altrimenti Teorema 5.2 Data una funzione f : N n N ricorsiva, esiste una macchina di Turing che calcola f. Dimostrazione. La dimostrazione consiste anzitutto nel mostrare che le tre funzioni di base sono calcolabili da una macchina di Turing (si vedano gli Esercizi 2.1, 2.2 e 2.3). Facendo poi uso del concetto di sotto-macchina, non è difficile dimostrare che una funzione ottenuta per composizione di funzioni calcolabili da macchine di Turing è essa stessa calcolabile da una macchina di Turing, che una funzione ottenuta per ricorsione primitiva a partire da funzioni calcolabili da macchine di Turing è essa stessa calcolabile da una macchina di Turing e che una funzione ottenuta per minimizzazione a partire da una funzione calcolabile da una macchina di Turing è essa stessa calcolabile da una macchina di Turing (si veda l Esercizio 5.6). Anche in questo caso, abbiamo dunque dimostrato che le funzioni ricorsive non sono un modello più potente delle macchine di Turing e, quindi, che esistono funzioni che non sono ricorsive.
6 ITLCC 2006/11/12 21:06 page 84 #8 84 Capitolo 5 La tesi di Church-Turing 5.3 Macchine RAM La maggior parte dei programmatori sono soliti esprimere i loro algoritmi facendo uso di linguaggi di programmazione di alto livello come C, Java e COBOL, sapendo che un programma (sintatticamente corretto) scritto in uno qualunque di tali linguaggi può essere tradotto in un programma scritto in linguaggio macchina: questo è effettivamente il compito svolto dai compilatori. L ultimo modello di calcolo che consideriamo in questo capitolo è un modello molto simile a un linguaggio macchina e, quindi, in grado di calcolare tutto quello che possiamo calcolare facendo uso di un linguaggio di programmazione di alto livello. A dire il vero, tale modello risulta essere apparentemente più potente di un linguaggio macchina, non avendo alcun vincolo sulla dimensione di una parola di memoria o di un indirizzo di una cella di memoria: in questo paragrafo, mostreremo che anche questo modello non è più potente delle macchine di Turing, per cui potremo concludere che esistono funzioni che non possono essere calcolate da alcun programma scritto, ad esempio, in Java. Una Random Access Machine (in breve, RAM) ha un numero potenzialmente infinito di registri e un contatore di programma: ogni registro è individuato da un indirizzo, ovvero da un numero intero non negativo, e può contenere un numero intero non negativo arbitrariamente grande. Nel seguito, indicheremo con n un numero intero non negativo, con (n) il contenuto del registro il cui indirizzo è n e con [n] il contenuto del registro il cui indirizzo è contenuto nel registro il cui indirizzo è n (si tratta del ben noto indirizzamento indiretto). Un programma RAM è una sequenza di istruzioni (eventualmente dotate di un etichetta) di uno dei seguenti tipi. accept oppure reject: il programma termina accettando o rifiutando l input letto. read (n) oppure read [n]: l input di un programma RAM è un flusso di numeri interi non negativi e queste due istruzioni leggono il prossimo numero del flusso memorizzandolo, rispettivamente, nel registro il cui indirizzo è n oppure nel registro il cui indirizzo è contenuto nel registro il cui indirizzo è n. (n) : = o1 operatore o2 oppure [n] := o1 operatore o2 dove operatore indica una delle quattro operazioni aritmetiche elementari, ovvero +, -, * e / e o1 (rispettivamente, o2) può essere m1, (m1) oppure [m1] (rispettivamente, m2, (m2) oppure [m2]), per un qualunque numero intero non negativo m1 (rispettivamente, m2). if o1 operatore o2 goto etichetta dove operatore indica una delle quattro ope-
7 ITLCC 2006/11/12 21:06 page 85 #9 5.3 Macchine RAM razioni relazionali =, <>, <= e < e o1 e o2 hanno lo stesso significato del tipo di istruzione precedente. All avvio dell esecuzione di un programma RAM, tutti i registri contengono 0 e il contatore di programma è uguale a 0: a ogni passo, l istruzione indicata dal contatore di programma viene eseguita. Se tale istruzione non è un if oppure è un if la cui condizione booleana non è verificata, il contatore di programma aumenta di 1, altrimenti il contatore di programma viene posto uguale all indice dell istruzione corrispondente all etichetta dell istruzione if. Esempio 5.6: programma RAM per la verifica di sequenze palindrome Supponiamo di voler decidere se una sequenza di 0 e 1, terminata da un 2, è palindroma. Un programma RAM che risolve tale problema può leggere la sequenza memorizzandola in registri adiacenti per poi scorrere tali registri in una direzione e nell altra verificando che i numeri corrispondenti siano uguali. Formalmente, un tale programma è composto dalla seguente sequenza di istruzioni. (1) := next: read [1] if [1] = 2 goto test (1) := (1) + 1 if 0 = 0 goto next test: (1) := (1) -1 (0) = loop: if (1) <= (0) goto yes if [0] <> [1] goto no (0) = (0) + 1 (1) = (1) - 1 if 0 = 0 goto loop yes: accept no: reject Una funzione f : N n {0, 1} è RAM-calcolabile se esiste un programma RAM che, data in input una sequenza x di n numeri interi, termina con l istruzione accept se f(x) = 1 e termina con l istruzione reject se f(x) = 0. Teorema 5.3 Ogni funzione f : N n N RAM-calcolabile è calcolabile da una macchina di Turing. Dimostrazione. Definiamo una macchina di Turing T con più nastri, di cui un nastro funge da input e contiene la sequenza di n numeri interi (ad esempio, rappresentati in binario e separati da e un nastro funge da memoria e contiene inizialmente
8 ITLCC 2006/11/12 21:06 page 86 #10 86 Capitolo 5 La tesi di Church-Turing contenente il solo simbolo $ ( i rimanenti nastri sono nastri di lavoro, inizialmente vuoti e il cui utilizzo sarà chiarito nel corso della definizione di T). A regime il nastro di memoria contiene la stringa $#a 1 :v 1 #a 2 :v 2 #a 3 :v 3 # a m :v m #@@@ dove a i indica l indirizzo di un registro e v i ne indica il contenuto (assumiamo che se l indirizzo di un registro non appare in tale sequenza, il suo contenuto sia uguale a 0). Se l indirizzo di un registro appare più di una volta nella sequenza, allora il suo contenuto attuale è quello che appare più a destra nella sequenza stessa. Il nastro di memoria viene usato per realizzare le seguenti due operazioni. Determinare il contenuto di un registro il cui indirizzo a è memorizzato su un nastro di lavoro: a tale scopo, T scorre verso destra il nastro di memoria fino a trovare per poi spostarsi verso sinistra, cercando la prima occorrenza di a. Se T non trova tale occorrenza, il contenuto del registro è 0, altrimenti il contenuto del registro è racchiuso tra il successivo simbolo : e il successivo simbolo #: in entrambi i casi, tale contenuto viene scritto su un altro nastro di lavoro. Modificare il contenuto di un registro il cui indirizzo a è memorizzato su un nastro di lavoro, assegnandogli il valore v memorizzato su un altro nastro di lavoro: a tale scopo, T scorre il nastro di memoria fino a trovare e scrive a:v#. Ogni istruzione del programma RAM che calcola f è realizzata da una sotto-macchina, la cui definizione dipende dal tipo dell istruzione nel modo seguente (nel seguito, considereremo solo il caso in cui l indirizzamento sia esclusivamente indiretto, in quanto questo risulta essere il caso più complesso). L istruzione è accept (rispettivamente, reject): in tal caso, T scrive 1@ (rispettivamente, 0@) su un nastro di output, posiziona la testina sul simbolo 1 (rispettivamente, 0) e termina. L istruzione è read [n]: in tal caso, T legge il contenuto a del registro n, legge il prossimo numero intero v e assegna al registro a il valore v. L istruzione è [n] := [m1] operatore [m2]: in tal caso, T legge il contenuto a del registro n, legge il contenuto b1 del registro m1, legge il contenuto o1 del registro b1, legge il contenuto b2 del registro m2, legge il contenuto o2 del registro b2, calcola il valore v ottenuto eseguendo o1 operatore o2 e assegna al registro a il valore v.
9 ITLCC 2006/11/12 21:06 page 87 # La tesi di Church-Turing L istruzione è if [n1] operatore [n2] goto l: in tal caso, T legge il contenuto a1 del registro n1, legge il contenuto o1 del registro a1, legge il contenuto a2 del registro n2, legge il contenuto o2 del registro a2. Se o1 operatore o2 non è vera, passa il controllo alla sotto-macchina corrispondente all istruzione successiva, altrimenti passa il controllo alla sotto-macchina corrispondente all istruzione con etichetta l. È evidente che T termina producendo come output il valore 1 se il programma RAM termina eseguendo l istruzione accept e termina producendo come output il valore 0 se il programma RAM termina eseguendo l istruzione reject: pertanto, la funzione T calcola la funzione f e il teorema risulta essere dimostrato. Anche nel caso delle RAM, abbiamo dunque dimostrato che tale modello di calcolo non è più potente delle macchine di Turing e, quindi, che esistono funzioni che non sono RAM-calcolabili. 5.4 La tesi di Church-Turing I risultati ottenuti nei precedenti paragrafi mostrano come modelli di calcolo alternativi alle macchine di Turing, introdotti all incirca nello stesso periodo di quello introdotto da Turing oppure simili agli odierni calcolatori, non siano in grado di calcolare funzioni che non sono calcolabili mediante una macchina di Turing. Pertanto, possiamo ragionevolmente assumere che tutti i risultati negativi ottenuti nel precedente capitolo valgano indipendentemente dal modello di calcolo utilizzato, mostrando la difficoltà computazionale intrinseca ad alcuni linguaggi (come, ad esempio, quello della terminazione). È d altra parte possibile dimostrare il seguente risultato. Teorema 5.4 Ogni funzione calcolabile da una macchina di Turing è Markov-calcolabile, ricorsiva e RAM-calcolabile. La dimostrazione di tale teorema risulta non troppo complicata nel caso degli algoritmi di Markov e dei programmi RAM (si vedano gli Esercizi 5.11 e 5.12). Nel caso delle funzioni ricorsive, invece, la dimostrazione fa uso di una tecnica introdotta dal logico Kurt Gödel nella dimostrazione del suo famoso teorema e, per questo, chiamata tecnica di goedilizzazione: tale tecnica consente di mettere in corrispondenza biunivoca e in modo costruttivo l insieme dei numeri naturali con quello delle configurazioni della computazione di una macchina di Turing, simulando così attraverso funzioni ricorsive il processo di produzione di una configurazione a partire da un altra configurazione.
10 ITLCC 2006/11/12 21:06 page 88 #12 88 Capitolo 5 La tesi di Church-Turing Il Teorema 5.4, insieme a quelli dimostrati nei paragrafi precedenti, giustificano la tesi di Church-Turing già esposta nell introduzione del corso e che può essere formulata nel modo seguente. È CALCOLABILE TUTTO CIÒ CHE PUÒ ESSERE CALCOLATO DA UNA MACCHINA DI TURING. In altre parole, possiamo concludere questa parte del corso affermando che il concetto di calcolabilità secondo Turing cattura il concetto intuitivo di calcolabilità, e può a tutti gli effetti essere usato in sua vece. Esercizi Esercizio 5.1. Dimostrare che la funzione successore, definita su numeri interi rappresentati in decimale, è Markov-calcolabile. Esercizio 5.2. Dimostrare che, per ogni n e per ogni k, la funzione selettore U n k è Markovcalcolabile. Esercizio 5.3. Dimostrare che la funzione di prodotto di due numeri naturali è una funzione ricorsiva. Esercizio 5.4. Dimostrare che la funzione r : N N tale che, per ogni numero naturale x, p(x) = x è una funzione ricorsiva. Esercizio 5.5. Dimostrare che la funzione r : N N tale che, per ogni numero naturale x, p(x) è uguale all x-esimo numero primo, è una funzione ricorsiva. Esercizio 5.6. Completare la dimostrazione del Teorema 5.2. Esercizio 5.7. Dimostrare che la funzione f : N N, tale che f(n) = 1 se e solo se n è un numero primo, è RAM-calcolabile. Esercizio 5.8. Dimostrare che la funzione f : N N, tale che f(n) = 1 se e solo se n è un numero primo, è RAM-calcolabile. Esercizio 5.9. Dimostrare che la funzione f : N 2 N, tale che f(n, m) = 1 se e solo se n e m sono relativamente primi (ovvero se il massimo comune divisore di n e m è uguale a 1), è RAM-calcolabile. Esercizio Dimostrare che la funzione f : N 4 N, tale che f(a, b, c, n) = 1 se e solo se a n + b n = c n, è RAM-calcolabile. Esercizio Dimostrare che una funzione calcolabile da una macchina di Turing è Markovcalcolabile. Esercizio Dimostrare che una funzione calcolabile da una macchina di Turing è RAMcalcolabile.
Macchine di Turing. Francesco Paoli. Istituzioni di logica, Francesco Paoli (Istituzioni di logica, ) Macchine di Turing 1 / 29
Macchine di Turing Francesco Paoli Istituzioni di logica, 2016-17 Francesco Paoli (Istituzioni di logica, 2016-17) Macchine di Turing 1 / 29 Alan M. Turing (1912-1954) Francesco Paoli (Istituzioni di logica,
Problemi, algoritmi, calcolatore
Problemi, algoritmi, calcolatore Informatica e Programmazione Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Problemi, algoritmi, calcolatori Introduzione
Macchine di Turing: somma di due numeri
Informatica Teorica 2/2 M.Di Ianni Macchine di Turing: somma di due numeri Vogliamo definire una macchina di Turing che, presi in input due numeri n e m espressi in notazione binaria, calcola il valore
Principio di composizione delle MT
Principio di composizione delle MT La definizioni date fanno riferimento a situazioni in cui la macchina sia capace di risolvere problemi singoli. E possibile far sì che macchine progettate per problemi
Informatica Teorica. Macchine a registri
Informatica Teorica Macchine a registri 1 Macchine a registri RAM (Random Access Machine) astrazione ragionevole di un calcolatore nastro di ingresso nastro di uscita unità centrale in grado di eseguire
Corso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 2 Alberto Ceselli [email protected] Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 09 Marzo 2010 Controlli automatici
Il concetto di calcolatore e di algoritmo
Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica
Macchine di TURING. Alan Mathison Turing ( )
Macchine di TURING Alan Mathison Turing (1912 1954) Macchine di TURING Alan Mathison Turing (1912 1954) matematico, logico e crittanalista britannico, considerato uno dei padri dell informatica e uno dei
Introduzione alla programmazione
Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste
Fondamenti dell informatica
Fondamenti dell informatica Macchine a registri Rosario Culmone [email protected] 9/4/2008 UNICAM - p. 1/24 Modello di calcolo basato sui calcolatori Le macchine a registri (RAM: Random Access
Informatica teorica Lez. n 7 Macchine di Turing. Macchine di Turing. Prof. Giorgio Ausiello Università di Roma La Sapienza
Macchine di Turing Argomenti della lezione Definizione della macchina di Turing Riconoscimento e accettazione di linguaggi Macchine a più nastri La macchina di Turing èun è automa che può leggere e scrivere
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la
Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo
Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo Marco Liverani ([email protected])
Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing
Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing 1 Macchina di Turing (MDT ) Un dispositivo che accede a un nastro (potenzialmente) illimitato diviso in celle contenenti ciascuna un simbolo
ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)
1 LEZIONE 9 ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) Laboratorio di Informatica per l Educazione A. A. 2014/2015 IN SINTESI (ELABORAZIONE) Con i COMPUTER, le macchine diventano
Elaborazione dell informazione
Elaborazione dell informazione Primo esempio Ricominciamo dai numeri (45 + 25) è definita rigorosamente Un primo calcolatore (a) Figura 1.1 Configurazione del pallottoliere (a) prima e (b) dopo l esecuzione
Macchina di Turing Universale
Informatica Teorica 2010/2011 M.Di Ianni Macchina di Turing Universale Vogliamo definire una macchina di Turing U che, presi in input la descrizione di una macchina di Turing ad un nastro T ed un input
Sistemi di Elaborazione delle Informazioni
SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2016/2017 1 I linguaggi di programmazione e gli
Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi
Lezione 4 Problemi trattabili e soluzioni sempre più efficienti Gianluca Rossi Trattabile o intrattabile? Consideriamo ora il problema, ben noto a tutti gli studenti a partire dalla scuola media, di calcolare
Fondamenti d Informatica: Le Macchine di Turing. Barbara Re, Phd
Fondamenti d Informatica: Le Macchine di Turing Barbara Re, Phd Esercizio 1 } Consideriamo una MdT che modifica una sequenza di A rimpiazzando ogni A in posizione dispari con una B (la prima A ha posizione
Teoria della Calcolabilità!
Teoria della Calcolabilità!! Si occupa delle questioni fondamentali circa la potenza e le limitazioni dei sistemi di calcolo.!! L'origine risale alla prima metà del ventesimo secolo, quando i logici matematici
Le parole dell informatica: algoritmo e decidibilità
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
Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione
Sommario Problemi e soluzioni Definizione informale di algoritmo e esempi Proprietà degli algoritmi Input/Output, Variabili Algoritmi senza input o output 1 2 Problema Definizione (dal De Mauro Paravia):
Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl
Approfondimento 2.1 Non è questo il testo dove trattare esaurientemente queste tecniche semantiche. Ci accontenteremo di dare un semplice esempio delle tecniche basate sui sistemi di transizione per dare
ELEMENTI DI PROGRAMMAZIONE a.a. 2012/13 MACCHINE, ALGORITMI, PROGRAMMI
ELEMENTI DI PROGRAMMAZIONE a.a. 22/3 MACCHINE, ALGORITMI, PROGRAMMI Andrea Prevete, UNINA2 23 UNA GERARCHIA DI MACCHINE macchine combinatorie macchine sequenziali (automi a stati finiti)... macchine di
ELEMENTI DI PROGRAMMAZIONE a.a. 2013/14 UNA GERARCHIA DI MACCHINE
ELEMENTI DI PROGRAMMAZIONE a.a. 23/4 UNA GERARCHIA DI MACCHINE Andrea Prevete, UNINA2 24 UNA GERARCHIA DI MACCHINE macchine combinatorie macchine sequenziali (automi a numero finito di stati)... macchine
Teoria della Calcolabilità!
Teoria della Calcolabilità! Si occupa delle questioni fondamentali circa la potenza e le limitazioni dei sistemi di calcolo.! L'origine risale alla prima metà del ventesimo secolo, quando i logici matematici
Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1
Lez. 8 La Programmazione Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1 Dott. Pasquale De Michele Dott. Raffaele Farina Dipartimento di Matematica e Applicazioni Università di Napoli
Linguaggi Regolari e Linguaggi Liberi
Linguaggi Regolari e Linguaggi Liberi Linguaggi regolari Potere espressivo degli automi Costruzione di una grammatica equivalente a un automa Grammatiche regolari Potere espressivo delle grammatiche 1
Corso di Informatica di Base
Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere
L ELABORATORE ELETTRONICO
L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti
Foglio Elettronico Lezione 1
- Introduzione - Celle e riferimenti - Formule - Approfondimenti - Funzioni logiche Sommario Introduzione - Foglio elettronico o foglio di calcolo - Cos'è? Strumento per raccogliere dati organizzati in
La codifica digitale
La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore
Algoritmi e soluzione di problemi
Algoritmi e soluzione di problemi Dato un problema devo trovare una soluzione. Esempi: effettuare una telefonata calcolare l area di un trapezio L algoritmo è la sequenza di operazioni (istruzioni, azioni)
La macchina di Turing
La macchina di Turing (Esercitazione) I. Frosio AIS Lab. [email protected] 1/32 Cosa è la macchina di Turing? Algoritmo: sequenza di istruzioni elementari che termina in un numero finito di passi; Macchina
Correttezza (prima parte)
Fondamenti di informatica Oggetti e Java (prima parte) Capitolo 16 ottobre 2015 1 Contenuti Introduzione alla correttezza dei programmi specifica di un programma correttezza di un programma verifica di
Sviluppo di programmi
Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla
Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza
Definizione di Grammatica
Corso di Linguaggi e Traduttori 1 AA 2004-05 GRAMMATICHE 1 Definizione di Grammatica Formalmente definiamo un grammatica G mediante una quadrupla ( VN, VT, P, S ) dove: V N e l insieme dei simboli non
Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale
Analogico vs. Digitale LEZIONE II La codifica binaria Analogico Segnale che può assumere infiniti valori con continuità Digitale Segnale che può assumere solo valori discreti Analogico vs digitale Il computer
04 - Logica delle dimostrazioni
Università degli Studi di Palermo Facoltà di Economia CdS Sviluppo Economico e Cooperazione Internazionale Appunti del corso di Matematica 04 - Logica delle dimostrazioni Anno Accademico 013/014 D. Provenzano,
Appunti di informatica. Lezione 5 anno accademico Mario Verdicchio
Appunti di informatica Lezione 5 anno accademico 2015-2016 Mario Verdicchio L algoritmo di Euclide per l MCD Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. dividere il maggiore
Lez. 5 La Programmazione. Prof. Salvatore CUOMO
Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente
Matlab. Istruzioni condizionali, cicli for e cicli while.
Matlab. Istruzioni condizionali, cicli for e cicli while. Alvise Sommariva Università degli Studi di Padova Dipartimento di Matematica 17 marzo 2016 Alvise Sommariva Introduzione 1/ 18 Introduzione Il
Fondamenti di Informatica. Algoritmo. Algoritmo funzionale. Prof.ssa Enrica Gentile Informatica e Comunicazione Digitale a.a.
Fondamenti di Informatica Prof.ssa Enrica Gentile Informatica e Comunicazione Digitale a.a. 2011-2012 Algoritmo L algoritmo è una sequenza finita di istruzioni, mediante le quali un qualunque operatore
Linguaggi, Traduttori e le Basi della Programmazione
Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi
Capitolo 8: Teoria della complessitá
Capitolo 8: Teoria della complessitá 1 La Teoria della calcolabilitá considera aspetti qualitativi della soluzione di problemi. Distingue il calcolabile dal non calcolabile. La Teoria della complessitá
Fondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
Linguaggi Regolari e Linguaggi Liberi
Linguaggi Regolari e Linguaggi Liberi Potenza espressiva degli automi Potenza espressiva delle grammatiche 9/11/2004 Programmazione - Luca Tesei 1 Linguaggi Regolari Tutti i linguaggi che possono essere
PARTE III MACCHINE A REGISTRI
PARTE III MACCHINE A REGISTRI Macchine a registri (RAM) Modelli di costo RAM e macchine di Turing Macchine a registri elementari 1 3.1 MACCHINE A REGISTRI (RAM: Random Access Machines) Introdotte da Shepherdson
Il linguaggio di programmazione Python
Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani ([email protected])
Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)
Il Concetto Intuitivo di Calcolatore Elementi di Informatica e Programmazione Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Variabile di uscita Classe di domande
= < < < < < Matematica 1
NUMERI NATURALI N I numeri naturali sono: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,... L insieme dei numeri naturali è indicato con la lettera. Si ha cioè: N= 0,1,2,3,4,5,6,7,.... L insieme dei naturali privato
Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n
Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n Cristina Turrini UNIMI - 2016/2017 Cristina Turrini (UNIMI - 2016/2017) Elementi di Algebra e di Matematica
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura [email protected] 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina
Esercitazioni per il corso di Logica Matematica
Esercitazioni per il corso di Logica Matematica Luca Motto Ros 02 marzo 2005 Nota importante. Queste pagine contengono appunti personali dell esercitatore e sono messe a disposizione nel caso possano risultare
Tipologie di macchine di Turing
Tipologie di macchine di Turing - Macchina di Turing standard - Macchina di Turing con un nastro illimitato in una sola direzione - Macchina di Turing multinastro - Macchina di Turing non deterministica
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemm
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio 6 aprile 2016 1 Teorema di Kleene 2 3 o 1 o 3 o 8 Teorema di Kleene Vale la seguente equivalenza: L 3 L FSL L REG Dimostrazione.
02 - Logica delle dimostrazioni
Università degli Studi di Palermo Facoltà di Economia Dipartimento di Scienze Economiche, Aziendali e Statistiche Appunti del corso di Matematica 0 - Logica delle dimostrazioni Anno Accademico 015/016
Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto
Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra
Linguaggi Liberi dal Contesto. Linguaggi Liberi dal Contesto
rammatiche e Linguaggi Liberi da Contesto Abbiamo visto che molti linguaggi non sono regolari. Consideriamo allora una classe piu ampia di linguaggi, i Linguaggi Liberi da Contesto (CFL) i CFL sono stati
STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER
1 STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER Un computer e una macchina che riceve in ingresso delle informazioni, le elabora secondo un determinato procedimento e produce dei risultati che vengono
Espressività e limitazioni delle grammatiche regolari
Espressività e limitazioni delle grammatiche regolari Vantaggi: Le grammatiche regolari consentono di esprimere una significativa classe di linguaggi: linguaggi con un numero di sequenze infinito grazie
IL TEOREMA DEGLI ZERI Una dimostrazione di Ezio Fornero
IL TEOREMA DEGLI ZERI Una dimostrazione di Ezio Fornero Il teorema degli zeri è fondamentale per determinare se una funzione continua in un intervallo chiuso [ a ; b ] si annulla in almeno un punto interno
Studio degli algoritmi
COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.2006/07 Prof. V.L. Plantamura Dott.ssa A. Angelini Studio degli algoritmi Dato un problema P, le problematiche riguardano: Sintesi
04 - Numeri Complessi
Università degli Studi di Palermo Scuola Politecnica Dipartimento di Scienze Economiche, Aziendali e Statistiche Appunti del corso di Matematica 04 - Numeri Complessi Anno Accademico 2015/2016 M. Tumminello,
Argomenti diagonali. Gianluigi Bellin
Argomenti diagonali Gianluigi Bellin November 30, 2010 La cardinalità degli insiemi. Consideriamo la relazione di equivalenza tra insiemi ottenuta ponendo A B se e solo se esiste una biiezione f : A B.
LEZIONE 3. a + b + 2c + e = 1 b + d + g = 0 3b + f + 3g = 2. a b c d e f g
LEZIONE 3 3.. Matrici fortemente ridotte per righe. Nella precedente lezione abbiamo introdotto la nozione di soluzione di un sistema di equazioni lineari. In questa lezione ci poniamo il problema di descrivere
I.4 Rappresentazione dell informazione
I.4 Rappresentazione dell informazione Università di Ferrara Dipartimento di Economia e Management Insegnamento di Informatica Ottobre 13, 2015 Argomenti Introduzione 1 Introduzione 2 3 L elaboratore Introduzione
MODULO 1. Prof. Onofrio Greco. Prof. Greco Onofrio
ECDL MODULO 1 Prof. Onofrio Greco Modulo 1 Concetti di base dell ICT Modulo 2 Uso del Computer e Gestione dei File Modulo 3 - Elaborazione testi Modulo 4 Foglio Elettronico Modulo 5 Uso delle Basi di Dati
Il processore. Istituzionii di Informatica -- Rossano Gaeta
Il processore Il processore (detto anche CPU, ovvero, Central Processing Unit) è la componente dell unità centrale che fornisce la capacità di elaborazione delle informazioni contenute nella memoria principale
Fondamenti d Informatica: Le Macchine di Turing. Barbara Re, Phd
Fondamenti d Informatica: Le Macchine di Turing Barbara Re, Phd Agenda } Introdurremo } il formalismo delle Macchine di Turing nelle varie versioni } la nozione di calcolabilità e di decidibilità 2 La
Reti logiche: analisi, sintesi e minimizzazione Esercitazione. Venerdì 9 ottobre 2015
Reti logiche: analisi, sintesi e minimizzazione Esercitazione Venerdì 9 ottobre 05 Punto della situazione Stiamo studiando le reti logiche costruite a partire dalle porte logiche AND, OR, NOT per progettare
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
Macchina di Turing Nastro di Input...!!! a b b! b a! testina!!... s r s t q i Unità di Controllo q j Q S / D / F P Definizione Formale Una macchina di Turing deterministica è una sestupla
Lezione 6 Introduzione al C++ Mauro Piccolo
Lezione 6 Introduzione al C++ Mauro Piccolo [email protected] Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,
