Contesto:
- nascita anni 30 teoria
- disciplina definita pienamente se teoria evienzia limiti e potenzialità
QUIZ: realizzazione mediante dispositivi elettronici è l'unico modo di
fare informatica?
R: No! è stata solo fortuna dovuta al periodo e allo studio dell'elettronica
anni 40/50
Siamo indipendenti da una macchina fisica! Macchine attuali basate su architettura Von-Neumann / Turing.
Esempi di strumenti di calcolo
- DNA compuiting (molecole)
- Quantum Computing (particell)
- Lambda Calcolo (mero calcolo simbolico)
QUIZ: possiamo calcolare tutto?
R: Sì? No? Proviamo a pensare alla cosa più semplice: un algoritmo trasforma
un input in output. Facciamo in modo che I e O siano naturali (cosa più
semplice) e algoritmo è una seq finita di passi.
Allora possiamo enumerare tutti i programmi, ad esempio:
- programma vuoto ha indice 0
- programma che somma 1 all'input ha indice 1
- programma che moltiplica per 5 ha indice 2
- e così via... (gli indici dipendono dalla codifica).
Fissiamo un programma
Costruiamo ora il seguente problema
input:
determina il programma
calcola
output:
Se possiamo codificare questo programma allora esso assumerà un indice, supponiamo l'indice sia m. 94? 663251002? Non ci interessa!
Chiamiamo
Ma allora avremmo
Assurdo!
R: No! Non possiamo calcolare tutto.
Da qui abbiamo diverse categorie di linguaggi formali, più o meno espressivi. La prima e l'unica che vediamo sono gli automi a stati finiti.
Primo linguaggio formale, quanto è espressivo?
Un modello matematico avente input / (eventualmente) output a valori discreti e che si può trovare solo in certi stati (finiti). L'essere in uno stato gli permette di avere memoria di quello che è successo.
Esempio di automa: ascensore, dove input è seq di tasti premuti mentre lo stato è il piano in cui si trova.
Comportamento di un automa si definisce mediante una tabella detta matrice/tab. di transizione
a | b | |
---|---|---|
q0 | ||
q1 | ||
q2 |
dove sulle righe abbiamo gli stati e sulle colonne i simboli dell'alfabeto che vogliamo leggere. Le celle possono contenere altri stati ed indicano come transire da uno stato ad uno stato se letto un particolare simbolo.
Esempio: (q1 stato finale)
a | b | |
---|---|---|
q0 | q1 | q2 |
q1 | q1 | q0 |
q2 | q1 | q0 |
Rappresentiamo la tabella tramite un grafo.
GRAFO
Matematicamente possiamo dire un automa deterministico a stati finiti
(DFA) è una quintupla
- Q insieme finito di stati
-
$\Sigma$ alfabeto (di input) -
$\delta : Q \times \Sigma \rightarrow Q$ funzione di transizione -
$q_0$ : stato iniziale -
$F \subseteq Q$ insieme stati finali
Dall'alfabeto
ovvero l'insieme di tutte le stringhe a partire dall'alfabeto
Notazione: p, q, r denotano stati; P, Q, R, S denotano insiemi di
stati; a, b denotano simboli di
Da
Quindi, una stringa
Quanto è espressivo un automa? ==> Linguaggi regolari.
Esercizio: costruire un automa che non accetta nessuna stringa
Esercizio: costruire un automa che accetta tutte le stringhe
Esercizio: Tradurre la seg. tabella di transizione in grafo con
0 | 1 | |
---|---|---|
q0 | q1 | q2 |
q1 | q1 | q1 |
q2 | q1 | q0 |