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 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. Problemi non risolubili in assoluto? Andrea Prevete, UNINA2 23
LE MACCHINE COMBINATORIE Una macchina combinatoria è formalmente definita da una tripla: <I, O, ft> I ft O 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 23
LE MACCHINE COMBINATORIE Esempio: z = AND(x, y) Dove x, y, z sono variabili booleane (, ). Vogliamo che z= sse x=y=. I O Avremo: I={(,) (,) (,) (,)} x y z O={, } ft: Simbolo per una porta AND: Andrea Prevete, UNINA2 23
LE MACCHINE COMBINATORIE Esempio: x y HALF-ADDER s r I O Dove x, y, s, r sono variabili booleane (, ). Vogliamo che s e r valgano rispettivamente la cifra di peso e quella di peso della somma di x ed y. Avremo: I={(,) (,) (,) (,)} O={(,) (,) (,) (,)} ft: x y s r Andrea Prevete, UNINA2 23
LE MACCHINE COMBINATORIE Risolvere problemi con una macchina combinatoria comporta enumerare in modo esplicito tutte le possibili configurazioni d ingresso, 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 23
GLI AUTOMI A STATI FINITI Il modo più semplice per introdurre macchine dotate di memoria è definire un automa con un numero finito di stati interni. Un automa a stati finiti è 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 23
GLI AUTOMI A STATI FINITI I: ^ ^ ^ O: I={, } O={, } S={s, s} S I O S I S + fu: s fps: s s s s s s s Andrea Prevete, UNINA2 23
GLI AUTOMI A STATI FINITI IL MODELLO DI MEALY: I: ^ ^ ^ O: / / S S / / Andrea Prevete, UNINA2 23
GLI AUTOMI A STATI FINITI IL MODELLO DI MOORE: I: ^ ^ ^ O: S/ S/ S/ Andrea Prevete, UNINA2 23
GLI AUTOMI A STATI FINITI Poiché l uscita dipende ora anche dallo stato, l ASF è un automa intrinsecamente dotato di una memoria interna che può quindi influenzare le risposte date dall automa anche a parità di dati d ingresso. Limiti: è un dispositivo con memoria finita e definitivamente fissata a livello di progetto, quindi inadatto a risolvere quei problemi che non consentono di limitare a priori la lunghezza delle sequenze d ingresso di cui tenere memoria. Andrea Prevete, UNINA2 23
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: - (s i a l a k s j ) con s i e s j appartenti ad un insieme S={s.. s n } di stati interni della macchina, a l ed a k ad un insieme A={a.. a m } di possibili simboli di input/output. Le quadruple possono anche presentarsi nelle forma (s i a l a k s j ) - o (s i a l a k s j ) + 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, <s i a l >, modificando lo stato interno e scrivendo in memoria in ragione di quanto riportato dalla seconda parte della quadrupla, <a k s j >. 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 23
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 dall eventuale suffisso della quadrupla Quando non ci sono più quadruple per cui esiste un match con lo stato e l input corrente, la macchina si ferma. Andrea Prevete, UNINA2 23
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è l insieme delle quadruple, in modo da rendere disponibile sul nastro, alla fine del computo, una rappresentazione della soluzione. Andrea Prevete, UNINA2 23
LE MACCHINE DI TURING Consideriamo il seguente insieme di quadruple: s s s ƀ NOP NOP NOP s s s2 + + - 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. s2 s2 s2 ƀ s2 s4 s3 - - Allora le quadruple elencate definiscono un algoritmo per l incremento unitario di una s3 s3 NOP NOP s3 s3 - - stringa binaria! s3 ƀ NOP s4 + Andrea Prevete, UNINA2 23
LE MACCHINE DI TURING Ecco un esempio di computo: s s s s s3 s Andrea Prevete, UNINA2 23 s2 s2 s2 s3 s4
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 23
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 23
LE MACCHINE DI TURING Finora, l algoritmo 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 23
LE MACCHINE DI TURING Dovrebbe essere una Macchina di Turing la cui parte di controllo (cioè l algoritmo cablato.. quindi l insieme 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 23
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 interprete di un linguaggio! Andrea Prevete, UNINA2 23
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. fetch decode execute Andrea Prevete, UNINA2 23
LE MACCHINE DI TURING In sintesi leggere / scrivere un simbolo dal / sul nastro transitare in un nuovo stato interno corrisponde a: lettura / scrittura dalla / sulla memoria RAM / ROM nuova configurazione dei registri della CPU spostarsi sul nastro di una (o più) posizioni scelta della cella di memoria su cui operare (indirizzo contenuto nell Address Register) Andrea Prevete, UNINA2 23
MACCHINA DI TURING UNIVERSALE E MACCHINA DI VON NEUMANN La UTM (che è una macchina astratta) modella in tutto la Macchina di Von Neumann (una macchina reale)? Una UTM elabora prendendo dati e algoritmo dal nastro e scrivendo sul nastro i risultati. Dunque, una UTM opera solo da/verso il nastro (astrazione della memoria interna): non esiste il concetto di mondo esterno! La UTM è dunque pura computazione: non modella la dimensione dell interazione che invece esiste nella macchina di Von Neumann. La macchina di Von Neumann possiede istruzioni di I/O, la UTM no. Andrea Prevete, UNINA2 23
THE END Andrea Prevete, UNINA2 23