Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli

la macchina di turing, Schemi e mappe concettuali di Informatica

parte 1- la macchina di turing

Tipologia: Schemi e mappe concettuali

2020/2021

Caricato il 06/06/2024

luca-prosperi-1
luca-prosperi-1 🇮🇹

Anteprima parziale del testo

Scarica la macchina di turing e più Schemi e mappe concettuali in PDF di Informatica solo su Docsity! Macchine di Turing Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [1] Macchine di Turing . modello di calcolo introdotto dall’ingegner Alan Turing nel 1936, per simulare il processo di calcolo umano . rappresenta il primo tentativo di definizione di procedura effettiva e di programma eseguito in automatico da una macchina Una macchina di Turing è composta da: . una unità di controllo a stati finiti, cioè controllata da una macchina a stati . un nastro di lunghezza arbitraria suddiviso in celle: . inizialmente contiene la sequenza di dati di input, sequenza di caratteri non vuoti, . successivamente i dati prodotti dalla elaborazione. . su e da ogni cella del nastro è possibile leggere e scrivere un solo dato alla volta . da una testina di lettura e scrittura che si muove lungo il nastro in entrambe le direzioni possibili. Inizialmente, per convenzione, la testina si assume posizionata sul carattere più a sinistra del nastro. Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [4] Definizione Formale di una Macchine di Turing Definizione Una macchina di Turing (deterministica, singolo nastro) si definisce come una 6-upla M = (Σ, b/, K, δ, q0, qf) ove: . Σ è l’alfabeto, ovvero l’insieme di caratteri che possono essere scritti e letti dal nastro . b/ /∈ Σ è una carattere speciale detto blank che rappresenta la situazione di cella non contenente alcun carattere . K è l’insieme finito e non vuoto di stati . q0 è lo stato iniziale . qf è lo stato finale (possono essere definiti anche più di uno stato finale) . δ è la funzione di transizione cos̀ı definita: δ : (K − qf)× (Σb/)→ K × (Σb/)× {d, s, i} essendo Σb/ = Σ ∪ b/. Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [5] La funzione di transizione δ(qi, x) = (qj, y, v) si interpreta nel seguente modo: . lo stato attuale della macchina è qi . il carattere letto dalla cella puntata dalla testina è x . la testina scrive il carattere y . la macchina a stati transisce nello stato qj . la testina si sposta nella direzione v, ove v può essere . d = destra . s = sinistra . i = immobile Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [6] Configurazione di una Macchine di Turing Definizione Si definisce configurazione di una macchina di Turing una stringa s ∈ Σ∗ b/ ·K · Σ∗ b/ del tipo s = ai1 . . . ain qr aj1 . . . ajm, n ≥ 0,m ≥ 0 ove: . Σ∗ è l’insieme di tutte le stringhe appartenenti all’alfabeto Σ, il simbolo · è l’operatore di concatenazione sulle stringhe . ai1 . . . ainaj1 . . . ajm rappresenta la porzione di nastro contenente caratteri diversi da b/, mentre il resto del nastro contiene solo il carattere b/ . aj1 è il contenuto della cella puntata dalla testina . qr è lo stato in cui si trova la macchina Configurazioni particolari sono quella iniziale e quella finale Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [9] Funzione di Transizione di una MT La funzione di transizione δ può essere rappresentata in due modi: . tramite una matrice avente gli stati della MT sulle righe e i simboli dell’alfabeto Σ sulle colonne . tramite un grafo orientato i cui nodi sono gli stati della macchina di controllo e gli archi rappresentano le transizioni possibili. Ogni arco è etichettato con una tripla (a, b, v) ove a è il simbolo puntato dalla testina, b è il simbolo scritto e v la direzione di movimento. La funzione δ definisce il comportamento della macchina di Turing, cioè definisce le regole di transizione che permettono di passare da una configurazione ad un’altra. Si noti che tali regole possono essere interpretate come regole di riscrittura del contenuto del nastro. Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [10] Computazione di una MT Definizione Una successione di configurazioni c1, . . . , cn, . . ., eventualmente infinita, tale che c1 è uno stato iniziale e ∀i, ci 1→ ci+1, definisce una computazione per la macchina di Turing. Usiamo la scrittura ci ∗→ cj per denotare l’esistenza di una computazione che da ci porta a cj tramite un numero finito, eventualmente 0, di transizioni. Ogni computazione può avere al più una configurazione finale, e una computazione infinita non ha configurazioni finali. Definizione Una computazione finita c1, . . . , cn è detta massimale se non esiste una configurazione c tale che cn ∗→ c. Ovvero, una computazione massimale si conclude o con una configurazione finale o con una configurazione in cui non è definita la funzione di transizione δ. Definizione Una computazione massimale c1, . . . , cn è detta accentante se cn è uno stato finale Definizione Una computazione massimale c1, . . . , cn è detta rifiutante se cn è uno stato NON finale Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [11] Linguaggio Riconosciuto da una MT Una MT può essere utilizzata per riconoscere o accettare un linguaggio L ⊆ Σ∗. Definizione Data una macchina di Turing M = (Σ, b/, K, δ, q0, qf) diciamo che M riconosce o decide un linguaggio L ⊆ Σ∗ se e solo se per ogni stringa x ∈ Σ∗, stringa dell’alfabeto, esiste una computazione massimale accettante o rifiutante per la macchinaM: ∀x ∈ Σ ∗ , q0x ∗→ wqz, q = qf ⇔ x ∈ L Cioè una MT riconosce un linguaggio L se per ogni stringa definita sull’alfabeto Σ è in grado di stabilire se la stringa x appartiene o no al linguaggio L. Definizione Un linguaggio riconosciuto da una MT è detto T-decidibile Data una MTM NON è detto che esista un linguaggio L deciso daM, infatti per definizione ciò è possibile se e solo seM termina per ogni stringa x ∈ Σ∗ Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [14] Macchine di Turing Multitraccia Definizione Una macchina di Turing multitracciaM ad m tracce è definita come una 6-upla Σ, b/, K, δ, q0, qf ove la fuzione δ è definita come δm : (K − {qf})× Σ m b/ → K × Σ m b/ × {d, s, i} Quindi, una macchina di Turing multitraccia è in grado di scrivere e leggere caratteri vettoriali ma la testina si sposta contemporaneamente su tutte le tracce. Da un punto di vista fisico si può immaginare di avere una macchina composta da un nastro suddiviso in m tracce ed una singola testina. L’uso di MT-multitraccia permette di avere maggior potere computazionale? Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [15] Macchine di Turing Multinastro Definizione Una macchina di Turing ad m nastri è definita da una 6-upla Σ, b/, K, δm, q0, qf ove Σ, b/, K, q0, qf sono definiti come nel caso di una machina di Turing a singolo nastro e δm è la funzione di transizione definita come: δm : (K − {qf})× Σ m b/ → K × Σ m b/ × {d, s, i} m cioè la funzione δm definisce le transizione della MT su ogni nastro. Da un punto di vista fisico si può immaginare di avere una macchina composta da m nastri ed m testine, una per ogni nastro. L’uso di MTM permette di avere un maggior potere computazionale ? Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [16] Macchine di Turing NON Deterministiche Tutti i modelli di calcolo sinora esaminati sono tutti deterministici, cioè la transizione da un passo della computazione al successivo è sempre univocamente determinata. Ad esempio in una macchina a registri o in un linguaggio di programmazzione tipo mP le azioni da compiere sono univocamente determinate dalla semantica delle istruzioni. Il determinismo è un concetto molto vicino al modo di funzionamento dei calcolatori i quali ad ogni istante determinano lo stato successivo della computazione in base alla semantica della istruzione da eseguire. Si possono definire modelli di calcolo in cui si rilascia l’univocità della funzione di transizione della computazione da un stato al successivo. Tali modelli prendono il nome di modelli non deterministici. Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [19] Esempio Descrivere una MT che riconosca l’insieme di parantesi bilanciate, ovvero stringhe del tipo: { (()), (), ((())) } Sia M = ({(, )}, b/, {q0, q1, q2, q3}, δ, q0, qf) una MT ove la funzione di transizione δ è descritta dalla matrice: δ ( ) b/ q0 q1b/d qfb/i q1 q1(d q1)d q2b/s q2 q3b/s q3 q3(s q3)s q0b/d Algoritmo: . La macchina di Turing sopra descritta scandisce la stringa di input da sinistra verso destra . Lo stato q0 cerca la prima parentesi (, appena la trova la cancella e transisce nello stato q1 . lo stato q1 scandisce tutta la stringa fino a posizionarsi sull’ultimo carattere più a destra e quindi transisce nello stato q2 . lo stato q2 cerca la prima parentesi ), trovatala la cancella e transisce nello stato q3 . lo stato q3 posizione la testina sul primo carattere più a sinistra e transisce nello stato q0 . a questo punto o la stringa è vuota e si transisce nello stato finale o si ricomincia. Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [20] Esempio Descrivere una MT per il riconoscimento delle stringhe palindrome definite sull’alfabeto {a, b}∗. Si consideri la seguente MTM = ({a, b}, b/, {q0, qa1 , qa2 , qa3 , qb1 , qb2 , qb3 }, δ, q0, qf) La funzione di transizione δ è definita dalla seguente matrice: δ b/ a b q0 qfb/i qa0 b/d qb0b/b qa0 qa1 b/s qa0 ad qa0 bd qa1 qa2 b/s qa2 q0b/d qa2 as qa2 b/s qb0 qb1b/s qb0ad qb0bd qb1 qb2b/s qb2 q0b/d qb2as qb2b/s La MT appena descritta si comporta nel seguente modo: 1. stato q0: cancella il primo carattere della stringa 2. stato qx0 : posiziona la testina sull’ultimo carattere della stringa di input 3. stato qx1 : cancella il carattere puntato dalla testina La MT nello stato qx1 si aspetta di leggere il carattere x altrimenti si ferma in uno stato non finale e non riconosce la stringa di input come appartenenete al linguaggio. Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [21] MT Trasduttori Vediamo adesso alcuni esempi di MT trasduttori, cioè che calcolano funzioni. Supponiamo di rappresentare i numeri in forma unaria, cioè ogni numero n è rappresentato dalla giustapposizione di n volte il carattere | o il carattere 1. Esempio: • | rappresenta il numero naturale 1 • |||| rappresenta il numero naturale 4 • |n = || . . . | rappresenta il numero n Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [24] Esempio di MT Trasduttori Descrivere una MT per il calcolo della funzione f(x) = 2x. Supponiamo che la testina sia posizionata sul primo carattere a sinistra della stringa di input diverso da b/. M = ({1}, b/, {q0, q1, q2, q3, q4, q5, q6}, δ, q0, qf) La funzione di transizione δ è definita dalla seguente matrice: δ b/ 1 q0 q0b/d q2b/d q1 q0b/d q11s q2 q3b/d q21d q3 q41d q31d q4 q51s q5 q6b/s q51s q6 qfb/i q11s Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [25] Un esempio di computazione è il seguente: 11 b/1b/ b/1b/1 b/1b/11 b/b/b/111 b/b/b/1111 Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [26] Macchine di Turing Multi-traccia Una macchina di Turing multi-traccia consiste di un nastro suddiviso in tracce disposte in modo tale che la testina, con una singola operazione può accedere a tutte le celle di tutte le tracce in corrispondenza della testina. Possiamo considerare la macchina multi-traccia come una macchina che anzichè operare su simboli scalari opera su simboli vettoriali. Data una macchine di turingMm = (Σ, b/, K, δm, q0, qf) multitraccia con m tracce si ha che: . l’alfabeto Σ = Σ1 × . . .× Σm, ove ogni Σi rappresenta l’alfabeto di simboli della traccia i. Quindi un generico elemento (carattere) σ ∈ Σ sarà del tipo: σ = (σ1, . . . , σm), 1 ≤ i ≤ m σi ∈ Σi. In particolare il simbolo (b/, . . . , b/)| {z } m rappresenta il simbolo di blank dell’alfabeto Σb/. Poichè ogni elemento di Σi può essere combinato con gli altri elementi di Σj, per ogni j 6= i, il numero di caratteri σ = (σ1, . . . , σm) diversi che potranno comparire sul nastro saranno: |Σ| = Qm i=1 |Σi|. . la funzione di transizione δm sarà una funzione del tipo: δ m : (K − {qf})× Σb/ → K × Σb/ × {d, s, i}, δ m (qi, σ) = (qj, σ ′ ), σ, σ ′ ∈ Σb/ Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [29] Macchine di Turing Multi-nastro Definizione Una macchina di TuringM(m) ad m nastri è definita da una 6-upla M(m) = (Σ, b/, K, δ(m), q0, qf) ove Σ, b/, K, q0, qf sono definiti come nel caso di una machina di Turing a singolo nastro e δ(m) è la funzione di transizione definita come: δm : (K − {qf})× Σm b/ → K × Σm b/ × {d, s, i}m cioè la funzione δ(m) definisce le transizione della MT su ogni nastro. Da un punto di vista fisico si può immaginare di avere una macchina composta da m nastri ed m testine, una per ogni nastro. La MT in base allo stato interno ed ai caratteri letti dalle testine decide in quale stato interno transire, quali caratteri scrivere sul nastro e come spostare le testine. Una machina di Turing multi-nastro può essere simulata da una macchina di Turing singolo-nastro multitraccia. Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [30] Equivalenza MT-Multinastro e MT-singolo-nastro Figure 1: Macchina di Turing singolo nastro multitraccia che simula una Macchina di Turing multinastro Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [31] Equivalenza MT-Multinastro e MT-singolo-nastro Figure 2: Struttura del nastro di una MT-multitraccia che simula MT-multinastro (Z0 = b/) Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [34] All’inizio della computazione supponiamo che il nastro diM′ sia configurato nel seguente modo: . la traccia 1 contiene una stringa con il solo simbolo ↓ in corrispondenza del primo carattere a sinistra della traccia 2 . la traccia 2 contiene la stringa di input della macchinaM(k) . ∀i, 2 ≤ i ≤ k le tracce pari di indice 2i contengono solamente il simbolo b/ . ∀i, 2 ≤ i ≤ k le tracce dispari di indice 2i − 1 contengono solamente il simbolo ↓ in corrispondenza del simbolo più a sinistra della traccia 2, cioè quella contenente la stringa di input della macchina multi-tracciaM(k) Per simulare la funzione di transizione di δ(k) della MT multi-nastro M′, la funzione di transizione δ′ deve riscrivere 2k simboli, uno per traccia. Quindi, in particolare, per simulare una transizione del tipo: δ(k)(qi, ai1, . . . , aik) = (qj, aj1, . . . , ajk, d1, . . . , dk) deve eseguire i seguenti passi: 1. rintracciare le posizione dei k simboli ↓ rappresentanti le posizione delle k testine della macchina M(k) nello stato qi 2. riscrivere i k simboli puntati dalle testine dei k nastri 3. posizionare i k simboli ↓ nella posizione delle testine della macchineM(k)nello stato qj 4. transire di stato Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [35] Quindi ad ogni passo diM(k), la macchinaM′ deve eseguire un numero di passi proporzionale alla distanza, in termini di numero di celle, tra i due simboli ↓ più lontani. Ad ogni passo i simboli ↓ possono al più allontanarsi di 2 celle, quindi dopo t passi, nel caso pessimo, si saranno allontanati di 2t celle. Quindi se la macchina multi-nastro M(k) compie t passi, il numero di passi eseguiti dalla macchina singolo-nastroM′ per simularla sarà: Σt i=12i = 2Σt i=1i = 2t(t+1) 2 = t2 + t = O(t2) Per quanto riguarda la dimensione dell’alfabeto Σ′, osserviamo che quella dell’alfabeto dei nastri dispari è 2, mentre quella dei nastri pari, per ogni nastro i è |Σi|. Quindi, la dimensione dell’alfabeto Σ′ usato da M′ sarà pari al prodotto di tutte le cardinalità degli alfabeti dei singoli nastri: Qk i=1 2|Σi| = O((max|Σi|)k) Quindi una MT multinastro può essere simulata da una MT singolo-nastro multi-traccia in un tempo quadratico usando un alfabeto di cardinalità esponenziale nel numero dei nastri. Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [36] Macchine di Turing NON Deterministiche Una macchina di Turing non deterministica è definita da 6-upla: M = (Σ, b/, K, δ, q0, qf) ove la funzione di transizione δ è definita nel seguente modo: δ : (K − {qf})× Σb/ → P(K × Σb/ × {d, s, i}) cioè da ogni configurazione si può transire in una o più configurazione simultaneamente. La configurazione successiva non è univocamente determinata e la computazione non è più una successione di configurazioni ma secondo un albero di configurazioni. Il grado di non determinismo corrisponde, dato una generica configurazione, al massimo numero di confgurazioni generate dalla funzione δ. Una MT non deterministica si comporta come se ad ogni passo instanziasse nuove MT, ognuna delle quali elabora una delle configurazione diverse prodotte dalla funzione di transizione δ. Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [39] Equivalenza MTND e MT deterministiche Teorema Per ogni MTNDM esiste una MT deterministicaM(3) deterministica a 3 nastri equivalente. Dimostrazione La simulazione della macchine di Turing non deterministica M tramite una deterministica M(3) si ottiene visitando l’albero delle computazione diM utilizzando l’algoritmo di visita breadth first. NB: la visita non può essere fatta in modo depth first poichè visitando un ramo corrispondente ad una computazione infinita, l’algoritmo di visita non terminerebbe. Ad ogni passo di computazione di M si possono generare al massimo d scelte, ove d è il grado di non determinismo della macchinaM. Supponiamo di numerare con numeri compresi tra 1 e d le scelte derivanti dalla funzione di transizione diM. In tal modo ogni computazione potrà essere identificata come una sequenza di numeri compresi tra 1 e d, ognuno dei quali identifica una delle possibili d scelte generate dalla funzione di transizione diM. Non tutte le combinazioni saranno valide poichè non è detto che ad ogni passo la funzione di transizione generi esattamente d scelte. Dopo i passi di computazione della macchina M, quindi esistono al più di stringhe di lunghezza i che rappresentano particolari computazioni diM. Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [40] Si supponga quindi di organizzare la macchinaM(3) nel seguente modo: . il primo nastro contiene la stringa di input . il secondo nastro contiene, per ogni passo di computazione i diM, stringhe di lunghezza i, corrispondenti a sequenze di numeri compresi tra 1 e d. Fissato i il numero di stringhe sarà al più di. . il terzo nastro eseguirà la simulazione vera e propria La simulazione avviene secondo il seguente algoritmo: 1. ∀i ≥ 1 passo di computazione di M, si generano sul nastro 2 tutte le stringhe di lunghezza i, corrispondenti a possibili sequenze di scelte per computazioni di lunghezza i. La generazione delle stringhe avviene una alla volta. 2. per ogni sequenza di lunghezza i: (a) si copia il contenuto del nastro 1 sul nastro 3 (b) si scandisce il nastro 2, e per ogni j, indice di una possibile scelta, si applica la j-esima scelta di δ al nastro 3 Se esiste un cammino di lunghezza l che porta la macchina M in uno stato finale, allora esiste sicuramente una fase di calcolo diM(3) che percorre tale cammino. Se viceversa tale cammino non esiste allora ancheM(3) non raggiungerà mai lo stato finale. Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [41] Ad ogni passo j della computazione di M, la MT M(3) compie un numero di passi pari alla lunghezza del cammino (j) per il numero dei cammini (dj), ovvero: j · dj Se la macchinaM termina in k ≥ 0 passi, allora la macchinaM(3) esegue al più un numero di passi pari a: Σk j=1 j · d j ∈ O(kdk) Quindi una MTND può essere simulata da una MT deterministica multi-nastro in un tempo esponenziale nel numero dei passi della macchine non deterministica. Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [44] Macchina di Turing Elementari Un altro modo classico di descrivere le MT mediante una stringa è quello di usare la proprietà che ogni MT può essere realizzata tramite composizione di MT-elementari. Ovvero, date due macchine di Turing M e M′, la composizione diMM′ é una macchina di Turing in cui lo stato iniziale è quello della macchinaM, lo stato finale è quello della macchina M′, e lo stato finale della macchine M coincide con quello iniziale della macchinaM′. Definizione Si definiscono MT-elementari le seguenti macchine definite sull’alfabeto Σ = {1}: NB: la macchineM0 è stata introdotta solo per associarla agli stati finali di una MT Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [45] Esempio Esempio: Definire tramite composizione di macchine elementari una MTW che copia una stringa s ∈ {1}∗, ovvero che realizza la computazione q0b/xb/ ∗→ b/xqFb/x, x ∈ {1}∗ La descrizione di una MT tramite macchine elementari e salti condizionati è detta sequenza linearizzata delle MT. NB: la condizione dell’arco deve essere valutata dopo aver eseguito la macchina elementare sorgente dell’arco. Esercizio: definire tramite composizione di macchine elementari una MT per il calcolo della somma di due numeri in forma unaria. Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [46] Macchina di Turing Elementari Le macchine di Turing elementari permettono di ottenere il seguente risultato: Teorema Ogni MT è rappresentabile come sequenza linearizzata di MT-elementari. (senza dimostrazione) Sia, inoltre, δ la MT definita in modo tale che qualunque sia il carattere letto, 1 o b/, lo inverte e sposta a destra la testina. Allora è possibile dimostrare il seguente teorema: Teorema Le MT-elementari possono essere descritte tramite composizione delle macchine δ, s,M0, cioè usando solo 3 tipi di MT e salti condizionati sul carattere 1. Figure 4: Macchine elementare δ e linearizzazione delle macchine destra e blank Esercizio: definire in modo analogo la macchina |. Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [49] Halting Problem Teorema Data una MTM = (Σ, b/, K, q0, qf , δ), sia cM ∈ {1, b/}∗ la sua codifica. La funzione h(cM, x) =  1 seM termina su input x 0 seM NON termina su input x non è T-calcolabile. Dimostrazione Supponiamo per assurdo che la MT H che calcola la funzione h sia T-calcolabile. Possiamo allora costruire una MT H′ che calcola la funzione h′ definita nel seguente modo: h ′ (cM) =  1 seM termina su input x = cM 0 seM NON termina su input x = cM H′ è quindi la macchina che verifica se una MT termina quando le viene fornito in input il suo codice. Se H′ esiste, possiamo quindi costruire una ulteriore macchina H′′ che prende in input cM e calcola la funzione h ′′ (cM) =  0 se h′(cM) = 0 undef altrimenti H′′ termina con con 0 se H′ si ferma con 0, e cicla indefinitivamente se H′ si ferma con 1. Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [50] Calcoliamo allora h′′(cH′′), cioè il valore di H′′ quando le viene fornito come input il suo stesso codice: h ′′ (cH′′) =  0 se h′(cH′′) = 0 undef se h′(cH′′) = 1 quindi, ricordando che: h ′ (cM) =  1 seM termina su input cM 0 seM NON termina su input cM si deduce che: . h′′(cH′′) = 0⇐ h′(cH′′) = 0 ⇒ H′′ ↑⇒ h′′(cH′′) = undef . h′′(cH′′) = undef⇐ h′(cH′′) = 1 ⇒ H′′ ↓⇒ h′′(cH′′) = 0 Poichè, in ogni caso abbiamo una contraddizione concludiamo che l’ipotesi per cui la funzione h sia T-calcolabile è falsa. Quindi, la MT H non è calcolabile. Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [51] Halting Problem Il problema della terminazione ha come implicazione il fatto che NON è possibile costruire un perfetto sistema di debugging che sia in grado di determinare se un programma termini o meno sull’input dato Si osserva che il problema della fermata pur non essendo decidibile è semi-decidibile, cioè il predicato h(cM, x) =  1 seM termina su input x undef seM NON termina su input x è T-calcolabile. Infatti basta eseguire la computazione.
Docsity logo


Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved