Linguaggi formali

Cos'è un linguaggio formale

Un linguaggio formale è un insieme composto da un alfabeto e parole.

L'alfabeto

Un alfabeto E è un insieme finito e non vuoto di simboli.

La cardinalità dell'insieme |E| indica il numero dei simboli dell'alfabeto.

Esempio

Il linguaggio binario ha un alfabeto composto da due soli simboli, lo zero e l'uno.

$$ E = \{ 0,1 \} $$

La cardinalità dell'insieme è 2.

$$ |E| = 2 $$

Le parole

Le parole (o stringhe) sono sequenze di simboli appartenenti all'alfabeto.

Esempio

Dato un alfabeto composto da tre simboli

$$ E = \{ A,B,C \} $$

Sono esempi di parole le seguenti:

$$ w_1 = ABC \\ w_2 = ABBA \\ w_3 = BACCA \\ \vdots $$

Ogni parola (word) ha una lunghezza |w| pari al numero dei simboli anche ripetuti che la compongono.

$$ |w_1|=3 \\ |w_2|=4 \\ |w_3|=5 \\ $$

Nota. Per misurare la frequenza di un singolo simbolo x nella parola (occorrenze) si scrive |w|_x. Ad esempio $$ |w_3|_C=2 $$

L'insieme di tutte le parole possibili con un alfabeto E si indica con il simbolo E*.

Non occorre che le parole abbiano un significato.

Pertanto, l'insieme E* è un insieme infinito perché è composto da sequenze di simboli senza un limite di lunghezza.

La stringa vuota

Nell'insieme E* è definita anche la stringa vuota ossia una parola di lunghezza pari a zero.

La stringa vuota è indicata con il simbolo epsilon ε.

Il prefisso, la sottostringa e il suffisso

Una parola può essere composta da tre componenti:

  • Prefisso. E' la sequenza di caratteri iniziale (u).
  • Sottostringa. E' la sequenza di caratteri intermedia (v) tra il prefisso e il suffisso.
  • Suffisso. E' la sequenza di caratteri terminale (z) della parola.

Esempio. La parola w1=BACCA è composta dai seguenti prefissi possibili B, BA, BAC, BACC, BACCA. I suffissi possibili sono, invece, A, CA, CCA, ACCA, BACCA. La scelta del prefisso e del suffisso determina indirettamente l'insieme delle sottostringhe. Ad esempio, se il prefisso è BA e il suffisso è CA, allora una sottostringa è C.

Le operazioni sulle parole

Le principali operazioni sulle parole sono le seguenti:

Linguaggio

Un linguaggio L è un insieme di parole definite su un alfabeto E.

Il numero delle parole del linguaggio indica la cardinalità del linguaggio stesso.

$$ |L| $$

Pertanto, un linguaggio è un insieme finito.

Nota. In alcuni casi può comunque essere anche un insieme infinito oppure un insieme vuoto se è composto soltanto dalla parola vuota (stringa nulla e)

Esempio

Dato un alfabeto con tre lettere

$$ E=\{ A,B,C \} $$

e un insieme infinito E' di sequenze possibili (parole)

$$ A, AB, BA, ABC, BAC, ... $$

Il linguaggio L1 è un sottoinsieme finito di parole

$$ L_1 = \{ AB, BA \} $$

Il linguaggio L2 è, invece, un sottoinsieme infinito di parole.

$$ L_1 = \{ w \in E' : |w|>5 \} $$

Comprende tutte le parole composte più di 5 simboli.

Le operazioni sul linguaggio

I principali operatori sui linguaggi sono:

  • Unione
    Due linguaggi sono uniti per formare un unico linguaggi.
  • Intersezione
    E' il sottoinsieme delle parole in comune di due linguaggi.
  • Concatenazione
    E' un insieme con la concatenazione delle parole di due linguaggi.
  • Stella di Kleen
    E' la concatenazione delle parole di un linguaggio per n volte.
  • Il complemento
    E' l'insieme delle parole non presenti nel linguaggio L rispetto a un altro linguaggio o insieme di parole.
  • Composizione concorrente
    E' l'insieme delle parole che sono proiezioni appartenenti a due linguaggi.

Tipi di linguaggi formali

Esistono diverse categorie di linguaggi formali

  • Linguaggi ricorsivamente enumerabili
    E' la classe dei linguaggi accettati dalle macchine di Turing. Questa colasse include i linguaggi regolari, i linguaggi liberi dal contesto e i linguaggi di Petri.

    Nota. I linguaggi ricorsivamente enumerabili sono la classe più alta nella gerarchia dei linguaggi perché include tutti gli altri. Pertanto, la macchina di Turing è in grado di accettare tutte le altre tipologie di linguaggi ed è in grado di rappresentare tutti i sistemi. Gli altri linguaggi hanno una potenza descrittiva più limitata. Tuttavia, la macchina di Turing ha lo svantaggio della complessità.

  • Linguaggi dipendenti dal contesto
    E' la classe dei linguaggi accettati dagli automi limitati inferiormente. E' un sottoinsieme dei linguaggi ricorsivamente enumerabili. Include i liguaggi di Petri e i linguaggi liberi dal contesto.
  • Linguaggi liberi dal contesto
    E' la classe dei linguaggi accettati dagli automi a pila
  • Linguaggi di Petri
    E' la classe dei linguaggi accettati dalle reti di Petri.

    Nota. Le reti di Petri sono una buona via di mezzo perché garantiscono un potere descrittivo accettabile, superiore a quello degli automi, e un discreto livello di semplicità di utilizzo.

  • Linguaggi regolari
    E' la classe dei linguaggi accettati dagli automi finiti. E' un sottoinsieme dei linguaggi dipendenti dal contesto. Identifica l'intersezione tra i linguaggi liberi dal contesto e i linguaggi di Petri.

    Nota. Gli automi a stati finiti sono il modello più semplic ma hanno un potere descrittivo limitato ai soli linguaggi regolari. Tuttavia, la semplicità è un loro punto di forza. Quindi, laddove è possibile usarli, sono preferibili agli altri.

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Logica