Sei sulla pagina 1di 12

AIDA PICONE 1611878; CORSO DI COMUNICAZIONE, CULTURE E TECNOLOGIE DIGITALI

Le macchine di Turing
Problemi; Esecutori; Linguaggi di programmazione; Grammatiche
formali.







1
1. Introduzione.
Linformatica la scienza che tratta della elaborazione delle informazioni. evidente che
lelaborazione delle informazioni non riguarda soltanto ed esclusivamente lambito numerico o
scientifico, ma coinvolge tutte le attivit umane. Elaborare delle informazioni significa
ricercare la soluzione ad un determinato problema e cos bisogna dividere tra problemi
risolvibili e problemi che non ammettono soluzione.
Nel 1936 venne pubblicato un articolo di Alan Mathison Turing intitolato On computable
numbers, with an application to the Entscheidungsproblem, in cui l'autore risolveva
negativamente il problema della decidibilit lanciato nel 1900 da David Hilbert e Wilhelm
Ackermann.
La questione era stata posta da Hilbert nei seguenti termini: esiste sempre, almeno in linea di
principio, un metodo meccanico (cio una maniera rigorosa) attraverso cui, dato un qualsiasi
enunciato matematico, si possa stabilire se esso sia vero o falso?
I vantaggi derivanti dal possedere un tale metodo sono enormi e meritano tutta l'enfasi che
Hilbert e molti altri al suo seguito, diedero alla questione: un tale algoritmo sarebbe in grado di
risolvere tutti i problemi matematici e, molto di pi, sarebbe possibile ridurre ogni
ragionamento umano a mero calcolo meccanizzabile. Una prima forte risposta la diede il
matematico boemo Gdel in occasione della conferenza sull'epistemologia delle scienze esatte
di Knisberg (1931), in cui espresse per la prima volta pubblicamente le idee racchiuse nel suo
pi celebre lavoro sull'incompletezza dei sistemi formali coerenti (primo teorema di
incompletezza); Gdel dimostr che la semplice coerenza di un sistema formale non pu
garantire che ci che in esso viene dimostrato sia vero oppure falso. Il sogno di Hilbert stava
gi sfumando quando Turing pubblic il suo articolo, in cui dimostr l'insolubilit
dell'entscheidungs problem.
"Un giovane sconosciuto di nome Alan Turing risolse il quesito quasi per gioco. Con una
macchina immaginaria."
La soluzione proposta da Turing consiste nell'utilizzo di un modello matematico capace di
simulare il processo di calcolo umano, scomponendolo nei suoi passi ultimi.


2.Algoritmi&Problemi.
Un problema pu essere considerato come una funzione.
Una funzione una relazione che lega dati in ingresso e dati in uscita.
I dati in ingresso (input) di un problema descrivono le informazioni rilevanti legate al
problema stesso, mentre i dati in uscita (output) descrivono una soluzione del problema. Per
esempio, la ricerca del valore pi grande allinterno di un insieme di valori prevede come dati
in ingresso i valori allinterno dei quali cercare il massimo, mentre prevede come dato in uscita
il valore massimo. Nella teoria della calcolabilit si parte dallosservazione che un algoritmo
indica una sequenza di operazioni che devono essere eseguite in modo automatico da un
esecutore. quindi necessario precisare nel dettaglio, usando un approccio matematico, le
caratteristiche che un esecutore deve avere. A tal fine sono stati definiti diversi tipi di esecutori

2
astratti (definiti sulla carta e non costruiti nella realt anche se approssimabili con elaboratori
reali) che hanno caratteristiche differenti; fra questi i pi conosciuti sono gli Automi a Stati
Finiti e le Macchine di Turing.
Un altro tipo di problema potrebbe essere verificare, dato un algoritmo e una particolare
istanza di dati in ingresso, quale sia l'ordine di grandezza del tempo necessario per restituire
un risultato.


Un algoritmo pu essere rappresentato graficamente con un diagramma di flusso costituito da
simboli, quali: rettangoli, ovali, cerchietti e rombi.
1. Inizializzare TOTALE a 0
2. Inizializzare CONTATORE a 1
3. Finch CONTATORE resta minore o uguale a 100
4. Prendere dallinput il prossimo voto
5. Aggiungere il voto a TOTALE
6. Aggiungere 1 a CONTATORE
7. Impostare il valore della media a TOTALE diviso 100
8. Visualizzare la media.


Il valore sentinella un valore con cui chi immette i voti segnala al calcolatore che finita la
lista dei voti. Questo valore deve essere scelto diverso dai possibili valori dei voti, ad esempio
inizio
TOTALE = 0
CONTATORE = 1
CONTATORE <= 100?
Media = TOTALE/1OO
FALSO
VISUALIZZA MEDIA
FINE
VERO
Prendere dellinput il prossimo
voto
aggiungere il voto a TOTALE
Aggiungere 1 a CONTATORE

3
negativo (-1). Per fissare le idee, gli elementi che entrano in gioco nel trattamento delle
informazioni sono: i problemi, le informazioni, un metodo di soluzione, un esecutore.
dunque importante poter stabilire se una MdT, o un altro sistema formale equivalente
("lambda-calcolo" di Church, ad es.), quando le si sottopone una stringa (di dati) si arresti o
meno. Questo detto Problema della fermata o Problema dell'arresto della macchina di Turing.
Si trovano casi nei quali si dimostra o si verifica che si ha l'arresto, casi per i quali si dimostra
che l'evoluzione non si arresta ma potrebbe procedere quanto si vuole e casi per i quali non si
sa dare risposta.
Sembra ragionevole cercare un procedimento generale per decidere uno di questi problemi.
Dato che le MdT si rivelano in grado di risolvere tutti i problemi che si sanno risolvere con gli
altri procedimenti noti, sensato chiedersi se esiste una macchina di Turing in grado di
decidere per una qualsiasi coppia (M, d) costituita da una MdT M e da una stringa di dati d se,
quando si fornisce d a M, questa si evolve fino ad arrestarsi o meno. Questa richiesta resa
ancor pi significativa dall'esistenza, dimostrata dallo stesso Turing, di una cosiddetta
macchina di Turing universale, macchina in grado di simulare qualsiasi evoluzione di qualsiasi
MdT (anche le evoluzioni di se stessa!). Ebbene Turing ha dimostrato che la macchina di Turing
universale non in grado di decidere in ogni caso il problema dell'arresto. Quindi nessuna
macchina di Turing pu farlo. Questo risultato negativo si esprime dicendo che il problema
dell'arresto Turing-indecidibile. Se si accetta la congettura di Church-Turing sulla portata
della macchina di Turing, si conclude che il problema dell'arresto della macchina di Turing
indecidibile.
Questo risultato negativo costituisce un limite per tutti i meccanismi computazionali; esso
costituisce un risultato limitativo di grande importanza generale e per lo studio degli algoritmi.
L'importanza generale dipende dal fatto che ogni procedimento dimostrativo automatico si
trova equivalente a una computazione che pu effettuarsi con una macchina di Turing. Va
posto in rilievo che la Turing-indecidibilit del problema dell'arresto si dimostra equivalente al
teorema di incompletezza di Gdel, il primo fondamentale risultato limitativo per la
matematica. Si trova inoltre nello studio degli algoritmi e della loro complessit che dalla
indecidibilit dell'arresto si deducono abbastanza agevolmente molti altri risultati limitativi.


3. Esecutori: presentazione della macchina di Turing.
Una macchina di Turing (o pi brevemente MdT) una macchina ideale che manipola i dati
contenuti su un nastro di lunghezza potenzialmente infinita, secondo un insieme prefissato di
regole ben definite. In altre parole, un modello astratto che definisce una macchina in grado
di eseguire algoritmi e dotata di un nastro potenzialmente infinito su cui pu leggere e/o
scrivere dei simboli.
un potente strumento teorico che viene largamente usato nella teoria della calcolabilit e
nello studio della complessit degli algoritmi, in quanto di notevole aiuto agli studiosi nel
comprendere i limiti del calcolo meccanico. La sua importanza tale che oggi, per definire in
modo formalmente preciso la nozione di algoritmo, si tende a ricondurlo alle elaborazioni
effettuabili con macchine di Turing.

4

La macchina formata da una testina di lettura e scrittura con cui in grado di leggere e
scrivere su un nastro potenzialmente infinito partizionato, in maniera discreta, in caselle. Ad
ogni istante di tempo t1, la macchina si trova in uno stato interno s1 ben determinato, risultato
dell'elaborazione compiuta sui dati letti.
Lo stato interno, o configurazione, di un sistema la condizione in cui si trovano le componenti
della macchina ad un determinato istante di tempo t. Le componenti da considerare sono:
il numero della cella osservata
il suo contenuto
l'istruzione da eseguire
-Tra tutti i possibili stati, si distinguono:
una configurazione iniziale, per t=t0 (prima dell'esecuzione del programma)
una configurazione finale, per t=tn (al termine dell'esecuzione del programma)
delle configurazioni intermedie, per t=ti (prima dell'esecuzione dell'istruzione oi)

Implementare un algoritmo in questo contesto significa effettuare una delle quattro operazioni
elementari
spostarsi di una casella a destra
spostarsi di una casella a sinistra
scrivere un simbolo preso da un insieme di simboli a sua disposizione su una casella
cancellare un simbolo gi scritto sulla casella che sta osservando
oppure fermarsi.
Eseguire un'operazione o1, tra gli istanti di tempo t1 e t2, vuol dire passare dallo stato interno
s1 al s2. Pi formalmente questo si esprime in simboli come: {s1,a1,o1,s2} da leggersi come:
nello stato interno s1 la macchina osserva il simbolo a1, esegue l'operazione o1 e si ritrova
nello stato interno s2.
Turing pot dimostrare che un tale strumento, dalle caratteristiche cos rigidamente definite,
in grado di svolgere un qualsiasi calcolo, ma non si ferm qui; egli cap che la calcolabilit era
parente stretta della dimostrabilit e dunque, cos come Gdel aveva distrutto i sogni di gloria
dei Principia Mathematica di Russell e Whitehead, cos le sue macchine potevano
definitivamente chiudere la questione dell'Entscheidungsproblem.

4. Linguaggi di programmazione.

5
Si sa che per moltiplicare un numero per 10 si sposta la virgola di una posizione verso destra o,
se il numero intero, si pone uno zero alla destra del numero. Si parla di unit, decine,
centinaia, migliaia, ecc. e per i numeri reali razionali e reali si usano anche termini come
decimi, centesimi, millesimi ecc. Si sa che la cifra meno significativa quella pi a destra e
quella pi significativa quella a sinistra. Il sistema decimale un sistema in base 10, poich fa
uso di 10 simboli diversi: 0, 1, 2, 3, 4, 5, 6, 7, 8, e 9 ereditate dagli arabi nel passato.

I linguaggi di programmazione sono alla base dellInformatica, perch consentono di generare
il software, sia quello di base (sistemi operativi), sia quello applicativo utilizzato nei vari
aspetti dellelaborazione di dati, come ad esempio operazioni eseguite da un programma,
sequenze di passi eseguiti da una macchina per lautomazione di processi produttivi, controlli e
protocolli di telecomunicazione, le interfacce utente, raccolta di dati da Internet, ecc.
I linguaggi di programmazione occupano una posizione intermedia tra il linguaggio naturale
(tipicamente inglese), comprensibile dalle persone, e quello binario (composto da sequenze
delle sole cifre 0 e 1), comprensibili solo dal computer, l'unico linguaggio che pilota
direttamente le unit fisiche dell'elaboratore (memoria centrale e cpu).

Qualsiasi linguaggio di programmazione , si compone di parole e regole; le prime generate da
un dato alfabeto o simboli secondo un metodo prefissato, le seconde costituiscono la portante
grammaticale e sintattica del linguaggio che consente di aggregare le parole per formare frasi
di senso compiuto, cio ammissibili.
I calcolatori digitali, daltra parte, possiedono caratteristiche fisiche che mal di prestano a
utilizzare il sistema decimale. I computer, pertanto, compiono tutte le operazioni utilizzando
un sistema di numerazione diverso dal nostro e maggiormente rispondente alle caratteristiche
dei materiali impiegati: il sistema binario.
Il sistema di numerazione binario, daltra parte, assolutamente inadatto alla mente umana,
che difficilmente manipola lunghe sequenze di 0 e 1 e, inoltre, la conversione dei numeri da
binario a decimale e viceversa tuttaltro che immediata. In campo informatico, pertanto, si fa
uso, in particolare, di due ulteriori sistemi di numerazione di tipo posizionale: lottale, con 8
simboli diversi e lesadecimale che ne impiega 16.
Ogni elemento, del sistema binario, si chiama bit dallabbreviazione di binary digit. Le
informazioni sono rappresentate in modo diverso a seconda che si tratti di numeri per eseguire
calcoli aritmetici oppure testo, immagini, suono, ecc.

Un linguaggio di programmazione un insieme di regole grammaticali e sintattiche (poche e di
solito english-like) con il quale possibile esprimere un programma. Normalmente con il
termine di linguaggio si identifica anche un software, appartenente alla categoria delle
applicazioni, capace di interpretare o tradurre, quanto espresso nel linguaggio stesso, nella
sequenza di frasi numeriche (numeri binari) che sono le sole istruzioni riconoscibili dalla CPU.
Un linguaggio pu lavorare secondo due distinte modalit:

6
1) Modalit interprete. Traduce frase per frase in due fasi ripetute ciclicamente: 1 fase:
traduce la frase in linguaggio macchina (o in un metalinguaggio riconoscibile dalla parte
esecutiva dellinterprete); 2 fase: esegue la frase tradotta.
2) Modalit compilatore (traduttore). Il compilatore legge tutte le frasi e poi le traduce in
linguaggio macchina come discorso completo.
Queste due modalit devono essere paragonate in termini di interattivit, velocit di
attivazione (quella iniziale) e velocit di esecuzione.
INTERATTIVITA.
VELOCITA DI ATTIVAZIONE.
VELOCITA DI ESECUZIONE.
INTERPRETE (traduce ed esegue frase per frase).
COMPILATORE (traduce tutto il discorso).
1) I linguaggi Assemblatori sono capaci di rappresentare degli mnemonici, a cui poi si pu
associare una parola, che verr tradotta in linguaggio macchina. Sono dei traduttori uno a
uno del linguaggio macchina. Sono dei linguaggi che vengono adattati ai computer a seconda
della loro architettura. Gran parte del SO scritto in ASSSEMBLER.
2) Esistono diversi linguaggi procedurali, o "imperativi", che sono linguaggi attraverso i quali si
devono specificare esattamente la sequenza di azioni da eseguire per svolgere una determinata
azione. Questi sono i pi usati ancora oggi, quali:

- BASIC => Beginner's All-purpose Symbolic Instruction Code, esiste laversione QUICK che
pi veloce e pi avanzata; nella versione Visual-Basic in grado di manipolare oggetti.
- FORTRAN => FORmulas TRANslator, versioni (II), V e VI, ANSIXX (con XX si indica lanno di
rilascio). Questo tipo di linguaggio particolarmente adatto per tradurre le formule
matematiche;
- ALGOL => ALGOrithmic Language, un linguaggio ormai poco usato. Questo tipo di
linguaggio noto per descrivere con la massima facilit gli algoritmi (ALGORITMO: descrizione
procedurale che permette di arrivare alla soluzione del problema);
- PASCAL => una forma avanzata dellALGOL, adatto per la programmazione strutturata.
C/C++ => un linguaggio formale che assomiglia molto al PASCAL, ma che anche permette un
controllo della macchina come se fosse in parte un assembler. E meno leggibile del PASCAL. Gli
oggetti sono dei moduli software che permettono un pi rapido e sicuro sviluppo (scrittura) di
programmi riutilizzando dei pezzi, dei moduli, gi scritti e provati diffusamente. Tali moduli
vengono visti ed utilizzati come scatole chiuse delle quali fornita la descrizione in termini di
propriet{ (informazioni di configurazione incapsulate dentro loggetto, accessibili solo tramite
operazione controllate dalloggetto stesso) e metodi (azione che loggetto pu svolgere se
sollecitato dal programma o in risposta ad eventi predefiniti). considerato un linguaggio da
professionisti; la versione C++(o Visual-C) in grado di manipolare oggetti.

7
- Perl un linguaggio vecchio di soli pochi anni, nato nel 1987 con lobiettivo di essere facile ed
aperto, distribuito gratuitamente in forma di software aperto, particolarmente adatto a
integrare applicazioni Internet e altri linguaggi.
- COBOL => Common Business Oriented Language, questo linguaggio stato concepito per
descrivere le risoluzioni di problemi di ordinamento e un linguaggio pi gestionale che
scientifico; si utilizza ancora per la manutenzione dei sistemi legacyi42.
3) I linguaggi non procedurali, o "non imperativi", permettono l'esecuzione di azioni
specificando il risultato da ottenere piuttosto che i passi mediante i quali ottenerlo. Si
utilizzano specialmente nel campo dellIntelligenza Artificiale (AI) e dei Sistemi Esperti (ES),
come pure nel campo dei DATA BASE.
LISP => LISt Processor, primo linguaggio "non imperativo", in grado di trattare liste di
qualsiasi natura, numeri compresi. Un programma lisp un insieme di funzioni matematiche
composte fra loro in modo che ciascuna di esse ricavi i propri dati da quella precedente. Il LISP
possiede una sintassi semplice e uniforme che lo rende ideale per manipolare informazioni e
confrontare problemi.
- PROLOG => PROgramming in LOGic, "Programmare in logica" vuole dire non specificare le
operazioni da eseguire per risolvere i problemi proposti, in quanto le procedure risolutive
vengono svolte automaticamente dal computer.
Si definiscono legacy quei sistemi software, sviluppati e messi a punto nel corso di decenni
(come le applicazioni bancarie, di sicurezza militare, etc.), che hanno raggiunto un elevato
grado di affidabilit e per i quali troppo rischioso (magari sbaglierebbero i conti in qualche
caso particolare con enormi danni economici) un rifacimento con tecniche e linguaggi moderni.

5. Grammatiche formali.
Ogni linguaggio di programmazione costituito da un suo proprio alfabeto, da una grammatica,
da una sintassi e da una semantica. La sintassi riguarda linsieme di regole che devono essere
rispettate per scrivere programmi corretti.
La costruzione delle stringhe avviene secondo una metodologia che, in informatica nota con il
nome Grammatiche formali. Una grammatica formale (come introdotta da Chomsky) un
sistema che comprende:
variabili terminali,
variabili,
un insieme di regole di produzione e
un insieme di assiomi.
La grammatica permette di operare su stringhe di simboli attraverso le regole di produzione
che fanno passare da una stringa ad unaltra a partire dagli assiomi. Il linguaggio generato dalla
grammatica linsieme di stringhe composte solo da variabili terminali che si possono ottenere
a partire dagli assiomi operando con le regole di produzione.

8
La gerarchia di Chomsky un insieme di classi di grammatiche formali che generano linguaggi
formali. La gerarchia di queste grammatiche, chiamate anche grammatiche a struttura
sintagmatica (phrase structure grammars), fu descritta da Noam Chomsky nel 1956.
Una grammatica formale una quadrupla , ove un insieme finito
e non vuoto di simboli detto alfabeto non terminale, un insieme finito e non vuoto di
simboli detto alfabeto terminale (le lettere di una parola nel linguaggio formale), una
relazione binaria di cardinalit in altre parole un insieme di regole di produzione (con un lato
sinistro ed un lato destro), ed infine appartenente a detto Assioma, e rappresenta il
simbolo non terminale di inizio simbolo iniziale. Una regola di produzione pu essere applicata
ad una parola rimpiazzando il lato sinistro con il lato destro. Una derivazione una sequenza di
regole di produzione. In questo modo una grammatica definisce un linguaggio formale con
tutte le parole costituite dai soli simboli terminali che possono essere raggiunti dal simbolo
iniziale attraverso derivazioni.
I simboli non terminali sono genericamente rappresentati da lettere in maiuscolo, i terminali
da lettere in minuscolo, e il simbolo iniziale da . Per esempio, la grammatica con simboli
terminali , e simboli non terminali , e regole di produzione

(dove la stringa vuota)





e il simbolo iniziale , definisce il linguaggio composto da tutte le
parole nella forma (Ovvero tutte le stringhe formate
da ripetizioni di seguite da ripetizioni di , come ad
esempio per o per ).
Quella seguente una semplice grammatica che definisce un
linguaggio simile: Simboli terminali , simboli non
terminali , simbolo iniziale , regole di produzione



La gerarchia di Chomsky composta dai seguenti livelli:
Grammatiche di tipo-0 (grammatiche illimitate) include tutte le grammatiche formali.
Queste grammatiche hanno regole della forma con simbolo non
terminale, , e stringhe di simboli terminali e non terminali. Queste grammatiche
ammettono anche derivazioni che diminuiscono la lunghezza della frase, ad esempio le -
produzioni, quindi pu essere vuota. Queste grammatiche generano esattamente tutti i
linguaggi che possono essere accettati da una Macchina di Turing. Questi linguaggi sono

9
anche conosciuti come linguaggi ricorsivamente enumerabili. Da notare che questi
linguaggi sono differenti dai linguaggi ricorsivi che possono essere riconosciuti da
una macchina di Turing che termina sempre. I linguaggi di tipo-0 sono semidecidibili
secondo Turing (dato un linguaggio L di tipo-0 sempre possibile definire una MT tale
che se una stringa s L allora termina la computazione accettando s, se invece s L
pu non terminare la computazione di s).
Grammatiche di tipo-1 (grammatiche dipendenti dal contesto) generano linguaggi
dipendenti dal contesto. Queste grammatiche hanno regole della
forma con simbolo non terminale e , e stringhe di simboli
terminali e non terminali (qualunque regola di produzione che riduca la lunghezza delle
stringhe non ammessa). Le stringhe e possono essere vuote, ma la non deve
essere vuota. I linguaggi descritti da queste grammatiche sono esattamente tutti i linguaggi
che possono essere riconosciuti da una macchina di Turing non deterministica nella quale
il nastro limitato da un numero costante di volte la lunghezza dell'input.
Grammatiche di tipo-2 (grammatiche libere dal contesto) generano linguaggi liberi dal
contesto. Queste grammatiche sono definite da regole nella forma con simbolo
non terminale e una stringa di simboli terminali e non terminali. Questi linguaggi sono
esattamente tutti i linguaggi che possono essere riconosciuti da un automa a pila non
deterministico. I linguaggi context free sono teoricamente le basi per la sintassi di
molti linguaggi di programmazione (Analisi sintattica).
Grammatiche di tipo-3 (grammatiche regolari) generano linguaggi regolari. Questo tipo di
grammatiche restringe le sue regole ad un singolo simbolo non terminale nel lato sinistro
della produzione e nel lato destro un singolo simbolo terminale, che pu essere seguito (o
preceduto, ma non entrambe le forme nella stessa grammatica) da un singolo simbolo non
terminale. La regola permessa anche qui se non compare nel lati destri delle
regole di produzione. Questi linguaggi sono esattamente tutti i linguaggi riconosciuti da
un automa a stati finiti. Oltretutto, questa famiglia di linguaggi formali pu essere ottenuta
con espressioni regolari. I linguaggi regolari sono comunemente usati per definire modelli
di ricerca (search patterns) e la struttura lessicale dei linguaggi di programmazione
(Analisi lessicale).
Nota che l'insieme delle grammatiche corrispondente ai linguaggi ricorsivi non un membro di
questa gerarchia.
La grammatica di tipo-0 l'unica che pu generare la stringa vuota. possibile estendere le
grammatiche di tipo-1, 2 e 3 in modo tale che possono generare lo stesso linguaggio arricchito
della stringa vuota. La regola di produzione permessa se non appare nel lato
destro delle regole di produzione. L'introduzione delle -produzioni ha conseguenze diverse a
seconda del tipo di grammatica. Nel caso delle grammatiche di tipo-2 o 3 le -produzioni non
aumentano il potere espressivo della grammatica. Viceversa le grammatiche di tipo-1 si
trasformano in grammatiche di tipo-0, i.e. aumenta il potere espressivo della grammatica.
Ogni linguaggio regolare libero dal contesto, ogni linguaggio libero dal contesto dipendente
dal contesto ( infatti un caso particolare dove le stringhe e sono obbligatoriamente
vuote) e ogni linguaggio dipendente dal contesto ricorsivo, ed infine ogni linguaggio ricorsivo
enumerabile ricorsivamente. Queste sono inclusioni proprie, nel senso che esistono linguaggi
enumerabili ricorsivamente che sono non ricorsivi, linguaggi ricorsivi che sono non dipendenti

10
dal contesto, linguaggi dipendenti dal contesto che sono non liberi dal contesto e linguaggi
liberi dal contesto che sono non regolari.




























11
BIBLIOGRAFIA
Informazioni sulla macchina di Turing: http://it.wikipedia.org/wiki/Macchina_di_Turing
Informazioni sulle grammatiche formali: http://it.wikipedia.org/wiki/Gerarchia_di_Chomsky
Informazioni generali tratte da Elementi di Informatica per le scienze sociali Angela
Scaringerlla.
Informazioni approfondite sui calcolatori:
http://www.coris.uniroma1.it/materiali/7.12.54_calcolabilita.pdf

Potrebbero piacerti anche