Limbaj formal

În matematică, logică, informatică și lingvistică un limbaj formal este o mulțime de cuvinte de lungime finită (șiruri de caractere) bazate pe un alfabet finit, și teoria științifică ce tratează aceste entități se numește teoria limbajelor formale. Se poate vorbi despre limbaje formale în multe contexte (științific, lingvistic, juridic, medical și altele) dar în acest articol tratează limbajele formale în sensul de limbaj studiat de teoria limbajelor formale.

Familiarizare

Un exemplu de alfabet poate fi { a , b } {\displaystyle \left\{a,b\right\}} , și un șir peste acest alfabet ar putea fi a b a b b a {\displaystyle ababba} .

Un exemplu de limbaj peste acel alfabet și care conține șirul dat ca exemplu ar fi mulțimea tuturor șirurilor care conțin același număr de simboluri a {\displaystyle a} și b {\displaystyle b} .

Cuvântul vid (adică șirul de lungime 0) este permis și este de obicei notat cu e {\displaystyle e} , ϵ {\displaystyle \epsilon } sau λ {\displaystyle \lambda } .

Chiar dacă alfabetul este de lungime finită și lungimea oricărui cuvânt este finită, un limbaj poate avea un număr infinit de membri (pentru că mulțimea cuvintelor din el nu e limitată).

Exemple de limbaje

Câteva exemple de limbaje formale:

  • mulțimea tuturor cuvintelor peste alfabetul a , b {\displaystyle {a,b}}
  • mulțimea { a n } {\displaystyle \left\{a^{n}\right\}} , unde n număr prim și a n {\displaystyle a^{n}} înseamnă a {\displaystyle a} repetat de n {\displaystyle n} ori
  • mulțimea programelor corecte din punct de vedere sintactic într-un limbaj de programare
  • mulțimea intrărilor pentru care o mașină Turing se oprește.

Modalități de construcție

Un limbaj formal poate fi specificat în mai multe feluri:

  • Ca șiruri produse de o anumită gramatică formală (vezi ierarhia Chomsky);
  • Șiruri produse de o expresie regulată;
  • Șiruri acceptate de un automat, cum ar fi o mașină Turing sau un automat finit;
  • Dintr-o mulțime de întrebări de tip DA/NU, cele al căror răspuns este da - vezi problema deciziei.

Operații cu limbaje

Se pot realiza operații pe limbaje pentru a obține alte limbaje din acestea. Să presupunem că L 1 {\displaystyle L_{1}} și L 2 {\displaystyle L_{2}} sunt două limbaje peste același alfabet.

  • Concatenarea L 1 L 2 {\displaystyle L_{1}\cdot L_{2}} (sau L 1 L 2 {\displaystyle L_{1}L_{2}} ) constă din toate șirurile de forma v w {\displaystyle vw} unde v {\displaystyle v} este un șir din L 1 {\displaystyle L_{1}} și w {\displaystyle w} este un șir din L 2 {\displaystyle L_{2}} .
  • Intersecția L 1 L 2 {\displaystyle L_{1}\cap L_{2}} a lui L 1 {\displaystyle L_{1}} cu L 2 {\displaystyle L_{2}} constă din toate șirurile conținute atât în L 1 {\displaystyle L_{1}} cât și în L 2 {\displaystyle L_{2}} .
  • Reuniunea L 1 L 2 {\displaystyle L_{1}\cup L_{2}} a lui L 1 {\displaystyle L_{1}} și L 2 {\displaystyle L_{2}} constă din toate șirurile conținute în L 1 {\displaystyle L_{1}} sau în L 2 {\displaystyle L_{2}} .
  • Complementul limbajului L 1 {\displaystyle L_{1}} constă din toate șirurile peste alfabet care nu sunt conținute în L 1 {\displaystyle L_{1}} .
  • Diferența L 1 L 2 {\displaystyle L_{1}\setminus L_{2}} a lui L 1 {\displaystyle L_{1}} și L 2 {\displaystyle L_{2}} constă din toate șirurile conținute în L 1 {\displaystyle L_{1}} dar nu și în L 2 {\displaystyle L_{2}} .
  • Câtul la dreapta L 1 / L 2 {\displaystyle L_{1}/L_{2}} al lui L 1 {\displaystyle L_{1}} cu L 2 {\displaystyle L_{2}} constă din toate șirurile v {\displaystyle v} pentru care există un șir w {\displaystyle w} în L 2 {\displaystyle L_{2}} așa încât v w {\displaystyle vw} este în L 1 {\displaystyle L_{1}} .
  • Închiderea Kleene L 1 {\displaystyle L_{1}^{*}} constă din toate șirurile de forma w 1 w 2 . . . w n {\displaystyle w_{1}w_{2}...w_{n}} cu șirurile w i {\displaystyle w_{i}} din L 1 {\displaystyle L_{1}} și n 0 {\displaystyle n\geq 0} . Aceasta include și șirul ϵ {\displaystyle \epsilon } deoarece acesta se obține pentru n = 0 {\displaystyle n=0} , care este o valoare permisă.
  • Inversul L 1 R {\displaystyle L_{1}^{R}} conține versiunile în oglindă ale tuturor șirurilor din L 1 {\displaystyle L_{1}} .
  • Amestecarea lui L 1 {\displaystyle L_{1}} și L 2 {\displaystyle L_{2}} constă din șirurile de forma v 1 w 1 v 2 w 2 . . . v n w n {\displaystyle v_{1}w_{1}v_{2}w_{2}...v_{n}w_{n}} unde n 1 {\displaystyle n\geq 1} și v 1 , . . . , v n {\displaystyle v_{1},...,v_{n}} sunt șiruri pentru care concatenarea v 1 . . . v n {\displaystyle v_{1}...v_{n}} este din L 1 {\displaystyle L_{1}} și w 1 , . . . , w n {\displaystyle w_{1},...,w_{n}} sunt șiruri pentru care w 1 . . . w n {\displaystyle w_{1}...w_{n}} este din L 2 {\displaystyle L_{2}} .

O întrebare importantă pentru teoria limbajelor formale este "cât este de dificil să decidem dacă un cuvânt dat aparține unui limbaj?" Acesta este domeniul teoriei computabilității și teoriei complexității.

Legături externe

  • University of Maryland, Formal Language Definitions
  • James Power, "Notes on Formal Language Theory and Parsing" Arhivat în , la Wayback Machine., 29 November 2002.
  • Drafts of some chapters in the "Handbook of Formal Language Theory", Vol. 1-3, G. Rozenberg and A. Salomaa (eds.), Springer Verlag, (1997):t
    • Alexandru Mateescu and Arto Salomaa, "Preface" in Vol.1, pp. v-viii, and "Formal Languages: An Introduction and a Synopsis", Chapter 1 in Vol. 1, pp.1-39
    • Sheng Yu, "Regular Languages", Chapter 2 in Vol. 1
    • Jean-Michel Autebert, Jean Berstel, Luc Boasson, "Context-Free Languages and Push-Down Automata", Chapter 3 in Vol. 1 Arhivat în , la Wayback Machine.
    • Christian Choffrut and Juhani Karhumäki, "Combinatorics of Words", Chapter 6 in Vol. 1
    • Tero Harju and Juhani Karhumäki, "Morphisms", Chapter 7 in Vol. 1, pp. 439 - 510
    • Jean-Eric Pin, "Syntactic semigroups", Chapter 10 in Vol. 1, pp. 679-746
    • M. Crochemore and C. Hancart, "Automata for matching patterns", Chapter 9 in Vol. 2
    • Dora Giammarresi, Antonio Restivo, "Two-dimensional Languages", Chapter 4 in Vol. 3, pp. 215 - 267
Control de autoritate
  • BNF: cb11967270h (data)
  • GND: 4017848-1
  • LCCN: sh85050802
  • NDL: 00576869
  • NKC: ph208851