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