Macchine di Turing e Complessità

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Macchine di Turing e Complessità"

Transcript

1 Macchine di Turing e Complessità Lucidi di Pierluigi Crescenzi,Università di Firenze, adattati ed estesi da A.Marchetti Spaccamela A.A Pilu Crescenzi () IT A.A / 150

2 Obiettivi e argomenti Obiettivi Fornire gli elementi di base delle teorie che sono di fondamento all informatica Calcolabilità Complessità Programma Macchine di Turing La macchina di Turing universale Limiti delle macchine di Turing La tesi di Church-Turing Relazioni fra Linguaggi e Macchine di Turing Le classi di complessità P, NP, PSPACE Pilu Crescenzi () IT A.A / 150

3 Contenuti del corso Domanda principale: Cosa può essere calcolato da un calcolatore e quanto costa farlo? Risposte Tesi di Church-Turing: È calcolabile tutto ciò che può essere calcolato da una macchina di Turing. Esistono problemi che non possono essere risolti in modo algoritmico mediante una macchina di Turing. Congettura P NP: Esistono problemi che non possono essere risolti in tempo polinomiale, ma per i quali è possibile verificare in tempo polinomiale la correttezza di una soluzione. Intermezzo linguistico Equivalenza tra grammatiche e modelli di calcolo Pilu Crescenzi () IT A.A / 150

4 Macchine di Turing () P.Crescenzi, UniFi 4 / 150

5 Macchine di Turing Sono macchine astratte (modelli di calcolo) introdotte da A.M.Turing nel 1935 con lo scopo di Dare una definizione formale del concetto di algoritmo Studiare i limiti del calcolo mostrando l esistenza di problemi non risolubili La macchina di Turing è un automa con testina di lettura/scrittura su un nastro bidirezionale potenzialmente illlimitato. Ad ogni passo di calcolo la macchina si trova in uno stato, appartenente ad un insieme finito, e legge un carattere sul nastro la funzione di transizione della macchina fa scrivere un carattere sul nastro, sposta eventualmente la testina di una posizione, porta la macchina in un nuovo stato () P.Crescenzi, UniFi 5 / 150

6 Definizione di una MdT Alfabeto di lavoro Σ ( Σ) Grafo etichettato G = (V, E) V = {q 0 } F Q: insieme di stati q 0: stato iniziale F : insieme di stati finali Q: insieme di altri stati E V V : insieme di transizioni Etichette: l ((u, v)) = (σ 1, τ 1, m 1 ),..., (σ ku,v, τ ku,v, m ku,v ) σ i Σ: simbolo letto (i j σ i σ j) τ i Σ: simbolo scritto m i {R, L, S}: movimento della testina Complemento bit a bit () P.Crescenzi, UniFi 6 / 150

7 Rappresentazione tabellare di una MdT 5 colonne e 1 riga per ogni etichetta Prima colonna: stato attuale Seconda colonna: simbolo letto Terza colonna: nuovo stato Quarta colonna: simbolo da scrivere Quinta colonna: movimento testina Esempio: MdT per il complemento bit a bit stato simbolo stato simbolo movimento q0 0 q0 1 R q0 1 q0 0 R q0 q1 L q1 0 q1 0 L q1 1 q1 1 L q1 q2 R () P.Crescenzi, UniFi 7 / 150

8 Calcolo con una macchina di Turing Funzionamento della MdT La macchina di Turing inizia il calcolo nello stato iniziale con la testina posta sul primo carattere (quello più a sinistra) dell input Ad ogni passo sulla base dello stato e del carattere letto dalla testina la macchina scrive un nuovo carattere, si sposta di una posizione (o rimane ferma) e raggiunge un nuovo stato (eventualmente lo stesso) La macchina termina quando raggiunge uno stato finale oppure quando non è definita la funzione di transizione La posizione della testina quando la macchina raggiunge uno stato finale (spesso noi assumeremo che la testina si trova sul primo carattere del nastro () P.Crescenzi, UniFi 8 / 150

9 Configurazioni minimali La configurazione di una MdT specifica lo stato attuale, il contenuto del nastro e la posizione della testina La rappresentazione : x q y è la configurazione in cui lo stato è q, il nastro contiene la stringa xy e la testina si trova sul primo simbolo di y Configurazione minimale: Tutti i simboli a sinistra di x sono Tutti i simboli a destra di y sono Primo simbolo di x diverso da (se x 1) Ultimo simbolo di y diverso da (se y 1) Configurazione iniziale: q 0 x Configurazione finale o di accettazione: x q y con q F Output: prefisso più lungo di y senza Configurazione di rigetto: se non esiste transizione da q leggendo primo simbolo di y o leggendo (se y = λ) () P.Crescenzi, UniFi 9 / 150

10 Esempio: MdT per il complemento bit a bit Partendo dalla configurazione iniziale q q q q q0 101 q q q1 010 q q q Complemento bit a bit q finale con output 1010 () P.Crescenzi, UniFi 10 / 150

11 Produzioni tra configurazioni C 1 produce C 2 se MdT può passare da C 1 a C 2 con una singola transizione (o un singolo passo di calcolo) Una computazione di una MdT è una sequenza eventualmente infinita di configurazioni C 1, C 2, C 3, C 4... tale che la MdT per i = 1, 2, 3,... passa da C i a C i+1 con una singola transizione La MdT termina o quando raggiunge una configurazione in cui lo stato è finale oppure quando la funzione di transizione non è definita () P.Crescenzi, UniFi 11 / 150

12 Esempio: MdT per il complemento bit a bit Ci riferiamo alla MdT che complementa una stringa bit a bit Esempio di produzione 101 q0 1 produce 1010 q0 x = 101, y = 1 e etichetta transizione da q0 a q0 contiene (1, 0, R) Esempio di non produzione 1 q0 101 non produce 101 q0 1 x = 1, y = 101 e etichetta transizione da q0 a q0 contiene le due triple (0, 1, R) e (1, 0, R) Proviamo ad applicare la prima tripla (0, 1, R): non soddisfatta la condizione che la testina legga il carattere 0 Proviamo ad applicare la seconda tripla (1, 0, R): non soddisfatte condizioni che il nastro a sinistra della testina sia 101 e che il nastro a destra della testina sia 1 () P.Crescenzi, UniFi 12 / 150

13 Complemento a due di un numero binario Complemento a due di numero x rappresentato con n bit di cui il primo è segno: 2 n x Esempio: x = 13, n = 5 Rappresentazione di x: Complemento a due di x: = 19 Rappresentazione di complemento a due di x: Metodo comunemente usato per rappresentare numeri con segno nei calcolatori Vantaggi Addizione e sottrazione implementate senza distinguere rispetto al segno Lo zero ha un unica rappresentazione (rappresentati numeri da 2 n 1 a 2 n 1 1) () P.Crescenzi, UniFi 13 / 150

14 Algoritmo per il Complemento a due di un numero Sia x = n 1 i=0 2i x i Complemento a due y di x: 2 n n 1 i=0 2i x i 2 n = n 1 i=0 2i + 1 = n 1 i=0 2i = n 1 i=0 2i (x i + x i ) + 1 y = n 1 i=0 2i (x i + x i ) + 1 n 1 i=0 2i x i = n 1 i=0 2i x i + 1 Algoritmo Complementare tutti i bit di x Sommare 1 Esempio: x = 13 e n = 5 Rappresentazione binaria di x: Complemento bit a bit: Somma di 1: Algoritmo equivalente (esercizio) Complementare tutti i bit a sinistra di 1 più a destra () P.Crescenzi, UniFi 14 / 150

15 MdT per il Complemento a due di un numero 1 Raggiunge primo a destra 2 Trova e supera primo 1 a sinistra Se non esiste, termina posizionando testina su simbolo più a sinistra 3 Si sposta verso sinistra, complementando ogni bit incontrato, fino a raggiungere 4 Si sposta a destra. Complessità temporale: O(n) dove n è lunghezza input n passi per 1 Al più n passi per 2 Al più n passi per 3 () P.Crescenzi, UniFi 15 / 150

16 Ordinamento di stringhe binarie Data stringa binaria x, produrre stringa ordinata Esempio: se x = , allora l output è Algoritmo Cercare ripetutamente coppie di 0 e 1 non in ordine e invertirle Esempio: input Prima coppia: Seconda coppia: Terza coppia: Complessità temporale: O(n 2 ) dove n è lunghezza input Al più 2n passi per ciascuna coppia Al più n/2 coppie () P.Crescenzi, UniFi 16 / 150

17 MdT per l ordinamento 1 Cerca primo 1 a destra Se non esiste, termina posizionando testina su primo simbolo 2 Cerca 0 che segue Se non esiste, termina posizionando testina su primo simbolo 3 Complementa 0 e cerca 1 più a sinistra 4 Complementa 1 e ricomincia () P.Crescenzi, UniFi 17 / 150

18 Un linguaggio non regolare L = {0 n 1 n } Consideriamo l insieme L = {0 n 1 n : n 0} Esempio: L mentre L Esempio tipico di linguaggio non regolare Problema: data stringa binaria x, x L? Algoritmo Controllare ripetutamente se i due simboli alle estremità sono opposti In tal caso cancellarli Esempio: input Primo controllo: Seconda coppia: Terzo controllo: 010 x L Complessità temporale: O(n 2 ) dove n è lunghezza input Al più 2n passi per ciascun controllo Al più n/2 controlli () P.Crescenzi, UniFi 18 / 150

19 Mdt per L = {0 n 1 n } 1 Se simbolo più a sinistra è 0, lo cancella e si sposta su simbolo più a destra Se simbolo più a sinistra non esiste, raggiunge lo stato finale (la stringa appartiene al linguaggio) 2 Se simbolo più a destra è 1, lo cancella e si sposta su simbolo più a sinistra Nota bene Se le condizioni ai passi 1 e 2 precedenti non sono verificate allora non è definita la transizione e la macchina si interrompe in uno stato non finale (e la stringa non appartiene al linguaggio) Input viene cancellato: Facile modificare MdT in modo che input sia preservato (esercizio) () P.Crescenzi, UniFi 19 / 150

20 Macchina di Turing multi-nastro Simile a MdT: usa k nastri con k 1 Ciascun nastro con propria testina Istruzione specifica (oltre nuovo stato) k simboli letti k simboli da scrivere k movimenti delle k testine Etichetta di una transizione ((σ 1,..., σ k ), (τ 1,..., τ k ), (m 1,..., m k )) Configurazione iniziale: input su primo nastro, rimanenti nastri vuoti () P.Crescenzi, UniFi 20 / 150

21 Esempio: MdT multi-nastro per 0 n 1 n 1 Scorre primo nastro verso destra fino a primo 1: per ogni 0, scrive un 1 sul secondo nastro 2 Scorre primo nastro verso destra e secondo nastro verso sinistra: se simboli letti non uguali, termina in stato non finale 3 Se legge su entrambi i nastri, termina in stato finale stato simboli stato simboli movimenti q0 (0, ) q0 (, 1) (R, R) q0 (1, ) q1 (1, ) (S, L) q1 (1, 1) q1 (, ) (R, L) q1 (, ) q2 (, ) (S, S) Numero di passi eseguiti: legge una sola volta ciascun simbolo t T (n) O(n) () P.Crescenzi, UniFi 21 / 150

22 MdT e MdT multi-nastro Risultato Sono modelli equivalenti In un verso: ovvio Nell altro verso: l idea è rappresentare i nastri della macchina multi nastro su porzioni del singolo nastro disponibile; le porzioni sono separate fra loro da un nuovo simbolo #. Pertanto ad ogni istante l unico nastro ha la forma contenuto nastro 1 #contenuto nastro 2 #... Concatenare contenuto dei k nastri, separati da # Evidenziare simboli attualmente letti Racchiudere tutto tra due estremità Per ogni istruzione di MdT multi-nastro T, MdT T Scorre i k nastri e raccoglie informazioni sui k simboli letti Applica transizione, scorrendo i k nastri e applicando su ciascuno scrittura e spostamento () P.Crescenzi, UniFi 22 / 150

23 Costo della simulazione t T (n): numero massimo di passi eseguiti con input di lunghezza n Ogni nastro usa al più t T (n) celle Spazio non può essere superiore a tempo Il singolo nastro usa al più O(t T (n)) celle Costante dipende da k Per ogni passo di T, T Esegue due scansioni per raccogliere informazioni Per ogni nastro, esegue due scansioni per l eventuale scorrimento a destra Esegue numero di passi O(t T (n)) Quindi, t T (n) O(t 2 T (n)) Osservazione s T (i, n): numero di celle usate sull i-esimo nastro Numero di celle usate sul singolo nastro: k i=1 s T (i, n) + k + 1 () P.Crescenzi, UniFi 23 / 150

24 Definizione di sotto-macchina Informalmente, stato s di T associato a MdT T s tale che Entrando in s, controllo passa a T s T s viene eseguita Al termine di T s, controllo torna a T che esegue transizione da s leggendo simbolo lasciato da T s Formalmente, stato s di T associato a MdT T s tale che, nella configurazione u q v che produce w s x, T passa in w qs 0 x (q s 0 stato iniziale di T s ) Esecuzione procede con T s fino a y qs f z (q s f stato finale di T s ) T prosegue da configurazione y s z () P.Crescenzi, UniFi 24 / 150

25 Esempio: moltiplicazione di numeri binari [Jflap] Basata sul fatto che x y = 2 x y 2 Raddoppia x tante volte quante possiamo dividere y per 2 Se y = y 2 log y > 0 aggiunge x y, con stesso metodo Più precisamente (cinque nastri) 1 Copia y su nastro 2 e inizializza moltiplicazione a 0 su nastro 3 2 Cancella 0 a sinistra su nastro 2 3 Se nastro 2 vuoto, copia nastro 3 su nastro 1 e termina. 4 Copia nastro 1 su nastro 4 e nastro 2 su nastro 5 5 Raddoppia nastro 4 tante volte quanti sono simboli di nastro 5 meno 1 6 Somma nastro 4 a nastro 3 in nastro 3. 7 Cancella 1 a sinistra di nastro 2 e torna al passo 2. () P.Crescenzi, UniFi 25 / 150

26 Prova del nove Serve a verificare correttezza moltiplicazione (esempio: = ) Procedura 1 A: somma cifre primo fattore (esempio: = 12 3 (mod 9)) 2 B: somma cifre secondo fattore (esempio: = 20 2 (mod 9)) 3 C: somma cifre A B (esempio: 3 2 = 6 6 (mod 9)). 4 D: somma cifre risultato presunto (esempio: = 33 6 (mod 9)). 5 Se C = D, la prova ha esito positivo, altrimenti ha esito negativo (esempio: esito positivo) Se esito negativo, allora moltiplicazione errata Se esito positivo, risultato potrebbe essere errato () P.Crescenzi, UniFi 26 / 150

27 MdT per prova del nove Possiamo ottenere la MdT che effettua la prova del nove componendo le diverse macchine che realizzano i passi dell algoritmo precedente. [Jflap] Input: axb=c Funzionamento (usa T digitadder ) 1 Calcola somma s 3 cifre di c 2 Calcola somma s 2 cifre di b 3 Calcola somma s 1 cifre di a 4 Calcola prodotto modulo 9 di s 1 per s 2 5 Verifica se il risultato è uguale a s 3 () P.Crescenzi, UniFi 27 / 150

28 La macchina di Turing Universale () P.Crescenzi, UniFi 28 / 150

29 Codifica binaria di un alfabeto Alfabeto utilizzato da odierni calcolatori Codice ASCII a 8 bit Codice Unicode a 16 bit Alfabeto binario non restrittivo rispetto a potere computazionale di una MdT Garantire successiva decodifica Codifica di A, B e C: 0, 1 e 00, rispettivamente Sequenza 000 codifica di AAA AC CA Il codice di A è un prefisso del codice di C () P.Crescenzi, UniFi 29 / 150

30 Codifica a lunghezza costante Σ = {σ 1,..., σ n } con n > 2 k = log 2 n Codifica c Σ (σ i ) di σ i : rappresentazione binaria di i 1 con k bit Codifica c Σ (x) di stringa x = x 1 x m : c Σ (x 1 ) c Σ (x m ) Esempio Alfabeto Σ = {a, b, c, d, e} k = log 2 5 = 3 c Σ (a) = 000, c Σ (b) = 001, c Σ (c) = 010, c Σ (d) = 011 e c Σ (e) = 100 Codifica di cade: Codifica di debba: () P.Crescenzi, UniFi 30 / 150

31 Codifica di Huffman Unisci ripetutamente simboli o gruppi di simboli con frequenza minima a: b:0.2 c: d:0.2 e:0.2 Alfabeto Σ = {a, b, c, d, e} con simboli di uguale frequenza c H (a) = 00, c H (b) = 01, c H (c) = 100, c H (d) = 101 e c H (e) = 11 Codifica di cade: Codifica di debba: () P.Crescenzi, UniFi 31 / 150

32 Macchine di Turing con alfabeto binario T : MdT con alfabeto di lavoro Γ T = { } Σ con Σ > 2 T : MdT con alfabeto di lavoro Γ T = {, 0, 1} tale che x, T (x) non termina T (c Σ (x)) non termina x, T (x) termina in configurazione di rigetto T (c Σ (x)) termina in configurazione di rigetto x, T (x) termina in configurazione finale e produce y Σ T (c Σ (x)) termina in configurazione finale e produce c Σ (y) T come T : ogni singola transizione di T simulata con 3k 2 transizioni (dove k = log 2 Σ ) Leggere codifica di simbolo di Σ Sostituire codifica con quella di altro simbolo Posizionare in modo corretto la testina () P.Crescenzi, UniFi 32 / 150

33 Esempio MdT T con Γ = {, a, b, c, d, e} T include Transizione da p a s con tripla (b, c, S) Transizione da p a q con tripla (a, e, R) Transizione da p a r con tripla (d, a, L) Grafo di T include () P.Crescenzi, UniFi 33 / 150

34 Codifica di una MdT MdT universale simula qualunque altra MdT (con alfabeto binario) a partire da sua descrizione Proposta la prima volta da Turing stesso Ruolo importante nello sviluppo di calcolatori alla von Neuman Richiede codifica di MdT Codifica simboli: 0 Z, 1 U e B Codifica movimenti: L L, S S e R R Codifica stati: (i + 1)-esimo stato rappresentazione binaria di i Primo stato iniziale Secondo stato unico finale Transizione codificata giustapponendo codifiche di suoi elementi MdT codificata giustapponendo codifiche di sue transizioni () P.Crescenzi, UniFi 34 / 150

35 Esempio stato simbolo stato simbolo movimento codifica q0 0 q0 1 R 0Z0UR q0 1 q0 0 R 0U0ZR q0 q2 L 0B10BL q2 0 q2 0 L 10Z10ZL q2 1 q2 1 L 10U10UL q2 q1 R 10B1BR Codifica MdT: 0Z0UR0U0ZR0B10BL10Z10ZL10U10UL10B1BR stato simbolo stato simbolo movimento codifica q0 q2 L 0B10BL q0 1 q0 0 R 0U0ZR q0 0 q0 1 R 0Z0UR q2 q1 R 10B1BR q2 1 q2 1 L 10U10UL q2 0 q2 0 L 10Z10ZL Codifica MdT: 0B10BL0U0ZR0Z0UR10B1BR10U10UL10Z10ZL () P.Crescenzi, UniFi 35 / 150

36 La MdT universale Alfabeto:, 0, 1, B, U, Z, L, R, S e ; Tre nastri: l input codificato sul primo nastro rappresenta la codifica di una MdT T e dall input x; la macchina simula T con input x Funzionamento 1 Copia su nastro 3 input x codificato con U e Z 2 Inizializza nastro 2 con codifica stato iniziale 3 In base a stato su nastro 2 e simbolo letto su nastro 3, cerca transizione da applicare (se non esiste, rigetta) 4 Applica transizione modificando nastro 3 e aggiornando nastro 2 con nuovo stato 5 Se nuovo stato è finale, termina in stato finale; altrimenti, torna a Passo 3 () P.Crescenzi, UniFi 36 / 150

37 Terzo passo Per realizzare il passo 3 dobbiamo cercare Operazione di pattern matching 1 Scorre nastri 1 e 2 fintanto che trova simboli uguali Se non incontra simbolo diverso da 0 e 1 su entrambi i nastri Posiziona testina di nastro 2 su primo simbolo e posiziona testina nastro 1 su primo simbolo transizione successiva e ricomincia 2 Posiziona testina nastro 2 su primo simbolo e verifica se simbolo su nastro 1 uguale a simbolo su nastro 3 Se si, sposta testina nastro 1 a destra e termina Altrimenti, posiziona testina nastro 1 su primo simbolo transizione successiva e torna a Passo 1 () P.Crescenzi, UniFi 37 / 150

38 Il grafo della MdT universale Numero passi eseguiti da U proporzionale a quello di T Per ogni stringa x di lunghezza n Primo, quarto, quinto passo: numero passi lineare Secondo passo: numero passi costante Terzo passo: numero passi quadratico (per riavvolgere nastro 2) () P.Crescenzi, UniFi 38 / 150

39 Limiti delle macchine di Turing () IT / 150

40 Configurazioni Specificano stato attuale, contenuto del nastro e posizione testina x q y: configurazione in cui Stato: q Nastro: xy con a sinistra e a destra Testina su primo simbolo di y Configurazione iniziale: q0 x Configurazione finale o di accettazione: q F Output: prefisso più lungo di y senza Configurazione di rigetto: non esiste transizione da q leggendo primo simbolo di y (leggendo, se y = λ) Produzioni tra configurazioni C 1 produce C 2 se MdT può passare da C 1 a C 2 con una singola transizione () IT / 150

41 Funzioni calcolabili e linguaggi decidibili Funzione f : Σ Γ calcolabile se MdT T tale che x Σ, sequenza C 1,..., C n di configurazioni C 1: q0 x (q0 stato iniziale) i, C i produce C i+1 C n: configurazione di accettazione Linguaggio L (sottoinsieme di Σ ) χ L : Σ {0, 1}: funzione caratteristica di L { 1 se x L, χ L (x) = 0 altrimenti L decidibile se e solo se funzione caratteristica calcolabile Esempio: L = {1 n : n = 2k} () IT / 150

42 Funzioni calcolabili e linguaggi decidibili Che relazione esiste fra MdT e i linguaggi formali? Ricordiamo che Linguaggio L su un alfabeto Σ è un sottoinsieme di Σ χ L : Σ {0, 1}: funzione caratteristica di L { 1 se x L, χ L (x) = 0 altrimenti L decidibile se e solo se la funzione caratteristica è calcolabile con una MdT Esempio: L = {1 n : n = 2k} Vedremo che è possibile caratterizzare la relazione fra MdT e linguaggi secondo la gerarchia di Chomsky, () IT / 150

43 Semplici proprietà Se L è decidibile, allora L c è decidibile L decidibile sse mdt T con 1 stato finale che termina x e che accetta sse x L Se Solo se () IT / 150

44 Semplici proprietà Se L è decidibile, allora L c è decidibile L decidibile sse MdT T con 1 stato finale che termina x e che accetta sse x L Se Solo se () IT / 150

45 Insiemi equi-cardinali Insiemi A e B hanno stessa cardinalità se biezione f : A B N e N + sono equi-cardinali f : N + N tale che n f (n) = n N e insieme P di numeri pari sono equi-cardinali f : P N tale che n f (n) = n () IT / 150

46 Insiemi numerabili Insiemi equi-cardinali a insieme N N + e P sono numerabili Insieme Z dei numeri interi Simile a simulazione con nastro semi-infinito f : Z N tale che n f (n) = 0 se n = 0, 2n 1 se n > 0, 2n altrimenti () IT / 150

47 Numeri razionali positivi () IT / 150

48 Numeri reali Risultato L insieme dei numeri reali non è numerabile Per assurdo x d(x, i): i-esima cifra decimale di x x = : d(x, 1) = 8, d(x, 2) = 3, d(x, 3) = 6 e così via x diag : i, d(x diag, i) = (d(f 1 (i), i) + 1) mod 10 x diag non può apparire nell enumerazione () IT / 150

49 Esistono linguaggi non decidibili Notazioni Σ: alfabeto binario L: insieme dei linguaggi su Σ T : insieme MdT con alfabeto Σ { } D: insieme linguaggi decidibili in L Risultato T e Dsononumerabili T è numerabile A ogni macchina di Turing corrisponde stringa su {0, 1, B, U, Z, L, R, S} Stringhe su alfabeto fissato numerabili: ordinamento lessicografico Sottoinsieme di insieme numerabile è numerabile D è numerabile D non è più che numerabile: per ogni L D esiste almeno una MdT che decide L D è almeno numerabile: Insieme di linguaggi L i contenenti solo rappresentazione binaria di i () IT / 150

50 Risultato L non è numerabile Per assurdo: f : L N biettiva (poniamo L i = f 1 (i)) Numerazione σ 0, σ 1, σ 2,... di stringhe su Σ L diag : per ogni numero naturale i, σ i L diag se e solo se σ i L i L L L L L L L diag = {0, 01, 11,...} Per ogni i, L diag differisce da L i per almeno una stringa Risultato Esistono linguaggi non decidibili () IT / 150

51 Problema della terminazione Un importante esempio di linguaggio non decidibile Notazioni C: insieme delle codifiche binarie di codifiche di MdT in T T (x): computazione di T con input x Se T (x) termina in una configurazione finale: T (x) accetta Se T (x) termina in una configurazione di rigetto: T (x) rigetta x 1,..., x k : stringa ottenuta raddoppiando bit, concatenando e separando con , 1100 : Problema della terminazione L stop = { c T, x : c T C x Σ T (x) termina} Due tipi di stringhe in L stop c T, x per cui T (x) accetta c T, x per cui T (x) rigetta L stop non è decidibile () IT / 150

52 L stop non è decidibile Risultato L stop non è decidibile Dimostrazione per assurdo Esiste T stop tale che { accetta se y Lstop T stop (y) rigetta altrimenti Definiamo T diag T in modo che { termina se z = ct e T T diag (z) stop ( c T, c T ) rigetta non termina altrimenti Cosa fa T diag (c Tdiag )? T diag (c Tdiag ) termina se e solo se T stop(c Tdiag, c Tdiag ) rigetta se e solo se c Tdiag, c Tdiag L stop se e solo se T diag (c Tdiag ) non termina T stop non può esistere L stop non è decidibile () IT / 150

53 Altri problemi indecidibili La tesi di Church-Turing implica che la dimostrazione della indecidibilità del problema della terminazione non vale solo per le macchine di Turing ma che il problema della terminazione di una programma è indecidibile per ogni linguaggio di programmazione. Problemi indecidibili si incontrano in vari campi dell informatica: Decidere se un programma corretto, cio se calcola la funzione desiderata Dati un programma, un input del programma ed una sua istruzione, decidere se l istruzione sarà eseguita Decidere se una grammatica di tipo 2 è ambigua Decidere se due grammatiche di tipo 2 sono equivalenti Decidere se un programma si ferma con input 0 () IT / 150

54 Decidere se un programma si ferma con input 0 Sia L stop 0 = {c T : T (0) termina}. Proviamo che L stop 0 non è decidibile Riduciamo L stop a L stop 0 Supponiamo di avere T stop 0 che decide L stop 0 Costruiamo macchina T stop che usa T stop 0 per decidere L stop c T, x L stop se e solo se T (x) termina c T L stop 0 se e solo se T (0) termina Eseguire T stop 0 con input c T non serve Eseguiamo T stop 0 con input codifica di modifica T di T che garantisce che T (0) termina se solo se T (x) termina T : con input z, cancella z, scrive x ed esegue T (x) T (x) termina se e solo T (0) termina T stop 1 Con input c T, x calcola c T 2 Esegue T stop 0 con input c T 3 Se T stop 0 accetta, accetta; se T stop 0 rigetta, rigetta T stop decide L stop : assurdo T stop 0 non può esistere () IT / 150

55 L acc = { c T, x : T (x) accetta} L acc non è decidibile Riduciamo L stop a L acc Supponiamo di avere T acc che decide L acc Costruiamo macchina T stop che usa T acc per decidere L stop c T, x L stop se e solo se T (x) termina c T, x L acc se e solo se T (x) accetta Eseguire T acc con input c T, x non serve T (x) potrebbe terminare senza accettare Eseguiamo T acc con input codifica di modifica T di T che garantisce che T (x) accetta se solo se T (x) termina T : con input z, esegue T (z) e se T (z) termina, allora accetta T (x) termina se e solo T (x) accetta T stop 1 Con input c T, x calcola c T 2 Esegue T acc con input c T, x 3 Se T acc accetta, accetta; se T acc rigetta, rigetta T stop decide L stop : assurdo T acc non può esistere () IT / 150

56 L empty = {c T : x[t (x) non accetta]} L empty non è decidibile Riduciamo L acc a L empty Supponiamo di avere T empty che decide L empty Costruiamo macchina T acc che usa T empty per decidere L acc c T, x L stop se e solo se T (x) accetta c T L empty se e solo, per ogni y, per cui T (y) rigetta Eseguire T empty con input c T non serve Se rigetta sappiamo solo che esiste y per cui T (y) accetta Eseguiamo T empty con input codifica di modifica T di T che garantisce che esiste z per cui T (z) accetta se solo se T (x) accetta T : con input z, se z x rigetta, altrimenti esegue T con input z = x T (x) accetta se e solo esiste z per cui T (z) accetta T acc 1 Con input c T, x calcola c T 2 Esegue T empty con input c T 3 Se T empty accetta, rigetta; se T empty rigetta, accetta T acc decide L acc : assurdo T empty non può esistere () IT / 150

57 Osservazioni Nelle riduzioni precedenti L 2 : linguaggio di cui si vuole dimostrare la non decidibilità L 1 : linguaggio di cui si conosce la non decidibilità Data una stringa x di cui decidere l appartenenza a L 1 Abbiamo costruito una stringa x tale che x L 1 se e solo se x L 2 Da L stop a L stop 0: data c T, x abbiamo costruito c T (T con input z, cancella z, scrive x ed esegue T (x)) Da L stop a L acc: data c T, x abbiamo costruito c T, x (T : con input z, esegue T (z) e se T (z) termina, allora accetta) Abbiamo costruito una stringa x tale che x L 1 se e solo se x L 2 Da L acc a L empty: data c T, x abbiamo costruito c T (T con input z, se z x rigetta, altrimenti esegue T con input z = x) In entrambi i casi, se L 2 (e quindi L c 2 ) fosse decidibile, allora L 1 sarebbe decidibile Assurdo () IT / 150

58 Riducibilità: definizione formale L 1 riducibile a L 2 (L 1 L 2 ) se esiste riduzione f : {0, 1} {0, 1}, tale che, per ogni x, x L 1 se e solo se f (x) L 2 {0, 1} {0, 1} x L 1 f (x) L 2 y L 1 f (y) L 2 L 1 L 2 Dalle riduzioni informali segue che L stop L stop 0, L stop L acc e L acc L c empty () IT / 150

59 Riducibilità e decidibilità Se L 1 riducibile a L 2 e L 2 decidibile, allora L 1 decidibile (e quindi, L c 1 decidibile) Usiamo macchina che decide L 2 per costruire macchina che decide L 1 T 1 Tf T2 q T 1 0 x q T f 1 f (x) q T 2 0 f (x) q T 2 1 b q T 1 1 b Se L 1 riducibile a L 2 e L 1 non decidibile, allora L 2 non decidibile Se L 1 riducibile a L c 2 e L 1 non decidibile, allora L 2 non decidibile () IT / 150

60 Esempio: L reg = {c T : L(T ) è regolare} Dimostriamo che L stop 0 L reg A partire da c T dobbiamo costruire c T tale che T (0) termina se solo se L(T ) è un linguaggio regolare {0, 1} : regolare {0 n 1 n : n 0}: non regolare Definiamo T in modo che Se T (0) termina allora L(T ) = {0, 1} Se T (0) non termina allora L(T ) = {0 n 1 n : n 0} T con input y 1 Se y {0 n 1 n : n 0} accetta 2 Altrimenti esegue T (0) 3 Se T (0) termina, allora accetta () IT / 150

61 Auto-referenzialità Nella dimostrazione, abbiamo costruito una macchina che usa la sua stessa descrizione È possibile? Può una macchina avere accesso alla sua propria codifica? Per scrivere la codifica di una macchina T dobbiamo definire una macchina più potente di T? Si: esistono macchine di Turing che possono stampare la propria codifica () IT / 150

62 Costruire programmi che si auto-riproducono Va bene Scrivi questa frase? No: uso di auto-referenzialità Applicare un programma P a una stringa (programma) Q Scrivi due copie della frase che segue i due punti e racchiusa tra virgolette, racchiudendo la seconda copia tra virgolette: Scrivi due copie della frase che segue i due punti e racchiusa tra virgolette, racchiudendo la seconda copia tra virgolette: P riproduce il suo argomento Q seguita da una versione di Q tra virgolette Q è (produce) il testo di P () IT / 150

63 Un programma Java che scrive sé stesso class P { public static void main ( String [] a) { char quote = 34; System. out. println (Q+ quote +Q+ quote ); } static String Q = " frase "; } Risultato: stampa di frase"frase" Sufficiente assegnare a Q testo programma, fino al punto in cui apparirebbe la frase () IT / 150

64 Un programma Java che scrive sé stesso class P { public static void main ( String [] a) { char quote = 34; System. out. println (Q+ quote +Q+ quote ); } static String Q = " class P {... String Q = "; } Risultato: stampa del codice stesso a eccezione dell ultimo punto e virgola e dell ultima parentesi graffa Sufficiente modificare le due occorrenze dell istruzione di stampa con System. out. println (Q+ quote +Q+ quote + ; + } ); Risultato: stampa esatta del codice stesso () IT / 150

65 La tesi di Church-Turing () IT / 150

66 Altri modelli di calcolo oltre a MdT? Le macchine di Turing rappresentano un modello di calcolo molto semplice che permette definire formalmente il concetto di algoritmo, di funzione calcolabile e di problema decidibile mostrare lesistenza di funzioni non calcolabili e problemi non decidibili Che cosa ha portato Turing ad affrontare questi problemi? Esistono altri modelli di calcolo più potenti delle MdT (in grado di calcolare funzioni che le MdT non sono in grado di calcolare)? () IT / 150

67 Un po di storia, Hilbert 1900: Al Secondo Congresso Internazionale di Matematica Hilbert formula 23 problemi matematici per il XX secolo. Il secondo problema riguarda la consistenza (cioè la non contraddittorietà ) della teoria logica dellaritmetica dei numeri naturali basata sugli assiomi introdotti da Peano nel : Hilbert riformula i problemi aperti riguardanti laritmetica: LAritmetica è completa? Cioè è possibile dimostrare ogni asserzione vera? LAritmetica è consistente? Cioè siamo certi che non sia possibile dimostrare unasserzione e anche la sua negazione? Se ciò fosse vero ogni asserzione sarebbe dimostrabile, quindi per dimostrare la consistenza è sufficiente dimostrare che esistono asserzioni dellaritmetica non dimostrabili. LAritmetica è decidibile? Cioè esiste un algoritmo che consente di decidere se unasserzione è un teorema? () IT / 150

68 Un po di storia, il ruolo dei paradossi I seguenti paradossi mostrano come possiamo fare affermazioni che non sono nè nè false Epimenide di Creta (VI sec. a. C.): Tutti i cretesi sono bugiardi. (questa affermazione non può essere vera ma può essere falsa; non è un vero paradosso) Eubulide di Mileto (IV sec. a. C.): Questa frase è falsa oppure io sto mentendo Buridano (XIV sec.): Socrate dice: Platone dice il falso Platone dice: Socrate dice il vero (le due affermazioni congiunte sono un paradosso) Russell (XX sec.): Linsieme di tutti gli insiemi che non appartengono a se stessi, appartiene o no a se stesso? Russell: In un villaggio il barbiere rade tutti e soli coloro che non si radono da soli; chi è che rade il barbiere? Gonseth (XX sec.): In una biblioteca può esistere un catalogo di tutti i cataloghi bibliografici che non contengono se stessi? () IT / 150

69 Un po di storia, Gödel 1931: Gödel dimostra che l aritmetica non può essere al tempo stesso completa e consistente. Idea della prova: Rappresentare la logica (assiomi, regole d inferenza, dimostrazioni e teoremi) all interno dell aritmetica mediante un procedimento di aritmetizzazione (o gödelizzazione, cioè codificazione dell apparato della logica mediante numeri interi). Ricorrere allo stesso tipo di assurdità che si presentano nei classici paradossi sfruttando l autoreferenzialità e cioè creando un asserzione w che afferma: w non è dimostrabile. Se w fosse falsa sarebbe dimostrabile e, quindi se il calcolo non contraddittorio, w non può essere falsa e deve essere vera. Ma se w è vera non è dimostrabile contraddicendo sè stessa. Quindi w è un esempio di asserzione vera ma non dimostrabile. Conseguenze: l aritmetica non completa o non è consistente (ma la consistenza non è dimostrabile allinterno della teoria stessa). () IT / 150

70 Un po di storia, Turing 1935: Turing dimostra l indecidibilità dellaritmetica Definisce il concetto di algoritmo introducendo le macchine di Turing. Mostra che il problema della terminazione di una macchina di Turing è formulabile come un asserzione dell aritmetica (ancora mediante una gödelizzazione). Mostra che il problema della terminazione non è risolubile con le macchine di Turing e quindi è indecidibile. Tale risultato implica che l aritmetica stessa non è decidibile. () IT / 150

71 Un po di storia, Church Markov ed altri Contemporaneamente a Turing Church ha introdotto un concetto di calcolabilità (λ-definibilit) basato su un sistema algoritmico (λ-calcolo). Tale sistema è stato dimostrato equivalente alle macchine di Turing, dallo stesso Turing. Ciò ha permesso di formulare la Tesi di Church-Turing: Ogni funzione che sia dimostrata calcolabile con un qualunque modello di calcolo formale è calcolabile secondo Turing Abbiamo anche visto che esiste una corrispondenza fra funzioni calcolabili con MdT e il riconoscimento di linguaggi. Successivamente sono stati proposti molti modelli di calcolo (da Markov, Kleene Post, e altri) basati su approcci diversi. Però Tutti i modelli proposti sono equivalenti alle MdT Sulla base di questi risultati oggi è convinzione comune che non esista un modello di calcolo più potente delle MdT e che la tesi di Church-Turing sia vera () IT / 150

72 Algoritmi di Markov Un algoritmo di Markov è definito da un insieme finito e ordinato di regole di riscrittura a b con a, b Σ a b con a, b Σ (regola finale) Una regola è applicabile alla prima occorrenza della sua parte sinistra Se xay Σ e x non contiene a, allora a b (a b) può essere applicata producendo xby Esecuzione di un algoritmo di Markov con input x 1 current = x 2 Scandisce le regole nell ordine specificato 3 Se nessuna regola è applicabile a current, termina con output current 4 Applica a current la prima regola applicabile producendo y: se la regola è terminale, termina con output y, altrimenti current = y e torna al passo 2 () IT / 150

73 Linguaggi di programmazione Ogni programma scritto in Java può essere tradotto in linguaggio macchina Compito dei compilatori Se dimostriamo che esistono funzioni non calcolabili da un linguaggio macchina, allora abbiamo che esistono funzioni non calcolabili da un programma Java Modello di calcolo almeno potente quanto un linguaggio macchina Dimostrazione che ogni algoritmo realizzato in tale modello può essere simulato da una macchina di Turing Dimostrazione che macchina di Turing può essere simulata da un algoritmo realizzato in tale modello () IT / 150

74 Random Access Machine Ha un numero potenzialmente infinito di registri e un contatore di programma Ogni registro è individuato da un indirizzo intero Ogni registro può contenere un numero intero arbitrariamente grande n denota un intero, (n) denota il contenuto del registro il cui indirizzo è n e [n] denota il contenuto del registro il cui indirizzo è contenuto nel registro il cui indirizzo è n Programma RAM Sequenza di istruzioni (eventualmente etichettate) (n):=o1 operatore o2 oppure [n]:=o1 operatore o2 dove operatore è {+,,, /} e o1 e o2 possono essere m, (m) o [m] if o1 operatore o2 goto etichetta dove operatore è {=, <>, <=, <} e o1 e o2 possono essere m, (m) o [m] end () IT / 150

75 Esecuzione di un programma RAM Inizialmente i primi n registri contengono n valori interi, tutti altri registri contengono 0 e il contatore di programma è uguale a 0 A ogni passo, l istruzione indicata dal contatore di programma viene eseguita Se l istruzione non è if, il contatore di programma aumenta di 1 Altrimenti, se la condizione non è verificata, il contatore di programma aumenta di 1 Altrimenti, il contatore di programma viene posto uguale all indice dell istruzione corrispondente all etichetta Istruzione end termina esecuzione Output contenuto nel registro 0 () IT / 150

76 Esempio Decidere se una sequenza di 10 numeri interi è palindroma (11) := loop: if (11) <= (10) goto yes if [10] <> [11] goto no (10) := (10) + 1 (11) := (11) - 1 if 0 = 0 goto loop yes: (0) := end no: (0) := end () IT / 150

77 La tesi Church-Turing Una funzione f : N n N è calcolabile se e solo se f è Post-calcolabile se e solo se f è Markov-calcolabile se e solo se f è ricorsiva se e solo se f è RAM-calcolabile È calcolabile tutto ciò che può essere calcolato da una macchina di Turing. () IT / 150

78 Linguaggi e Macchine di Turing () Lucidi di P.Crescenzi, Unifi 78 / 150

79 Funzioni calcolabili e linguaggi decidibili Che relazione esiste fra MdT e i linguaggi formali? Ricordiamo che Linguaggio L su un alfabeto Σ è un sottoinsieme di Σ χ L : Σ {0, 1}: funzione caratteristica di L { 1 se x L, χ L (x) = 0 altrimenti L decidibile se e solo se la funzione caratteristica è calcolabile con una MdT Esempio: L = {1 n : n = 2k} Vedremo che è possibile caratterizzare la relazione fra MdT e linguaggi secondo la gerarchia di Chomsky, () Lucidi di P.Crescenzi, Unifi 79 / 150

80 Semplici proprietà Se L è decidibile, allora L c è decidibile L decidibile sse mdt T con 1 stato finale che termina x e che accetta sse x L Se Solo se () Lucidi di P.Crescenzi, Unifi 80 / 150

81 Linguaggi semi-decidibili Un linguaggio L è semidecidibile se esiste MdT T T che con input x, se x L, allora T (x) termina in configurazione finale, altrimenti T (x) non termina L stop è semi-decidibile Deriva da esistenza di MdT universale U 1 Verifica che input sia c T, x 2 Esegue U con input c T e x: se termina, termina in configurazione finale () Lucidi di P.Crescenzi, Unifi 81 / 150

82 L c stop non è semi-decidibile L è decidibile se e solo se L e L c sono semi-decidibili Dimostrazione Solo se Se L è decidibile, allora L è chiaramente semi-decidibile Se L è decidibile, allora L c è decidibile e, quindi, semi-decidibile Se Siano T e T c due macchine di Turing che semi-decidono, rispettivamente, L e L c T dec (x) simula T (x) e T c (x) in parallelo su due nastri Per ogni x Σ, T (x) termina oppure T c (x) termina Se termina T (x), T dec (x) termina in stato finale altrimenti termina in configurazione di rigetto C orollario: L c stop non è semi-decidibile () Lucidi di P.Crescenzi, Unifi 82 / 150

83 Generatore di un linguaggio Generatore di un linguaggio L: MdT T che, con input λ, stampa una dopo l altra tutte le (potenzialmente infinite) stringhe contenute in L (in un qualunque ordine e eventualmente con ripetizione) L è semi-decidibile sse L ammette generatore Se: esegue generatore fino a trovare stringa in input Solo se: esegue visita in ampiezza di tutte le infinite computazioni con input x i () Lucidi di P.Crescenzi, Unifi 83 / 150

84 Ricordiamo la definizione di grammatica Grammatica: quadrupla G = (V, T, S, P) V : alfabeto di simboli non terminali T : alfabeto di simboli terminali S V : simbolo iniziale P: insieme di produzioni x y con x, y (V T ) e x contenente almeno un simbolo in V Produzione x y applicabile a stringa z se z = uxv: risultato w = uyv w direttamente generabile da z Frase z generabile da G se esiste sequenza finita di x 0,..., x n tale che x 0 = S x i direttamente generabile da x i 1 x n = z Linguaggio generato da G: insieme di stringhe generabili da G () Lucidi di P.Crescenzi, Unifi 84 / 150

85 La gerarchia di Chomski Tipo di linguaggio Tipo di produzioni Tipo 0 α β con α (V T ) V (V T ) e β (V T ) Contestuale α β con α (V T ) V (V T ), β (V T ) e β α Libero da contesto A β con A V e β (V T )(V T ) Regolare A ab e A a con A, B V e a T Obiettivo: determinare i corrispondenti modelli di calcolo () Lucidi di P.Crescenzi, Unifi 85 / 150

86 Grammatiche regolari, tipo 3 Le produzioni sono A a con A V e a T A ab con A, B V e a T Esempio: linguaggio delle sequenze unarie di lunghezza pari A 1B B 1 B 1A Produzione di 1111: A 1B B 1A 11A A 1B 111B B Ogni 1 prodotto da A si accoppia a un 1 prodotto da B () Lucidi di P.Crescenzi, Unifi 86 / 150

87 MdT di sola lettura e grammatiche regolari Abbiamo visto che un linguaggio regolare è riconosciuto da un automa a stati finiti Osserviamo che un automa a stati finiti è equivalente ad una macchina di Turing tale che la testina è di sola lettura ad ogni passo di calcolo la testina si sposta a destra () Lucidi di P.Crescenzi, Unifi 87 / 150

88 Macchine di Turing non deterministiche Grafo delle transizioni può includere: Arco uscente da q con etichetta contenente almeno due triple e tali che oppure σ, τ 1, m 1 σ, τ 2, m 2 τ 1 τ 2 m 1 m 2 Due o più archi distinti uscenti da q con etichette contenenti ciascuna almeno una tripla con lo stesso primo simbolo () Lucidi di P.Crescenzi, Unifi 88 / 150

89 Albero delle computazioni e decidibilità Computazione di mdt non deterministica: albero delle computazioni Nodi: configurazioni della mdt Archi: produzione di una configurazione da parte di un altra Cammino (finito o infinito) dell albero che parte dalla radice: cammino di computazione Input x accettato da mdt: albero delle computazioni include almeno un cammino di computazione accettante (cammino di computazione che termina in configurazione finale) Linguaggio accettato da mdt: insieme delle stringhe accettate () Lucidi di P.Crescenzi, Unifi 89 / 150

90 Un esempio Consideriamo il seguente linguaggio: L = {xx : x {0, 1} } MdT non deterministica che accetta L 1 Sposta testina di una posizione a destra. 2 Se simbolo letto non è, non deterministicamente sceglie di tornare a passo 1 oppure di eseguire passo 3: altrimenti, termina in stato non finale 3 Sposta contenuto del nastro di una posizione a destra. 4 Inserisce e posiziona testina su primo simbolo a sinistra 5 Verifica se le due stringhe separate uguali: in tal caso, termina in stato finale. Altrimenti, termina in stato non finale () Lucidi di P.Crescenzi, Unifi 90 / 150

91 q12 q10 q8 10 q q1 q6 q q1 q q6 010@ q1 q q6 01@ q1 010 q6 0@ q q q () Lucidi di P.Crescenzi, Unifi 91 / 150

92 MdT non deterministiche e MdT (deterministiche) Le macchine non deterministiche non sono più potenti delle macchine deterministiche. Infatti Per ogni mdt non deterministica T, esiste mdt T tale che L(T ) = L(T ) Idea: visita in ampiezza di albero delle computazioni Idea: visita in ampiezza di albero delle computazioni Un nastro usato come coda: configurazioni di T inserite man mano che sono generate ed estratte per generarne di nuove (all inizio configurazione iniziale) Un nastro usato per memorizzare configurazione estratta ed esaminarla per generare configurazioni da essa prodotte T estrae configurazione in testa alla coda: se è finale, termina in stato finale, altrimenti calcola configurazioni prodotte inserendole in coda Coda vuota al momento di estrazione: termina in stato non finale () Lucidi di P.Crescenzi, Unifi 92 / 150

93 Grammatiche di tipo 0 e macchine di Turing Se un linguaggio L è di tipo 0 allora esiste una macchina di Turing non deterministica a due nastri che semi-decide L Dimostrazione Macchina di Turing non deterministica con due nastri che opera nel modo seguente 1 Inizializza il secondo nastro con il simbolo iniziale S 2 Sia φ il contenuto del secondo nastro. Per ogni produzione α β in P, non deterministicamente applica (tante volte quanto è possibile) tale produzione a φ, ottenendo la stringa ψ direttamente generabile da φ 3 Se il contenuto del secondo nastro è uguale a x (che si trova sul primo nastro), termina nello stato q si. Altrimenti torna al secondo passo T accetta tutte e sole le stringhe che possono essere generate a partire da S Non determinismo non necessario () Lucidi di P.Crescenzi, Unifi 93 / 150

94 Grammatiche contestuali, tipo 1 Le produzioni sono α β con β α Esempio: linguaggio delle sequenze del tipo 0 n 1 n 2 n per n > 0 S 012 S 0A12 A1 1A A2 B122 1B B1 0B 00 0B 00A Produzione di : S 0A12 A1 1A 01A2 A2 B122 01B122 1B B1 0B1122 0B Ogni forma sentenziale contiene un solo simbolo non terminale Regola da applicare univocamente determinata () Lucidi di P.Crescenzi, Unifi 94 / 150

95 Grammatiche di tipo 1 (contestuali) e MdT Se un linguaggio L è contestuale allora esiste una macchina di Turing non deterministica a tre nastri che decide L Dimostrazione: come nel caso dei linguaggi di tipo 0 Quando cerca di applicare (in modo non deterministico) una produzione, verifica se la stringa ottenuta ha lunghezza minore oppure uguale all input x Se così non è, termina in stato non finale Evitare di rimanere sempre in stringhe della stessa lunghezza a causa dell applicazione ciclica della stessa sequenza di produzioni Numero di possibili stringhe distinte di lunghezza k, con 1 k x, è pari a N T k Mantiene sul terzo nastro un contatore inizializzato ogni volta che una stringa di lunghezza k viene generata sul secondo nastro per la prima volta Per ogni produzione che viene applicata, se la lunghezza della stringa generata non aumenta, allora il contatore viene incrementato di 1 Se il contatore supera N T k, allora termina in stato non finale () Lucidi di P.Crescenzi, Unifi 95 / 150

96 Osservazione Nella dimostrazione precedente, le celle utilizzate da ogni computazione su ogni singolo nastro è limitato dalla lunghezza della stringa x di input Ovvio per i primi due nastri Il terzo nastro contiene un contatore da 1 a, al massimo, N T x Operando in aritmetica in base N T, anche questo contatore richiede al più un numero di celle limitato da x () Lucidi di P.Crescenzi, Unifi 96 / 150

97 La classe P () IT / 150

98 Complessità di un problema Obiettivo: classificare i problemi dal punto di vista della loro complessità, cioè della quantità di risorse di calcolo che la loro soluzione richiede Risorse di interesse: Tempo e Memoria Fra le due risorse la prima è la più importante Problemi trattabili e problemi intrattabili: Trattabili: i problemi risolubili in tempo polinomiale con MdT Intrattabili quelli che sappiamo risolvere solo con algoritmi di costo esponenziale () IT / 150

99 Complessità temporale MdT T con singolo nastro che termina per ogni input Complessità temporale Funzione f : N N f (n): max numero di passi eseguiti da T con input di lunghezza n Analisi asintotica f e g: funzioni da N in N f = O(g(n)) se esistono c e n 0 tali che, per n n 0, f (n) cg(n) Esempio f (n) = n + 7n n 6 f non è O(n 5 ), f (n) = O(n 6 ) e f (n) = O(2 n ) () IT / 150

100 Due osservazioni sulla complessità temporale Dipende da modello di calcolo L = {0 n 1 n : n 0} Può essere deciso da MdT con due nastri in tempo O(n) Non esiste MdT (con un nastro) che decide L in tempo O(n) Esiste MdT (con un nastro) che decide L in tempo O(n 2 ) Dipende da codifica utilizzata Codifica unaria allunga rappresentazione di numero intero in modo esponenziale rispetto a codifica binaria Essendo input più lungo, MdT ha più tempo a disposizione Complessità temporale O(n) con codifica unaria, può voler dire complessità temporale O(2 n ) con codifica binaria () IT / 150

101 La classe P Insieme dei linguaggi L per i quali esiste MdT che decide L in tempo O(n k ) per qualche k 1 Robusta rispetto al modello di calcolo Tutti i modelli ragionevoli possono simularsi tra di loro con un overhead polinomiale Varianti deterministiche di macchine di Turing Algoritmi di Markov Macchine di Post Linguaggi di programmazione di alto livello Robusta rispetto alla codifica Tutte le codifiche in base b > 1 sono polinomialmente correlate tra di loro log b n = log c n log c b () IT / 150

102 Tipi di problemi Restringersi a problemi su linguaggi è restrittivo? Esempio Dato un grafo G con pesi positivi sugli archi e due nodi A e B del grafo Problema di decisione: Esiste un percorso da A a B? Problema di ottimizzazione: qual è il percorso più breve tra A a B? Problema di enumerazione: quanti sono i percorsi diversi da A a B? Problema di ricerca: dato x trova un percorso da A a B di lunghezza inferiore a x () IT / 150

103 Tipi di problemi Esempio Dato un grafo G con pesi positivi sugli archi e due nodi A e B del grafo Problema di decisione: Esiste un percorso da A a B? L 1 (G) = insieme dei grafi G per cui esiste un percorso da A a B Problema di ottimizzazione: qual è il percorso più breve tra A a B? L 2,y (G) = insieme dei grafi G per cui esiste un percorso da A a B di lunghezza inferiore a y Risolvere il problema di decisione per diversi valori di y permette di risolvere il problema di ottimizzazione Dato un grafo G sia W la somma di tutti i pesi associati agli archi del grafo Dato che i pesi sono positivi il percorso più breve è ha valore compreso fra 0 e W Effettua una ricerca binaria fra 0 e W cercando il più piccolo valore y per cui G appartiene a L 2,y (G) Ragionamenti analoghi si possono applicare ai problemi di enumerazione e di ricerca () IT / 150

ITLCC 2006/10/6 19:09 page 7 #3

ITLCC 2006/10/6 19:09 page 7 #3 ITLCC 2006/10/6 19:09 page 7 #3 Capitolo 2 Macchine di Turing SOMMARIO In questo capitolo introdurremo il modello di calcolo proposto dal logico matematico inglese Alan Turing, in un suo famoso articolo

Dettagli

Macchine di Turing. Francesco Paoli. Istituzioni di logica, Francesco Paoli (Istituzioni di logica, ) Macchine di Turing 1 / 29

Macchine di Turing. Francesco Paoli. Istituzioni di logica, Francesco Paoli (Istituzioni di logica, ) Macchine di Turing 1 / 29 Macchine di Turing Francesco Paoli Istituzioni di logica, 2016-17 Francesco Paoli (Istituzioni di logica, 2016-17) Macchine di Turing 1 / 29 Alan M. Turing (1912-1954) Francesco Paoli (Istituzioni di logica,

Dettagli

La tesi di Church-Turing

La tesi di Church-Turing ITLCC 2006/11/12 21:06 page 79 #3 Capitolo 5 La tesi di Church-Turing SOMMARIO Sebbene il concetto di algoritmo abbia avuto una lunga storia nel campo della matematica, il concetto formale di algoritmo

Dettagli

Ma il programma in Fig. 8.2 del libro? Stampa hello, world, dato un input n se e solo se l equazione

Ma il programma in Fig. 8.2 del libro? Stampa hello, world, dato un input n se e solo se l equazione Problemi che i calcolatori non possono risolvere E importante sapere se un programma e corretto, cioe fa uello che ci aspettiamo. E facile vedere che il programma Ma il programma in Fig. 8.2 del libro?

Dettagli

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing 1 Macchina di Turing (MDT ) Un dispositivo che accede a un nastro (potenzialmente) illimitato diviso in celle contenenti ciascuna un simbolo

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Informatica Teorica. Macchine a registri

Informatica Teorica. Macchine a registri Informatica Teorica Macchine a registri 1 Macchine a registri RAM (Random Access Machine) astrazione ragionevole di un calcolatore nastro di ingresso nastro di uscita unità centrale in grado di eseguire

Dettagli

Linguaggi Regolari e Linguaggi Liberi

Linguaggi Regolari e Linguaggi Liberi Linguaggi Regolari e Linguaggi Liberi Linguaggi regolari Potere espressivo degli automi Costruzione di una grammatica equivalente a un automa Grammatiche regolari Potere espressivo delle grammatiche 1

Dettagli

Le parole dell informatica: algoritmo e decidibilità

Le parole dell informatica: algoritmo e decidibilità Le parole dell informatica: algoritmo e decidibilità Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Ciclo di seminari su un Vocabolario Filosofico dell Informatica

Dettagli

ELEMENTI DI PROGRAMMAZIONE a.a. 2012/13 MACCHINE, ALGORITMI, PROGRAMMI

ELEMENTI DI PROGRAMMAZIONE a.a. 2012/13 MACCHINE, ALGORITMI, PROGRAMMI ELEMENTI DI PROGRAMMAZIONE a.a. 22/3 MACCHINE, ALGORITMI, PROGRAMMI Andrea Prevete, UNINA2 23 UNA GERARCHIA DI MACCHINE macchine combinatorie macchine sequenziali (automi a stati finiti)... macchine di

Dettagli

Insiemi, Numeri, Terminologia. Prof. Simone Sbaraglia

Insiemi, Numeri, Terminologia. Prof. Simone Sbaraglia Insiemi, Numeri, Terminologia Prof. Simone Sbaraglia Corso Rapido di Logica Matematica La logica formale definisce le regole cui deve obbedire qualsiasi teoria deduttiva. Una proposizione e` una affermazione

Dettagli

Il concetto di calcolatore e di algoritmo

Il concetto di calcolatore e di algoritmo Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica

Dettagli

Linguaggi Regolari e Linguaggi Liberi

Linguaggi Regolari e Linguaggi Liberi Linguaggi Regolari e Linguaggi Liberi Potenza espressiva degli automi Potenza espressiva delle grammatiche 9/11/2004 Programmazione - Luca Tesei 1 Linguaggi Regolari Tutti i linguaggi che possono essere

Dettagli

Linguaggio universale, riduzioni, e teorema di Rice. Linguaggio universale, riduzioni, e teorema di Rice

Linguaggio universale, riduzioni, e teorema di Rice. Linguaggio universale, riduzioni, e teorema di Rice l linguaggio universale Il linguaggio universale L u e l insieme delle stringhe binarie che codificano una coppia (M,w) dove w L(M). Esiste una TM U, detta TM universale, tale che L u = L(U). U ha tre

Dettagli

La codifica digitale

La codifica digitale La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore

Dettagli

ELEMENTI DI PROGRAMMAZIONE a.a. 2013/14 UNA GERARCHIA DI MACCHINE

ELEMENTI DI PROGRAMMAZIONE a.a. 2013/14 UNA GERARCHIA DI MACCHINE ELEMENTI DI PROGRAMMAZIONE a.a. 23/4 UNA GERARCHIA DI MACCHINE Andrea Prevete, UNINA2 24 UNA GERARCHIA DI MACCHINE macchine combinatorie macchine sequenziali (automi a numero finito di stati)... macchine

Dettagli

Macchine di Turing: somma di due numeri

Macchine di Turing: somma di due numeri Informatica Teorica 2/2 M.Di Ianni Macchine di Turing: somma di due numeri Vogliamo definire una macchina di Turing che, presi in input due numeri n e m espressi in notazione binaria, calcola il valore

Dettagli

Parole note, nuovi significati: linguaggio, determinismo e infinito

Parole note, nuovi significati: linguaggio, determinismo e infinito Parole note, nuovi significati: linguaggio, determinismo e infinito Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Ciclo di seminari su un Vocabolario Filosofico

Dettagli

Costruzione di espressioni regolari 4

Costruzione di espressioni regolari 4 ostruzione di espressioni regolari 4 Indicando con d uno dei possibili digits {,, 2,,9} --possiamo esprimere il sotto linguaggio dei digits come d = ( + + 2 +.. + 9) Quale linguaggio produce l espressione:

Dettagli

Problemi, istanze, soluzioni

Problemi, istanze, soluzioni lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un

Dettagli

Rappresentazione dell Informazione

Rappresentazione dell Informazione Rappresentazione dell Informazione Rappresentazione delle informazioni in codice binario Caratteri Naturali e Reali positivi Interi Razionali Rappresentazione del testo Una stringa di bit per ogni simbolo

Dettagli

Fondamenti di Informatica. Algoritmo. Algoritmo funzionale. Prof.ssa Enrica Gentile Informatica e Comunicazione Digitale a.a.

Fondamenti di Informatica. Algoritmo. Algoritmo funzionale. Prof.ssa Enrica Gentile Informatica e Comunicazione Digitale a.a. Fondamenti di Informatica Prof.ssa Enrica Gentile Informatica e Comunicazione Digitale a.a. 2011-2012 Algoritmo L algoritmo è una sequenza finita di istruzioni, mediante le quali un qualunque operatore

Dettagli

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Descrizione delle operazioni di calcolo. Espressioni costanti semplici Descrizione delle operazioni di calcolo Come abbiamo detto l interprete è in grado di generare nuovi valori a partire da valori precedentemente acquisiti o generati. Il linguaggio di programmazione permette

Dettagli

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012 Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 Sommario I sistemi di numerazione Il sistema binario Altri sistemi di numerazione Algoritmi di conversione Esercizi 07/03/2012 2 Sistemi

Dettagli

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi Lezione 4 Problemi trattabili e soluzioni sempre più efficienti Gianluca Rossi Trattabile o intrattabile? Consideriamo ora il problema, ben noto a tutti gli studenti a partire dalla scuola media, di calcolare

Dettagli

Esercizi di Matematica per la prova di ammissione alla Scuola Galileiana /16

Esercizi di Matematica per la prova di ammissione alla Scuola Galileiana /16 Esercizi di Matematica per la prova di ammissione alla Scuola Galileiana - 015/16 Esercizio 1 Per quali valori n Z \ {0} l espressione è un numero intero positivo? (n + 5)(n + 6) 6n Soluzione. Il problema

Dettagli

Esercizi di Fondamenti di Informatica per la sicurezza. Stefano Ferrari

Esercizi di Fondamenti di Informatica per la sicurezza. Stefano Ferrari Esercizi di Fondamenti di Informatica per la sicurezza tefano Ferrari 23 dicembre 2003 2 Argomento 1 Grammatiche e linguaggi Esercizi Es. 1.1 Definiti i linguaggi: L 1 = {aa, ab, bc, c} L 2 = {1, 22, 31}

Dettagli

La codifica. dell informazione

La codifica. dell informazione 00010010101001110101010100010110101000011100010111 00010010101001110101010100010110101000011100010111 La codifica 00010010101001110101010100010110101000011100010111 dell informazione 00010010101001110101010100010110101000011100010111

Dettagli

PARTE III MACCHINE A REGISTRI

PARTE III MACCHINE A REGISTRI PARTE III MACCHINE A REGISTRI Macchine a registri (RAM) Modelli di costo RAM e macchine di Turing Macchine a registri elementari 1 3.1 MACCHINE A REGISTRI (RAM: Random Access Machines) Introdotte da Shepherdson

Dettagli

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la

Dettagli

Forma Normale di Chomsky

Forma Normale di Chomsky 2. Eliminazione delle produzioni unitarie Forma Normale di Chomsky Una produzione si dice unitaria se è della forma A! B. Le produzioni unitarie in pratica consistono in una ridenominazione di variabili,

Dettagli

Riassumiamo le proprietà dei numeri reali da noi utilizzate nel corso di Geometria.

Riassumiamo le proprietà dei numeri reali da noi utilizzate nel corso di Geometria. Capitolo 2 Campi 2.1 Introduzione Studiamo ora i campi. Essi sono una generalizzazione dell insieme R dei numeri reali con le operazioni di addizione e di moltiplicazione. Nel secondo paragrafo ricordiamo

Dettagli

Tipi di dato primitivi

Tipi di dato primitivi Tipi di dato primitivi (oltre int) Tipi di dato primitivi int (già trattati) Valori logici (ricordati) Valori reali Valori carattere Informatica - A.A. 2009/2010 - Tipi di dato 2 1 Valori logici (il caso

Dettagli

Conversione di base. Conversione decimale binario. Si calcolano i resti delle divisioni per due

Conversione di base. Conversione decimale binario. Si calcolano i resti delle divisioni per due Conversione di base Dato N>0 intero convertirlo in base b dividiamo N per b, otteniamo un quoto Q 0 ed un resto R 0 dividiamo Q 0 per b, otteniamo un quoto Q 1 ed un resto R 1 ripetiamo finché Q n < b

Dettagli

Università degli Studi di Udine. 1 Automi e Linguaggi. Prova Scritta di Fondamenti dell Informatica II Alcune Soluzioni

Università degli Studi di Udine. 1 Automi e Linguaggi. Prova Scritta di Fondamenti dell Informatica II Alcune Soluzioni Università degli Studi di Udine Prova Scritta di Fondamenti dell Informatica II Alcune Soluzioni 1 Automi e Linguaggi 1. Sia dato p N, p > 0 dimostri che il linguaggio è regolare. L p = { a 0 a 1... a

Dettagli

Codifica binaria. Rappresentazioni medianti basi diverse

Codifica binaria. Rappresentazioni medianti basi diverse Codifica binaria Rappresentazione di numeri Notazione di tipo posizionale (come la notazione decimale). Ogni numero è rappresentato da una sequenza di simboli Il valore del numero dipende non solo dalla

Dettagli

Un monomio è in forma normale se è il prodotto di un solo fattore numerico e di fattori letterali con basi diverse. Tutto quanto sarà detto di

Un monomio è in forma normale se è il prodotto di un solo fattore numerico e di fattori letterali con basi diverse. Tutto quanto sarà detto di DEFINIZIONE Espressione algebrica costituita dal prodotto tra una parte numerica (coefficiente) e una o più variabili e/o costanti (parte letterale). Variabili e costanti possono comparire elevate a potenza

Dettagli

04 - Logica delle dimostrazioni

04 - Logica delle dimostrazioni Università degli Studi di Palermo Facoltà di Economia CdS Sviluppo Economico e Cooperazione Internazionale Appunti del corso di Matematica 04 - Logica delle dimostrazioni Anno Accademico 013/014 D. Provenzano,

Dettagli

Le grammatiche formali

Le grammatiche formali Le grammatiche formali Il carattere generativo dei sistemi linguisticii i Consideriamo i la seguente frase: Un gatto rincorre il topo Non facciamo difficoltà a riconoscere che si tratta di una frase sintatticamente

Dettagli

Aniello Murano Decidibilità delle teorie logiche

Aniello Murano Decidibilità delle teorie logiche Aniello Murano Decidibilità delle teorie logiche 11 Lezione n. Parole chiave: Teorie logiche Corso di Laurea: Informatica Codice: Email Docente: murano@ na.infn.it A.A. 2008-2009 Prefazione Nelle lezioni

Dettagli

APPUNTI DI INFORMATICA

APPUNTI DI INFORMATICA APPUNTI DI INFORMATICA Per il biennio di liceo scientifico scienze applicate Sommario Il calcolo binario... 2 Numerazione Decimale... 2 Numerazione Binaria... 2 Conversione Binario -> Decimale... 2 Conversione

Dettagli

Logica proposizionale

Logica proposizionale Logica proposizionale Proposizione: frase compiuta che è sempre o vera o falsa. Connettivi Posti in ordine di precedenza: not, and, or, implica, doppia implicazione Sintassi Le proposizioni sono costituite

Dettagli

Algoritmi e Principi dell Informatica

Algoritmi e Principi dell Informatica Algoritmi e Principi dell Informatica Appello del 20 Febbraio 2012 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 2h e 30 Chi deve sostenere solo il modulo di Informatica

Dettagli

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: Tipi di dato Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: esprimere in modo sintetico la loro rappresentazione in memoria, e un insieme di operazioni ammissibili permettere

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13)

LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13) LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13) DISPENSA N. 4 Sommario. Dimostriamo il Teorema di Completezza per il Calcolo dei Predicati del I ordine. 1. Teorema di Completezza Dimostriamo il Teorema

Dettagli

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Introduzione al Corso Maria Rita Di Berardini (Camerino), Emanuela Merelli (Ascoli) 1 1 Scuola di Scienze e Tecnologie - Sezione di Informatica Università di Camerino Parte I Il concetto di Algoritmo Il

Dettagli

La codifica. dell informazione

La codifica. dell informazione La codifica dell informazione (continua) Codifica dei numeri Il codice ASCII consente di codificare le cifre decimali da 0 a 9 fornendo in questo modo un metodo per la rappresentazione dei numeri Il numero

Dettagli

LA METAFORA DELL UFFICIO

LA METAFORA DELL UFFICIO LA METAFORA DELL UFFICIO Lavagna di lavoro Lavagna di programma Sportello utenti Impiegato Capo Ufficio LAVAGNA DI LAVORO Chiamiamo variabili le posizioni sulla lavagna, identificate ognuna da un nome

Dettagli

Aritmetica dei Calcolatori Elettronici

Aritmetica dei Calcolatori Elettronici Aritmetica dei Calcolatori Elettronici Prof. Orazio Mirabella L informazione Analogica Segnale analogico: variabile continua assume un numero infinito di valori entro l intervallo di variazione intervallo

Dettagli

8. Completamento di uno spazio di misura.

8. Completamento di uno spazio di misura. 8. Completamento di uno spazio di misura. 8.1. Spazi di misura. Spazi di misura completi. Definizione 8.1.1. (Spazio misurabile). Si chiama spazio misurabile ogni coppia ordinata (Ω, A), dove Ω è un insieme

Dettagli

PARTE III MACCHINE A REGISTRI

PARTE III MACCHINE A REGISTRI PARTE III MACCHINE A REGISTRI Macchine a registri (RAM) Modelli di costo RAM e macchine di Turing Macchine a registri elementari 1 3.1 MACCHINE A REGISTRI (RAM: Random Access Machines) Introdotte da Shepherdson

Dettagli

MODULO 07 LA MACCHINA DI TURING

MODULO 07 LA MACCHINA DI TURING MODULO 07 LA MACCHINA DI TURING Nel 1936 Alan Turing presenta una definizione di computabilità basata sull osservazione del comportamento di un agente umano che sta eseguendo un calcolo (algoritmo) con

Dettagli

Sommario. Caratterizzazione alternativa di NP: il verificatore polinomiale esempi di problemi in NP

Sommario. Caratterizzazione alternativa di NP: il verificatore polinomiale esempi di problemi in NP Sommario Caratterizzazione alternativa di NP: il verificatore polinomiale esempi di problemi in NP I conjecture that there is no good algorithm for the traveling salesman problem. My reasons are the same

Dettagli

Grammatiche. Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione

Grammatiche. Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione Grammatiche Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione Esempio dei numeri interi Si consideri il linguaggio

Dettagli

Moltiplicazione. Divisione. Multipli e divisori

Moltiplicazione. Divisione. Multipli e divisori Addizione Sottrazione Potenze Moltiplicazione Divisione Multipli e divisori LE QUATTRO OPERAZIONI Una operazione aritmetica è quel procedimento che fa corrispondere ad una coppia ordinata di numeri (termini

Dettagli

Somma di numeri binari

Somma di numeri binari Fondamenti di Informatica: Codifica Binaria dell Informazione 1 Somma di numeri binari 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 Esempio: 10011011 + 00101011 = 11000110 in base e una base Fondamenti di

Dettagli

Forme Normali. Forma normale di Chomsky. E caratterizzata da regole di due tipi. A! BC dove A, B, C $ V N A! a con a $ V T. Forma normale di Greibach

Forme Normali. Forma normale di Chomsky. E caratterizzata da regole di due tipi. A! BC dove A, B, C $ V N A! a con a $ V T. Forma normale di Greibach Forme Normali A partire da una grammatica Context-free G è sempre possibile costruire una grammatica equivalente G ovvero L(G) = L(G ) che abbiano le produzioni in forme particolari, dette forme normali.

Dettagli

MATEMATICA DI BASE 1

MATEMATICA DI BASE 1 MATEMATICA DI BASE 1 Francesco Oliveri Dipartimento di Matematica, Università di Messina 30 Agosto 2010 MATEMATICA DI BASE MODULO 1 Insiemi Logica Numeri Insiemi Intuitivamente, con il termine insieme

Dettagli

UNA GERARCHIA DI MACCHINE

UNA GERARCHIA DI MACCHINE ELEMENTI DI PROGRAMMAZIONE a.a. 2015/16 UNA GERARCHIA DI MACCHINE UNA GERARCHIA DI MACCHINE macchine combinatorie macchine sequenziali (automi a numero finito di stati)... macchine di Turing Macchine di

Dettagli

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo 1 Cos è l informatica? L informatica è la scienza della rappresentazione e dell elaborazione dell informazione Algoritmi e loro proprietà Proprietà formali degli Algoritmi Efficienza rispetto al tempo

Dettagli

L AUTOMA ESECUTORE L AUTOMA ESECUTORE

L AUTOMA ESECUTORE L AUTOMA ESECUTORE L AUTOMA ESECUTORE Metodo Risolutivo (algoritmo) Un automa capace di ricevere dall esterno una descrizione dello algoritmo richiesto DATI Esecutore RISULTATI cioè capace di interpretare un linguaggio (linguaggio

Dettagli

Informatica, Algoritmi, Linguaggi

Informatica, Algoritmi, Linguaggi Elementi di Informatica e Applicazioni Numeriche T Informatica, Algoritmi, Linguaggi Cos'è l'informatica? Che cos'è l'informatica? Cos'è l'informatica? Che cos'è l'informatica? Dell'informatica possiamo

Dettagli

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari Lezione 4 L artimetica binaria: I numeri relativi e frazionari Sommario I numeri relativi I numeri frazionari I numeri in virgola fissa I numeri in virgola mobile 1 Cosa sono inumeri relativi? I numeri

Dettagli

In molte applicazioni sorge il problema di sapere in quanti modi possibili si può presentare un certo fenomeno.

In molte applicazioni sorge il problema di sapere in quanti modi possibili si può presentare un certo fenomeno. Definizione Oggetto del calcolo combinatorio è quello di determinare il numero dei modi mediante i quali possono essere associati, secondo prefissate regole, gli elementi di uno stesso insieme o di più

Dettagli

= < < < < < Matematica 1

= < < < < < Matematica  1 NUMERI NATURALI N I numeri naturali sono: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,... L insieme dei numeri naturali è indicato con la lettera. Si ha cioè: N= 0,1,2,3,4,5,6,7,.... L insieme dei naturali privato

Dettagli

CONVERSIONE BINARIO DECIMALE NB: Convertire in decimale il numero binario N = N =

CONVERSIONE BINARIO DECIMALE NB: Convertire in decimale il numero binario N = N = NOTAZIONE BINARIA, OTTALE, ESADECIMALE CODIFICA DI NUMERI INTERI RELATIVI 1 CONVERSIONE BINARIO DECIMALE Convertire in decimale il numero binario N = 101011.1011 2 N = 1 2 5 + 0 2 4 + 1 2 3 + 0 2 2 + 1

Dettagli

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing 1 Macchina di Turing (MDT ) Un dispositivo che accede a un nastro (potenzialmente) illimitato diviso in celle contenenti ciascuna un simbolo

Dettagli

I.4 Rappresentazione dell informazione

I.4 Rappresentazione dell informazione I.4 Rappresentazione dell informazione Università di Ferrara Dipartimento di Economia e Management Insegnamento di Informatica Ottobre 13, 2015 Argomenti Introduzione 1 Introduzione 2 3 L elaboratore Introduzione

Dettagli

2. I numeri reali e le funzioni di variabile reale

2. I numeri reali e le funzioni di variabile reale . I numeri reali e le funzioni di variabile reale Introduzione Il metodo comunemente usato in Matematica consiste nel precisare senza ambiguità i presupposti, da non cambiare durante l elaborazione dei

Dettagli

Rapida Nota sulla Rappresentazione dei Caratteri

Rapida Nota sulla Rappresentazione dei Caratteri TECNOLOGIA DIGITALE TECNOLOGIA DIGITALE (segue) CPU, memoria centrale e dispositivi sono realizzati con tecnologia elettronica digitale Dati ed operazioni vengono codificati tramite sequenze di bit 8 bit

Dettagli

La "macchina" da calcolo

La macchina da calcolo La "macchina" da calcolo Abbiamo detto che gli algoritmi devono essere scritti in un linguaggio "comprensibile all'esecutore" Se il nostro esecutore è il "calcolatore", questo che linguaggio capisce? che

Dettagli

Rappresentazioni numeriche

Rappresentazioni numeriche Rappresentazioni numeriche Un numero è dotato di un valore una rappresentazione La rappresentazione di un numero è il sistema che utilizziamo per indicarne il valore. Normalmente è una sequenza (stringa)

Dettagli

CORSO DI AZZERAMENTO DI MATEMATICA

CORSO DI AZZERAMENTO DI MATEMATICA CORSO DI AZZERAMENTO DI MATEMATICA 1 LE BASI FONDAMENTALI INSIEMI INSIEMI NUMERICI (naturali, interi, razionali e reali) CALCOLO LETTERALE RICHIAMI DI TRIGONOMETRIA I NUMERI COMPLESSI ELEMENTI DI GEOMETRIA

Dettagli

Elaborazione dell informazione

Elaborazione dell informazione Elaborazione dell informazione Primo esempio Ricominciamo dai numeri (45 + 25) è definita rigorosamente Un primo calcolatore (a) Figura 1.1 Configurazione del pallottoliere (a) prima e (b) dopo l esecuzione

Dettagli

Teoria della Complessità Computazionale. Accettazione/riconoscimento di linguaggi in tempo/spazio

Teoria della Complessità Computazionale. Accettazione/riconoscimento di linguaggi in tempo/spazio Teoria della Complessità Computazionale. Obiettivo: classifcare i problemi (risolubili con algoritmi) in base alle risorse di calcolo che richiedono per essere risolti. Risorse: tempo e spazio (memoria)

Dettagli

Possibile applicazione

Possibile applicazione p. 1/4 Assegnamento Siano dati due insiemi A e B entrambi di cardinalità n. Ad ogni coppia (a i,b j ) A B è associato un valore d ij 0 che misura la "incompatibilità" tra a i e b j, anche interpretabile

Dettagli

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. E. Calabrese: Fondamenti di Informatica Algoritmi-1 Algoritmi di ricerca Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. Per esempio: - cercare

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi Codice BCD Prima di passare alla rappresentazione dei numeri relativi in binario vediamo un tipo di codifica che ha una certa rilevanza in alcune applicazioni: il codice BCD (Binary Coded Decimal). È un

Dettagli

Linguaggi di Programmazione Corso C. Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali. Nicola Fanizzi

Linguaggi di Programmazione Corso C. Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali. Nicola Fanizzi Linguaggi di Programmazione Corso C Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali Nicola Fanizzi (fanizzi@di.uniba.it) Dipartimento di Informatica Università degli Studi di Bari Grammatiche

Dettagli

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point)

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point) Rappresentazione di Numeri Reali Un numero reale è una grandezza continua Può assumere infiniti valori In una rappresentazione di lunghezza limitata, deve di solito essere approssimato. Esistono due forme

Dettagli

Macchina di Turing ... !!... !!! a b b! b a! Nastro di Input. testina. s t q i. s r. Unità di Controllo q j S / D / F

Macchina di Turing ... !!... !!! a b b! b a! Nastro di Input. testina. s t q i. s r. Unità di Controllo q j S / D / F Macchina di Turing Nastro di Input...!!! a b b! b a! testina!!... s r s t q i Unità di Controllo q j Q S / D / F P Definizione Formale Una macchina di Turing deterministica è una sestupla

Dettagli

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2 Un ripasso di aritmetica: Conversione dalla base 10 alla base 2 Dato un numero N rappresentato in base dieci, la sua rappresentazione in base due sarà del tipo: c m c m-1... c 1 c 0 (le c i sono cifre

Dettagli

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl Approfondimento 2.1 Non è questo il testo dove trattare esaurientemente queste tecniche semantiche. Ci accontenteremo di dare un semplice esempio delle tecniche basate sui sistemi di transizione per dare

Dettagli

Macchine sequenziali. Automa a Stati Finiti (ASF)

Macchine sequenziali. Automa a Stati Finiti (ASF) Corso di Calcolatori Elettronici I Macchine sequenziali Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie dell Informazione Corso

Dettagli

Corso di Analisi Matematica I numeri reali

Corso di Analisi Matematica I numeri reali Corso di Analisi Matematica I numeri reali Laurea in Informatica e Comunicazione Digitale A.A. 2013/2014 Università di Bari ICD (Bari) Analisi Matematica 1 / 57 1 Insiemi e logica 2 Campi ordinati 3 Estremo

Dettagli

TEORIA DEI SISTEMI SISTEMI LINEARI

TEORIA DEI SISTEMI SISTEMI LINEARI TEORIA DEI SISTEMI Laurea Specialistica in Ingegneria Meccatronica Laurea Specialistica in Ingegneria Gestionale Indirizzo Gestione Industriale TEORIA DEI SISTEMI SISTEMI LINEARI Ing. Cristian Secchi Tel.

Dettagli

Pumping lemma per i linguaggi Context-free

Pumping lemma per i linguaggi Context-free Pumping lemma per i linguaggi Context-free Sia L un linguaggio context-free. E possibile determinare una costante k, dipendente da L, tale che qualunque stringa z! L con z > k si può esprimere come z=

Dettagli

Argomenti diagonali. Gianluigi Bellin

Argomenti diagonali. Gianluigi Bellin Argomenti diagonali Gianluigi Bellin November 30, 2010 La cardinalità degli insiemi. Consideriamo la relazione di equivalenza tra insiemi ottenuta ponendo A B se e solo se esiste una biiezione f : A B.

Dettagli

Codifica. Rappresentazione di numeri in memoria

Codifica. Rappresentazione di numeri in memoria Codifica Rappresentazione di numeri in memoria Rappresentazione polinomiale dei numeri Un numero decimale si rappresenta in notazione polinomiale moltiplicando ciascuna cifra a sinistra della virgola per

Dettagli

Cap. 2 - Rappresentazione in base 2 dei numeri interi

Cap. 2 - Rappresentazione in base 2 dei numeri interi Cap. 2 - Rappresentazione in base 2 dei numeri interi 2.1 I NUMERI INTERI RELATIVI I numeri relativi sono numeri con il segno: essi possono essere quindi positivi e negativi. Si dividono in due categorie:

Dettagli

Corso di Architettura degli Elaboratori

Corso di Architettura degli Elaboratori Corso di Architettura degli Elaboratori Codifica dell'informazione: Numeri Binari (lucidi originali della Prof.ssa Zacchi e del Prof. Balossino, rivisti dal Prof. Baldoni) 1 Codifica dell'informazione?

Dettagli

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande / VERSIONE 1

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande / VERSIONE 1 Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande/ VERSIONE 1 1) In Python, se scrivo v = [ ] in un programma, vuol dire che a) v è un quadrato b) v è un insieme vuoto

Dettagli

Corso di Informatica di Base

Corso di Informatica di Base Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere

Dettagli

Rappresentazione dell informazione

Rappresentazione dell informazione Rappresentazione dell informazione Problema che coinvolge aspetti filosofici Interessa soprattutto distinguere informazioni diverse Con un solo simbolo è impossibile Pertanto l insieme minimo è costituito

Dettagli

Informazione binaria: - codici binari, notazione binaria/ottale/esadecimale -

Informazione binaria: - codici binari, notazione binaria/ottale/esadecimale - Informazione binaria: - codici binari, notazione binaria/ottale/esadecimale - Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin ... Algoritmi,

Dettagli

Analizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser.

Analizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser. Analizzatore lessicale o scanner Dispensa del corso di Linguaggi e Traduttori A.A. 2005-2006 Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser. Lo scanner,

Dettagli

Algoritmi e soluzione di problemi

Algoritmi e soluzione di problemi Algoritmi e soluzione di problemi Dato un problema devo trovare una soluzione. Esempi: effettuare una telefonata calcolare l area di un trapezio L algoritmo è la sequenza di operazioni (istruzioni, azioni)

Dettagli

Espressività e limitazioni delle grammatiche regolari

Espressività e limitazioni delle grammatiche regolari Espressività e limitazioni delle grammatiche regolari Vantaggi: Le grammatiche regolari consentono di esprimere una significativa classe di linguaggi: linguaggi con un numero di sequenze infinito grazie

Dettagli