Sei sulla pagina 1di 35

ELEMENTI DI PROGRAMMAZIONE

a.a. 2015/16

UNA GERARCHIA
DI
MACCHINE
Andrea Prevete, UNINA2 2016

UNA GERARCHIA DI MACCHINE


macchine combinatorie
macchine 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, ma
risolubile a quello successivo.
Esistono problemi non risolubili in assoluto?
Andrea Prevete, UNINA2 2016

LE MACCHINE COMBINATORIE
Una macchina combinatoria formalmente
definita da una tripla:
<I, O, ft>

ft

dove
I = insieme finito dei simboli di ingresso
O = insieme finito dei simboli di uscita
ft: I -> O (funzione di trasferimento)
Esempio: le porte logiche e le funzioni in genere (half
adder, full adder, etc)
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:

0
1

Andrea Prevete, UNINA2 2016

1
1

0
1

LE MACCHINE COMBINATORIE

Esempio:
x
y

HALF-ADDER

s
r

Dove x, y, s, r sono variabili booleane (0, 1).


Vogliamo che s e r valgano rispettivamente
la cifra di peso 0 e quella di peso 1 della
somma di x ed y.
Avremo:
I={(0,0) (0,1) (1,0) (1,1)}
O={(0,0) (0,1) (1,0) (1,1)}
ft:

0
1

Andrea Prevete, UNINA2 2016

0
1

LE MACCHINE COMBINATORIE
Risolvere problemi con una macchina
combinatoria comporta enumerare in modo
esplicito tutte le possibili configurazioni
dingresso, e indicare in corrispondenza il
valore di uscita.
Essendo un dispositivo puramente
combinatorio inadatto a risolvere problemi
che richiedono una memoria interna
(riconoscimento di sequenze, somme di
numeri forniti in successione, etc.)
Andrea Prevete, UNINA2 2016

FINITE STATE AUTOMATA


Il modo pi semplice per introdurre macchine dotate di
memoria definire un automa con un numero finito di
stati interni.
Un automa a numero finito di stati, nel modello detto di
Mealy, definito dalla quintupla:

<I, O, S, fu, fsp>

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)
Andrea Prevete, UNINA2 2016

FINITE STATE AUTOMATA


I:
O:

0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 0 0 0 0
^
^
^
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}
S

fu:

s0
s1

0
1
0
1

O
0
1
0
0

fps:

s0
s1

Andrea Prevete, UNINA2 2016

S+1

s1

0
0
1

s0
s0
s1

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
^
^
^
0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0

O:

0/0

1/1
S0

S1
0/0

Andrea Prevete, UNINA2 2016

1/0

FINITE STATE AUTOMATA

Un modello alternativo per la definizione di


automi a numero finito di stati quello detto di
Moore, definito ancora da una quintupla:

<I, O, S, fu, fsp>

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)
Andrea Prevete, UNINA2 2016

FINITE STATE AUTOMATA


DIAGRAMMA DI TRANSIZIONE (MOORE):
I:
O:

0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 0 0 0 0
^
^
^
0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0
1

S0/0
0

S01/1
0
Andrea Prevete, UNINA2 2016

S11/0

FINITE STATE AUTOMATA


Gli automi di Mealy e Moore sono, dal punto di vista della capacit computazionale, del tutto
equivalenti. Quindi ogni problema risolvibile con il modello di Mealy pu essere trattato con Moore e
viceversa.
Sceglieremo, quindi, di volta in volta, fra Mealy e Moore in base alla loro capacit di modellizzare
con espressivit ed immediatezza il problema in parola.
Ad esempio del tutto evidente che la soluzione del problema precedente resa con maggiore
immediatezza adottando il modello di Mealy.
Immaginiamo, invece, di voler progettare un automa capace di riconoscere per esempio
emettendo come output un 1 ogni qualvolta la stringa di 0 ed 1 in input contiene un numero pari di
0 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 dellautoma:
O(S00 )= 1 O(S11 )= 0
O(S10 )= 0 O(S01 )= 0

Andrea Prevete, UNINA2 2016

FINITE STATE AUTOMATA


1

S00/1

S01

S10

S11

Andrea Prevete, UNINA2 2016

FINITE STATE AUTOMATA


Un modo alternativo, ma importante di definire gli automi fa riferimento al loro
utilizzo come strumento formale per il riconoscimento dei cosiddetti
LINGUAGGI REGOLARI.
Ad ogni automa corrisponder quindi un linguaggio dato da tutte e sole le
stringhe riconosciute dallautoma in parola.
Cosa intendiamo per riconosciute? Tali che, a partire da uno stato iniziale
fissato, lautoma letto lultimo 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 una
quintupla:
<I, O, S, F, fsp>
dove
I = insieme finito dei simboli di ingresso, di cui uno designato come
iniziale
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)
Andrea Prevete, UNINA2 2016

FINITE STATE AUTOMATA


Lautoma in figura, ad esempio, riconosce/accetta tutte le
stringhe che terminano con la sequenza 01.

Andrea Prevete, UNINA2 2016

FINITE STATE AUTOMATA


Molti linguaggi sono pi succintamente ed intuitivamente
definibili attraverso lutilizzo 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!
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 lautoma non deterministico che riconosce
le stringhe terminanti con la sequenza 01.

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 macchina
combinatoria, dipendono non solo dellinput attuale,
ma anche della sequenza storica degli input gi
processati.
E comunque importante ricordare il limite del numero
finito di stati e quindi di una memoria finita e
definitivamente fissata a livello di progetto.

Un FSA quindi inadatto a risolvere quei problemi che


non consentono di limitare a priori la lunghezza delle
sequenze dingresso di cui tenere memoria.
Andrea Prevete, UNINA2 2016

FINITE STATE AUTOMATA


Se volessimo realizzare un
automa capace di tener
conto del numero di 0 ed 1
di una stringa in ingresso e
di emettere come output un
1 quando le occorrenze delle
suddette cifre nella stringa
letta si equivalessero,
sbatteremmo contro la
barriera prima citata.
Un FSA non ha la potenza
computazionale necessaria
per affrontare un problema
simile.

S/1

0
1

S0
1

S00
0

Andrea Prevete, UNINA2 2016

1
0

S1
1

S11
1

LE MACCHINE DI TURING
Le macchine di Turing consentono di superare il suddetto limite della memoria.
Esistono di esse numerose formalizzazioni tutte equivalenti dal punto di vista della
potenza 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 sj)

con si e sj appartenti ad un insieme S={s1 .. sn} di stati interni della macchina, al ed


ak ad un insieme A={a1 .. am} di possibili simboli di input/output. Le quadruple
possono anche presentarsi nelle forma (si al ak sj)- o (si al ak sj)+ con il significato
che vedremo di seguito
- Due variabili di stato, s ed a, che tengono conto dello stato interno attuale e della
posizione attuale di lettura in memoria
- Un sistema di controllo che cerca di far corrispondere alla coppia <s a> la prima
parte di una delle quadruple di Q, <si al>, modificando lo stato interno e scrivendo
in memoria in ragione di quanto riportato dalla seconda parte della quadrupla,
<aksj>. Se la quadrupla seguita da un suffisso la posizione di lettura in memoria
sar spostata di una posizione a destra (+) o a sinistra (-).
Andrea Prevete, UNINA2 2016

LA METAFORA DEL NASTRO

Un nastro (illimitatamente espandibile a sinistra ed a destra) rappresenta il deposito dei dati


(memoria)

TM

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 dalleventuale suffisso della
quadrupla
Quando non ci sono pi quadruple per cui esiste un match con lo stato e linput corrente, la
macchina si ferma.
Andrea Prevete, UNINA2 2016

LE MACCHINE DI TURING
Risolvere un problema con la MdT significa
quindi:
definire una opportuna rappresentazione dei
dati iniziali sul nastro
definire la parte di controllo, cio linsieme
delle quadruple, in modo da rendere disponibile
sul nastro, alla fine del computo, una
rappresentazione della soluzione.
Andrea Prevete, UNINA2 2016

LE MACCHINE DI TURING

Consideriamo il
seguente insieme di
quadruple:

NOP uno speciale simbolo ad


indicare che non sar eseguita
alcuna operazione di scrittura,
un altro simbolo speciale che sta
ad identificare una cella vuota.
Allora le quadruple elencate
definiscono un algoritmo per
lincremento unitario di una
stringa binaria!

s1

NOP

s1

s1
s1

NOP

s1

s2
s2

s2

s2

0
0

NOP

s3

s3

s3

NOP

s3

s3
s3

Andrea Prevete, UNINA2 2016

NOP
1

NOP

s2
s4

s4

LE MACCHINE DI TURING
QUESTO E IL GRAFO DI TRANSIZIONE
0,1 / NOP / +

S1

1/0/-

/ NOP / 0/1/-

S3

/ NOP / +

S2

/1

S4

0,1 / NOP / Andrea Prevete, UNINA2 2016

LE MACCHINE DI TURING
s2

1 0 1 1

E questo un esempio di computo:


s1

s2

1 0 1 1

1 0 1 0

1 0 1 1

1 0 0 0

s1

s2

s1

s3

1 0 1 1

s3

s1

1 0 1 1
1 0 1 1

s1

1 1 0 0
1 1 0 0

s4

1 1 0 0

Andrea Prevete, UNINA2 2016

LE MACCHINE DI TURING
Esistono macchine pi potenti delle
Macchine di Turing?
TESI DI CHURCH-TURING
Non esiste alcun formalismo capace di
risolvere una classe di problemi pi
ampia di quella risolta da una Macchina
di Turing.
Andrea Prevete, UNINA2 2016

LE MACCHINE DI TURING

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.

Nellesempio mostrata una

TM

macchina a tre nastri.

Andrea Prevete, UNINA2 2016

LE MACCHINE DI TURING

Di seguito un computo di una


macchina binastro che risolve il
problema posto nella slide 19.

0100011000etc
1etc

0100011000etc
1etc

0100011000etc
1etc

0100011000etc
1etc

0100011000etc
1etc
0100011000etc
1etc

0100011000etc
1etc

0100011000etc
1etc
0100011000etc
1etc

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 Turing
Universale, applicabile cio a qualsiasi
problema risolubile?
Andrea Prevete, UNINA2 2016

LE MACCHINE DI TURING
Finora, lalgoritmo realizzato da una MdT era
cablato nella macchina (DOVE??)
E se invece fosse sul nastro, e la
macchina se lo andasse a prendere?
Come dovrebbe essere strutturata una
simile MdT?
Avremmo una Macchina di Turing
Universale
Andrea Prevete, UNINA2 2016

LE MACCHINE DI TURING
Dovrebbe essere una Macchina di Turing la
cui parte di controllo (cio l algoritmo cablato
.. quindi linsieme delle quadruple!) consista nel
leggere dal nastro una descrizione dello
specifico algoritmo richiesto.
Una tale macchina pu essere adattata per
risolvere un qualunque problema (risolubile)
senza modifiche alla sua struttura.
E, quindi, una macchina programmabile!
Andrea Prevete, UNINA2 2016

LE MACCHINE DI TURING
Cosa richiede questo?
Saper descrivere lalgoritmo richiesto.
E per descrivere lalgoritmo?
Occorre un linguaggio...
e una macchina che lo interpreti.
Conclusione:
la Macchina Universale di Turing linterprete
di un linguaggio!
Andrea Prevete, UNINA2 2016

LE MACCHINE DI TURING
MACCHINA DI TURING UNIVERSALE
La UTM modella il concetto di elaboratore di
uso generale (general purpose):
una macchina che va a cercare
le istruzioni da svolgere
le interpreta...
e le esegue.
Andrea Prevete, UNINA2 2016

fetch
decode
execute

LE MACCHINE DI TURING
In sintesi
leggere / scrivere un
simbolo dal / sul nastro

corrisponde a:

lettura / scrittura dalla /


sulla memoria RAM /
ROM
nuova configurazione
dei
registri della CPU

transitare in un nuovo
stato interno

scelta della cella di


memoria su cui operare
(indirizzo contenuto
nellAddress Register)

spostarsi sul nastro di


una (o pi) posizioni

Andrea Prevete, UNINA2 2016

THE END

Andrea Prevete, UNINA2 2016