(:title Traduttori - Appunti del 2 aprile 2009:)
Torna alla pagina di Traduttori
:: Traduttori - Appunti del 2 aprile 2009 ::
Proprietà dei linguaggi regolari
Come già abbiamo detto, i linguaggi regolari ci piacciono, per quanto poco espressivi, perché godono di diverse proprietà dimostrabili algoritmicamente. E queste proprietà possono anche essere usate per riconoscere un linguaggio regolare: se riesco a dimostrare che un linguaggio gode di proprietà che solo i linguaggi regolari possono avere, posso inferire che si tratti di un linguaggio regolare.
Il Pumping Lemma
Il Pumping Lemma viene usato per discernere i linguaggi regolari dai non regolari. Anzi, per essere più preciso, rappresenta una condizione necessaria ma non sufficiente per poter dire se un linguaggio sia regolare o meno.
Necessaria ma non sufficiente vuol dire che, se il Pumping Lemma viene dimostrato come falso per un linguaggio, allora sono sicuro che il linguaggio non sia regolare. Se invece il Pumping Lemma è vero per un linguaggio, allora non posso dire che cosa esso sia.
L'intuizione di base del Pumping Lemma è che i linguaggi regolari devono essere riconosciuti da un automa con memoria finita. Se dimostro che un linguaggio non è riconoscibile da un automa con memoria finita, allora so che quel linguaggio non è regolare.
Dimostrazione
A è un automa (Q, δ, q0, F) definito su un alfabeto Σ, con n stati. LA è il linguaggio regolare da esso riconosciuto.
Possiamo dire che ∀ w ∈ L, w = xyz, ovvero che ogni parola appartenente al linguaggio più essere scomposta in un prefisso x, in una parte centrale y e in una parte finale z.
Discutiamo un po' della lunghezza della mia stringa w. Abbiamo detto che il mio automa ha n stati. Se w > n, significa che il cammino che porta alla sua accettazione dovrà per forza fare almeno un loop in uno stato.
...continua...
Torna alla pagina di Traduttori