L’AUTOMA ESECUTORE Un automa capace di ricevere dall’esterno una descrizione dello algoritmo richiesto cioè capace di interpretare un linguaggio (linguaggio.

Slides:



Advertisements
Presentazioni simili
…da von Neumann al computer quantistico
Advertisements

…da von Neumann al computer quantistico
…da von Neumann al computer quantistico architettura dellelaboratore.
Macchine di Turing e ricorsività generale
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E1 Dallanalisi del problema alla definizione dellalgoritmo.
Classe III A A.s – 2011 Sistemi di Elaborazione e Trasmissione dell’Informazione 4 ore settimanali (2 laboratorio) Docenti Prof. Alberto Ferrari.
Precorsi di Informatica Dott. Antonio Cisternino Settembre 2003
1 Il punto di vista Un sistema è una parte del mondo che una persona o un gruppo di persone, durante un certo intervallo di tempo, sceglie di considerare.
Fondamenti di Informatica
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Cenni sulle Macchine di Turing corrado bonfanti
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
MACCHINE DI TURING Le macchine di Turing sono dispositivi astratti per la manipolazione di simboli, ideati nel 1936 dal matematico e logico britannico.
Introduzione ai circuiti sequenziali
Analisi e Sintesi di circuiti sequenziali
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Introduzione alla programmazione l
Funzioni, Rappresentazioni e Coscienza
Struttura dei sistemi operativi (panoramica)
Modelli simulativi per le Scienze Cognitive
Il Linguaggio Macchina
MACCHINE DI TURING e ALGORITMI
Gli algoritmi.
La macchina di von Neumann
La macchina di von Neumann
RAPPRESENTAZIONE DELL’INFORMAZIONE
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
PROBLEMI RISOLUBILI E COMPUTABILITÀ
Elementi di Informatica
Il Modello logico funzionale dell’elaboratore
Algoritmi e Programmazione strutturata
L’inventore del calcolatore odierno
Automi LAVORO SVOLTO DA MARIO GERMAN O
PROGRAMMAZIONE: linguaggi
Antonio Cisternino La Macchina di Turing.
CHI ERA ALAN TURING? Turing fece parte del team di matematici che, a partire dalla base di Bletchley Park, decodificarono i messaggi scritti dalle macchine.
Architettura del calcolatore
LA MACCHINA DI TURING Nel 1936 il matematico inglese A. M. Turing propose una definizione del concetto di algoritmo tramite un modello matematico di macchina.
Algoritmi: Modelli per Risolvere Problemi
Sistemi di elaborazione e trasmissione delle informazioni
Programma di Informatica Classi Prime
Modelli computazionali e macchine astratte
ORGANIZZAZIONE DI UN SISTEMA DI ELABORAZIONE
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Laboratorio Informatico
Esempi domande primo compitino Claudia Raibulet
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 3 - Modelli di fase d’analisi Ernesto Damiani Università degli Studi.
Algoritmi.
L’esecuzione dei programmi
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Vincenza Ferrara - Dicembre 2007 Fondamenti di Matematica e Informatica Laboratorio Informatica I anno a.a
L’ELABORATORE ELETTRONICO uno strumento in grado di eseguire insiemi di azioni (“mosse”) elementari le azioni vengono eseguite su oggetti (dati) per produrre.
Il software Claudia Raibulet
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
Struttura Fondamentale degli Elaboratori Elaboratore –È un sistema numerico –È un sistema automatico –È un sistema a programamzione registrabile –Ha una.
Programmazione dei Calcolatori Elettronici
Storia del computer.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 1 Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
Indecidibilità Limiti della calcolabilità Pigreco-day 14 marzo 2014 Matematica e Incertezza Prof. Antonio Iarlori Mathesis Lanciano-Ortona.
GLI ALGORITMI Appunti preparati dalla prof.ssa Maria D’Angelo.
…da von Neumann al computer quantistico L’archittettura dell’elaboratore.
Tipi di Computer MainframeSupercomputerMinicomputerMicrocomputerHome Computer Personal Computer WorkstationMicrocontrollori Sistemi Barebone.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Unità di apprendimento 6 Dal problema al programma.
Unità di apprendimento 6
Transcript della presentazione:

L’AUTOMA ESECUTORE Un automa capace di ricevere dall’esterno una descrizione dello algoritmo richiesto cioè capace di interpretare un linguaggio (linguaggio macchina)

L’AUTOMA ESECUTORE Vincolo di realizzabilità: se l’automa è fatto di parti, queste sono in numero finito ingresso e uscita devono essere denotabili attraverso un insieme finito di simboli.

L’AUTOMA ESECUTORE Realizzazione: 1) mediante congegni meccanici macchina aritmetica (1649) di Blaise Pascal macchina analitica di Charles Babbage (1792-1871)

L’AUTOMA ESECUTORE Realizzazione: 2) mediante un modello matematico funzionale (Hilbert, (1842-1943), Church, Kleene) operazionale (Turing, 1912-1954) sistemi di riscrittura (Post, Markov,..).

PERCHÉ I MODELLI MATEMATICI? Macchine diverse potrebbero avere diversa capacità di risolvere problemi.

PERCHÉ I MODELLI MATEMATICI? Macchine diverse potrebbero avere diversa capacità di risolvere problemi. Una macchina potrebbe essere “più potente” di un’altra E NOI DOBBIAMO SAPERLO

PERCHÉ I MODELLI MATEMATICI? Macchine diverse potrebbero avere diversa capacità di risolvere problemi. Una macchina potrebbe essere “più potente” di un’altra E NOI DOBBIAMO SAPERLO Se neanche la macchina “più potente” riesce a risolvere un problema, potrebbero esserci PROBLEMI NON RISOLUBILI

GERARCHIA DI MACCHINE macchine combinatorie macchine (automi) a stati finiti macchina a stack macchina di Turing

GERARCHIA DI MACCHINE macchine combinatorie macchine (automi) a stati finiti macchina a stack macchina di Turing TESI DI CHURCH-TURING Non esiste alcun formalismo capace di risolvere una classe di problemi più ampia della Macchina di Turing

LA MACCHINA DI TURING Formalmente definita dalla quintupla: A, S, mfn, sfn, dfn dove A = insieme finito dei simboli di ingresso e uscita S = insieme finito degli stati (di cui uno è HALT) mfn: A  S ® A (funzione di macchina) sfn: A  S ® S (funzione di stato) dfn: A  S ® D = {Left,Right,None} (funzione di direzione)

LA MACCHINA DI TURING Un nastro (illimitatamente espandibile) rappresenta il deposito dei dati (memoria). T.M.

LA MACCHINA DI TURING La TM è una macchina capace di: leggere un simbolo dal nastro scrivere sul nastro il simbolo specificato da mfn() transitare in un nuovo stato interno specificato da sfn() spostarsi sul nastro di una posizione nella direzione indicata da dfn() Quando raggiunge lo stato HALT, la macchina si ferma.

MACCHINA DI TURING e CPU reali In pratica: leggere / scrivere un simbolo dal / sul nastro transitare in un nuovo stato interno spostarsi sul nastro di una (o più) posizioni corrisponde a: lettura / scrittura dalla / sulla memoria RAM / ROM nuova configurazione dei registri della CPU scelta della cella di memoria su cui operare (indirizzo contenuto nel RI)

RISOLVERE PROBLEMI CON LA T.M. Risolvere un problema con la Turing Machine richiede quindi di: definire una opportuna rappresentazione dei dati iniziali sul nastro definire la parte di controllo, cioè le tre funzioni: mfn() sfn() dfn() in modo da rendere disponibile sul nastro, alla fine, la rappresentazione della soluzione.

ESEMPIO: riconoscere le palindromi Problema: riconoscere le palindromi (di cifre binarie)  1 0 1 1 0 1  Soluzione: a) definire un algoritmo b) “programmarlo” sulla Turing Machine

ESEMPIO: riconoscere le palindromi Problema: riconoscere le palindromi (di cifre binarie)  1 0 1 1 0 1  Un possibile algoritmo leggere il primo simbolo a sinistra...

ESEMPIO: riconoscere le palindromi Problema: riconoscere le palindromi (di cifre binarie)   0 1 1 0 1  Un possibile algoritmo leggere il primo simbolo a sinistra, ricorda-re se è 1 o 0 e marcare tale casella con 

ESEMPIO: riconoscere le palindromi Problema: riconoscere le palindromi (di cifre binarie)   0 1 1 0 1  Un possibile algoritmo leggere il primo simbolo a sinistra, ricorda-re se è 1 o 0 e marcare tale casella con  spostarsi sull’ultimo simbolo e leggerlo

ESEMPIO: riconoscere le palindromi Problema: riconoscere le palindromi (di cifre binarie)   0 1 1 0 1  Un possibile algoritmo leggere il primo simbolo a sinistra, ricorda-re se è 1 o 0 e marcare tale casella con  spostarsi sull’ultimo simbolo e leggerlo se è diverso dal primo (che qui era 1, ndr), scrivere E (errore) e terminare (non è il nostro caso)

ESEMPIO: riconoscere le palindromi Problema: riconoscere le palindromi (di cifre binarie)   0 1 1 0   Un possibile algoritmo (segue) altrimenti, marcare tale casella con  e ricominciare il controllo sulla stringa più corta rimasta (procedendo a ritroso)

ESEMPIO: riconoscere le palindromi Problema: riconoscere le palindromi (di cifre binarie)   0 1 1 0   Un possibile algoritmo (segue) altrimenti, marcare tale casella con  e ricominciare il controllo sulla stringa più corta rimasta (procedendo a ritroso) Alla fine.. quando non ci sono più cifre fra , scrivere T (true) e finire.

ESEMPIO: riconoscere le palindromi Evoluzione (1) Situazione iniziale  1 0 1 1 0 1  e poi via via…   0 1 1 0 1    0 1 1 0   (segue)

ESEMPIO: riconoscere le palindromi Evoluzione (2) Situazione   0 1 1 0   e poi:   0 1 1       1 1    (segue)

ESEMPIO: riconoscere le palindromi Evoluzione (3) Situazione    1 1    e poi:     1        T    (FINE)

ESEMPIO: riconoscere le palindromi Problema: riconoscere le palindromi (di cifre binarie)  1 0 1 1 0 1  Soluzione: a) definire un algoritmo b) “programmarlo” sulla Turing Machine, cioè...

ESEMPIO: riconoscere le palindromi Problema: riconoscere le palindromi (di cifre binarie)  1 0 1 1 0 1  Soluzione: a) definire un algoritmo b) “programmarlo” sulla Turing Machine, cioè... definire la parte di controllo data dalle tre funzioni mfn() sfn() dfn()

ESEMPIO: riconoscere le palindromi DEFINIRE LA PARTE DI CONTROLLO Osservazione: le tre funzioni mfn() sfn() dfn() hanno il medesimo dominio A x S A = insieme finito dei simboli di ingresso e uscita S = insieme finito degli stati (di cui uno è HALT) dove A e S sono insiemi finiti. Quindi...

ESEMPIO: riconoscere le palindromi DEFINIRE LA PARTE DI CONTROLLO Osservazione: le tre funzioni mfn() sfn() dfn() hanno il medesimo dominio A x S A = insieme finito dei simboli di ingresso e uscita S = insieme finito degli stati (di cui uno è HALT) dove A e S sono insiemi finiti. Quindi, le tre funzioni possono essere definite in forma estensionale tramite tabelle, elencandone tutti i possibili valori.

ESEMPIO: riconoscere le palindromi Nel nostro caso: A = {0,1,,E,T} S = {HALT,s0,s1,s2,s3,s4,s5} (stato iniziale: S1) Configurazione iniziale del nastro:

ESEMPIO: riconoscere le palindromi

ESEMPIO: riconoscere le palindromi

ESEMPIO: riconoscere le palindromi

ESEMPIO: riconoscere le palindromi Configurazione finale del nastro:

QUALI MACCHINE ? Una volta definita la parte di controllo, la Macchina di Turing è capace di risolvere un dato problema (risolubile)... ..ma così facendo, essa è specifica di quel problema!

MACCHINE SPECIFICHE Una volta definita la parte di controllo, la Macchina di Turing è capace di risolvere un dato problema (risolubile)... ..ma così facendo, essa è specifica di quel problema! Siamo circondati da macchine specifiche: calcolatrici lavastoviglie, videoregistratori, videogiochi orologi, telecamere,...

MACCHINE SPECIFICHE …? Conviene fare macchine specifiche? sì, per usi particolari e mercati di massa… no, se vogliamo una macchina di uso generale con cui risolvere ogni problema (risolubile)

MACCHINE UNIVERSALI Una volta definita la parte di controllo, cioè l’algoritmo necessario, la Macchina di Turing è capace di risolvere un dato problema (risolubile)

MACCHINE UNIVERSALI Una volta definita la parte di controllo, cioè l’algoritmo necessario, la Macchina di Turing è capace di risolvere un dato problema (risolubile) Finora, l’algoritmo era cablato nella macchina

MACCHINE UNIVERSALI Una volta definita la parte di controllo, cioè l’algoritmo necessario, la Macchina di Turing è capace di risolvere un dato problema (risolubile) Finora, l’algoritmo era cablato nella macchina ..e se invece fosse sul nastro, e la macchina se lo andasse a prendere?

MACCHINA DI TURING UNIVERSALE Una Macchina di Turing la cui parte di controllo (cioè il cui algoritmo “cablato”) consiste nel

MACCHINA DI TURING UNIVERSALE Una Macchina di Turing la cui parte di controllo (cioè il cui algoritmo “cablato”) consiste nel leggere dal nastro una descrizione dell’algoritmo richiesto

MACCHINA DI TURING UNIVERSALE Una Macchina di Turing la cui parte di controllo (cioè il cui algoritmo “cablato”) consiste nel leggere dal nastro una descrizione dell’algoritmo richiesto E’ una macchina UNIVERSALE: senza modifiche alla sua struttura, può essere istruita per risolvere un qualunque problema (risolubile)

MACCHINA DI TURING UNIVERSALE Una Macchina di Turing la cui parte di controllo (cioè il cui algoritmo “cablato”) consiste nel leggere dal nastro una descrizione dell’algoritmo richiesto E’ una macchina UNIVERSALE: senza modifiche alla sua struttura, può essere istruita per risolvere un qualunque problema (risolubile) Una macchina programmabile

MACCHINA DI TURING UNIVERSALE Ma leggere dal nastro una descrizione dell’algoritmo richiesto richiede di: saper descrivere tale algoritmo

MACCHINA DI TURING UNIVERSALE Ma leggere dal nastro una descrizione dell’algoritmo richiesto richiede di: saper descrivere tale algoritmo il che richiede un qualche linguaggio

MACCHINA DI TURING UNIVERSALE Ma leggere dal nastro una descrizione dell’algoritmo richiesto richiede di: saper descrivere tale algoritmo il che richiede un qualche linguaggio e una macchina che lo interpreti !

MACCHINA DI TURING UNIVERSALE Ma leggere dal nastro una descrizione dell’algoritmo richiesto richiede di: saper descrivere tale algoritmo il che richiede un qualche linguaggio e una macchina che lo interpreti ! Dunque...

MACCHINA DI TURING UNIVERSALE Ma leggere dal nastro una descrizione dell’algoritmo richiesto richiede di: saper descrivere tale algoritmo il che richiede un qualche linguaggio e una macchina che lo interpreti ! Dunque... la Universal Turing Machine (UTM) è l’interprete di un linguaggio !

MACCHINA DI TURING UNIVERSALE Una Universal Turing Machine (UTM) modella il concetto di elaboratore di uso generale (“general purpose”)

MACCHINA DI TURING UNIVERSALE Una Universal Turing Machine (UTM) modella il concetto di elaboratore di uso generale (“general purpose”) Una macchina che va a cercare le “istruzioni” da compiere…

MACCHINA DI TURING UNIVERSALE Una Universal Turing Machine (UTM) modella il concetto di elaboratore di uso generale (“general purpose”) Una macchina che va a cercare le “istruzioni” da compiere… .. le interpreta…

MACCHINA DI TURING UNIVERSALE Una Universal Turing Machine (UTM) modella il concetto di elaboratore di uso generale (“general purpose”) Una macchina che va a cercare le “istruzioni” da compiere… .. le interpreta… .. e le esegue

MACCHINA DI TURING UNIVERSALE Una Universal Turing Machine (UTM) modella il concetto di elaboratore di uso generale (“general purpose”) Una macchina che va a cercare le “istruzioni” da compiere… fetch

MACCHINA DI TURING UNIVERSALE Una Universal Turing Machine (UTM) modella il concetto di elaboratore di uso generale (“general purpose”) Una macchina che va a cercare le “istruzioni” da compiere… .. le interpreta… decode

MACCHINA DI TURING UNIVERSALE Una Universal Turing Machine (UTM) modella il concetto di elaboratore di uso generale (“general purpose”) Una macchina che va a cercare le “istruzioni” da compiere… .. le interpreta… .. e le esegue execute

MACCHINA DI TURING UNIVERSALE e MACCHINA DI VON NEUMANN Una Universal Turing Machine (UTM) è in grado di elaborare prendendo dati e algoritmo dal nastro e scrivendo sul nastro i risultati

MACCHINA DI TURING UNIVERSALE e MACCHINA DI VON NEUMANN Una Universal Turing Machine (UTM) è in grado di elaborare prendendo dati e algoritmo dal nastro e scrivendo sul nastro i risultati Dunque, una UTM opera solo da/verso il nastro (astrazione della memoria): non esiste il concetto di “mondo esterno”

MACCHINA DI TURING UNIVERSALE e MACCHINA DI VON NEUMANN Non esiste il concetto di “mondo esterno” La Macchina di Turing (universale) è pura computazione:

MACCHINA DI TURING UNIVERSALE e MACCHINA DI VON NEUMANN Non esiste il concetto di “mondo esterno” La Macchina di Turing (universale) è pura computazione: niente interazione con l’esterno niente istruzioni di I/O

MACCHINA DI TURING UNIVERSALE e MACCHINA DI VON NEUMANN Dunque, la macchina di Von Neumann è modellata dalla UTM per ciò che attiene alla computazione...

MACCHINA DI TURING UNIVERSALE e MACCHINA DI VON NEUMANN Dunque, la macchina di Von Neumann è modellata dalla UTM per ciò che attiene alla computazione... ma prevede anche la dimensione dell’ interazione

COMPUTAZIONE E INTERAZIONE Computazione e Interazione sono due dimensioni ortogonali

COMPUTAZIONE E INTERAZIONE Computazione e Interazione sono due dimensioni ortogonali modellate separatamente

COMPUTAZIONE E INTERAZIONE Computazione e Interazione sono due dimensioni ortogonali modellate separatamente ed espresse (in linea di principio) da linguaggi diversi

LINGUAGGI DI PROGRAMMAZIONE Un linguaggio di programmazione ha due componenti ortogonali il linguaggio di Computazione il linguaggio di Coordinazione Linguaggi di computazione Linguaggi di coordinazione Un particolare linguaggio di programmazione

LINGUAGGI DI PROGRAMMAZIONE Un linguaggio di programmazione può quindi offrire all’utente più modelli / linguaggi di coordinazione fra cui scegliere pur mantenendo lo stesso linguaggio di computazione

LINGUAGGI DI PROGRAMMAZIONE Ad esempio, il “linguaggio di programma-zione” C è costituito da un linguaggio di computazione (il C vero e proprio) un linguaggio di coordinazione fornito come “allegato”, sotto forma di librerie standard Ergo, si potrebbe cambiare linguaggio di coordinazione… ma il C (linguaggio di computazione) resterebbe sempre C !