SlideShare a Scribd company logo
1 of 31
Download to read offline
AUTOMI,
TEORIA DELLA COMPUTABILITA’
E MACCHINA DI TURING
Prof.ssa Gilda Di Giulio
AUTOMI
INTRODUZIONE AGLI AUTOMI
Un automa è un SISTEMA che non necessita di controllo umano, che
è autonomo nell'espletamento delle proprie funzioni e ha le seguenti
caratteristiche:
 A STATI FINITI, gli insiemi degli ingressi e delle uscite e degli stati
sono composti da un numero finito di elementi
 DETERMINISTICO, limitato all'esecuzione di una gamma ben
precisa di processi, prevedibile in ogni sua uscita per qualunque
ingresso
 DISCRETO NELL’AVANZAMENTO quando è discreto l’insieme dei
tempi, cioè il sistema può essere analizzato in precisi istanti di
tempo, e nelle interazioni (funzioni di transizione e delle uscite
discrete).
Un AUTOMA A STATI FINITI può essere rappresentato
mediante:
• diagramma degli stati
• tabella di transizione
• programma
RAPPRESENTAZIONE DI AUTOMI
• Le bolle o nodi rappresentano
gli stati dell’automa che rappresentano i suoi
stati di memoria.
• Gli archi rappresentano le relazioni
di passaggio da uno stato all’altro.
DIAGRAMMA DEGLI STATI
TABELLE
Le TABELLE servono a rappresentare
schematicamente le funzioni degli stati successivi e la
funzione delle uscite (o funzione di trasformazione)
TABELLA DEGLI STATI SUCCESSIVI
TABELLA DELLE USCITE
MATRICE DI TRANSIZIONE
ESEMPIO DI AUTOMA A STATI FINITI
Un AUTOMA RICONOSCITORE è un tipo particolare di automa in grado
di riconoscere se una stringa fa parte o meno di un determinato
linguaggio, sono cioè in grado di riconoscere
la presenza di una particolare sequenza di simboli
tra tutti quelli che si avvicendano in ingresso.
AUTOMA RICONOSCITORE
ESEMPIO DI AUTOMA RICONOSCITORE
AUTOMA DI MEALY E DI MOORE
 Gli automi le cui uscite a un certo istante t dipendono dagli
ingressi e dallo stato si chiamano automi impropri o di
Mealy.
 Gli automi le cui uscite a un certo istante t dipendono
esclusivamente dallo stato si chiamano automi propri o di
Moore.
 Gli automi precedentemente esaminati sono automi
impropri o di Mealy.
 Un automa Riconoscitore realizzato con un automa
improprio o di Mealy può essere realizzato con un automa
proprio o di Moore
IL SISTEMA DI ELABORAZIONE COME AUTOMA
L'elaboratore, o computer, è un "automa a stati finiti, deterministico e
discreto".
Più precisamente si usa il termine di sistema di elaborazione per evidenziare il
fatto che l’elaborazione avviene utilizzando un insieme organizzato di risorse:
 HARDWARE - la parte fisica, "dura", del sistema, i dispositivi elettronici e
meccanici - e di risorse
 SOFTWARE - la parte non visibile, "soffice", del sistema, i programmi che fanno
funzionare l’hardware (Sistemi Operativi, Software di Base, Procedure
Applicative).
TEORIA DELLA
CALCOLABILITA’ e
MACCHINA DI TURING
ALGORITMI, LINGUAGGI DI
PROGRAMMAZIONE E PROGRAMMI
Per rendere risolvibile con un computer un problema bisogna:
• trovare un metodo risolutivo e tradurlo in un algoritmo;
• scegliere un linguaggio di programmazione e con esso trasformare
l’algoritmo in un programma;
• scegliere l’esecutore più adatto.
MODELLO COMPUTAZIONALE
L’esecutore non deve essere pensato necessariamente una macchina fisica (ad es.
il computer) ma come un modello computazionale capace di eseguire algoritmi,
deve cioè descrivere come deve essere rappresentato l’input, interpretato l’output e
implementato il procedimento risolutivo.
Un esecutore può essere realizzato con:
• un modello matematico
• un congegno meccanico (es. macchina aritmetica di Pascal o macchina
analitica di Babbage)
I modelli computazionali storicamente sviluppati e studiati mediante modelli matematici sono numerosi:
• logico, basato sulla logica matematica (Gödel);
• funzionale, basato sul calcolo delle funzioni, lambda-calcolo (Church),
• operazionale, basato su una macchina astratta (Turing).
MACCHINE ASTRATTE
I modelli matematici servono a svincolarci da una determinata macchina
fisica. Tra gli esecutori-modelli che possiamo chiamare MACCHINE
ASTRATTE:
 Macchine Combinatorie,
 Automi A Stati Finiti,
 Macchine A Stack;
 Macchine Di Turing (Mdt)
UN MODELLO COMPUTAZIONALE:
LA MACCHINA DI TURING
 Le macchine di Turing (MdT) sono il modello matematico più famoso, un’astrazione
matematica che rappresenta un potente strumento logico-concettuale per capire che cosa si
intende per elaborazione. Sono in grado di eseguire una computazione attraverso un
numero finito di operazioni su un numero finito di simboli. Tra i modelli matematici sono
quelle che consentono di risolvere la classe più ampia di problemi.
 Le MdT hanno:
 posto le basi per la realizzazione dei moderni computer e sono essenziali per la teoria della
computabilità, che studia il calcolo algoritmico.
 Sono alla base della programmazione imperativa, introducendo concetti essenziali quali locazione
di memoria, assegnamento, stato e iterazione.
 Hanno messo a disposizione i concetti chiave per poter introdurre una definizione di macchina
astratta
TEORIA DELLA COMPUTABILITA’
La teoria della computabilità si occupa dell’analisi degli
algoritmi per decidere sulla loro computabilità (o decidibilità),
cioè se siano o meno risolvibili indipendentemente dalla
macchina fisica sulla quale saranno eseguiti.
Il termine funzione computabile indica un procedimento che
trasforma i dati iniziali in dati finali.
L’algoritmo è la descrizione di un insieme finito di istruzioni, che
devono essere eseguite per portare a termine un dato compito e
per raggiungere un risultato definito in precedenza
ALAN TURING e la MdT
Nel 1936 il matematico inglese Alan Turing, nel
tentativo di formalizzare la nozione di procedura
effettiva, e cioè di voler stabilire le caratteristiche
dell’automa in grado di eseguire l’algoritmo, analizzò il comportamento di un essere umano
quando risolve un problema di calcolo seguendo un metodo meccanico e ne dedusse che una
macchina per computare deve disporre di:
 di un nastro infinito, suddiviso in celle, ciascuna capace di contenere un simbolo;
 di una testina movibile, atta a leggere e/o scrivere i simboli sul nastro;
 di un’unità di memoria interna, per memorizzare lo stato corrente.
 di un’unità logica, preposta a decidere quali passi deve compiere la macchina: sulla
base della rilevazione del contenuto della cella sulla quale è posizionata in
quell’istante, l’unità logica decide quale contenuto scrivere nella cella su cui è
posizionata, in quale stato passare e in quale direzione si deve muovere la testina di
lettura/scrittura
 di un’unità di controllo attraverso cui la MdT impartisce i comandi alla testina
Le operazioni elementari che una tale macchina deve essere in grado di
eseguire sono:
 cambiare il simbolo sotto la testina;
 spostare la testina in modo da agire su una delle celle adiacenti a quella
corrente.
 a seconda dello stato corrente e del simbolo letto dalla testina cambiare il
simbolo sotto la testina e lo stato corrente e spostare la testina di una cella.
COMPORTAMENTO
DELLA MACCHINA DI TURING
Il comportamento di una MdT può essere descritto mediante una funzione di
transizione dello stato e una funzione di trasformazione delle uscite, così come
accade nel caso degli automi.
Il comportamento di una MdT può essere rappresentato in forma tabellare mediante
una tabella di transizione (o matrice funzionale) o in forma grafica mediante un
diagramma di stato.
Le Macchine di Turing sono automi, ed in particolare automi con la massima
potenza computazionale (la "Macchina di Turing" è una macchina astratta, non
fisica).
L’AUTOMA MACCHINA DI TURING
DEFINIZIONE FORMALE DI MDT
MdT = (A, I, S, s0, F, δ)
Dove:
A è l’alfabeto dei simboli utilizzati dalla macchina; l’alfabeto comprende
anche il simbolo blank che corrisponde alla cella vuota, cioè alla parte di
nastro non utilizzato, e serve per indicare l’assenza di simboli
I è l’insieme dei simboli di input (sottoinsieme di A) che possono essere letti
dal nastro
S è l’insieme degli stati della macchina
s0 è lo stato iniziale della macchina
F è l’insieme degli stati finali della macchina (sottoinsieme di S)
δ indica la funzione di transizione che associa ad ogni coppia (simbolo di
input, stato) una terna (stato, simbolo di output, movimento della testina)
(it, st-1) → (St, ut, mt)
Esempi:
1- Costruire la MdT per il calcolo del
doppio di un numero intero
2- Costruire la MdT per il calcolo del
quoziente e resto della divisione di un
numero intero per 2
MACCHINA DI TURING UNIVERSALE
 Turing definì anche una Macchina di Turing Universale (MdTU) capace di
simulare il comportamento di qualsiasi altra macchina di Turing. Con essa
è pertanto possibile eseguire qualsiasi tipo di algoritmo.
 Tale MdTU ha in ingresso due stringhe, una (S1) è l’insieme delle quintuple
che definiscono la specifica MdT da simulare, l’altra (S2) è l’insieme degli input
della MdT da simulare.
 La MdTU si sposterà continuamente dall’una all’altra per eseguire la MdT che
sta simulando. Mentre una "normale" MdT (Macchina di Turing) esegue un
unico algoritmo incorporato nella tabella di transizione, una MdTU
(Macchina di Turing Universale) è una macchina programmabile che può
eseguire una qualsiasi MdT, quindi qualsiasi algoritmo.
 La MdTU può essere considerata la schematizzazione di un computer reale
che esegue i programmi (S1) che a loro volta lavorano su dei dati in input
(S2).
Esiste sempre un procedimento risolutivo da
formalizzare con un algoritmo in corrispondenza
di un determinato problema?
A livello teorico la risposta a questo quesito viene
risolta dalla tesi elaborata dal matematico Turing
e dallo scienziato americano Alonzo Church
TESI DI CHURCH-TURING
La teoria della Computabilità: un problema è risolubile o computabile o calcolabile
se, dati in ingresso certi valori, è possibile determinare una funzione f che metta in
relazione tali dati con un risultato.
La tesi di Church afferma che un qualsiasi problema è calcolabile se è Turing-
calcolabile, cioè è risolubile con una macchina di Turing.
Tesi di Church-Turing: "se un problema è intuitivamente calcolabile, allora esisterà
una MdT-Macchina di Turing (o un dispositivo equivalente, come il computer) in grado
di risolverlo (cioè di calcolarlo)".
Più formalmente si può dire che "la classe delle funzioni calcolabili coincide con quella
delle funzioni calcolabili da una MdT".
O ancora: "ogni funzione calcolabile con un algoritmo è calcolabile da una MdT".
O ancora: "per ogni problema calcolabile esiste una MdT che lo risolve"
[Alonzo Church, matematico statunitense]
TERMINOLOGIA
 SISTEMA: un insieme organico di elementi, associati
secondo un criterio di interazione-legge, che concorrono alla
composizione di un'unica entità e/o al perseguimento di un
fine comune. Ciascun elemento è separabile ed indipendente
e può a sua volta essere un SOTTOSISTEMA
 MODELLO Un modello è la rappresentazione (descrizione)
semplificata di un sistema o di un processo che viene fatta
allo scopo di facilitarne l'analisi e la valutazione (senza dover
realizzare fisicamente il sistema). Costruire un modello ha
l'effetto collaterale di semplificare la realtà che si vuol
rappresentare, di impoverirla. Possono esistere più modelli
che rappresentano lo stesso sistema.
 PROCESSO Un processo è una azione complessa composta
da una sequenza di azioni semplici, cioè una serie di azioni
che concorrono al raggiungimento di un certo risultato.
TERMINOLOGIA: SISTEMA (1)
Un sistema è un insieme organico di elementi, associati secondo un criterio di interazione
legge, che concorrono alla composizione di un'unica entità e/o al perseguimento di un fine
comune. Ciascun elemento è separabile ed indipendente e può a sua volta essere un
SOTTOSISTEMA.
Un elaboratore, ad esempio, è un sistema di elaborazione.
Per descrivere un sistema occorre conoscere:
• le finalità (obiettivi)
• le componenti (elementi)
• le relazioni tra le diverse componenti
• le variabili di ingresso e di uscita.
Per STATO DEL SISTEMA si intende una condizione in cui il sistema può trovarsi.
Per AZIONE si intende un evento che muta lo stato del sistema. Le azioni possono essere
semplici (cioè non ulteriormente scomponibili) o composte (scomponibili in azioni semplic
TERMINOLOGIA: SISTEMA (2)
Per descrivere un sistema occorre conoscere le relazioni che legano ingressi, stati e
uscite.
Tali relazioni sono descrivibili in termini matematici, con tabelle di relazione, con
grafici.
Un sistema è completamente descritto quando si conoscono le uscite risultanti a
determinati ingressi, cioè quando si conoscono gli Ingressi (I), le Uscite (U), gli Stati
(S), fa funzione di Transizione (che dato stato attuale e ingresso determina il nuovo
stato) e la funzione di Trasformazione o di Uscita (che dato stato attuale e ingresso
determina l’uscita).
TERMINOLOGIA: PROCESSO
Un processo è una azione complessa composta da una sequenza di azioni semplici, cioè
una serie di azioni che concorrono al raggiungimento di un certo risultato.
Un processo è sequenziale quando le azioni elementari che lo compongono vengono
eseguite in sequenza.
Un esempio di processo può essere una serie di calcoli eseguiti secondo un determinato
sistema di numerazione per pervenire ad un ben determinato valore del risultato
(sommatoria, media aritmetica, etc. etc.).
Si può quindi vedere un SISTEMA come un'entità più o meno complessa atta ad eseguire
dei PROCESSI, oppure si può dire che il SISTEMA deve eseguire determinati PROCESSI
per conseguire i propri obiettivi.
TERMINOLOGIA: MODELLO (1)
Un modello è la rappresentazione (descrizione) semplificata di un sistema o di un
processo che viene fatta allo scopo di facilitarne l'analisi e la valutazione (senza dover
realizzare fisicamente il sistema).
Costruire un modello ha l'effetto collaterale di semplificare la realtà che si vuol
rappresentare, di impoverirla. Possono esistere più modelli che rappresentano lo
stesso sistema.
I MODELLI possono essere:
 Fisici o Reali (costituiti da elementi del mondo fisico), a loro volta classificabili in
 iconici (esempio: plastico di una costruzione)
 Analogici (esempio: barometro a mercurio)
 Astratti o Simbolici (che si servono di un linguaggio matematico, grafico o di
programmazione), a loro volta classificabili in
 Matematici (esempio: formule che descrivono un circuito elettrico, che è un
sistema dinamico, continuo, deterministico)
 Grafici (esempio: schema a blocchi)
 Logici o Algoritmici (esempio: simulazione di sistemi reali tramite programmi)
Si può costruire un modello seguendo due approcci diversi:
1. costruire un modello che corrisponda in ogni particolare al sistema in esame (studiando
accuratamente tutti i dettagli e tutte le componenti del sistema);
2. costruire un modello che non consideri i dettagli del sistema, ma che "simuli" il funzionamento
del sistema.
Ricapitolando, un modello, come precedentemente illustrato, può essere fisico - iconico (il classico
"modellino"), analogico (riproduce il sistema in scala ridotta) - o astratto/simbolico – matematico
Per modelli matematici è sempre possibile definire un ALGORITMO che ne descriva le funzioni. Tale
algoritmo, per quanto complesso, sarà sempre risolubile mediante un programma eseguito
dall’elaboratore.
TERMINOLOGIA: MODELLO (2)

More Related Content

Similar to Automi, macchina di turing e computazione

Modulo 1 concetti di base dell'ict
Modulo 1 concetti di base dell'ictModulo 1 concetti di base dell'ict
Modulo 1 concetti di base dell'ict
Andreina Concas
 
1informaticadibase 110602151357 Phpapp02
1informaticadibase 110602151357 Phpapp021informaticadibase 110602151357 Phpapp02
1informaticadibase 110602151357 Phpapp02
Formazioneenna Enna
 

Similar to Automi, macchina di turing e computazione (20)

Logica e Intelligenza Artificiale
Logica e Intelligenza ArtificialeLogica e Intelligenza Artificiale
Logica e Intelligenza Artificiale
 
Automi.saradiluzio
Automi.saradiluzioAutomi.saradiluzio
Automi.saradiluzio
 
Automi.saradiluzio
Automi.saradiluzioAutomi.saradiluzio
Automi.saradiluzio
 
Alan Turing
Alan TuringAlan Turing
Alan Turing
 
Informatica 2.pptx
Informatica 2.pptxInformatica 2.pptx
Informatica 2.pptx
 
Automazione industriale
Automazione industrialeAutomazione industriale
Automazione industriale
 
Automazione Industriale e Robotica
Automazione Industriale e RoboticaAutomazione Industriale e Robotica
Automazione Industriale e Robotica
 
Presentazione,
Presentazione,Presentazione,
Presentazione,
 
Presentazione
PresentazionePresentazione
Presentazione
 
Macchina di turing
Macchina di turingMacchina di turing
Macchina di turing
 
Appunti interrupt 8086
Appunti interrupt 8086Appunti interrupt 8086
Appunti interrupt 8086
 
Modulo 1 concetti di base dell'ict
Modulo 1 concetti di base dell'ictModulo 1 concetti di base dell'ict
Modulo 1 concetti di base dell'ict
 
Algoritmi
Algoritmi Algoritmi
Algoritmi
 
Corso automazione modulo1
Corso automazione modulo1Corso automazione modulo1
Corso automazione modulo1
 
1informaticadibase 110602151357 Phpapp02
1informaticadibase 110602151357 Phpapp021informaticadibase 110602151357 Phpapp02
1informaticadibase 110602151357 Phpapp02
 
Informatica di base
Informatica di baseInformatica di base
Informatica di base
 
Informatica di base
Informatica di baseInformatica di base
Informatica di base
 
Architettura dell'Elaboratore Elettronico (Computer)
Architettura dell'Elaboratore Elettronico (Computer)Architettura dell'Elaboratore Elettronico (Computer)
Architettura dell'Elaboratore Elettronico (Computer)
 
Elementidi informatica
Elementidi informaticaElementidi informatica
Elementidi informatica
 
Automi torrieri
Automi   torrieriAutomi   torrieri
Automi torrieri
 

More from NicholasNicholas20 (12)

Elaborato maturità 2020
Elaborato maturità 2020Elaborato maturità 2020
Elaborato maturità 2020
 
AI e costituzione
AI e costituzioneAI e costituzione
AI e costituzione
 
Intelligenza artificiale
Intelligenza artificialeIntelligenza artificiale
Intelligenza artificiale
 
Bioetica
BioeticaBioetica
Bioetica
 
Pineta di santa filomena
Pineta  di  santa filomenaPineta  di  santa filomena
Pineta di santa filomena
 
Vita come grande pupazzata
Vita come grande pupazzataVita come grande pupazzata
Vita come grande pupazzata
 
Reti
RetiReti
Reti
 
Crisi del 29
Crisi del 29Crisi del 29
Crisi del 29
 
L'attività motoria e la scienza
L'attività motoria e la scienza L'attività motoria e la scienza
L'attività motoria e la scienza
 
The city-of-london-nicholas-murri-5 f
The city-of-london-nicholas-murri-5 fThe city-of-london-nicholas-murri-5 f
The city-of-london-nicholas-murri-5 f
 
Risonanza magnetica nicholas murri 5 f
Risonanza magnetica nicholas murri 5 fRisonanza magnetica nicholas murri 5 f
Risonanza magnetica nicholas murri 5 f
 
The theme of double
The theme of doubleThe theme of double
The theme of double
 

Automi, macchina di turing e computazione

  • 1. AUTOMI, TEORIA DELLA COMPUTABILITA’ E MACCHINA DI TURING Prof.ssa Gilda Di Giulio
  • 3. INTRODUZIONE AGLI AUTOMI Un automa è un SISTEMA che non necessita di controllo umano, che è autonomo nell'espletamento delle proprie funzioni e ha le seguenti caratteristiche:  A STATI FINITI, gli insiemi degli ingressi e delle uscite e degli stati sono composti da un numero finito di elementi  DETERMINISTICO, limitato all'esecuzione di una gamma ben precisa di processi, prevedibile in ogni sua uscita per qualunque ingresso  DISCRETO NELL’AVANZAMENTO quando è discreto l’insieme dei tempi, cioè il sistema può essere analizzato in precisi istanti di tempo, e nelle interazioni (funzioni di transizione e delle uscite discrete).
  • 4. Un AUTOMA A STATI FINITI può essere rappresentato mediante: • diagramma degli stati • tabella di transizione • programma RAPPRESENTAZIONE DI AUTOMI
  • 5. • Le bolle o nodi rappresentano gli stati dell’automa che rappresentano i suoi stati di memoria. • Gli archi rappresentano le relazioni di passaggio da uno stato all’altro. DIAGRAMMA DEGLI STATI
  • 6. TABELLE Le TABELLE servono a rappresentare schematicamente le funzioni degli stati successivi e la funzione delle uscite (o funzione di trasformazione) TABELLA DEGLI STATI SUCCESSIVI TABELLA DELLE USCITE MATRICE DI TRANSIZIONE
  • 7. ESEMPIO DI AUTOMA A STATI FINITI
  • 8. Un AUTOMA RICONOSCITORE è un tipo particolare di automa in grado di riconoscere se una stringa fa parte o meno di un determinato linguaggio, sono cioè in grado di riconoscere la presenza di una particolare sequenza di simboli tra tutti quelli che si avvicendano in ingresso. AUTOMA RICONOSCITORE
  • 9. ESEMPIO DI AUTOMA RICONOSCITORE
  • 10. AUTOMA DI MEALY E DI MOORE  Gli automi le cui uscite a un certo istante t dipendono dagli ingressi e dallo stato si chiamano automi impropri o di Mealy.  Gli automi le cui uscite a un certo istante t dipendono esclusivamente dallo stato si chiamano automi propri o di Moore.  Gli automi precedentemente esaminati sono automi impropri o di Mealy.  Un automa Riconoscitore realizzato con un automa improprio o di Mealy può essere realizzato con un automa proprio o di Moore
  • 11. IL SISTEMA DI ELABORAZIONE COME AUTOMA L'elaboratore, o computer, è un "automa a stati finiti, deterministico e discreto". Più precisamente si usa il termine di sistema di elaborazione per evidenziare il fatto che l’elaborazione avviene utilizzando un insieme organizzato di risorse:  HARDWARE - la parte fisica, "dura", del sistema, i dispositivi elettronici e meccanici - e di risorse  SOFTWARE - la parte non visibile, "soffice", del sistema, i programmi che fanno funzionare l’hardware (Sistemi Operativi, Software di Base, Procedure Applicative).
  • 13. ALGORITMI, LINGUAGGI DI PROGRAMMAZIONE E PROGRAMMI Per rendere risolvibile con un computer un problema bisogna: • trovare un metodo risolutivo e tradurlo in un algoritmo; • scegliere un linguaggio di programmazione e con esso trasformare l’algoritmo in un programma; • scegliere l’esecutore più adatto.
  • 14. MODELLO COMPUTAZIONALE L’esecutore non deve essere pensato necessariamente una macchina fisica (ad es. il computer) ma come un modello computazionale capace di eseguire algoritmi, deve cioè descrivere come deve essere rappresentato l’input, interpretato l’output e implementato il procedimento risolutivo. Un esecutore può essere realizzato con: • un modello matematico • un congegno meccanico (es. macchina aritmetica di Pascal o macchina analitica di Babbage) I modelli computazionali storicamente sviluppati e studiati mediante modelli matematici sono numerosi: • logico, basato sulla logica matematica (Gödel); • funzionale, basato sul calcolo delle funzioni, lambda-calcolo (Church), • operazionale, basato su una macchina astratta (Turing).
  • 15. MACCHINE ASTRATTE I modelli matematici servono a svincolarci da una determinata macchina fisica. Tra gli esecutori-modelli che possiamo chiamare MACCHINE ASTRATTE:  Macchine Combinatorie,  Automi A Stati Finiti,  Macchine A Stack;  Macchine Di Turing (Mdt)
  • 16. UN MODELLO COMPUTAZIONALE: LA MACCHINA DI TURING  Le macchine di Turing (MdT) sono il modello matematico più famoso, un’astrazione matematica che rappresenta un potente strumento logico-concettuale per capire che cosa si intende per elaborazione. Sono in grado di eseguire una computazione attraverso un numero finito di operazioni su un numero finito di simboli. Tra i modelli matematici sono quelle che consentono di risolvere la classe più ampia di problemi.  Le MdT hanno:  posto le basi per la realizzazione dei moderni computer e sono essenziali per la teoria della computabilità, che studia il calcolo algoritmico.  Sono alla base della programmazione imperativa, introducendo concetti essenziali quali locazione di memoria, assegnamento, stato e iterazione.  Hanno messo a disposizione i concetti chiave per poter introdurre una definizione di macchina astratta
  • 17. TEORIA DELLA COMPUTABILITA’ La teoria della computabilità si occupa dell’analisi degli algoritmi per decidere sulla loro computabilità (o decidibilità), cioè se siano o meno risolvibili indipendentemente dalla macchina fisica sulla quale saranno eseguiti. Il termine funzione computabile indica un procedimento che trasforma i dati iniziali in dati finali. L’algoritmo è la descrizione di un insieme finito di istruzioni, che devono essere eseguite per portare a termine un dato compito e per raggiungere un risultato definito in precedenza
  • 18. ALAN TURING e la MdT Nel 1936 il matematico inglese Alan Turing, nel tentativo di formalizzare la nozione di procedura effettiva, e cioè di voler stabilire le caratteristiche dell’automa in grado di eseguire l’algoritmo, analizzò il comportamento di un essere umano quando risolve un problema di calcolo seguendo un metodo meccanico e ne dedusse che una macchina per computare deve disporre di:  di un nastro infinito, suddiviso in celle, ciascuna capace di contenere un simbolo;  di una testina movibile, atta a leggere e/o scrivere i simboli sul nastro;  di un’unità di memoria interna, per memorizzare lo stato corrente.  di un’unità logica, preposta a decidere quali passi deve compiere la macchina: sulla base della rilevazione del contenuto della cella sulla quale è posizionata in quell’istante, l’unità logica decide quale contenuto scrivere nella cella su cui è posizionata, in quale stato passare e in quale direzione si deve muovere la testina di lettura/scrittura  di un’unità di controllo attraverso cui la MdT impartisce i comandi alla testina
  • 19. Le operazioni elementari che una tale macchina deve essere in grado di eseguire sono:  cambiare il simbolo sotto la testina;  spostare la testina in modo da agire su una delle celle adiacenti a quella corrente.  a seconda dello stato corrente e del simbolo letto dalla testina cambiare il simbolo sotto la testina e lo stato corrente e spostare la testina di una cella. COMPORTAMENTO DELLA MACCHINA DI TURING
  • 20. Il comportamento di una MdT può essere descritto mediante una funzione di transizione dello stato e una funzione di trasformazione delle uscite, così come accade nel caso degli automi. Il comportamento di una MdT può essere rappresentato in forma tabellare mediante una tabella di transizione (o matrice funzionale) o in forma grafica mediante un diagramma di stato. Le Macchine di Turing sono automi, ed in particolare automi con la massima potenza computazionale (la "Macchina di Turing" è una macchina astratta, non fisica). L’AUTOMA MACCHINA DI TURING
  • 21. DEFINIZIONE FORMALE DI MDT MdT = (A, I, S, s0, F, δ) Dove: A è l’alfabeto dei simboli utilizzati dalla macchina; l’alfabeto comprende anche il simbolo blank che corrisponde alla cella vuota, cioè alla parte di nastro non utilizzato, e serve per indicare l’assenza di simboli I è l’insieme dei simboli di input (sottoinsieme di A) che possono essere letti dal nastro S è l’insieme degli stati della macchina s0 è lo stato iniziale della macchina F è l’insieme degli stati finali della macchina (sottoinsieme di S) δ indica la funzione di transizione che associa ad ogni coppia (simbolo di input, stato) una terna (stato, simbolo di output, movimento della testina) (it, st-1) → (St, ut, mt)
  • 22. Esempi: 1- Costruire la MdT per il calcolo del doppio di un numero intero 2- Costruire la MdT per il calcolo del quoziente e resto della divisione di un numero intero per 2
  • 23. MACCHINA DI TURING UNIVERSALE  Turing definì anche una Macchina di Turing Universale (MdTU) capace di simulare il comportamento di qualsiasi altra macchina di Turing. Con essa è pertanto possibile eseguire qualsiasi tipo di algoritmo.  Tale MdTU ha in ingresso due stringhe, una (S1) è l’insieme delle quintuple che definiscono la specifica MdT da simulare, l’altra (S2) è l’insieme degli input della MdT da simulare.  La MdTU si sposterà continuamente dall’una all’altra per eseguire la MdT che sta simulando. Mentre una "normale" MdT (Macchina di Turing) esegue un unico algoritmo incorporato nella tabella di transizione, una MdTU (Macchina di Turing Universale) è una macchina programmabile che può eseguire una qualsiasi MdT, quindi qualsiasi algoritmo.  La MdTU può essere considerata la schematizzazione di un computer reale che esegue i programmi (S1) che a loro volta lavorano su dei dati in input (S2).
  • 24. Esiste sempre un procedimento risolutivo da formalizzare con un algoritmo in corrispondenza di un determinato problema? A livello teorico la risposta a questo quesito viene risolta dalla tesi elaborata dal matematico Turing e dallo scienziato americano Alonzo Church
  • 25. TESI DI CHURCH-TURING La teoria della Computabilità: un problema è risolubile o computabile o calcolabile se, dati in ingresso certi valori, è possibile determinare una funzione f che metta in relazione tali dati con un risultato. La tesi di Church afferma che un qualsiasi problema è calcolabile se è Turing- calcolabile, cioè è risolubile con una macchina di Turing. Tesi di Church-Turing: "se un problema è intuitivamente calcolabile, allora esisterà una MdT-Macchina di Turing (o un dispositivo equivalente, come il computer) in grado di risolverlo (cioè di calcolarlo)". Più formalmente si può dire che "la classe delle funzioni calcolabili coincide con quella delle funzioni calcolabili da una MdT". O ancora: "ogni funzione calcolabile con un algoritmo è calcolabile da una MdT". O ancora: "per ogni problema calcolabile esiste una MdT che lo risolve" [Alonzo Church, matematico statunitense]
  • 26. TERMINOLOGIA  SISTEMA: un insieme organico di elementi, associati secondo un criterio di interazione-legge, che concorrono alla composizione di un'unica entità e/o al perseguimento di un fine comune. Ciascun elemento è separabile ed indipendente e può a sua volta essere un SOTTOSISTEMA  MODELLO Un modello è la rappresentazione (descrizione) semplificata di un sistema o di un processo che viene fatta allo scopo di facilitarne l'analisi e la valutazione (senza dover realizzare fisicamente il sistema). Costruire un modello ha l'effetto collaterale di semplificare la realtà che si vuol rappresentare, di impoverirla. Possono esistere più modelli che rappresentano lo stesso sistema.  PROCESSO Un processo è una azione complessa composta da una sequenza di azioni semplici, cioè una serie di azioni che concorrono al raggiungimento di un certo risultato.
  • 27. TERMINOLOGIA: SISTEMA (1) Un sistema è un insieme organico di elementi, associati secondo un criterio di interazione legge, che concorrono alla composizione di un'unica entità e/o al perseguimento di un fine comune. Ciascun elemento è separabile ed indipendente e può a sua volta essere un SOTTOSISTEMA. Un elaboratore, ad esempio, è un sistema di elaborazione. Per descrivere un sistema occorre conoscere: • le finalità (obiettivi) • le componenti (elementi) • le relazioni tra le diverse componenti • le variabili di ingresso e di uscita. Per STATO DEL SISTEMA si intende una condizione in cui il sistema può trovarsi. Per AZIONE si intende un evento che muta lo stato del sistema. Le azioni possono essere semplici (cioè non ulteriormente scomponibili) o composte (scomponibili in azioni semplic
  • 28. TERMINOLOGIA: SISTEMA (2) Per descrivere un sistema occorre conoscere le relazioni che legano ingressi, stati e uscite. Tali relazioni sono descrivibili in termini matematici, con tabelle di relazione, con grafici. Un sistema è completamente descritto quando si conoscono le uscite risultanti a determinati ingressi, cioè quando si conoscono gli Ingressi (I), le Uscite (U), gli Stati (S), fa funzione di Transizione (che dato stato attuale e ingresso determina il nuovo stato) e la funzione di Trasformazione o di Uscita (che dato stato attuale e ingresso determina l’uscita).
  • 29. TERMINOLOGIA: PROCESSO Un processo è una azione complessa composta da una sequenza di azioni semplici, cioè una serie di azioni che concorrono al raggiungimento di un certo risultato. Un processo è sequenziale quando le azioni elementari che lo compongono vengono eseguite in sequenza. Un esempio di processo può essere una serie di calcoli eseguiti secondo un determinato sistema di numerazione per pervenire ad un ben determinato valore del risultato (sommatoria, media aritmetica, etc. etc.). Si può quindi vedere un SISTEMA come un'entità più o meno complessa atta ad eseguire dei PROCESSI, oppure si può dire che il SISTEMA deve eseguire determinati PROCESSI per conseguire i propri obiettivi.
  • 30. TERMINOLOGIA: MODELLO (1) Un modello è la rappresentazione (descrizione) semplificata di un sistema o di un processo che viene fatta allo scopo di facilitarne l'analisi e la valutazione (senza dover realizzare fisicamente il sistema). Costruire un modello ha l'effetto collaterale di semplificare la realtà che si vuol rappresentare, di impoverirla. Possono esistere più modelli che rappresentano lo stesso sistema. I MODELLI possono essere:  Fisici o Reali (costituiti da elementi del mondo fisico), a loro volta classificabili in  iconici (esempio: plastico di una costruzione)  Analogici (esempio: barometro a mercurio)  Astratti o Simbolici (che si servono di un linguaggio matematico, grafico o di programmazione), a loro volta classificabili in  Matematici (esempio: formule che descrivono un circuito elettrico, che è un sistema dinamico, continuo, deterministico)  Grafici (esempio: schema a blocchi)  Logici o Algoritmici (esempio: simulazione di sistemi reali tramite programmi)
  • 31. Si può costruire un modello seguendo due approcci diversi: 1. costruire un modello che corrisponda in ogni particolare al sistema in esame (studiando accuratamente tutti i dettagli e tutte le componenti del sistema); 2. costruire un modello che non consideri i dettagli del sistema, ma che "simuli" il funzionamento del sistema. Ricapitolando, un modello, come precedentemente illustrato, può essere fisico - iconico (il classico "modellino"), analogico (riproduce il sistema in scala ridotta) - o astratto/simbolico – matematico Per modelli matematici è sempre possibile definire un ALGORITMO che ne descriva le funzioni. Tale algoritmo, per quanto complesso, sarà sempre risolubile mediante un programma eseguito dall’elaboratore. TERMINOLOGIA: MODELLO (2)