Lezione10

Transcript

Lezione10
Calcolabilitá e Complessitá
Schifano S. Fabio [email protected]
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [1]
Calcolabiltá e Complessitá
. INFN via paradiso 12, 0532-974203
. Lezioni: LUN - GIO 14:00 18:00
. Orario di ricevimento: alla fine della lezione
. Esami:
. 2 compiti durante il corso + orale
. compito + orale
. libri di testo:
. Introduzione alla Calcolabilitá, A. Marchetti Spaccamela, M. Protasi
Franco Angeli
. Linguaggi, Modelli, Complessitá, G. Ausiello, F. D’Amore, G. Gambrosi
Franco Angeli
. La Struttura degli Algoritmi, Fabrizio Luccio
Bollati Boringhieri Editore
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [2]
La Tesi di Church-Turing
Nelle lezioni precedenti abbiamo visto vari modelli di calcolo, mP , funzioni ricorsive, RAM,
MT, caratterizzati da
. estrema semplicitá delle assunzioni
. estrema elementaritá delle operazioni di base e
. estrema elementaritá dei meccanismi di calcolo
Tali caratteristiche hanno indotto a pensare che
. per ognuno dei modelli visti la nozione di calcolabilitá da essi derivante fosse la piú
generale possibile,
. non potessero esistere procedimenti di calcolo algoritmici non esprimibili in ognuno dei
suddetti modelli
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [3]
L’equivalenza tra tutti i modelli ha quindi indotto Church e Turing a formulare la congettura
che
L’insieme delle funzioni calcolabili coincide con le funzioni ricorsive
Tale congettura per sua sua natura non é dimostrabile ma é universalmente accettata come
vera.
Per questo motivo funzione ricorsiva é sinonimo di funzione calcolabile.
L’accettazione della tesi di Church-Turing ci permette di
. svincolarci da un particolare modello di calcolo
. usare una descrizione astratta o machine independent di algoritmo per dimostrare che
una funzione é calcolabile
In tal senso parleremo di teoria della calcolabilit‘a generale, nell’ambito della quale possiamo
dimostrare un insieme di proprietá delle funzioni calcolabili.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [4]
Enumerazione delle Funzioni Ricorsive
Per le macchine a registri esiste una corrispondenza biunivoca tra l’insieme dei programmi
elementari per MR e l’insieme dei numeri naturali.
La dimostrazione dell’esistenza di tale corrispondenza puó essere fatta in modo costruttivo
definendo un algoritmo che ci permette di codificare un programma elementare con un
numero naturale e viceversa.
Tale corrispondenza si chiama enumerazione di Göedel o processo di göedelizzazione.
É possibile dimostrare che esiste un processo di goedelizzazione per ognuno dei modelli
sopra citati.
Poiché esistono molti modi diversi di stabilire una corrispondenza tra programmi per un
modello di calcolo e l’insieme dei numeri naturali, consideremo solamente enumerazioni
accettabili
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [5]
Enumerazione Accettabile delle Funzioni Ricorsive Parziali
Definizione Sia P l’insieme dei programmi rispetto ad un modello di calcolo, sia γ una
corrispondenza biunivoca γ : P → N, sia px il programma associato all’intero x, e ϕx(k)
la funzione di k variabili calcolata da px.
Il numero x viene detto indice o numero di Göedel del programma px o indice della
funzione ϕ(k)
x calcolata da px .
La corrispondenza x → ϕ(k)
x viene detta enumerazione delle funzioni ricorsive parziali.
Una generica corrispondenza tra naturali e funzioni ricorsive affinché possa essere
considerata enumerazione accettabile deve soddisfare le seguenti condizioni:
1. deve contenere tutti gli indici di tutti gli algoritmi di tutte le funzioni ricorsive
2. deve essere un processo costruttivo, cioé effettivamente calcolabile
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [6]
Enumerazione Accettabile delle Funzioni Ricorsive Parziali
Formalmente diremo che
Definizione Una enumerazione di Göedel accettabile é ogni corrispondenza biunivoca tra
l’insieme delle funzioni ricorsive parziali ed i numeri naturali tale che
1. esista un algoritmo di decodifica che dato un numero x permette di individuare il
programma px ad esso corrispondente
2. esista un algoritmo di codifica che dato un qualsiasi programma p consente di calcolare
il corrispondente numero x
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [7]
Teorema di Enumerazione o di Esistenza della funzione
Universale
Teorema Data una enumerazione accettabile delle funzioni ricorsive, esiste un numero
naturale z tale che per ogni x e y la funzione ϕ(2)
z (x, y) é cosí definita
ϕx(y) se ϕx(y) ↓
(2)
ϕz (x, y) =
undef altrimenti
Dimostrazione Si consideri il seguente algoritmo A aventi come input x ed y :
1. calcola il programma px di indice x
2. esegui il programma px con input il numero y
3. se px(y) termina restituisci il valore calcolato come output
La funzione calcolata dall’algoritmo A é la seguente:
ϕx(y) se px(y) ↓⇒ ϕx(y) ↓
fA(x, y) =
undef altrimenti
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [8]
Poiché l’algoritmo A é effettivamente calcolabile, per la tesi di Church la funzione fA é una
funzione ricorsiva parziale. Dunque esiste un numero z nell’enumerazione delle funzioni
ricorsive tale che fA = ϕz .
Quindi esiste una funzione universale che presi in input un indice x di una funzione ed un
valore y calcola la funzione ϕx(y).
Il teorema appena dimostrato puó essere generalizzato al caso di funzioni di k variabili
Teorema Data una enumerazione accettabile delle funzioni ricorsive, per ogni k, numero
di variabili, esiste un numero z tale che per ogni tupla y1, . . . , yk la funzione
ϕ(k+1)
(x, y1, . . . , yk ) é definita nel seguente modo
z
(k+1)
ϕz
(x, y1, . . . , yk ) =
ϕx(y1, . . . , yk )
undef
se ϕx(y1, . . . , yk ) ↓
altrimenti
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [9]
Teorema S-M-N
Il teorema s-m-n o teorema del parametro, consente di effettuare in modo algoritmo la
trasformazione da un programma ad n + m variabili di input ad un programma ad n
variabili di input e m parametri.
Esempio Un flight simulator é un programma che opera su m + n variabili, m descrivono
le caratteristiche strutturali dell’aereo, consumo, dimensioni, velocitá massima, portanza
massima, . . ., ed n descrivono i parametri operativi di un particolare volo, ad esempio
peso imbarcato, quantitá di carburante, velocitá del vento . . ..
Quindi i primi dipendono esclusivamente dal tipo di aereo Airbus 320, 330, . . ., Boeing
727, 737, 767, 777, . . ., Atr 42, 72, Dornier 310, 320, . . ., mentre i rimanenti descrivono
le condizioni sotto le quali un particolare aeromobile deve operare.
Se si vende il flight simulator alla compagnia aerea Volare Tranquilli che utilizza solamente
Airbus 320 il teorema s-m-n ci assicura che esiste una particola istanza del flight simulator
che simula il comportamento degli Airbus 320, basta fissare una volte per tutte gli m valori
che descrivono le caratteristiche dell’aeromobile da simulare.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [10]
Teorema Data una qualunue enumerazione accettabile dell funzioni ricorsive parziali, per
ogni m, n ≥ 1 esiste una funzione ricorsiva sm
n di m + 1 variabili tale che per ogni
x, y1, . . . , ym, z1, . . . , zn
ϕx(y1, . . . , ym, z1, . . . , zn) = ϕsm
(z , . . . , zn)
n (x,y1 ,...,ym ) 1
Dimostrazione Facciamo la dimostrazione per m = 1, n = 1. Quindi bisogna dimostrare
che esiste una funzione s11 tale che per ogni x, y, z
ϕx(y, z) = ϕs1(x,y)(z)
1
Fissati x = x0 e y = y0 un modo per calcola s11(x0, y0) é il seguente:
. decodifica la funzione di indice x0
. sostituisci y = y0
Quindi esiste una procedura effettiva che calcola s11(x0, y0) comunque fissati x0, y0.
Per la tesi di Church esisterá una funzione ricorsiva s tale che:
ϕx(y, z) = ϕs(x,y)(z)
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [11]
Esempio se supponiamo di prendere come riferimento il modello delle macchine a registri,
fissati x = x0, y = y0, un modo per calcolare il valore di s11(x0, y0) é il seguente:
. decodifichiamo la macchina di indice x0
. fissiamo la sua variabile di input y = y0, cioé, ad esempio, copiamo il valore di y0 nel
registro di input associato alla variabile y
. calcoliamo l’indice x0 della nuova macchina cosí ottenuta. Per costruzione x0 sará
esattamente uguale al valore di s11(x0, y0)
Il teorema s-m-n riportato al caso della programmazione ci dice la seguente cosa:
se abbiamo scritto un programma che implementa un algoritmo con m + n variabili
di input, se ad un certo istante m di queste sono fissate, allora é possibile ottenere
un programma specializzato che implementa un algoritmo di sole n variabili di
input.
Ovvero dato un programma generale di m + n variabili possiamo costruire un particolare
istanza che lavora soltanto su n variabili di imput.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [12]
Il teorema s-m-n afferma la possibilitá di introdurre in un programma dati come parametri.
Ovvero dato un programma generale con input y, z si puó passare ad un programma con
input z in cui ho parzialmente valutato y .
Il programma trasformato sará parametrico in y .
Questa tecnica é alla base del metodo di valutazione parziale di un algoritmo per cui fissata
una variabile si specializza l’algoritmo cosí ottenuto per ottener versioni piú efficienti in
casi particolari.
Con riferimento alle funzioni ricorsive possiamo dire che il teorema consente di calcolare in
modo algoritmico l’indice di una funzione in cui ho trasformato una variabile in parametro.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [13]
Esempio Si consideri la funzione ϕi(x, y) = f (x, y) = x + y avente indice i nella
enumerazione delle funzioni ricorsive.
Fissando y = y0 = 4 si ottiene la funzione
0
f (x) = x + 4
della sola variabile x. L’indice della funzione f 0 puó essere calcolato a partire dall’indice
della funzione f e dal valore della variabile y fissata. Ovvero:
0
ϕj = f ⇒ j = s(i, y)
Una ipotetica macchina di Turing o a Registri S che calcola s deve:
. decodificare il programma associato all’indice i
. sostituire ad y il valore prefissato y0 = 4
. calcolare l’indice della nuova macchine cosí ottenuta
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [14]
Esempio Si consideri il seguente programma di indice x che calcola la funzione y ∗ z :
px :
input y, z
p := 0
while y > 0
p := p + z
y := y − 1
Se fissiamo y = y0 otteniamo una famiglia di programmi del tipo:
pky0 :
p := 0
p := p + z
y0 := y0 − 1
...
p := p + z
y0 := y0 − (y0 + 1)
Il programma pky0 (z) é funzione della sola variabile z e parametrico in y .
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [15]
L’indice ky0 del programma trasformato si puó determinare da x ed y , ovvero esiste una
funzione ricorsiva g per cui:
ky0 = g(x, y0) ⇒ pky0 (z) = pg(x,y0)(z) = px(y0, z)
la funzione g é la funzione s11 cercata.
Per esempio fissato y0 = 2:
pk2 :
p := 0
p := p + z
p := p + z
k2 si determina da x e y0 = 2:
. da x ricavo il programma generale px e poi
. lo valuto parzialmente avendo fissato y0 = 2
. ricalcolo l’indice k2 del nuovo programma cosí ottenuto
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [16]
Proprietá delle Enumerazioni di Göedel
Teorema Data una qualunque enumerazione accettabile delle funzioni ricorsive, ogni
funzione ricorsiva parziale ammette un insieme infinito di indici.
Dimostrazione Sia data la funzione ricorsiva parziale ϕi(x), si consideri la funzione:
f (i, k, x) = ϕi + k − k ⇒ f = ϕi
Per la tesi di Church f é calcolabile quindi esiste un indice j della enumerazione tale che
ϕj (i, k, x) = f (i, k, x)
Per il teorema s-2-1 esiste una funzione ricorsiva s21 tale che
ϕj (i, k, x) = ϕs2(j,i,k)(x)
1
s21(j, i, k) calcola un indice diverso al variare di k, ovvero un indice diverso per una
funzione che coincide semanticamente con ϕi. Come conseguenza di questo teorema si ha
che un problema ammette infinite soluzioni ed infiniti algoritmi di risoluzione.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [17]
Teorema della Forma Normale
Teorema Data una enumerazione accettabile delle funzioni ricorsive, esiste una funzione
ricorsiva U e per ogni n una funzione ricorsiva primitiva Tn (predicato di Kleene) tale che
ogni funzione ricorsiva ϕi di n variabili possa essere definita come
(n)
ϕi (x1 . . . xn) = U (µz.Tn(x1 . . . xn z i) = 1)
Dimostrazione Dimostriamo il teorema per n = 1, in tal caso si deve dimostrare che
esiste U e T1 tali che ϕi(x) = U (µz.T1(x, z, i) = 1) per ogni funzione ricorsiva ϕi di
una sola variabile.
Supponiamo che ϕi(x) = y , e definiamo la seguente funzione S :
S(i, x, y, w) =
1
0
se pi(x) = y in meno di w passi
altrimenti
Allora le funzioni T1, U del teorema possono essere definite come funzioni ricorsive nel
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [18]
seguente modo:
T1(x, z, i) = S(i, x, (z)1, (z)2)
U (z)
= (z)1
ove (z)i restituisce l’i-esimo esponente della fattorizzazione di z in numeri primi.
Quindi secondo il teorema vale la seguente uguaglianza
ϕi(x) = (µz.S(i, x, (z)1, (z)2) = 1)1
Infatti, per verificare che T1, U sono le funzioni supposte dal teorema, osserviamo che ϕi
é definita se S(i, x, y, w) é definita, cioé se esistono y e w tali che S(i, x, y, w) = 1.
Se tali valori esistono poniamo z = 2y · 3w e calcoliamo:
U (µz.T1(x, z, i) = 1) = U (µz.S(i, x, (z)1, (z)2) = 1)
Quindi la funzione µ calcola un z tale che z = 2y · 3w , da cui
U (µz.S(i, x, (z)1, (z)2)) = U (z) = (z)1 = y
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [19]
Abbiamo quindi verificato che le funzioni U, T1 sono tali che vale la seguente uguaglianza
ϕi = U (µz.T1(x, z, i))
Ogni funzione ricorsiva puó quindi essere espressa come calcolo di due funzioni:
. Tn detta predicato di Kleene che verifica che x, z, i soddisfino i requisiti per cui
pi(x) = y in meno di w passi
. U decodifica il codice della computazione z ed estrae il risultato
Il teorema di forma normale trova la sua applicazione nel campo della teoria degli interpreti:
prima di valutare una espressione od un programma lo si trasforma in modo algoritmico in
forma normale.
Per scrivere un interprete per le funzioni ricorsive é quindi necessario essere in grado di
saper valutare l’operatore µ, ovvero il costrutto while se costruiamo un interprete per
linguaggi di programmazione.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [20]
Teorema di Ricursione o di Kleene
Teorema Sia data una enumerazione delle funzioni ricorsive, sia g(z, x1 . . . xm) una
funzione ricorsiva parziale, allora esiste n tale che
(m)
g(n, x1, . . . , xm) = ϕn (x1, . . . , xm)
Dimostrazione Sia s1m la funzione definita dal teorema s-1-m, ovvero la funzione che
parametrizza le funzioni di m + 1 argomenti in funzioni di m argomenti.
La funzione
1
g(sm(v, v), x1, . . . , xm)
é una funzione ricorsiva dipendente dalle variabili v, x1, . . . , xm. Quindi, poiché
calcolabile, esiste un indice z0, nella enumerazione delle funzioni ricorsive tale che:
1
g(sm(v, v), x1, . . . , xm) = ϕz0 (v, x1, . . . , xm)
Applicando teorema s-1-m si ottiene che:
ϕz0 (v, x1, . . . , xm) = ϕs1
m (z0 ,v)
(x1, . . . , xm)
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [21]
Ponendo allora v = z0 e n = s1m(z0, z0) si ottiene:
g(n, x1, . . . , xm)
=
g(s1m(z0, z0), x1, . . . , xm)
=
ϕz0 (z0, x1, . . . , xm)
=
ϕ s1
=
m (z0 ,z0 )
(x1, . . . , xm)
ϕn(x1, . . . , xm)
Il teorema di ricursione asserisce la possibilitá di usare definizioni ricorsive molto generali.
Nella versione che abbiamo visto, ci permette di definire una funzione ϕ ad m argomenti
in termini di una codifica del suo programma.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [22]
Teorema del Punto Fisso
Conseguenza del teorema di rucursione é il teorema del punto fisso.
Teorema Sia data una enumerazione delle funzioni ricorsive, sia f una funzione ricorsiva
totale, allora esiste n ∈ N tale che
ϕf (n) = ϕn
Dimostrazione Si definisca la seguente funzione:
g(z, x) = ϕf (z)(x)
per il teorema di ricursione applicato a g si ha che esiste n tale che
g(n, x) = ϕn(x)
quindi, per definizione di g
ϕf (n)(x) = ϕn(x)
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [23]
Il teorema del punto fisso asserisce che data una funzione ricorsiva totale t la trasformazione
ψ : R → R (R insieme delle funzioni ricorsive) definita come ψ(ϕi) = ϕt(i) ammette
un punto fisso ϕe = ϕt(e) = ψ(ϕe).
Il teorema del punto fisso sta alla base della teoria della semantica denotazionale delle
funzioni ricorsive ed in particolare degli schemi di programmazione µ o while.
Infatti data una trasformazione di programmi in programmi (es: while) se la trasformazione
é una funzione ricorsiva essa ammette un punto fisso.
Un importante conseguenza di tale teorema é il seguente corollario
Corollario Data una enumerazione delle funzioni ricorsive, esiste un indice i tale che, per
ogni x ∈ N
ϕi(x) = i
cioé in ogni modello di calcolo esiste una funzione che fornisce costantemente in output il
proprio codice
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [24]
Funzioni non Calcolabili: Halting Problem
Teorema Data una qualsiasi enumerazione delle funzioni ricorsive, non esiste una funzione
ricorsiva f tale che per ogni x e y :
f (x, y) =
1
0
se ϕx(y) ↓
altrimenti
Dimostrazione Supponiamo per assurdo che la funzione f sia calcolabile, allora anche la
funzione
1
se f (x, x) = 0
h(x) =
undef se f (x, x) = 1
é calcolabile.
Esiste quindi un indice y0, nella enumerazione delle funzioni ricorsive, tale che ϕy0 = h
Si calcoli l’applicazione della funzione h al proprio indice
h(y0) = ϕy0 (y0)
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [25]
abbiamo due casi, o h(y0) é definita e vale 1 o é indefinita.
Allora, se supponiamo h(y0) definita, per definizione di h deve essere f (y0, y0) = 0.
Ma f (y0, y0) = 0 implica che, per definizione di f , ϕy0 (y0) é indefinita, quindi abbiamo
una contraddizione.
Viceversa, se supponiamo h(y0) indefinita, per definizione di h deve essere f (y0, y0) = 1.
Ma f (y0, y0) = 1 implica che, per definizione di f , ϕy0 (y0) é definita, ed anche in
questo caso abbiamo contraddetto l’ipotesi.
Quindi la nostra ipotesi che f esista non é corretta.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [26]
Funzioni non Calcolabili
Dal precedente teorema deriva immediatamente il seguente corollario:
Corollario Non esiste una funzione ricorsiva g tale che per ogni x
1 se ϕx(x) ↓
g(x) =
0 se ϕx(x) ↑
Dimostrazione Si supponga per assurdo che g esista e si definisca la funzione
1
se g(x) = 0
h(x) =
undef se g(x) = 1
Poiché per ipotesi g é ricorsiva anche h é ricorsiva quindi esiste y0 tale h(x) = ϕy0 (x).
Calcoliamo allora ϕy0 (y0):
ϕy0 (y0) = h(y0) =↓
ϕy0 (y0) = h(y0) =↑
⇒
⇒
g(y0) = 0 ⇒ ϕy0 (y0) ↑
g(y0) = 1 ⇒ ϕy0 (y0) ↓
Abbiamo ottenuto un assurdo quindi g non esiste.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [27]
Funzioni non Calcolabili
Teorema Data una qualunque enumerazione delle funzioni ricorsive, non esiste una
funzione ricorsiva c tale che per ogni x
c(x) =
1
0
ϕx é costante
altrimenti
Dimostrazione Supponiamo per assurdo che c esista.
Si consideri al funzione h definita nel seguente modo:
h(x, y) =
0
undef
ϕx(x) ↓
altrimenti
La funzione h deve eseguire la funzione di indice x sull’input x. Se e quando il calcolo di
ϕx(x) termina restituisce 0. Poiché la funzione h é calcolabile, per la tesi di Church la
funzione h é ricorsiva.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [28]
Per il teorema s-m-n esiste una funzione ricorsiva s tale che
0
ϕx(x) ↓
h(x, y) = ϕs(x)(y) =
undef altrimenti
Osserviamo che: ϕs(x)(y) = costante ⇐ ϕx(x) ↓.
Poiché per ipotesi si suppone che c, s siano
la funzione (c ◦ s) é una funzione ricorsiva,
ψ(x) = (c ◦ s)(x). Ma
1
ψ(x) = (c ◦ s)(x) = c(s(x)) =
0
funzioni funzioni ricorsive, allora anche
quindi possiamo definire una funzione
ϕs(x)(x) = costante ⇐ ϕx(x) ↓
altrimenti
Abbiamo quindi definito una funzione ricorsiva ψ(x) = c(s(x)) che risolve il problema
della fermata.
Poiché ció contraddice l’indecidibilitá del problema della fermata abbiamo ottenuto un
assurdo e quindi la funzione c non esiste.
Cioé é indecidibile stabilire se una funzione é costante o meno.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [29]
Funzioni non Calcolabili
Teorema Data una qualunque enumerazionde delle funzioni ricorsive, non esiste una
funzione ricorsiva g tale che per ogni x
g(x) =
1
0
ϕx(0) ↓
altrimenti
Dimostrazione Supponiamo per assurdo che g esista.
Consideriamo la funzione h definita nel seguente modo:
h(x, y) =
0
undef
ϕx(x) ↓
altrimenti
La funzione h deve eseguire la funzione di indice x sull’input x. Se e quando il calcolo di
ϕx(x) termina restituisce 0. Poiché la funzione h é calcolabile, per la tesi di Church la
funzione h é ricorsiva.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [30]
Per il teorema s-m-n esiste una funzione ricorsiva s tale che
0
ϕx(x) ↓
h(x, y) = ϕs(x)(y) =
undef altrimenti
Si osservi che al variare di x la funzione ϕs(x) o sempre uguale a 0 o é sempre indefinita.
. ϕx(x) ↓ ⇒ ϕs(x) = 0
. ϕx(x) ↑ ⇒ ϕs(x) ↑
Consideriamo la funzione g 0 = g ◦ s, allora:
1
0
g (x) = g(s(x)) =
0
se ϕs(x)(0) ↓
altrimenti
quindi, poiché ϕs(x)(0) ↓ ⇐ ϕx(x) ↓
0
g (x) = g(s(x)) =
1
0
se ϕx(x) ↓
altrimenti
Poiché g 0 risolve il problema della fermata, g 0 non é ricorsiva, quindi neanche g é ricorsiva.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [31]
Funzioni non Calcolabili
Teorema Data una enumerazione accettabile delle funzioni ricorsive non esiste una
funzione d tale che
d(x, y, z) =
1
0
ϕx(y) = z
altrimenti
Dimostrazione Se supponiamo per assurdo che d esista e consideriamo la funzione s del
teorema precedente, potremmo definire la funzione
g(x) = d(s(x), 0, 0) =
1
0
ϕs(x)(0) = 0
altrimenti
poiché, per il teorema precedente, se g esistesse, risolverebbe il problema della fermata se
ne deduce che la funzione d non é ricorsiva.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [32]
Funzioni non Calcolabili
Esercizio Dimostrare che non esiste una funzione ricorsiva g tale che per ogni x, y :
g(x, y) =
1
0
ϕx = ϕy
altrimenti
Sia e un indice della funzione λx.0, cioé della funzione costantemente nulla, e si definisca
la funzione
1 ϕx = ϕe
0
g (x) = g(x, e) =
0 altrimenti
g 0 decide se ϕx é la funzione costante 0 o meno contraddicendo l’indecidibilitá di questo
problema, quindi abbiamo ottenuto un’assurdo.
Come conseguenza di ció é impossibile definire un programma che ci dica se due programmi
sono equivalenti.
Schifano S. Fabio
Calcolabilitá e Complessitá
Laurea Specialistica Informatica [33]
Funzioni non Calcolabili
Esercizio: Data una enumerazione accettabile delle funzioni ricorsive non esiste una
funzione ricorsiva f (x) tale che:
ϕx(x) + 1 ϕx(x) ↓
f (x) =
0
ϕx(x) ↑
Si consideri la funzione:
h(x) =
1
undef
f (x) = 0
altrimenti
Poiché per ipotesi f (x) é calcolabile anche h(x) é calcolabile, quindi esiste un indice
y0 della enumerazione delle funzioni ricorsive tale che: h(x) = ϕy0 Calcoliamo allora
ϕy0 (y0)
ϕy0 (y0) = h(y0) ↓ ⇒ f (y0) = 0 ⇒ ϕy0 (y0) ↑
ϕy0 (y0) = h(y0) ↑ ⇒ f (y0) 6= 0 ⇒ ϕy0 (y0) ↓
Abbiamo allora ottenuta una contraddizione, quindi f non esiste.
Schifano S. Fabio