12. MACCHINE DI TURING E CALCOLABILITA
|
|
|
- Fabio Luciani
- 10 anni fa
- Visualizzazioni
Transcript
1 12. MACCHINE DI TURING E CALCOLABILITA
2 12.1 Funzioni calcolabili secondo Turing 12.2 Insiemi e linguaggi decidibili e semidecidibili 12.3 Macchine di Turing multinastro e nondeterministiche 12.4 Macchina di Turing universale 12.5 Funzioni non calcolabili e problemi indecidibili 12.6 Relazioni tra macchine di Turing e calcolatori
3 12.1 FUNZIONI CALCOLABILI SECONDO TURING La macchina di Turing è un automa con testina di scrittura/lettura su nastro bidirezionale "potenzialmente" illimitato. Ad ogni istante la macchina si trova in uno stato appartenente ad un insieme finito e legge un carattere sul nastro. La funzione di transizione, in modo deterministico, fa scrivere un carattere, fa spostare la testina in una direzione o nell'altra, fa cambiare lo stato. Tali macchine (modelli di calcolo) sono state introdotte da A. M. Turing nel con lo scopo di - dare una definizione formale del concetto di algoritmo
4 - dimostrare l esistenza di problemi non risolubili mediante algoritmi
5 - Le macchine di Turing: consentono il riconoscimento, almeno "parziale" (semidecidibilità, accettazione), di tutti i linguaggi di tipo 0 sono in grado di simulare ogni linguaggio di programmazione ed ogni altro modello di calcolo ("tesi di Church-Turing").
6 Def. Macchina di Turing: M=<Σ,b,K,q0,F,δ> Σ alfabeto di simboli b carattere speciale, spazio bianco (blank) K insieme finito di stati q 0 stato iniziale F insieme di stati finali δ funzione di transizione (parziale) δ: K (Σ {b}) K (Σ {b}) {d,s,i} d,s,i indicano spostamento a destra, a sinistra e immobilità della testina
7 Σb = Σ {b}
8 ESEMPIO Consideriamo la macchina M con la funzione di transizione così definita: δ (q 0, a) = (q 0, b, d) δ (q 0, b) = (q 1, c, d) δ (q 0, b) = (q 0, a, d) δ (q 1, b) = (q 2, b, s) Stato iniziale: q 0 Stato finale: q 2 Come si comporta la macchina se viene avviata nello stato iniziale con la testina sul primo carattere della stringa aaabb? Come si comporta se viene avviata nello stato iniziale con la testina sul primo carattere della stringa aacbb?
9 Configurazioni e computazioni NOTA BENE. Anche se il nastro è infinito (illimitato), su di esso in ogni istante c è un numero finito di caratteri b Def. Configurazione di una macchina è una terna costituita dalla (minima) porzione finita del nastro che contiene i simboli diversi da b, dalla posizione della testina, dallo stato corrente. Una configurazione viene generalmente rappresentata da una stringa appartenente al linguaggio (Σb)*.K.(Σb)+ ESEMPIO abbbbqiabbbbb
10 La conoscenza di una configurazione e della funzione di transizione consente di determinare la configurazione successiva.
11 Normalmente si fa l'ipotesi che all'inizio della computazione il nastro contenga l'input, il resto del nastro contenga b e la testina sia sul primo carattere dell'input Configurazione iniziale: stringa appartenente al linguaggio {q 0 }.(Σb)+ Configurazione finale: stringa appartenente al linguaggio (Σb)*.F.(Σb)+ La posizione della testina nella configurazione finale è in genere irrilevante.
12 Def. Una macchina di Turimg M determina una transizione dalla configurazione c alla configurazione c (indicato da: c c ) se c si ottiene da c applicando la funzione di transizione della macchina M. Def. Una computazione eseguita da una macchina di Turing è una sequenza eventualmente infinita di configurazioni <c1,c2,...,ci,...> tali che: c 1 c 2... c i c i+1...
13 La notazione c 1 * c 2 indica l'esistenza di una computazione che da c 1 porta a c 2 tramite un numero finito (eventualmente 0) di transizioni.
14 In ogni computazione può esistere al più una configurazione finale; se la macchina raggiunge una configurazione finale il calcolo termina. Un calcolo può terminare anche perché non è definita la configurazione successiva di una data configurazione (la funzione di transizione non è definita per quella configurazione). Def. Una computazione finita c 1 c 2... cn è massimale se non esiste una configurazione c tale che c n c. In particolare siamo interessati a quelle computazioni massimali che portano dallo stato iniziale ad uno stato finale cioè computazioni del tipo c 0 * c n in cui c n è una configurazione finale le altre corrispondono ad errore o a
15 risultato non definito.
16 Def. Macchina di Turing trasduttrice: ogni configurazione finale è del tipo xbqy, dove x è il contenuto del nastro all'inizio della computazione. Def. Una macchina trasduttrice calcola la funzione f se per tutte e sole le x su cui f è definita esiste q F tale che: q 0 x *xbqf(x)
17 Si noti che la funzione f può essere una funzione da Γ* a Γ* (per un opportuno alfabeto Γ). In tal caso sia x che f(x) appartengono a Γ* e se Σ è l alfabeto della macchina M avremo Γ Σ. Come caso particolare la funzione calcolata può essere una funzione numerica definita su interi in notazione binaria o una funzione numerica definita su interi in notazione decimale. In tal caso sia x che f(x) sono numeri interi rappresentati rispettivamente in notazione binaria o decimale. ESEMPIO
18 Macchina di Turing M che calcola la funzione identità su una stringa x definita sull alfabeto {a, b}. Tale macchina esegue la computazione: q 0 x *xbqx con q stato finale.
19 Def. Una funzione (parziale) f per la quale esiste una macchina di Turing che la calcola è detta calcolabile secondo Turing (T-calcolabile). Le macchine di Turing rappresentano uno dei più semplici e, al tempo stesso, più potenti modelli di calcolo. Le funzioni calcolabili secondo Turing sono la classe più ampia di funzioni calcolabili mediante algoritmi che si conosca. I logici Church e Turing hanno avanzato l ipotesi che qualunque funzione calcolabile mediante algoritmi sia calcolabile mediante macchine di Turing (tesi di Church-Turing). Per tale motivo in genere diremo semplicemente funzione calcolabile anziché funzione calcolabile secondo Turing.
20 ESERCIZI Realizzare le macchine di Turing che calcolano le funzioni f(x) = x+1, dove x ed x+1 sono interi rappresentati in binario f(x, y) = x+y, dove x, y ed x+y sono interi rappresentati in decimale
21 12.2 INSIEMI E LINGUAGGI DECIDIBILI E SEMIDECIDIBILI. Possiamo utilizzare macchine di Turing anche per riconoscere linguaggi (più in generale insiemi) o, in altre parole, per risolvere problemi di decisione. Def. Una computazione massimale <c 0, c 1,..., c n > è accettante se c 0 è iniziale e c n è finale. Def. Una computazione massimale <c 0, c 1,..., c n > è rifiutante se c 0 è iniziale e c n non è finale. Convenzioni. Computazione accettante: responso affermativo Computazione rifiutante: responso negativo
22 Computazione non terminante: nessun responso
23 Informalmente: Una macchina di Turing M riconosce un linguaggio L Σ* se per ogni x Σ* M è in grado di stabilire se x L o no Una macchina di Turing M accetta un linguaggio L se per tutte e sole le x L M è in grado di stabilire tale appartenenza, ma se x L M non garantisce un comportamento prestabilito: può dare una risposta negativa ma può anche non dare alcuna risposta.
24 Più formalmente: Def. M=<Σ,b,K,q 0,F,δ> riconosce (decide) un linguaggio L se per ogni x Σ* esiste q K tale che q 0 x * αqβ con α (Σb)* e β (Σb)+ e la computazione corrispondente è massimale, se e solo se x L allora q F Def. Un linguaggio riconosciuto da una macchina di Turing è detto decidibile. Se un linguaggio non è decidibile è indecidibile.
25 NOTA BENE. Non è detto che una macchina di Turing possa sempre riconoscere un linguaggio. Esistono linguaggi di tipo 0 che non sono decidibili.
26 Def. M=<Σ,b,K,q 0,F,δ> accetta un linguaggio L se per tutte e sole le x L esiste q F tale che q 0 x * αqβ con α (Σb)* e β (Σb)+. Un linguaggio L è accettato da una macchina di Turing M se: Def. Un linguaggio accettato da una macchina di Turing è detto semidecidibile. NOTA BENE. Se un linguaggio è decidibile è anche semidecidibile. La famiglia dei linguaggi semidecidibili contiene strettamente la famiglia dei linguaggi decidibili poiché esistono linguaggi indecidibili ma semidecidibili.
27
28 ESERCIZI Realizzare le macchine di Turing che accettano i linguaggi { wcwr w (a+b)+} { wwr w (a+b)+} { wcw w (a+b)+}
29 12.3 MACCHINE DI TURING MULTINASTRO E NON DETERMINISTICHE Possiamo definire molte varianti di macchine di Turing: macchine a più nastri macchine non deterministiche macchine con alfabeto limitato a due soli simboli macchine con nastro seminfinito ecc.
30 MT MULTINASTRO (MTM) Tutte queste varianti sono computazionalmente equivalenti: permettono il calcolo delle stesse funzioni e il riconoscimento (o accettazione) degli stessi linguaggi. Possono avere tempi di calcolo diversi e utilizzare diverse quantità di spazio.
31 Def. Macchina di Turing a k nastri: Mk=<Σ,b,Z0,K,q 0,F,δ(k)> Σ b Z0 K q 0 F alfabeto carattere speciale, spazio bianco carattere speciale, carattere iniziale insieme finito di stati stato iniziale insieme di stati finali δ(k) funzione di transizione δ : K (Σb)k K (Σb)k {d,s,i}k
32
33 Configurazioni, transizioni e computazioni Configurazione: q#α1 β1#α2 β2#...#αk βk q è lo stato; la stringa αi βi indica il contenuto e la posizione della testina sul nastro i. αi e' eventualmente vuota e il primo carattere di βi è il carattere attualmente osservato configurazione finale: configurazione iniziale: q appartiene a F q0# β1# Z0#...# Z0 l'input sta sul primo nastro e gli altri contengono il carattere Z0
34 transizioni e computazioni: analoghi alle MT
35 Esempi di macchine a più nastri: - un trasduttore con un nastro di input (sola lettura), un nastro di output (sola scrittura) e uno o più nastri di lavoro (lettura e scrittura, bidirezionali) - un riconoscitore con un nastro di input (sola lettura e unidirezionale) e uno o più nastri di lavoro (lettura e scrittura, bidirezionali) NOTA BENE L automa a stati finiti può essere visto come una macchina di Turing con un solo nastro, di sola lettura, unidirezionale. L automa a pila può essere visto come una macchina di Turing a due nastri, il primo di sola lettura e unidirezionale (one way), il secondo utilizzato in modo LIFO, come una pila.
36 ESEMPIO MTM per riconoscere xcxr con x {a,b} + usiamo 2 nastri: uno di input monodirezionale a sola lettura e uno di lavoro che usiamo come pila durante la scansione di x, fino a c, x viene copiata sul nastro di lavoro durante la scansione di xr si confrontano i caratteri con quelli sul nastro di lavoro configurazione iniziale della MTM: q 0 # z# Z 0
37 3 stati: q 0 q 1 q 2 per scandire x per scandire xr stato finale copiatura iniziale: δ(q 0,a,Z 0 )=<q 0,a,A,d,d> δ(q 0,b,Z 0 )=<q 0,b,B,d,d> copiatura a regime: δ(q 0,a,b)=<q 0,a,A,d,d> δ(q 0,b,b)=<q 0,b,B,d,d> passaggio dalla copiatura alla verifica: δ(q 0,c,b)=<q 1,c,b,d,s>
38 verifica positiva: δ(q 1,a,A)=<q 1,a,A,d,s> δ(q 0,b,B)=<q 1,b,B,d,s> accettazione: δ(q 1,b,b)=<q 2,b,b,i,i> computazione con input bacab: q 0 # bacab # Z 0 q 0 #b acab #B b q 0 #ba cab #BA b q 1 #bac ab #B A q 1 #baca b # BA q 1 #bacab b # bba q 2 #bacab b # bba
39 computazione con input acb: q 0 # acb # Z0 q 0 #a cb #a b q 1 #ac b # a
40 ESEMPIO. MTM per riconoscere xxr con x {a,b} usiamo 3 nastri: uno di input monodirezionale e due di lavoro copiamo la stringa sui due nastri di lavoro poi scandiamo i due nastri in senso contrario ed effettuiamo i confronti configurazione iniziale della MTM: q 0 # w# Z 0 # Z 0 copiatura iniziale: δ(q 0,a,Z 0,Z 0 )=<q 0,a,A,A,d,d,d> δ(q 0,b,Z 0,Z 0 )=<q 0,b,B,B,d,d,d>
41 copiatura a regime: δ(q 0,a,b,b)=<q 0,a,A,A,d,d,d> δ(q 0,b,b,b)=<q 0,b,B,B,d,d,d>
42 termine della copiatura: δ(q 0,b,b,b)=<q 0,b,b,b,i,s,s> riposizionamento della testina: δ(q 0,b,A,A)=<q 0,b,A,A,i,s,i> δ(q 0,b,B,A)=<q 0,b,B,A,i,s,i> δ(q 0,b,A,B)=<q 0,b,A,B,i,s,i> δ(q 0,b,B,B)=<q 0,b,B,B,i,s,i> fine del riposizionamento della testina: δ(q 0,b,b,A)=<q 1,b,b,A,i,d,i> δ(q 0,b,b,B)=<q 1,b,b,B,i,d,i> verifica: δ(q 1,b,A,A) = <q 1,b,A,A,i,d,s>
43 δ(q 1,b,B,B) = <q 1,b,B,B,i,d,s> δ(q 1,b,b,b) = <q 2,b,b,b,i,i,i>
44 ESERCIZIO. Realizzare una macchina di Turing con due nastri (il primo di sola lettura e il secondo di lettura e scrittura ma entrambi bidirezionali) che riconosce il linguaggio { xcx x (a+b) + }
45 Equivalenza tra MTM e MT Strumento di lavoro: MT a nastro suddiviso in tracce se il nastro ha h tracce la testina può leggere/scrivere h caratteri contemporaneamente la corrispondenza tra MT a nastro suddiviso in tracce ed una normale MT è immediata osservazione: se sulle tracce sono usati gli alfabeti Σ1,Σ2,...,Σh, una MT corrispondente ha un alfabeto Σ con Σ Σ1 x Σ2 x...x Σh
46 Teorema. Data una MTM M=<Σ,b,K,q 0,F,δ(k)> a k nastri esiste una MT che simula t passi di Mk in O(t 2 ) passi usando un alfabeto di cardinalità O((2 Σ )k) Dim. Costruiamo una MT M'=<Σ',b,K',q 0 ',F',δ'> con nastro suddiviso in 2k tracce che simula M poi costruiamo una MT M" equivalente a M' le k tracce di posto pari di M' rappresentano i k nastri di M sulle k tracce di posto dispari di M' con il carattere " " indichiamo la posizione delle testine sui k nastri di M
47 il nastro di M' all' inizio della computazione si presenta con tutte le tracce dispari "vuote" tranne la prima per simulare la funzione di transizione di M che e' del tipo: δ(k)(qi,σi1,..,σik) = <qj,σj1,..,σjk,zj1,..,zjk> la δ' deve: rintracciare le posizioni dei marcatori, scrivere e spostare i marcatori, cambiare stato
48 quindi per ogni passo di M, M' deve eseguire un numero di passi proporzionale alla distanza (numero di caselle) tra i due marcatori piu' lontani
49 dopo t passi due marcatori possono essersi allontanati di al piu' O(t) caselle se M esegue t passi, M' ne esegue O(t 2 ) M" esegue gli stessi passi di M' per cio' che riguarda la cardinalita' dell'alfabeto di M" abbiamo da codificare con un solo alfabeto stringhe di 2k simboli cosi' composte: k simboli appartengono a {b, } 1 simbolo appartiene a Σ {b} k-1 simboli appartengono a Σ {b,z 0 }
50 Σ" = 2 k ( Σ +1)( Σ +2) k-1 = O((2 Σ ) k ) MT NONDETERMINISTICHE (MTND) Def. Macchina di Turing non deterministica: M=<Σ,b,K,q 0,F,δN> Σ alfabeto di simboli b carattere speciale, spazio bianco K insieme finito di stati q 0 stato iniziale F insieme di stati finali
51 δn funzione (parziale) di transizione δn: K Σb P(K Σb {d,s,i})
52 La macchina di Turing non deterministica può eseguire più transizioni. Def. Grado di non determinismo di una macchina M ν(m) = max δn(qi,σj) Una computazione eseguita da una macchina non deterministica può essere rappresentata con un albero di computazioni deterministiche. nodi: configurazioni archi: transizioni NOTA BENE. Il grado di non determinismo coincide con il massimo numero di figli di un nodo dell'albero di computazione
53 Possiamo utilizzare macchine di Turing non deterministiche per accettare linguaggi. Def. Una MTND accetta una stringa se nell'albero di computazione è possibile trovare almeno un ramo che corrisponde ad una computazione accettante (cioè, almeno una foglia dell'albero corrisponde ad una configurazione finale). NOTA BENE. Anche in questo caso usiamo il termine accettazione anziché riconoscimento perché c è asimmetria tra l accettazione e il rifiuto di una stringa: in un caso basta che esista un cammino accettante, nell altro caso bisogna che i cammini siano tutti rifiutanti.
54 Equivalenza tra MT e MTND Le MTND hanno lo stesso potere computazionale delle MT. Teorema. Data una macchina non deterministica M con grado di nondeterminismo d esiste una MT M' equivalente che simula k passi di M in O(kdk) passi Dim. L'albero di computazione di M viene visitato in ampiezza da M' (perché non in profondità?) M' ha 3 nastri
55 nastro 1: contiene l'input nastro 2: viene usato per generare, in ordine lessicografico, tutte le sequenze finite composte da cifre comprese tra 1 e d nastro 3: nastro di lavoro per ogni sequenza generata sul nastro 2, M' copia l'input sul nastro 3 le transizioni di ogni insieme δn(q,σ) sono numerate da 1 a d ogni sequenza di lunghezza s sul nastro 2 è in corrispondenza con una computazione di M di s passi
56 gli s numeri di ogni sequenza (compresi tra 1 e d) sono usati per scegliere ad ogni passo una transizione tra le d possibili es. se s=4 e d=2 e la sequenza è 2122 M' sceglie per la prima mossa la seconda transizione disponibile, per la seconda mossa la prima, ecc... Se su qualche foglia dell'albero di computazione di M c'è uno stato finale, allora M' lo raggiunge in tempo finito altrimenti M' non raggiunge mai uno stato finale. Se M termina in k passi M' ha bisogno di k O( Σ jd j ) = O(kdk) passi j=0
57 Per dimostare che k O (Σ jd j ) = O (kdk) j=0 si può procedere come segue. Osserviamo innanzitutto che k Σ d j = (d k+1-1)/(d-1) j=0
58 Derivando si ottiene: e quindi k Σ jd j-1 = (kd k+1 -(k+1)d k +1)/(d-1) 2 j=1 k Σ jd j = O (kd k ) j=1
59 NOTA BENE. Una macchina non deterministica può "risolvere" un problema (ad esempio, accettare un linguaggio) in tempo polinomiale rispetto alla lunghezza della stringa mentre la simulazione effettuata da una macchina deterministica richiede tempo esponenziale. Problema aperto. Esiste una simulazione più efficiente? E' possibile simulare una macchina di Turing non deterministica con una deterministica in tempo polinomiale? ATTENZIONE: QUESTO E UN PROBLEMA DA UN MILIONE DI DOLLARI!
60 LINGUAGGI DI TIPO 0 E MT Teorema. Un linguaggio L è semidecidibile se e solo se è un linguaggio di Tipo 0 Dim. i) Tipo 0 -> MT Innanzitutto mostriamo come, dato un linguaggio L, generato da una grammatica G di tipo 0, possiamo definire una MT che lo accetta. In realtà, per semplificare la dimostrazione utilizzeremo una MTND M con 2 nastri ma sappiamo che esiste comunque una MT M' ad un solo nastro che può simulare M.
61 La macchina M opera nel seguente modo: partendo dall'assioma S la macchina applica via via, in modo non deterministico, tutte le produzioni applicabili. Dopo aver applicato una produzione, oltre a proseguire nell'applicazione delle produzioni, in modo non deterministico essa effettua una verifica per controllare se la forma di frase ottenuta è costituita da soli terminali e se essa coincide con la stringa da generare x. In tal caso M termina in uno stato finale. I 2 nastri vengono utilizzati nel seguente modo: N1 contiene la stringa x che deve essere accettata, N2 contiene le forme di frase che via via vengono derivate e che devono essere confrontate con la stringa x.
62
63 ii) MT -> Tipo 0 Supponiamo ora di avere una macchina di Turing M che accetta un linguaggio L. Mostriamo come si può costruire una grammatica G di Tipo 0. Se la macchina accetta L vuol dire che, per tutte e sole le x L, essa realizza la computazione q0x * aqfb con un opportuno qf F (per semplicità supporremo che esista un unico stato finale qf F). In corrispondenza della macchina M la grammatica G è così definita. Il suo alfabeto non terminale è costituito da alcuni simboli ausiliari, da simboli corrispondenti agli stati di M e da simboli che rappresentano il contenuto di due piste: quella superiore contiene caratteri σi di Σ {b}, quella inferiore caratteri σj di Σ {b}. Tali simboli sono dunque del tipo:
64 σi σj
65 La grammatica opera nel seguente modo: 1. introduce lo stato iniziale q0 2. genera una qualsivoglia stringa x di Σ sulle due piste 3. genera un numero arbitrario di b a destra e a sinistra di x sulle due piste 4. simula M sulla pista inferiore 5. se la pista inferiore è una configurazione finale e, solo in tal caso, trasforma la forma di frase ottenuta finora nella stringa x che è tuttora presente sulla pista superiore. Vediamo la forma delle varie produzioni. S A1 q0 A2 σi
66 A2 σ i A2 Α3 b A1 Α1 b b A3 b A3 A questo punto abbiamo forme di frase del tipo: b b ai1 ain b b b Α1 b... b q0 ai1... ain b b. b A3 Per effettuare la simulazione della macchina avremo, per ogni regola di transizione, una serie di produzioni che realizzano, sulla pista inferiore, le stesse trasformazioni. Ad esempio, in corrispondenza della regola di transizione d(qk,σi) = (qh,σl,d)
67 avremo le regole di produzione σj qk σi σj σl qh per ogni σj in Σ {b} che si trovi sulla pista superiore.
68 Infine per il passo 5 abbiamo: qf A4 A5 per ogni stato finale qf σj σi Α4 A4 σj per ogni σj in Σ e σi in Σ {b}. b σi Α4 A4 per ogni σi in Σ {b}. e analogamente per A5. Infine A1 A4 ε
69 A5 A3 ε
70 NOTA BENE. I linguaggi di Tipo 1 sono decidibili. Dato che le forme di frase non possono diminuire di lunghezza basta generare tutte le forme di frase in ordine di lunghezza crescente e confrontare quelle di soli terminali con la stringa da riconoscere.
71 12.4 MACCHINA DI TURING UNIVERSALE NOTA BENE. E' possibile descrivere una macchina di Turing con una stringa di caratteri e fornire tale descrizione come input ad un'altra macchina di Turing. Esistono vari modi di descrivere una macchina di Turing con una stringa: possiamo fornire la sequenza delle quintuple che costituiscono la funzione di transizione ##d1##d2##... ##dn
72 in cui è presente la quintupla qi#σj#qh#σk#tl se e solo se esiste la regola di transizione δ(qi,σj)=(qh,σk, tl);
73 possiamo sfruttare il fatto che ogni macchina di Turing può essere realizzata come composizione di alcune macchine elementari e fornire la descrizione di una macchina come sequenza di tali macchine.
74 Sia DM la descrizione della macchina M. Teorema. Esiste una macchina di Turing U, con stato iniziale q0 U, (detta macchina di Turing universale) che, data una qualunque descrizione DM, realizza la computazione q0 U DM#x * αqf U β, con qf U stato finale, se e solo se la macchina M, con stato iniziale q0, realizza la computazione q0x * αqfβ, con qf stato finale. Dim. La macchina non fa che eseguire una per una le trasformazioni richieste dalle quintuple della macchina M contenute in DM. Al termine cancella dal nastro la descrizione DM.
75 NOTA BENE. Possiamo interpretare la MT universale come un calcolatore e DM e x come un programma e i suoi dati un interprete di un linguaggio di programmazione.
76 12.5 FUNZIONI NON CALCOLABILI E PROBLEMI INDECIDIBILI Le macchine di Turing hanno consentito di - definire formalmente il concetto di algoritmo, di funzione calcolabile e di problema decidibile - mostrare l esistenza di funzioni non calcolabili e problemi non decidibili Che cosa ha portato Turing ad affrontare questi problemi? Un po di storia.
77 1900: Al Secondo Congresso Internazionale di Matematica Hilbert formula 23 problemi matematici per il XX secolo (Problemi futuri della Matematica). Il secondo problema riguarda la consistenza (cioè la non contraddittorietà) della teoria logica dell aritmetica dei numeri naturali basata sugli assiomi introdotti da Peano nel : Hilbert riformula i problemi aperti riguardanti l Aritmetica: - L Aritmetica è completa? Cioè è possibile dimostrare ogni asserzione vera? - L Aritmetica è consistente? Cioè siamo certi che non sia possibile dimostrare un asserzione e anche la sua negazione? Se ciò fosse vero ogni asserzione sarebbe dimostrabile, quindi per dimostrare la consistenza è
78 sufficiente dimostrare che esistono asserzioni dell aritmetica non dimostrabili. - L Aritmetica è decidibile? Cioè esiste un algoritmo che consente di decidere se un asserzione è un teorema? Il ruolo dei paradossi. 1. 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) 2. Eubulide di Mileto (IV sec. a. C.): Questa frase è falsa oppure Io sto mentendo (queste affermazioni non possono essere né vere né false)
79 3. Buridano (XIV sec.): Socrate dice: Platone dice il falso Platone dice: Socrate dice il vero (le due affermazioni congiunte sono un paradosso) Nel XX sec. vengono formulati paradossi relativi alla teoria degli insiemi: 4. Russell: L insieme di tutti gli insiemi che non appartengono a se stessi, appartiene o no a se stesso? 5. Russell: In un villaggio il barbiere rade tutti e soli coloro che non si radono da soli; chi rade il barbiere?
80 6. Gonseth: In una biblioteca può esistere un catalogo di tutti i cataloghi bibliografici che non contengono se stessi?
81 1931: Gödel dimostra che l aritmetica non può essere al tempo stesso completa e consistente. Idea: - 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 necessariamente vera; quindi (se il calcolo non è contraddittorio) w non può essere falsa e deve essere vera. Ma se è vera non è dimostrabile. Quindi w è un esempio di asserzione vera ma non dimostrabile.
82 Conseguenze: l aritmetica non è completa o non è consistente (ma la consistenza non è dimostrabile all interno della teoria stessa). 1935: Turing dimostra l indecidibilità dell aritmetica (On computable numbers, with an application to the Entschaidungsproblem, J. of Symbolic Logic, 1936). - 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.
83 NOTA BENE. Contemporaneamente a Turing anche Alonzo 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 approccio formale è calcolabile secondo Turing " Tutti i formalismi definiti successivamente hanno confermato la tesi di Church-Turing poiché si è dimostrato che hanno un potere computazionale equivalente alle macchine di Turing Kleene (1936): funzioni ricorsive. Post (1943): sistemi di riscrittura. Markov (1949): algoritmi di Markov.
84 Shepherdson e Sturgis (1963): macchine a registri.
85 IL PROBLEMA DELLA TERMINAZIONE (HALTING PROBLEM) E INDECIDIBILE Dimostriamo ora l'esistenza di un problema che non è decidibile e di una funzione che non è calcolabile con una MT. In quanto segue assumiamo che le macchine di Turing siano macchine ad un nastro, deterministiche con alfabeto Σ={0,1}. Data una MT M=<Σ,b,K,q0,F,δ> sia D M la codifica di M in Σ. Per x Σ* definiamo il predicato della terminazione h(d M,x) =1 se M con input x termina =0 se M con input x non termina
86 Teorema. Il predicato della terminazione delle macchine di Turing non è calcolabile secondo Turing (o, in altre parole, il problema della terminazione è indecidibile).
87 NOTA BENE. Invece è T-calcolabile il predicato: h(d M,x) =1 se M con input x termina = indefinito, altrimenti Dim. Supponiamo che il predicato sia calcolabile, esista cioè una macchina di Turing H che calcola h. Costruiamo la macchina H' che calcola il predicato h'(dm) =1 se M con input DM termina =0 se M con input DM non termina H' non è altro che la composizione di due macchine: la prima con input DM fornisce DMbDM, la seconda è la macchina H che
88 prende in input DMbDM e calcola il predicato della terminazione.
89 In altre parole H' è la macchina che verifica se una MT termina quando le viene fornito in input il proprio codice. Possiamo ora costruire una nuova macchina H" che prende in input DM e calcola la funzione: h"(dm) =0 se h'(dm) = 0 =indefinito altrimenti H", cioè, termina con 0 se H' si è fermata con 0 e si mette a ciclare, se H' si è fermata con 1. Cosa accade ora se calcoliamo h"(dh"): h"(dh") =indefinita se h"(dh") è definita =0 se h"(dh") è indefinita
90 In ogni caso abbiamo una contraddizione. Quindi non può esistere la macchina H.
91 Grazie alla tesi di Church-Turing abbiamo che la dimostrazione della indecidibilità del problema della terminazione ha come conseguenza che per ogni linguaggio di programmazione il problema della terminazione di una programma è indecidibile. Altri problemi indecidibili in informatica. Problemi indecidibili si incontrano in vari campi dell'informatica: - decidere se un programma è corretto, cioè se calcola la funzione desiderata - decidere se, dato un programma ed una sua procedura (o semplicemente una sua istruzione), la procedura sarà chiamata (o l'istruzione sarà eseguita) - decidere se una grammatica CF è ambigua o se due grammatiche CF sono equivalenti.
92 Altri problemi indecidibili in matematica: - decidere se una formula del calcolo dei predicati del prim'ordine è un teorema (e quindi valida), - decidere se un'equazione diofantea, cioè un equazione del tipo p(x 1,..., x n ) = 0 dove p è un polinomio (come ad esempio l equazione x n + y p x q + y r x s z t = 0 ) ammette soluzioni intere non nulle (decimo problema di Hilbert).
93 12.6 RELAZIONI TRA MACCHINE DI TURING E CALCOLATORI MACCHINE A REGISTRI (RAM: Random Access Machines) Introdotte da Shepherdson e Sturgis nel 1963 per sviluppare la teoria della calcolabilità con un modello di macchina che fosse un astrazione ragionevole di un calcolatore (macchina di von Neumann).
94 Memoria costituita da un numero arbitrario di celle (registri) indirizzabili direttamente R[1], R[2],..., R[n] contenenti un intero positivo di un numero qualunque di cifre Registri speciali: contatore istruzioni (CI) accumulatore R[0] Nastri di ingresso e di uscita Unità centrale in grado di eseguire semplici istruzioni logico-aritmetiche
95 INPUT ALU R1 R2 R3 ACCUMULATORE... CONT. ISTRUZIONI OUTPUT
96 Repertorio istruzioni LOAD, STORE: trasferimenti da registri ad accumulatore e viceversa READ, WRITE: trasferimenti da nastro di input a registri e da registri a nastro di output ADD, SUB, MULT, DIV, REM: operazioni aritmetiche (somma. sottrazione, moltiplicazione, divisione, resto della divisione) tra accumulatore e registri; il risultato resta nell'accumulatore JGTZ, JEQZ: salti condizionati in base al contenuto dell'accumulatore (rispettivamente > 0, = 0) JUMP: salto incondizionato HALT: terminazione
97 Sintassi delle istruzioni LOAD [ = * ] operando -> operando: numero STORE [ * ] operando d ordine di registro ADD [ = * ] operando -> = operando: SUB [ = * ] operando operando immediato MULT [ = * ] operando -> * operando: DIV [ = * ] operando accesso indiretto REM [ = * ] operando READ [ * ] operando WRITE [ = * ] operando JUMP etichetta -> etichetta: numero JGTZ etichetta d ordine di istruzione JEQZ etichetta HALT etichetta
98 Semantica delle istruzioni (Esempi) ADD =n ADD n ADD *n JGTZ m R[0]:= R[0]+ n CI:=CI+1 R[0] := R[0]+ R[n] CI := CI+1 R[0] := R[0]+ R[R[n]] CI := CI+1 if R[0]>0 then CI := m else CI := CI+1
99 Programmi per RAM Il programma non è contenuto in memoria ma è cablato: ad ogni macchina corrisponde un programma.
100 ESEMPIO - Programma per il calcolo di xy READ 1 lettura di x dal nastro di ingresso READ 2 lettura di y dal nastro di ingresso LOAD =1 STORE 3 inizializzazione del risultato 5 LOAD 2 JEQZ 14 fine ciclo while? LOAD 1 MULT 3 STORE 3 LOAD 2 R[3] := x * R[3] SUB =1 STORE 2 JUMP 5 14 WRITE 3 stampa del risultato HALT
101 Modelli di costo per le macchine a registri (RAM) Modello a costi uniformi: costo unitario per l'esecuzione di ogni istruzione. Critiche: - moltiplicare due interi di 32 bit costa quanto moltiplicare due interi di 1024 bit - accedere ad una memoria di 1 kilobyte costa come accedere ad una memoria di 1 terabyte Vantaggi: il modello ha il pregio di essere molto semplice ed è quello più usato quando valutiamo il comportamento di programmi scritti in linguaggio ad alto livello.
102 Modello a costi logaritmici: i costi sono proporzionali al numero di bit degli operandi e al logaritmo del numero d ordine dei registri cui si accede. Definiamo la seguente funzione (lunghezza in binario): l(n) = 1 se n=0 l(n) = (log n) +1 se n>0 - l'elaborazione di un intero n ha costo l(n) - l'accesso al registro i ha costo l(i) Vantaggi: la valutazione dei costi è più realistica dal punto di vista asintotico (operandi molto grandi, memoria molto grande) Critiche: analisi più laboriosa
103 Per eseguire l'istruzione ADD 3 si paga: l (3) per accedere al registro 3 più l(r[3]) + l(r[0]) per eseguire la somma del contenuto del registro 3 e dell accumulatore. Per eseguire l'istruzione ADD *3 si paga: l(3) + l(r[3]) per accedere al registro indirizzato dal registro 3 più l(r[r[3]]) + l(r[0]) per eseguire la somma.
104 ESEMPIO. Analisi del costo del programma per il calcolo di x y con il modello a costi logaritmici. La porzione di codice del ciclo viene eseguita O(y) volte. Costo di esecuzione totale: O(y2 log x)
105 READ 1 l(1)+l(x) O(log x) READ 2 l(2)+l(y) O(log y) LOAD =1 l(1) O(1) STORE 3 l(3)+l(1) O(1) 5 LOAD 2 l(2)+l(y) O(log y) JEQZ 14 l(y) O(log y) LOAD 1 l(1)+l(x) O(log x) MULT 3 l(3)+l(x)+l(xy) O(log x + y log x) STORE 3 l(3)+l(xy) O(y log x) LOAD 2 l(2)+l(y) O(log y) SUB =1 l(1)+l(y) O(log y) STORE 2 l(2)+l(y) O(log y) JUMP 5 1 O(1) 14 WRITE 3 l(3)+l(xy) O(y log x) HALT 1 O(1)
106 NOTA BENE. In pratica in situazioni in cui: a) i dati hanno una dimensione prefissata (es: 36 bit) b) le dimensioni della memoria sono prefissate i due modelli coincidono. NOTA BENE. Se le operazioni aritmetiche hanno precisione arbitraria o se si rende necessario l'accesso a memoria secondaria, si deve fare uso di modelli di calcolo analoghi al modello a costi logaritmici anche nell analisi di complessità di algoritmi scritti in linguaggi ad alto livello
107 Simulazione di RAM con macchine di Turing Calcolabilità mediante RAM Def. Una funzione f: Nn N è calcolabile da una RAM se esiste un programma P tale che - se f(x1,...,xn)=y, allora P, attivato con x1,...,xn sul nastro di input, termina con y sul nastro di output - se f(x1,...,xn) non è definita, allora P non termina
108 Teorema. Sia M=<{0,1},b,K,q0,F,δ> una MT con nastro seminfinito; esistono una RAM ed un programma P tali che se M calcola q 0 x *q F y e la RAM ha la stringa x nelle celle 2,..., x +1 al termine della computazione la RAM ha la stringa y nelle celle 2,..., y +1; inoltre la RAM simula T passi di M in tempo O(T log T) nel modello a costi logaritmici. Dim. Stabiliamo una corrispondenza tra la cella i del nastro di M e la cella i+1 della memoria della RAM. Usiamo la cella 1 della RAM per rappresentare la posizione della testina di M.
109 All'inizio la cella 1 contiene il valore 2 (posizione iniziale della testina di M). P contiene una sequenza di istruzioni per ogni stato di M. ESEMPIO. Se δ(q1,0)=<q2,1,d> e δ(q1,1)=<q3,0,s> allora P contiene il seguente frammento di programma (corrispondente allo stato q1):
110 ... q1 LOAD *1 acquisizione del contenuto del nastro JGTZ q1' lettura di un 1 o di uno 0? LOAD =1 STORE *1 scrittura di un 1 sul nastro LOAD 1 ADD =1 STORE 1 movimento a destra della testina JUMP q2 aggiornamento dello stato q1' LOAD =0 STORE *1 scrittura di uno 0 sul nastro LOAD 1 SUB =1 STORE 1 movimento a sinistra della testina JUMP q3 aggiornamento dello stato...
111 Ogni passo di M è simulato da al più 8 istruzioni ognuna con costo O(log tmax) dove tmax è il massimo numero di celle usate da M Se M esegue T passi allora tmax T+1 Costo complessivo O(T log T)
112 Teorema. Data una RAM con programma P che calcola la funzione f esiste una MT M tale che se f(x1,...,xn)=y e sul nastro di input sono memorizzati in binario gli interi x1,...,xn la macchina M termina con la rappresentazione binaria di y sul nastro di output e se f(x1,...,xn) non è definita M non termina; inoltre se la computazione della RAM ha costo T nel modello a costi logaritmici allora M la simula in O(T2) passi. Dim. M ha tre nastri di lavoro, un nastro di input e un nastro di output. Sul nastro 1 sono memorizzati in binario i dati memorizzati nella memoria della RAM preceduti dal proprio indirizzo rappresentato in binario, cioè:
113 #i 1 #R[i 1 ]#i 2 #R[i 2 ]#i 3 #R[i 3 ]... #i m #R[i m ]. Sul nastro 2 è rappresentato il contenuto dell'accumulatore. Il nastro 3 è usato per il funzionamento di M. Per ogni istruzione del programma della RAM, M ha un insieme di stati per eseguire le operazioni. Istruzioni di salto JUMP, JGTZ, JZERO, HALT: si controlla se il contenuto dell'accumulatore verifica le condizioni di salto e si gestiscono i corrispondenti cambiamenti di stato
114 Istruzioni che non modificano il contenuto della memoria LOAD, ADD, SUB, MULT, DIV, WRITE: si cerca sul nastro 1 il registro su cui si deve operare si esegue sul nastro contenente la rappresentazione dell'accumulatore l'operazione prevista
115 Istruzioni che modificano il contenuto della memoria STORE,READ si trascrive sul nastro 3 il contenuto del nastro 1 a destra del registro da modificare si esegue l'operazione modificando sul nastro 1 la rappresentazione del contenuto del registro da modificare si ricopia sul nastro 1 il contenuto del nastro 3 a destra della cella modificata.
116 Analisi di complessità. i) Ogni sequenza di transizioni relativa ad una operazione di RAM costa ad M, nel caso peggiore, un tempo dell'ordine della massima lunghezza lungmax del nastro 1 e se la RAM opera con costo totale T allora lungmax T. Infatti nel modello a costi logaritmici se sul nastro 1 è presente l' indirizzo i vuol dire che la RAM ha acceduto almeno una volta al registro Ri e quindi ha pagato almeno una volta log i, d'altro canto l'indirizzo i occupa su nastro 1 proprio log i celle se sul nastro 1 compare il contenuto del registro i allora la RAM ha pagato almeno una volta log(r[i]) d'altro canto R[i] occupa su nastro 1 proprio log(r[i]) celle quindi lungmax T
117 ii) Se la RAM opera con costo totale T le operazioni che essa esegue sono al più T In conclusione la MT M opera in tempo O(T lungmax) = O(T2).
118 NOTA BENE 1 Tutto ciò che si può fare (calcolo di funzioni, riconoscimento o accettazione di insiemi, ecc.) con una MT si può fare anche con una RAM e viceversa (adottando le opportune convenzioni per la rappresentazione dell'input e dell'output). Considerato che le RAM corrispondono a semplici programmi Assembler per una macchina di tipo von Neumann è chiaro che il loro potere computazionale coincide con quello dei linguaggi di programmazione ad alto livello per un normale calcolatore.
119 Tesi di Church-Turing: tutti i modelli di calcolo introdotti per definire la calcolabilità (e tutti i linguaggi di programmazione) hanno al massimo lo stesso potere computazionale delle MT.
120 NOTA BENE 2 Una MT ed una RAM con modello a costi logaritmici possono simularsi a vicenda in tempo polinomiale. La stessa cosa non si può fare se si considerano RAM con moltiplicazione e costi unitari (Esercizio). Per stabilire se un problema può essere risolto in tempo polinomiale con un normale calcolatore possiamo indifferentemente far riferimento ad una MT o ad una RAM a costi logaritmici.
MACCHINE DI TURING E CALCOLABILITA SECONDO TURING
PARTE II MACCHINE DI TURING E CALCOLABILITA SECONDO TURING Macchine di Turing ad un nastro e multinastro Macchine di Turing non deterministiche Macchine di Turing e linguaggi di tipo 0 e di tipo 1 Calcolabilita
Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali
Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali 1 Modelli imperativi: le RAM (Random Access Machine) I modelli di calcolo imperativi sono direttamente collegati al modello Von Neumann,
Tipologie di macchine di Turing
Tipologie di macchine di Turing - Macchina di Turing standard - Macchina di Turing con un nastro illimitato in una sola direzione - Macchina di Turing multinastro - Macchina di Turing non deterministica
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
La Macchina RAM Shepherdson e Sturgis (1963)
La Macchina RAM Shepherdson e Sturgis (963) Nastro di ingresso.......... PROGRAM COUNTER Nastro di uscita PROGRAMMA ACCUMULATORE UNITA' ARITMETICA............... 2 3 4 M E M O R I A Formato delle Istruzioni
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili
Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili roblemi che i calcolatori non possono risolvere E importante sapere se un programma e corretto, cioe fa quello che ci aspettiamo. E facile
Appunti sulla Macchina di Turing. Macchina di Turing
Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso
Capitolo 7: Teoria generale della calcolabilitá
Capitolo 7: Teoria generale della calcolabilitá 1 Differenti nozioni di calcolabilitá (che seguono da differenti modelli di calcolo) portano a definire la stessa classe di funzioni. Le tecniche di simulazione
Varianti Macchine di Turing
Varianti Macchine di Turing Esistono definizioni alternative di macchina di Turing. Chiamate Varianti. Tra queste vedremo: MdT a più nastri e MdT non deterministiche. Mostriamo: tutte le varianti ragionevoli
La macchina universale
La macchina universale Una immediata conseguenza della dimostrazione è la seguente Corollario il linguaggio L H = {M (w) M rappresenta una macchina di Turing che si ferma con input w} sull alfabeto {0,1}*
Le Macchine di Turing
Le Macchine di Turing Come è fatta una MdT? Una MdT è definita da: un nastro una testina uno stato interno un programma uno stato iniziale Il nastro Il nastro è infinito suddiviso in celle In una cella
Le parole dell informatica: modello di calcolo, complessità e trattabilità
Le parole dell informatica: modello di calcolo, complessità e trattabilità Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Ciclo di seminari su un Vocabolario
Esercizio su MT. Svolgimento
Esercizio su MT Definire una macchina di Turing deterministica M a nastro singolo e i concetti di configurazione e di transizione. Sintetizzare una macchina di Turing trasduttore che trasformi un numero
4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0
Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice
Lezione 8. La macchina universale
Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione
ci sono più problemi che programmi esiste un problema che non si può risolvere con un programma
Calcolabilità problemi facili trovare la media di due numeri stampare le linee di un file che contengono una parola problemi difficili trovare il circuito minimo data una tabella determinare la migliore
Appunti di informatica. Lezione 2 anno accademico 2015-2016 Mario Verdicchio
Appunti di informatica Lezione 2 anno accademico 2015-2016 Mario Verdicchio Sistema binario e logica C è un legame tra i numeri binari (0,1) e la logica, ossia la disciplina che si occupa del ragionamento
Algoritmi e strutture dati. Codici di Huffman
Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per
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
INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI
INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.
I sistemi di numerazione
I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono
Informatica teorica Lez. n 7 Macchine di Turing. Macchine di Turing. Prof. Giorgio Ausiello Università di Roma La Sapienza
Macchine di Turing Argomenti della lezione Definizione della macchina di Turing Riconoscimento e accettazione di linguaggi Macchine a più nastri La macchina di Turing èun è automa che può leggere e scrivere
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................
Algoritmi e Complessità
Algoritmi e Complessità Università di Camerino Corso di Laurea in Informatica (tecnologie informatiche) III periodo didattico Docente: Emanuela Merelli Email:[email protected] Lezione 2 Teoria
Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.
Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell
1 Giochi a due, con informazione perfetta e somma zero
1 Giochi a due, con informazione perfetta e somma zero Nel gioco del Nim, se semplificato all estremo, ci sono due giocatori I, II e una pila di 6 pedine identiche In ogni turno di gioco I rimuove una
Convertitori numerici in Excel
ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel
Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati
Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari
Le macchine di Turing
Le macchine di Turing Alan Turing (1912-1954) 1954) Il problema della decisione i L Entscheidungsproblem [il problema della decisione] è risolto se si conosce una procedura che permette di decidere la
Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.
DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti
SISTEMI DI NUMERAZIONE E CODICI
SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema
Esponenziali elogaritmi
Esponenziali elogaritmi Potenze ad esponente reale Ricordiamo che per un qualsiasi numero razionale m n prendere n>0) si pone a m n = n a m (in cui si può sempre a patto che a sia un numero reale positivo.
Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:
Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora: G.C.D.( a d, b d ) = 1 Sono state introdotte a lezione due definizioni importanti che ricordiamo: Definizione
Politecnico di Milano. Facoltà di Ingegneria Industriale. Corso di Analisi e Geometria 2. Sezione D-G. (Docente: Federico Lastaria).
Politecnico di Milano. Facoltà di Ingegneria Industriale. Corso di Analisi e Geometria 2. Sezione D-G. (Docente: Federico Lastaria). Aprile 20 Indice Serie numeriche. Serie convergenti, divergenti, indeterminate.....................
3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1
3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Scopo: Stimare l onere computazionale per risolvere problemi di ottimizzazione e di altra natura
Rappresentazione dei numeri in un calcolatore
Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri
Note del corso di Calcolabilità e Linguaggi Formali - Lezione 6
Note del corso di Calcolabilità e Linguaggi Formali - Lezione 6 Alberto Carraro 30 novembre DAIS, Universitá Ca Foscari Venezia http://www.dsi.unive.it/~acarraro 1 Funzioni Turing-calcolabili Finora abbiamo
Fondamenti di Informatica. Computabilità e Macchine di Turing. Prof. Franco Zambonelli Gennaio 2011
Fondamenti di Informatica Computabilità e Macchine di Turing Prof. Franco Zambonelli Gennaio 2011 Letture Consigliate: Roger Penrose, La Mente Nuova dell Imperatore, Sansoni Editrice. Martin Davis, Il
Informazione analogica e digitale
L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica
Architettura hardware
Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione
3 GRAFICI DI FUNZIONI
3 GRAFICI DI FUNZIONI Particolari sottoinsiemi di R che noi studieremo sono i grafici di funzioni. Il grafico di una funzione f (se non è specificato il dominio di definizione) è dato da {(x, y) : x dom
CONCETTO DI LIMITE DI UNA FUNZIONE REALE
CONCETTO DI LIMITE DI UNA FUNZIONE REALE Il limite di una funzione è uno dei concetti fondamentali dell'analisi matematica. Tramite questo concetto viene formalizzata la nozione di funzione continua e
Dimensione di uno Spazio vettoriale
Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione
Semantica operazionale dei linguaggi di Programmazione
Semantica operazionale dei linguaggi di Programmazione Oggetti sintattici e oggetti semantici Rosario Culmone, Luca Tesei Lucidi tratti dalla dispensa Elementi di Semantica Operazionale R. Barbuti, P.
PROVA INTRACORSO TRACCIA A Pagina 1 di 6
PROVA INTRACORSO DI ELEMENTI DI INFORMATICA MATRICOLA COGNOME E NOME TRACCIA A DOMANDA 1 Calcolare il risultato delle seguenti operazioni binarie tra numeri interi con segno rappresentati in complemento
Complessità Computazionale
Complessità Computazionale Analisi Algoritmi e pseudocodice Cosa significa analizzare un algoritmo Modello di calcolo Analisi del caso peggiore e del caso medio Esempio di algoritmo in pseudocodice INSERTION
1. PRIME PROPRIETÀ 2
RELAZIONI 1. Prime proprietà Il significato comune del concetto di relazione è facilmente intuibile: due elementi sono in relazione se c è un legame tra loro descritto da una certa proprietà; ad esempio,
L interesse nella macchina di Turing
Aniello Murano Macchina di Turing universale e problema della fermata 6 Lezione n. Parole chiave: Universal Turing machine Corso di Laurea: Informatica Codice: Email Docente: murano@ na.infn.it A.A. 2008-2009
Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile
Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione
2. Leggi finanziarie di capitalizzazione
2. Leggi finanziarie di capitalizzazione Si chiama legge finanziaria di capitalizzazione una funzione atta a definire il montante M(t accumulato al tempo generico t da un capitale C: M(t = F(C, t C t M
Informatica. Rappresentazione dei numeri Numerazione binaria
Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione
Cos è un Calcolatore?
Cos è un Calcolatore? Definizione A computer is a machine that manipulates data according to a (well-ordered) collection of instructions. 24/105 Riassumendo... Un problema è una qualsiasi situazione per
Architettura del calcolatore
Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macro-componenti: Hardware Software Architettura del calcolatore L architettura dell hardware di un calcolatore reale
Macchine a registri RAM (Random Access Machines)
Macchine a registri RAM (Random Access Machines) Introdotte da Shepherdson e Sturgis nel 1963 per sviluppare la teoria della calcolabilità con un modello astratto di un reale calcolatore (macchina di von
Matematica generale CTF
Successioni numeriche 19 agosto 2015 Definizione di successione Monotonìa e limitatezza Forme indeterminate Successioni infinitesime Comportamento asintotico Criterio del rapporto per le successioni Definizione
DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1
DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica
Programmazione dinamica
Capitolo 6 Programmazione dinamica 6.4 Il problema della distanza di edit tra due stringhe x e y chiede di calcolare il minimo numero di operazioni su singoli caratteri (inserimento, cancellazione e sostituzione)
Fasi di creazione di un programma
Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma
Elementi di Informatica e Programmazione
Elementi di Informatica e Programmazione Il concetto di Algoritmo e di Calcolatore Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Cos
Esame di INFORMATICA
Università di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA Lezione 4 MACCHINA DI VON NEUMANN Anni 40 i dati e i programmi che descrivono come elaborare i dati possono essere codificati nello
la scienza della rappresentazione e della elaborazione dell informazione
Sistema binario Sommario informatica rappresentare informazioni la differenza Analogico/Digitale i sistemi di numerazione posizionali il sistema binario Informatica Definizione la scienza della rappresentazione
Intorni Fissato un punto sull' asse reale, si definisce intorno del punto, un intervallo aperto contenente e tutto contenuto in
Intorni Fissato un punto sull' asse reale, si definisce intorno del punto, un intervallo aperto contenente e tutto contenuto in Solitamente si fa riferimento ad intorni simmetrici =, + + Definizione: dato
Come ragiona il computer. Problemi e algoritmi
Come ragiona il computer Problemi e algoritmi Il problema Abbiamo un problema quando ci poniamo un obiettivo da raggiungere e per raggiungerlo dobbiamo mettere a punto una strategia Problema Strategia
Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter
Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Architettura del Calcolatore Macchina di von Neumann Il calcolatore moderno è basato su un architettura
Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico
Processo di risoluzione di un problema ingegneristico 1. Capire l essenza del problema. 2. Raccogliere le informazioni disponibili. Alcune potrebbero essere disponibili in un secondo momento. 3. Determinare
ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza
ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza vers.3 in lavorazione Docente SAFFI FABIO Contenuti 01.Esercizi generici sul diagramma di flusso - flow chart... 2
Lezioni di Matematica 1 - I modulo
Lezioni di Matematica 1 - I modulo Luciano Battaia 16 ottobre 2008 Luciano Battaia - http://www.batmath.it Matematica 1 - I modulo. Lezione del 16/10/2008 1 / 13 L introduzione dei numeri reali si può
Alcune nozioni di base di Logica Matematica
Alcune nozioni di base di Logica Matematica Ad uso del corsi di Programmazione I e II Nicola Galesi Dipartimento di Informatica Sapienza Universitá Roma November 1, 2007 Questa é una breve raccolta di
Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1
Fondamenti di Informatica PROBLEMI E ALGORITMI Fondamenti di Informatica - D. Talia - UNICAL 1 Specifica di un algoritmo Primo approccio, scrittura diretta del programma: la soluzione coincide con la codifica
Il principio di induzione e i numeri naturali.
Il principio di induzione e i numeri naturali. Il principio di induzione è un potente strumento di dimostrazione, al quale si ricorre ogni volta che si debba dimostrare una proprietà in un numero infinito
COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle
Linguaggi di programmazione
Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di un programma, cioè di una sequenza di istruzioni descritte nel linguaggio interpretabile dal calcolatore
LE SUCCESSIONI 1. COS E UNA SUCCESSIONE
LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe
Intelligenza Artificiale
Intelligenza Artificiale Esercizi e Domande di Esame Tecniche di Ricerca e Pianificazione Esercizi Griglia Si consideri un ambiente costituito da una griglia n n in cui si muove un agente che può spostarsi
ESEMPIO 1: eseguire il complemento a 10 di 765
COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento
CPU. Maurizio Palesi
CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore
Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.
Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito
10. Insiemi non misurabili secondo Lebesgue.
10. Insiemi non misurabili secondo Lebesgue. Lo scopo principale di questo capitolo è quello di far vedere che esistono sottoinsiemi di R h che non sono misurabili secondo Lebesgue. La costruzione di insiemi
Codifiche a lunghezza variabile
Sistemi Multimediali Codifiche a lunghezza variabile Marco Gribaudo [email protected], [email protected] Assegnazione del codice Come visto in precedenza, per poter memorizzare o trasmettere un
Origini e caratteristiche dei calcolatori elettronici
Origini e caratteristiche dei calcolatori elettronici Lunedì, 09 ottobre 2006 Supercomputer, mainframe 1 Server, workstation, desktop, notebook, palmare Un po di storia 1642 Biagio Pascal 1671 Leibniz
Alessandro Pellegrini
Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione
Architettura di un computer
Architettura di un computer Modulo di Informatica Dott.sa Sara Zuppiroli A.A. 2012-2013 Modulo di Informatica () Architettura A.A. 2012-2013 1 / 36 La tecnologia Cerchiamo di capire alcuni concetti su
Nozione di algoritmo. Gabriella Trucco
Nozione di algoritmo Gabriella Trucco Programmazione Attività con cui si predispone l'elaboratore ad eseguire un particolare insieme di azioni su particolari informazioni (dati), allo scopo di risolvere
Elementi di informatica
Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri Rappresentazione dei numeri nei calcolatori rappresentazioni finalizzate ad algoritmi efficienti per le operazioni
Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.
E. Calabrese: Fondamenti di Informatica Problemi-1 Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi. L'informatica
Dispense di Informatica per l ITG Valadier
La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di
risulta (x) = 1 se x < 0.
Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente
Strutturazione logica dei dati: i file
Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer
LE FUNZIONI A DUE VARIABILI
Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre
Esercizi Capitolo 6 - Alberi binari di ricerca
Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile
Esempi di algoritmi. Lezione III
Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni
Introduzione. Informatica B. Daniele Loiacono
Introduzione Informatica B Perchè studiare l informatica? Perchè ha a che fare con quasi tutto quello con cui abbiamo a che fare ogni giorno Perché è uno strumento fondamentale per progettare l innovazione
Corso di Matematica per la Chimica
Dott.ssa Maria Carmela De Bonis a.a. 203-4 I sistemi lineari Generalità sui sistemi lineari Molti problemi dell ingegneria, della fisica, della chimica, dell informatica e dell economia, si modellizzano
RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997
1 RAPPRESENTAZIONE BINARIA DEI NUMERI Andrea Bobbio Anno Accademico 1996-1997 Numeri Binari 2 Sistemi di Numerazione Il valore di un numero può essere espresso con diverse rappresentazioni. non posizionali:
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione
Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Esercizi II parte Esercizio 1 Discutere la correttezza di ciascuna delle seguenti affermazioni. Dimostrare formalmente la validità
