da turing a böhm - di.unito.it · risolubili (le funzioni calcolabili) siano tutti e soli quelli...
Post on 18-Feb-2019
220 Views
Preview:
TRANSCRIPT
Alan Turing
! Calcolabilità (1936): Formalizzazione del calcolo, macchina universale, indecidibilità del problema della fermata.
! Crittografia (1938-42): decrittazione di Enigma, la macchina per cifrare i messaggi tedeschi.
! Costruzione di EDVAC (1945), in collaborazione con Von Newmann: il primo calcolatore programmabile.
! Studi di neurologia, fisiologia, connessioni mente-macchina, studi ispiratori dell’intelligenza artificiale.
! Modelli matematici per l’embriologia (1952).
Alan Turing
! Calcolabilità (1936): Formalizzazione del calcolo, macchina universale, indecidibilità del problema della fermata.
! Crittografia (1938-42): decrittazione di Enigma, la macchina per cifrare i messaggi tedeschi.
! Costruzione di EDVAC (1945), in collaborazione con Von Newmann: il primo calcolatore programmabile.
! Studi di neurologia, fisiologia, connessioni mente-macchina, studi ispiratori dell’intelligenza artificiale.
! Modelli matematici per l’embriologia (1952).
La macchina di Turing
a b 1 0 a a a 1 1 b
Istruzioni per la macchina:
Nello stato S, se il simbolo letto è x: 1) Soprascrivi x con y 2) Sposta la testina a destra o a sinistra 3) Va nello stato T
Calcolo del successore
stato simb scrivi stato va
start b b leggi des
leggi 0 0 leggi des
leggi 1 1 leggi des
leggi b b calcola sin
calcola 0 1 ritorna sin
calcola 1 0 riporta sin
riporta 1 0 riporta sin
riporta 0 1 ritorna sin
riporta b 1 fine
ritorna 0 1 0 1 ritorna sin
ritorna b b fine
b
b
1
1
1
b
Calcolo del successore
stato simb scrivi stato va
start b b leggi des
leggi 0 0 leggi des
leggi 1 1 leggi des
leggi b b calcola sin
calcola 0 1 ritorna sin
calcola 1 0 riporta sin
riporta 1 0 riporta sin
riporta 0 1 ritorna sin
riporta b 1 fine
ritorna 0 1 0 1 ritorna sin
ritorna b b fine
b
b
1
1
1
b
Calcolo del successore
stato simb scrivi stato va
start b b leggi des
leggi 0 0 leggi des
leggi 1 1 leggi des
leggi b b calcola sin
calcola 0 1 ritorna sin
calcola 1 0 riporta sin
riporta 1 0 riporta sin
riporta 0 1 ritorna sin
riporta b 1 fine
ritorna 0 1 0 1 ritorna sin
ritorna b b fine
b
b
1
1
1
b
Calcolo del successore
stato simb scrivi stato va
start b b leggi des
leggi 0 0 leggi des
leggi 1 1 leggi des
leggi b b calcola sin
calcola 0 1 ritorna sin
calcola 1 0 riporta sin
riporta 1 0 riporta sin
riporta 0 1 ritorna sin
riporta b 1 fine
ritorna 0 1 0 1 ritorna sin
ritorna b b fine
b
b
1
1
1
b
Calcolo del successore
stato simb scrivi stato va
start b b leggi des
leggi 0 0 leggi des
leggi 1 1 leggi des
leggi b b calcola sin
calcola 0 1 ritorna sin
calcola 1 0 riporta sin
riporta 1 0 riporta sin
riporta 0 1 ritorna sin
riporta b 1 fine
ritorna 0 1 0 1 ritorna sin
ritorna b b fine
b
b
1
1
1
b
Calcolo del successore
stato simb scrivi stato va
start b b leggi des
leggi 0 0 leggi des
leggi 1 1 leggi des
leggi b b calcola sin
calcola 0 1 ritorna sin
calcola 1 0 riporta sin
riporta 1 0 riporta sin
riporta 0 1 ritorna sin
riporta b 1 fine
ritorna 0 1 0 1 ritorna sin
ritorna b b fine
b
b
1
1
1
b
Calcolo del successore
stato simb scrivi stato va
start b b leggi des
leggi 0 0 leggi des
leggi 1 1 leggi des
leggi b b calcola sin
calcola 0 1 ritorna sin
calcola 1 0 riporta sin
riporta 1 0 riporta sin
riporta 0 1 ritorna sin
riporta b 1 fine
ritorna 0 1 0 1 ritorna sin
ritorna b b fine
b
b
1
1
0
b
Calcolo del successore
stato simb scrivi stato va
start b b leggi des
leggi 0 0 leggi des
leggi 1 1 leggi des
leggi b b calcola sin
calcola 0 1 ritorna sin
calcola 1 0 riporta sin
riporta 1 0 riporta sin
riporta 0 1 ritorna sin
riporta b 1 fine
ritorna 0 1 0 1 ritorna sin
ritorna b b fine
b
b
1
1
0
b
Calcolo del successore
stato simb scrivi stato va
start b b leggi des
leggi 0 0 leggi des
leggi 1 1 leggi des
leggi b b calcola sin
calcola 0 1 ritorna sin
calcola 1 0 riporta sin
riporta 1 0 riporta sin
riporta 0 1 ritorna sin
riporta b 1 fine
ritorna 0 1 0 1 ritorna sin
ritorna b b fine
b
b
1
0
0
b
Calcolo del successore
stato simb scrivi stato va
start b b leggi des
leggi 0 0 leggi des
leggi 1 1 leggi des
leggi b b calcola sin
calcola 0 1 ritorna sin
calcola 1 0 riporta sin
riporta 1 0 riporta sin
riporta 0 1 ritorna sin
riporta b 1 fine
ritorna 0 1 0 1 ritorna sin
ritorna b b fine
b
b
0
0
0
b
Calcolo del successore
stato simb scrivi stato va
start b b leggi des
leggi 0 0 leggi des
leggi 1 1 leggi des
leggi b b calcola sin
calcola 0 1 ritorna sin
calcola 1 0 riporta sin
riporta 1 0 riporta sin
riporta 0 1 ritorna sin
riporta b 1 fine
ritorna 0 1 0 1 ritorna sin
ritorna b b fine
b
1
0
0
0
b
Una macchina che non termina
stato simb scrivi stato va
start b b leggi destra
leggi 0 0 leggi ferma
leggi 1 1 fine
b
0
0
0
0
b
Una macchina che non termina
stato simb scrivi stato va
start b b leggi destra
leggi 0 0 leggi ferma
leggi 1 1 fine
b
0
0
0
0
b
Una macchina che non termina
stato simb scrivi stato va
start b b leggi destra
leggi 0 0 leggi ferma
leggi 1 1 fine
b
0
0
0
0
b
La macchina universale
1. Le macchine di Turing (TM) sono un’infinità numerabile, quindi ciascuna di esse può essere codificata con un numero naturale (TM1, TM2, TM3, TM4,…).
2. Un numero sul nastro di una TM può essere a sua volta interpretato come (la codifica di) una TM.
3. Esiste una TM universale, U, che, presi in ingresso due numeri, n e m, dà lo stesso risultato di TMn sull’input m (INTERPRETE).
Il problema della fermata
Problema ALT:
per ogni intero n e m, determinare se TMn si ferma sull’input m.
Turing ha dimostrato che non può esistere una TM che possa risolvere ALT.
Riassumendo, Turing ha :
! dato una formalizzazione della nozione di algoritmo per mezzo di una macchina astratta
! dimostrato che esistono problemi che in questo formalismo non hanno soluzione
Dov’e’ l’interesse?
TESI DI CHURCH - TURING
Ogni problema risolubile può essere risolto da una macchina di Turing.
cioè
La macchina di Turing è equivalente, come potenza di calcolo, a qualunque calcolatore esistente o futuro.
Un po’ di storia….
Kurt Gödel
Primo teorema di incompletezza (1931)
In ogni formalizzazione della matematica
che contenga l’aritmetica è possibile
costruire una frase sintatticamente corretta
che non può essere né dimostrata né confutata all’interno
del sistema stesso.
La caduta del programma di Hilbert
Programma di completa formalizzazione della matematica, a partire dall’aritmetica. da cui ogni problema matematico, se correttamente formalizzato, può essere o dimostrato o confutato. (1900)
formalizzazioni del calcolo
! Alonzo Church (λ-calcolo) (1936)
! Alan Turing (macchina astratta) (1936)
! Emil Post (sistemi combinatori) (1936)
! Stephen Kleene (funzioni ricorsive) (1938)
Tutti questi modelli sono equivalenti.
La tesi di Church-Turing assume che i problemi risolubili (le funzioni calcolabili) siano tutti e soli quelli definibili in uno di questi formalismi.
formalizzazioni del calcolo
! Alonzo Church (λ-calcolo) (1936)
! Alan Turing (macchina astratta) (1936)
! Emil Post (combinatori finiti) (1936)
! Stephen Kleene (funzioni ricorsive) (1938)
Tutti questi modelli sono equivalenti.
La tesi di Church-Turing assume che i problemi risolubili (le funzioni calcolabili) siano tutti e soli quelli definibili in uno di questi formalismi.
Corrado Böhm
! Compilatore meta-circolare (1951)
! Programmazione strutturata - Teorema di Böhm-Jacopini (1966)
! Il linguaggio CUCH (1966)
! Equivalenza di programmi – Teorema di Böhm (1968)
! Direttore dell’Istituto di Scienza dell’Informazione e presidente del corso di laurea in Scienza dell’Informazione a Torino (1970 – 1974)
! Proprietà di linguaggi funzionali (1974 - )
Corrado Böhm
! Compilatore meta-circolare (1951)
! Programmazione strutturata - Teorema di Böhm-Jacopini (1966)
! Il linguaggio CUCH (1966)
! Equivalenza di programmi – Teorema di Böhm (1968)
! Direttore dell’Istituto di Scienza dell’Informazione e presidente del corso di laurea in Scienza dell’Informazione a Torino (1970 – 1974)
! Proprietà di linguaggi funzionali (1974 - )
Donald E. Knuth The art of Computer Programming
(1968)
Euclid’s Algorithm (MCD(m,n))
E1. If n=0 the algorithm terminates; m is the
answer.
E2. If rm mod n , mn, nr and go to step E1.
Versione formalizzata m,n in locations U,V. MCD(m,n) into rA.
LDX U (rX M)
JMP 2F
1H STX V (n rX)
SRAX 5 (rAX rA)
DIV V (rX rAX mod n)
2H LDA V (rA n)
JXNZ 1B
Teorema di Böhm - Jacopini
Qualunque algoritmo è esprimibile usando solo 3 operazioni:
! Sequenza
! Selezione
! Ciclo
Corollario:
L’operazione go to (JMP) è inutile
Corrado Böhm
! Compilatore meta-circolare (1951)
! Programmazione strutturata - Teorema di Böhm-Jacopini (1966)
! Il linguaggio CUCH (1966)
! Equivalenza di programmi – Teorema di Böhm (1968)
! Proprietà di linguaggi funzionali (1974 - )
λ-calcolo
! sintassi minimale M::= x |λx.M | MM
! una unica operazione (λx.M)N -> M[N/x]
Rispetto alla macchina di Turing:
! strutturato
! ordine superiore (programmi e dati nello stesso linguaggio)
2 = λxλy.x(xy) calcolo di 2 × 2
2 = (λx.λy.x(xy)) (λxλy.x(xy)) ->
λy.(λxλy.x(xy))((λxλy.x(xy))y) =
λy.(λxλy.x (xy))((λxλy.x(xy))y) ->
λy.λy. (λxλy.x(xy)) y (((λxλy.x(xy)) y)y) =
= λy.λy. ((λxλy.x(xy)) y)(((λxλy.x(xy)) y)y) ->
λy.λy. (λy. y(yy))(((λxλy.x(xy)) y)y) ->
λy.λy.y(y(((λxλy.x(xy)) y)y) ->
λy.λy.y(y((λy. y(yy)) y)y) ->
λy.λy.y(y(y(yy)) = 4
λ-calcolo e linguaggi di programmazione
! LISP (Mc Carthy, 1956)
! traduzione dell’ALGOL 60 nel λ-calcolo (Landin, 1966)
! “The next 700 programming languages” (Landin, 1966)
! semantica (Strachey 1967, Scott, 1976)
Problema:
Determinare se due programmi sono semanticamente uguali (calcolano lo stesso algoritmo).
Indecidibile!!!! (Rice, 1953)
Teorema di Böhm (1968):
Esiste una classe di programmi (esprimibili come forme normali nel λ-calcolo) per cui l’uguaglianza semantica è decidibile.
La nostra storia
Corrado Böhm è stato:
! fondatore del corso di laurea in Scienza dell’Informazione dell’Università di Torino (1970)
! fondatore dell’Istituto di Scienza dell’Informazione dell’Università di Torino (1970)
! padre della scuola di Semantica dei linguaggi di programmazione (1970 – 1974)
top related