Note
Un linguaggio è uno strumento per esprimere modelli. Ogni linguaggio è definito su un alfabeto, che è un insieme finito di simboli.
Esempi di linguaggio
Lingue naturali: Italiano, Francese, Inglese, Giapponese Linguaggi sintetici: C, Java, XML, JSON Linguaggi grafici: cartelli stradali, simboli di lavaggio negli indumenti Linguaggi acustici: musica, fischi degli arbitri sportivi
Esempi di alfabeto
Alfabeto latino:
Binario:
Un linguaggio può essere usato per definire l’insieme di soluzioni di un problema, e per esprimere un problema stesso.
Stringhe
Note
Definiamo una stringa come una sequenza ordinata e finita di elementi di un alfabeto
. Riguardante ad una stringa definiamo:
- Lunghezza di una stringa, cioè il numero di elementi come:
- Stringa di lunghezza nulla
, con - Insieme di tutte le stringhe (inclusivo di
) su : - Operatore di concatenazione
(omissibile)
Siccome l’operatore di concatenazione
Linguaggio su un alfabeto
Note
Un linguaggio
su un alfabeto è un sottoinsieme di , e quindi un insieme di parole di .
Esempio
L’italiano è un linguaggio su
. I file PDF sono un linguaggio su . I numeri in base sono un linguaggio su . Il DNA è un linguaggio codificabile su .
Notiamo che se
Siccome i linguaggi sono insiemi valgono le operazioni insiemistiche come
Concatenazioni tra linguaggi
Note
Dati un linguaggio
su , e un linguaggio su , si ha che definito su è: Si ha inoltre che dato un linguaggio
e , è definita come la concatenazione di se stesso volte: Definiamo inoltre l’operatore
di un alfabeto, che indica stringhe fatte concatenando uno o più elementi dell’insieme. Per estensione ai linguaggi definiamo:
Nella pratica, l’intersezione tra linguaggi indica la compatibilità tra di loro, mentre la concatenazione di linguaggi consente di descrivere più agevolmente formati complessi.
Esempio di concatenazione
In questo esempio
perché la concatenazione non è commutativa.
Esempio di concatenazione
Sia un alfabeto
, allora . Per quanto riguarda ai linguaggi:
- Formato di pacchetto di dati su una rete
- Archivio di dati tar o zip:
Traduzioni
Note
Una traduzione è una mappa
, cioè mette in corrispondenza parole di due linguaggi.
Famiglia di linguaggi
Note
Una famiglia di linguaggi è un insieme
i cui elementi sono linguaggi. È chiusa rispetto ad un’operazione se .