Sei sulla pagina 1di 5

Automi e calcolo

Automa → Macchina astratta, realizza un certo algoritmo secondo un modello di calcolo


● Algoritmo definito nel linguaggio macchina dell’automa
● Riceve ed elabora dati in ingresso
● Vincoli di finitezza → Numero finito di componenti, cardinalità finita degli alfabeti I/O

Riconoscimento di linguaggi
● Problema dell’appartenenza o membership → Stabilire se una stringa x appartiene ad L
● L. tipo 3 → Riconosciuti da macchine a stati finiti
● L. tipo 2 → Automi a pila non deterministici
● L. tipo 1 → Automi limitati linearmente (LBA)
● L. Tipo 0 → Riconosciuti da macchine di Turing

Macchina a stati finiti (FSM)


● M = <Σ, Q, δ, q0, F>
● Σ = {σ1,...,σn}: alfabeto di input
● Q = {q0,...,qn}: insieme finito non vuoto di stati
● F ⊆ Q: insieme di stati finali
● q0 ∈ Q: stato iniziale
● δ: Q x Σ → Q: funzione di transizione
○ In base allo stato e al simbolo di input attuali …
determina lo stato successivo
Linguaggio riconosciuto da FSM
● Funzione di transizione estesa a stringhe: δ: Q x Σ* → Q
● Linguaggio riconosciuto da una macchina M: L(M) = {x ∈ Σ* : δ(q0, x) ∈ F}
● FSM riconoscono tutti e solo i linguaggi regolari
● Rappresentazione della funzione di transizione:
○ Tabella di transizione
○ Diagramma degli stati

FSM non deterministica (NFSM)


● M = <Σ, Q, δN, q0, F>
● Σ = {σ1, ..., σn}: alfabeto di input
● Q = {q0, ..., qm}: insieme finito non vuoto di stati
● F ⊆ Q: insieme di stati finali
● q0 ∈ Q: stato iniziale
● δN: Q x Σ → P(Q): funzione di transizione, determina insieme di stati successivi
○ P(Q) è l'insieme delle parti di Q, ossia l'insieme di tutti i possibili sottoinsiemi
di Q
Equivalenza FSM/NFSM
● Per ogni stato, definiti più stati successivi

● Non determinismo:
○ Calcolo = albero di computazioni autonome
○ Anziché traiettoria in uno spazio di stati
● FSM / NFSM: formalismi equivalenti
○ FSM è un caso particolare di NFSM
○ Viceversa, ogni elemento di P(Q) di NFSM diventa uno stato di FSM
○ P(Q) contiene 2|Q| elementi: FSM può avere num. stati esponenzialmente
maggiore dell'equivalente NFSM

Automa a pila (PDA)


● Simile a FSM, ma dotato di memoria infinita organizzata a pila
○ Si può accedere solo alla cima della pila
○ Lettura del simbolo in cima e sostituzione con nuova stringa
● In forma non deterministica permette di riconoscere linguaggi non contestuali
● In forma deterministica, riconosce solo linguaggi non contestuali
deterministici(sottoclasse)
○ Base dei linguaggi di programmazione

● M = <Σ, Γ, z0, Q, q0, F, δ>


● Σ = {σ1, ..., σn}: alfabeto di input
● Γ = {z0, ..., zm}: simboli della pila
● z0 ∈ Γ: simbolo di pila iniziale
● Q = {q0, ..., qk}: insieme finito non vuoto di stati
● q0 ∈ Q: stato iniziale; F ⊆ Q: insieme di stati finali
● δ: Q x Σ x Γ → Q x Γ*: funzione di transizione
○ In base a stato, simbolo di input, simbolo in cima a pila …
○ Determina stato successivo e simboli inseriti nella pila
○ Per rimuovere il simbolo in cima alla pila, si scrive ε
PDA non deterministico
● A = <Σ, Γ, z0, Q, q0, F, δN>
● δN: Q x Σε x Γ → P(Q x Γ*): funzione di transizione, determina gli stati e i simboli di pila
successivi
○ Es. δ(p, a, A) = {(q, BA), (r, ε)} (due transizioni)
○ Simbolo A in cima alla pila sostituito dalla stringa di caratteri BA, nuovo stato
interno q
○ Simbolo A in cima alla rimosso (sostituito da ε), nuovo stato interno r
● NPDA: maggiore potere computazionale di PDA
○ L = {anbn} ∪ {anb2n}, n ≥ 0
○ S → A|B, A → aAb|ε, B → aBbb|ε

Macchina di Turing (TM)


● Automa con testina di scrittura/lettura su nastro bidirezionale “illimitato”
● Ad ogni passo:
○ Si trova in uno stato, legge un simbolo dal nastro
● In base alla funzione di transizione (deterministica)
○ Scrive un simbolo sul nastro
○ Sposta la testina di una posizione
○ Cambia lo stato
TM deterministica
● M = <Σ, Q, q0, F, δ>
● Σ = {σ1, ..., σn, ␢}: alfabeto del nastro (con blank)
● Q = {q0, ..., qm}: insieme finito di stati
● q0 ∈ Q: stato iniziale
● F ⊆ Q: insieme di stati finali
● δ: Q x Σ → Q x Σ x {L, R, N}: f. di transizione
○ Determina la configurazione successiva: stato, simbolo scritto su nastro,
spostamento della testina

TM non deterministica
● M = <Σ, Q, q0, F, δN>
● δN: Q x Σ → P(Q x Σ x {L, R, N}): f. di transizione
○ Determina una o più configurazioni successive
● Grado di non-determinismo n
○ Max transizioni alternative
○ Max figli di un nodo in albero di computazione
● NTM: stessa potenza computazionale di TM
○ Data M NTM, ∃ M' TM equivalente (M' simula M)
● Ma NTM più efficiente (finora…)
○ k passi di M ⇒ k' passi di M', k' ∝ knk
○ M' richiede tempo esponenzialmente maggiore

Macchina di Turing Universale


● UTM realizza la computazione:
○ (q0U, DM#x) →* (α, qfU, β) …
○ q0U, stato iniziale; qfU, stato finale
○ DM#x: input; DM: descrizione di M (funz. di transizione)
● ⇔ M realizza la computazione: (q0, x) →* (α, qf, β)
○ q0, stato iniziale; qf, stato finale; x, input
● Regole di transizione di M → Sequenza di quintuple
○ DM = d1##d2## ... ##dn
○ qi#σj#qh#σk#tl ⇔ δ(qi, σj) = (qh, σk, tl)
Funzionamento della UTM
● UTM interpeta un arbitrario programma sul nastro
○ Dato lo stesso input, UTM produce lo stesso output
○ Per ogni simbolo letto in x (input di M), scorre la lista di regole, per scegliere
la giusta transizione

Calcolabilità
● Per ogni problema effettivamente calcolabile, esiste una macchina di Turing per
calcolarlo
● Ma esistono problemi irrisolvibili → paradossi

● Problema della terminazione


● Predicato della terminazione, non calcolabile
○ h(DM, x) = 1, se M con input x termina
○ h(DM, x) = 0, se M con input x non termina
● Costruiamo per assurdo H, TM che calcola h
● Costruiamo quindi G
○ g(DM) = 0, se h(DM, DM) = 0
○ Indefinito, altrimenti (ossia G cicla all'infinito, se h = 1)
● Ma è assurdo:
○ g(DG) è indefinita, se g(DG) = 0 (definita)
○ g(DG) = 0 (definita), se g(DG) è indefinita

Macchine a registri
Calcolatore
● MAcchina programmabile
○ Memorizza ed elabora automaticamente
○ Attraverso istruzioni di un programma
○ Dati in formato digitale (I/O)
● Diversi modelli di calcolo
○ Diverse definizioni di operazioni elementari e concetto stesso di algoritmo
○ Diverse definizioni di problema risolvibile/irrisolvibile
Macchina di Von Neumann
● Calcolatore con dati e programma in memoria centrale
● Realizzazione del modello teorico UTM

Central Processing Unit


Composta da due parti:
● Control Unit (CU) → Interpreta istruzioni, comanda le altre parti della CPU, controlla il
flusso tra CPU e memoria
● Arithmetic Logical Unit (ALU) → esegue le operazioni aritmetiche e logiche ed esegue
confronti
Culo
Ciclo principale della CPU
● Caricamento → CU preleva istruzione dalla locazione di memoria indicata nel registro
PC e la memorizza in IR
● Decodifica → CU interpreta istruzione, legge eventualmente dalla memoria i dati
necessari
● Esecuzione → CU comanda le parti
● Memorizzazione → Risultati memorizzati nella memoria centrale o in registri della
CPU
Interpretazione istruzioni
● Al termine della fase di fetch, IR contiene istruzione da eseguire
○ Codice operativo + operandi
○ Linguaggio macchina: il significato dipende da CPU
Classificazione di Flynn
● Parallelismo → Migliori prestazioni, a parità di velocità sulla singola istruzione
● SISD → Una operazione alla volta
● MISD → Insolite, per tolleranza ai guasti; sistemi eterogenei, sugli stessi dati, devono dare
stesso output
● SIMD → Operazioni naturalmente parallelizzabili
● MIMD → IStruzioni diverse su dati diversi; architetture con più core

Assembler
● Linguaggio macchina: definisce il set di istruzioni comprensibile dalla CPU
○ CISC → Complex instruction Set computing
○ RISC → Reduced instruction set computing
● Assembler → Traduce da linguaggio assembly a linguaggio macchina