8/18/2019 gerarchia di macchine
1/35
Andrea Prevete, UNINA2 2016
ELEMENTI DI PROGRAMMAZIONE
a.a. 2015/16
UNA GERARCHIADI
MACCHINE
8/18/2019 gerarchia di macchine
2/35
Andrea Prevete, UNINA2 2016
UNA GERARCHIA DI MACCHINE
macchine combinatoriemacchine sequenziali (automi a
numero finito di stati)
...macchine di Turing
Macchine di tipo differente hanno diversa capacità di risolvere problemi.Un problema può essere non risolubile ad un dato livello della gerarchia, marisolubile a quello successivo.Esistono problemi non risolubili in assoluto?
8/18/2019 gerarchia di macchine
3/35
Andrea Prevete, UNINA2 2016
LE MACCHINE COMBINATORIE
Una macchina combinatoria è formalmentedefinita da una tripla:
dove
I = insieme finito dei simboli di ingressoO = insieme finito dei simboli di uscitaft: I -> O (funzione di trasferimento)Esempio: le porte logiche e le funzioni in genere (half
adder, full adder, etc)
ftI O
8/18/2019 gerarchia di macchine
4/35
Andrea Prevete, UNINA2 2016
LE MACCHINE COMBINATORIE
Esempio:z = AND(x, y)
Dove x, y, z sono variabili booleane (0, 1).
Vogliamo che z=1 sse x=y=1.
Avremo:
I={(0,0) (0,1) (1,0) (1,1)}
O={0, 1} ft:
Simbolo per una porta AND:
x y z0 0 0
0 1 0
1 0 0
1 1 1
I O
8/18/2019 gerarchia di macchine
5/35
Andrea Prevete, UNINA2 2016
LE MACCHINE COMBINATORIE
Esempio:
Dove x, y, s, r sono variabili booleane (0, 1).Vogliamo che s e r valgano rispettivamentela cifra di peso 0 e quella di peso 1 dellasomma di x ed y.Avremo:I={(0,0) (0,1) (1,0) (1,1)}O={(0,0) (0,1) (1,0) (1,1)} ft:
x y s r
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
I O
HALF-ADDERs
r
x
y
8/18/2019 gerarchia di macchine
6/35
Andrea Prevete, UNINA2 2016
LE MACCHINE COMBINATORIE
Risolvere problemi con una macchinacombinatoria comporta enumerare in modoesplicito tutte le possibili configurazionid’ingresso, e indicare in corrispondenza ilvalore di uscita. Essendo un dispositivo puramentecombinatorio è inadatto a risolvere problemiche richiedono una memoria interna
(riconoscimento di sequenze, somme dinumeri forniti in successione, etc.)
8/18/2019 gerarchia di macchine
7/35
Andrea Prevete, UNINA2 2016
FINITE STATE AUTOMATA
Il modo più semplice per introdurre macchine dotate di“memoria” è definire un automa con un numero finito distati interni.
Un automa a numero finito di stati, nel modello detto diMealy, è definito dalla quintupla:
dove
• I = insieme finito dei simboli di ingresso• O = insieme finito dei simboli di uscita• S = insieme finito degli stati
• fu: I x S -> O (funzione di uscita)• fsp: I x S -> S (funzione di stato prossimo)
8/18/2019 gerarchia di macchine
8/35
Andrea Prevete, UNINA2 2016
FINITE STATE AUTOMATA
I: 0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 0 0 0 0 …
^ ^ ^
O: 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 …
I={0, 1}
O={0, 1}S={s0, s1}
fu: fps:
S I O
s00 0
1 1
s10 0
1 0
S I S+1
s00 s0
1 s1
s10 s0
1 s1
8/18/2019 gerarchia di macchine
9/35
Andrea Prevete, UNINA2 2016
FINITE STATE AUTOMATA
DIAGRAMMA DI TRANSIZIONE (MEALY):
I: 0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 0 0 0 0 …
^ ^ ^
O: 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 …
1/0S0 S1
1/1
0/0
0/0
8/18/2019 gerarchia di macchine
10/35
Andrea Prevete, UNINA2 2016
FINITE STATE AUTOMATA
Un modello alternativo per la definizione diautomi a numero finito di stati è quello detto diMoore, definito ancora da una quintupla:
dove• I = insieme finito dei simboli di ingresso• O = insieme finito dei simboli di uscita• S = insieme finito degli stati
• fu: S -> O (funzione di uscita)• fsp: I x S -> S (funzione di stato prossimo)
8/18/2019 gerarchia di macchine
11/35
Andrea Prevete, UNINA2 2016
FINITE STATE AUTOMATA
DIAGRAMMA DI TRANSIZIONE (MOORE):
I: 0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 0 0 0 0 …
^ ^ ^
O: 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 …
1
S0/0 S01/1
1
0
0 S11/0
0
1
1
S0/0 S01/1
1
0
0S11/0
0
8/18/2019 gerarchia di macchine
12/35
Andrea Prevete, UNINA2 2016
FINITE STATE AUTOMATA
Gli automi di Mealy e Moore sono, dal punto di vista della capacità computazionale, del tuttoequivalenti. Quindi ogni problema risolvibile con il modello di Mealy può essere trattato con Moore eviceversa.
Sceglieremo, quindi, di volta in volta, fra Mealy e Moore in base alla loro capacità di modellizzarecon espressività ed immediatezza il problema in parola.
Ad esempio è del tutto evidente che la soluzione del problema precedente è resa con maggioreimmediatezza adottando il modello di Mealy.
Immaginiamo, invece, di voler progettare un automa capace di riconoscere – per esempioemettendo come output un 1 – ogni qualvolta la stringa di 0 ed 1 in input contiene un numero pari di0 ed un numero pari di 1.
E’ naturale pensare ad un automa a quattro stati:
S00 = “ho finora letto un numero pari di 0 e di 1”
S01= “ho finora letto un numero pari di 0 e dispari di 1”
S10 =“ho finora letto un numero dispari di 0 e pari di 1”
S11 =“ho finora letto un numero dispari di 0 e di 1”
E, quindi, definire una funzione di output con argomento solo lo stato dell’automa:O(S00 )= 1 O(S11 )= 0
O(S10 )= 0 O(S01 )= 0
8/18/2019 gerarchia di macchine
13/35
Andrea Prevete, UNINA2 2016
FINITE STATE AUTOMATA
S00 /1 S01
S10 S11
1
1
1
1
00
00
8/18/2019 gerarchia di macchine
14/35
Andrea Prevete, UNINA2 2016
FINITE STATE AUTOMATAUn modo alternativo, ma importante di definire gli automi fa riferimento al loroutilizzo come strumento formale per il riconoscimento dei cosiddettiLINGUAGGI REGOLARI.
Ad ogni automa corrisponderà quindi un linguaggio dato da tutte e sole lestringhe riconosciute dall’automa in parola.
Cosa intendiamo per riconosciute? Tali che, a partire da uno stato inizialefissato, l’automa – letto l’ultimo simbolo della stringa – si trovi in uno di un
fissato sottoinsieme di stati detti accettanti.In modo più formale definiremo un automa di questo tipo ancora con unaquintupla:
dove
• I = insieme finito dei simboli di ingresso, di cui uno designato comeiniziale
• O = insieme finito dei simboli di uscita• S = insieme finito degli stati• F = sottoinsieme di S detto degli stati finali o accettanti• fsp: I x S -> S (funzione di stato prossimo)
8/18/2019 gerarchia di macchine
15/35
Andrea Prevete, UNINA2 2016
FINITE STATE AUTOMATA
L’automa in figura, ad esempio, riconosce/accetta tutte le
stringhe che terminano con la sequenza «01».
8/18/2019 gerarchia di macchine
16/35
Andrea Prevete, UNINA2 2016
FINITE STATE AUTOMATA
Molti linguaggi sono più succintamente ed intuitivamente
definibili attraverso l’utilizzo dei cosiddetti automi non
deterministici.
Chiariamo subito che gli automi non deterministici non
ampliano la capacità rappresentativa degli FSA!Per cosa si differenziano da un FSA ordinario?
Formalmente per la definizione della funzione di stato
prossimo che si presenta così:
fsp: I x S -> P(S)Quindi il possibile valore di fsp è non più un elemento di
S, ma un sottoinsieme anche vuoto di S!
8/18/2019 gerarchia di macchine
17/35
Andrea Prevete, UNINA2 2016
FINITE STATE AUTOMATA
Abbiamo a che fare, cioè, con un automa che
esplora più strade in parallelo – ognuna delle quali
collassa/muore in concomitanza con un evento non
previsto.
Di seguito l’automa non deterministico che riconoscele stringhe terminanti con la sequenza «01».
8/18/2019 gerarchia di macchine
18/35
Andrea Prevete, UNINA2 2016
FINITE STATE AUTOMATA
Un FSA è una macchina dotata di una memoria interna.I suoi output, a differenza di quelli di una macchinacombinatoria, dipendono non solo dell’input attuale,ma anche della sequenza storica degli input giàprocessati.
E’ comunque importante ricordare il limite del numerofinito di stati e quindi di una memoria finita edefinitivamente fissata a livello di progetto.
Un FSA è quindi inadatto a risolvere quei problemi che
non consentono di limitare a priori la lunghezza dellesequenze d’ingresso di cui tenere memoria.
8/18/2019 gerarchia di macchine
19/35
Andrea Prevete, UNINA2 2016
FINITE STATE AUTOMATA
S0 S1
S00 S11
S/10 1
01
10
10
1
Se volessimo realizzare unautoma capace di tenerconto del numero di 0 ed 1di una stringa in ingresso edi emettere come output un1 quando le occorrenze delle
suddette cifre nella stringaletta si equivalessero,sbatteremmo contro labarriera prima citata.Un FSA non ha la potenzacomputazionale necessaria
per affrontare un problemasimile.
8/18/2019 gerarchia di macchine
20/35
Andrea Prevete, UNINA2 2016
LE MACCHINE DI TURINGLe macchine di Turing consentono di superare il suddetto limite della memoria.Esistono di esse numerose formalizzazioni tutte equivalenti dal punto di vista dellapotenza computazionale.In una versione fra le più semplici ma molto intuitiva una macchina di Turing puòessere pensata come …- Una memoria lineare potenzialmente infinita (..la metafora del nastro illimitato)- Un insieme Q di quadruple del tipo:
- (si al ak s j)con si e s j appartenti ad un insieme S={s1 .. sn} di stati interni della macchina, al edak ad un insieme A={a1 .. am} di possibili simboli di input/output. Le quadruplepossono anche presentarsi nelle forma (si al ak s j)- o (si al ak s j)+ con il significatoche vedremo di seguito- Due variabili di stato, s ed a, che tengono conto dello stato interno attuale e dellaposizione attuale di lettura in memoria- Un sistema di controllo che cerca di far corrispondere alla coppia la primaparte di una delle quadruple di Q, , modificando lo stato interno e scrivendo
in memoria in ragione di quanto riportato dalla seconda parte della quadrupla,. Se la quadrupla è seguita da un suffisso la posizione di lettura in memoriasarà spostata di una posizione a destra (+) o a sinistra (-).
8/18/2019 gerarchia di macchine
21/35
Andrea Prevete, UNINA2 2016
Un nastro (illimitatamente espandibile a sinistra ed a destra) rappresenta il deposito dei dati(memoria)
La Macchina di Turing è munita di una testina di lettura/scrittura che può:• leggere un simbolo dal nastro
• scrivere sul nastro il simbolo specificato da una quadrupla
• transitare in un nuovo stato interno, sempre seguendo le specifiche di una quadrupla
• spostarsi sul nastro di una posizione nella direzione indicata dall’eventuale suffisso dellaquadrupla
Quando non ci sono più quadruple per cui esiste un match con lo stato e l’input corrente, lamacchina si ferma.
LA METAFORA DEL NASTRO
TM
8/18/2019 gerarchia di macchine
22/35
Andrea Prevete, UNINA2 2016
LE MACCHINE DI TURING
Risolvere un problema con la MdT significaquindi:
• definire una opportuna rappresentazione deidati iniziali sul nastro• definire la parte di controllo, cioè l’insiemedelle quadruple, in modo da rendere disponibilesul nastro, alla fine del computo, unarappresentazione della soluzione.
8/18/2019 gerarchia di macchine
23/35
Andrea Prevete, UNINA2 2016
LE MACCHINE DI TURING
Consideriamo ilseguente insieme diquadruple:
NOP è uno speciale simbolo ad
indicare che non sarà eseguitaalcuna operazione di scrittura, ƀ è
un altro simbolo speciale che sta
ad identificare una cella vuota.
Allora le quadruple elencatedefiniscono un algoritmo perl’incremento unitario di una
stringa binaria!
s1 0 NOP s1 +
s1 1 NOP s1 +
s1 ƀ NOP s2 -
s2 1 0 s2 -
s2 ƀ 1 s4
s2 0 1 s3 -
s3 0 NOP s3 -
s3 1 NOP s3 -
s3 ƀ NOP s4 +
8/18/2019 gerarchia di macchine
24/35
Andrea Prevete, UNINA2 2016
LE MACCHINE DI TURING
S1 S2
S3 S4
0,1 / NOP / +
ƀ / NOP / -
1 / 0 / -
ƀ / 10 / 1 / -
0,1 / NOP / -
ƀ / NOP / +
QUESTO E’ IL GRAFO DI TRANSIZIONE
8/18/2019 gerarchia di macchine
25/35
Andrea Prevete, UNINA2 2016
LE MACCHINE DI TURINGE questo è un esempio di computo:
1 0 1 1
s1
1 0 1 1
s1
1 0 1 1
s1
1 0 1 1
s1
1 0 1 1
s1
1 0 1 1
s2
1 0 1 0
s2
1 0 0 0
s2
1 1 0 0
s3
1 1 0 0
s3
1 1 0 0
s4
8/18/2019 gerarchia di macchine
26/35
Andrea Prevete, UNINA2 2016
LE MACCHINE DI TURING
Esistono macchine “più potenti” delleMacchine di Turing?
TESI DI CHURCH-TURINGNon esiste alcun formalismo capace dirisolvere una classe di problemi piùampia di quella risolta da una Macchina
di Turing.
8/18/2019 gerarchia di macchine
27/35
Andrea Prevete, UNINA2 2016
Per esempio, si dimostra facilmente che una macchina di Turing multinastro non può fare,
calcolare, riconoscere niente più di quanto non
possa fare, calcolare, riconoscere
una macchina mononastro.
Nell’esempio è mostrata una
macchina a tre nastri.
LE MACCHINE DI TURING
TM
8/18/2019 gerarchia di macchine
28/35
Andrea Prevete, UNINA2 2016
ƀƀƀƀƀ ƀ0100011000etc
ƀƀƀƀƀƀ1 ƀƀƀƀƀƀƀƀƀetc
ƀƀƀƀƀƀ0100011000etc
ƀƀƀƀƀ ƀ1ƀƀƀƀƀƀƀƀƀetc
ƀƀƀƀƀƀ0100011000etc
ƀƀƀƀƀƀ1 ƀƀƀƀƀƀƀƀƀetc
ƀƀƀƀƀƀ0100011000etc
ƀƀƀƀƀ ƀ1ƀƀƀƀƀƀƀƀƀetc
LE MACCHINE DI TURING
ƀƀƀƀƀƀ0100011000etc
ƀƀƀƀ ƀ ƀ1ƀƀƀƀƀƀƀƀƀetc
ƀƀƀƀƀƀ0100011000etc
ƀƀƀ ƀ ƀƀ1ƀƀƀƀƀƀƀƀƀetc
ƀƀƀƀƀƀ0100011000etc
ƀƀƀƀ ƀ ƀ1ƀƀƀƀƀƀƀƀƀetc
ƀƀƀƀƀƀ0100011000etc
ƀƀƀƀƀ ƀ1ƀƀƀƀƀƀƀƀƀetc
ƀƀƀƀƀƀ0100011000etc
ƀƀƀƀƀƀ1 ƀƀƀƀƀƀƀƀƀetc
Di seguito un computo di unamacchina binastro che risolve ilproblema posto nella slide 19.
8/18/2019 gerarchia di macchine
29/35
Andrea Prevete, UNINA2 2016
LE MACCHINE DI TURING
Una volta definita la parte di controllo, una MdTè in grado di risolvere un dato problema.
E’ specifica per quel problema.
È possibile pensare ad una Macchina di TuringUniversale, applicabile cioè a qualsiasi
problema risolubile?
8/18/2019 gerarchia di macchine
30/35
Andrea Prevete, UNINA2 2016
LE MACCHINE DI TURING
Finora, l’algoritmo realizzato da una MdT eracablato nella macchina (DOVE??)
E se invece fosse sul nastro, e lamacchina se lo andasse a prendere?Come dovrebbe essere strutturata unasimile MdT?
Avremmo una Macchina di TuringUniversale
8/18/2019 gerarchia di macchine
31/35
Andrea Prevete, UNINA2 2016
LE MACCHINE DI TURING
Dovrebbe essere una Macchina di Turing lacui parte di controllo (cioè l’ algoritmo “cablato”.. quindi l’insieme delle quadruple!) consista nel
leggere dal nastro una descrizione dellospecifico algoritmo richiesto.Una tale macchina può essere adattata perrisolvere un qualunque problema (risolubile)
senza modifiche alla sua struttura.E’, quindi, una macchina programmabile!
8/18/2019 gerarchia di macchine
32/35
Andrea Prevete, UNINA2 2016
LE MACCHINE DI TURING
Cosa richiede questo?
Saper descrivere l’algoritmo richiesto.
E per descrivere l’algoritmo?
Occorre un linguaggio...
… e una macchina che lo interpreti.
Conclusione:
la Macchina Universale di Turing è l’interpretedi un linguaggio!
8/18/2019 gerarchia di macchine
33/35
Andrea Prevete, UNINA2 2016
LE MACCHINE DI TURING
MACCHINA DI TURING UNIVERSALELa UTM modella il concetto di elaboratore diuso generale (“general purpose”):
una macchina che va a cercare
le “istruzioni” da svolgere… fetchle interpreta... decodee le esegue. execute
8/18/2019 gerarchia di macchine
34/35
Andrea Prevete, UNINA2 2016
LE MACCHINE DI TURING
In sintesi …
leggere / scrivere un
simbolo dal / sul nastrocorrisponde a:
lettura / scrittura dalla /
sulla memoria RAM /
ROM
transitare in un nuovo
stato interno
nuova configurazionedei
registri della CPU
spostarsi sul nastro di
una (o più) posizioni
scelta della cella di
memoria su cui operare
(indirizzo contenuto
nell’Address Register)
8/18/2019 gerarchia di macchine
35/35
Andrea Prevete, UNINA2 2016
THE END
Top Related