Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
nota bene: il concetto di procedura è quello intuitivo: una procedura non è altro che una
sequenza finita di passi che può o meno terminare con un risultato.
Calcolo logico corretto: dato un linguaggio L ⊆ Σ*, il calcolo logico V è detto corretto
per L
se V(x, d ) = 1 ⇒ x ∈ L.
Questa condizione viene detta correttezza del calcolo perché, se x ammette una
dimostrazione d nel
calcolo, allora x deve appartenere a L. (V fa quello che deve fare)
Calcolo logico completo: dato un linguaggio L ⊆ Σ*, Il calcolo logico V è detto completo
per L
se ∀x ∈ L ∃d ∈ U* tale che V(x, d ) = 1.
Questa condizione viene detta completezza del calcolo perché garantisce che, quando
x∈L, è sempre
possibile trovarne una dimostrazione d nel calcolo. (lo fa per ogni parola)
Calcolo logico per il linguaggio L: dato un linguaggio L ⊆ Σ*, un calcolo logico per L è un
calcolo logico V corretto e completo per L. In tal caso sarà L = {x | ∃d V(x, d ) = 1}.
Teorema: L am met te un calcolo logico ⇔ L è r icorsivamente numerabile
Derivazione in un passo: data una grammatica G e due parole w,z∈( Σ ∪ Q)* diremo che z
è derivabile in G da w in un passo, scrivendow ⇒ G z se w = xαy, z = xβy e α→β è una
regola in P.
Derivazione: una derivazione di z da w in G è una sequenza w ⇒ G w1⇒G w2⇒G … ⇒G
wm⇒G z , per cui sia w⇒G w1 , ...., wi⇒G wi+1 .., wm ⇒G z .
Teorema:
Il lingu aggio L è generato d a un a gram m atica ⇔ L è r icorsivamente numerabile .
Questo significa che, se per un linguaggio L esiste un calcolo logico corretto e completo,
allora L è generabile da una grammatica. Le grammatiche risultano dunque sistemi formali
per esprimere calcoli logici.
Albero di derivazione: data una grammatica G = <Σ, Q, P, S> di tipo 2 che genera il
linguaggio L(G), un albero di derivazione della parola w∈L(G) in G è un albero ordinato i
cui nodi sono etichettati con simboli in S∪Q, così che:
● Ogni foglia è etichettata con un simbolo terminale, mentre ogni nodo interno è
etichettato con un metasimbolo;
● La radice è etichettata con l’assioma S;
● Se un nodo interno è etichettato col metasimbolo B e i suoi figli sono etichettati, in
ordine, coi metasimboli B1 . . . Bm, allora B→B1 . . . Bm è una regola di
produzione di G;
● Leggendo le foglie in ordine prefisso, la sequenza di etichette forma la parola w.
Derivazioni equivalenti: data una grammatica G, diremo che due derivazioni sono
equivalenti se hanno associato lo stesso albero di derivazione.
Grammatica ambigua / non ambigua: una grammatica G = <Σ, Q, P, S> di tipo 2 è detta
ambigua se esiste una parola w∈L(G) che ammette due diversi alberi di derivazione;
viceversa, una grammatica G = <Σ, Q, P, S> di tipo 2 è detta non ambigua se ogni parola
w∈L(G) ammette un unico albero di derivazione.
Automa massimo: GL(per ogni parola in input raggiungo uno stato diverso)
∀w, w′ δ(q0, w) ≠ δ(q0, w′) ⇒ Q = Σ*
Automa a stati finiti non deterministico (NFA): Un automa a stati finiti non
deterministico A è un sistema A = < Q , Σ, R, q0, F > con: insieme (finito) degli stati
Q , alfabeto(finito) Σ, relazione di transizione R: Q × Σ × Q → {0,1}, stato iniziale
q0∈ Q e F ⊆ Q come insieme degli stati finali.
R(q, σ, p) = 1 se q →σ p, 0 altrimenti.
Parola ambigua: Una parola è ambigua se ammette due alberi di derivazione diversi.
Grammatica ambigua: Una grammatica G si dice ambigua se genera almeno una parola
ambigua.
Pila: Memoria ad accesso limitato con politica (LIFO - Last in first out)
Riconoscitore a pila:
Un riconoscitore a pila è una tupla A = (Σ, K, S, δ ) dove:
● Σ alfabeto di input
● K alfabeto della pila Σ ∩ K = ⊘
● S simbolo iniziale della pila
● δ funzione di evoluzione della pila δ: K × Σ → 2k* δ(x, σ) = {w1, w2, . . . , ws}
con wj ∈ K*
Si indica che:
● X è letto in cima alla pila (TOP)
● σè letto sul nastro di input
● X viene cancellato dalla pila (POP)
● Viene scelto un Wj ∈ K* in maniera NON DETERMINISTICA da inserire nella pila
(PUSH)