Formalni jezik

Izvor: testwiki
Datum izmjene: 18 mart 2025 u 22:27; autor: imported>Samo22pedia (growthexperiments-addlink-summary-summary:1|0|1)
(razl) ← Starija izmjena | Trenutna verzija (razl) | Novija izmjena → (razl)
Idi na navigaciju Idi na pretragu

Šablon:Nedostaju izvori U matematici, logici i računarstvu, formalni jezik 𝑳 se sastoji od skupa konačnih nizova elemenata konačnog skupa 𝑨 znakova (simbola). Matematički, to je neuređen par 𝑳={𝑨,𝑭}. Među najuobičajenijim primjenama, formalni jezik može biti shvaćen kao:

  • kolekcija riječi

ili

  • kolekcija rečenica

U prvom slučaju, skup 𝑨 se zove abeceda jezika 𝑳, a elementi skupa 𝑭 se zovu riječi. U drugom slučaju, skup 𝑨 se zove leksikon ili vokabular skupa 𝑭, dok se elementi skupa 𝑭 zovu rečenice. Matematička teorija koja se općenito bavi proučavanjem formalnih jezika se zove teorija formalnih jezika.

Kao primjer formalnog jezika, abeceda može biti {a,b}, a riječ (string, niz znakova) nad tim alfabetom može biti ababba.

Tipični jezik nad abecedom, koji sadrži tu riječ, bi bio skup svih riječi koje sadrže isti broj znakova a and b.

Prazan niz (ili prazna riječ) je riječ dužine 0, i često se označava znakom e, ϵ ili Λ. Iako je abeceda konačan skup i svaka riječ je konačne dužine, jezik može imati beskonačno mnogo riječi (jer dužina riječi koje sadrži ne mora nužno imati gornju granicu).

Često postavljano pitanje o formalnim jezicima jest "koliko je teško odlučiti da li zadana riječ pripada nekom određenom jeziku?" Ovo je područje proučavanja teorije računanja i teorije složenosti.

Primjeri

Neki primjeri formalnih jezika:

  • skup svih riječi nad a,b
  • skup {an}, gdje je n prirodan broj i an znači a ponavljano n puta
  • Konačni jezici, kao što su {{a,b},{a,aa,bba}}
  • skup svih sintaksički ispravnih programa u datom programskom jeziku; ili
  • skup svih ulaza za koje Turingova mašina staje

Specifikacija

Formalni jezik može biti specificiran na jako mnogo načina, kao npr.

Operacije

Nekoliko operacija iz teorije skupova može biti korišteno za stvaranje novih jezika iz već postojećih. Pretpostavimo da su 𝑳1 i 𝑳2 jezici nad nekom uobičajenom abecedom.

  • Nadovezivanje (ili konkatenacija) 𝑳1𝑳2 se sastoji od svih nizova znakova oblika vw gdje je v niz znakova iz 𝑳1 i w niz znakova iz 𝑳2.
  • Presjek 𝑳1𝑳2 jezika 𝑳1 i jezika 𝑳2 se sastoji od svih nizova znakova koji su sadržani i u 𝑳1 i u 𝑳2.
  • Unija 𝑳1𝑳2 jezika 𝑳1 i jezika 𝑳2 se sastoji od svih nizova znakova koji su sadržani ili u 𝑳1 ili u 𝑳2.
  • Komplement 𝑳1 jezika 𝑳1 se sastoji od svih nizova znakova nad abecedom koji nisu sadržani u 𝑳1.
  • Desni koeficijent 𝑳1/𝑳2 jezika 𝑳1 jezikom 𝑳2 se sastoji od svih nizova znakova v za koje postoji niz znakova w u 𝑳2 takav da je vw u jeziku 𝑳1.
  • Kleeneov operator 𝑳1* se sastoji od svih nizova znakova koji mogu biti zapisani u obliku w1w2...wn sa nizovima znakova wi u 𝑳1 i n0. Uočite da ovo uključuje prazni niz ϵ pošto je dozvoljen n=0.
  • Prevrtanje 𝑳1R se sastoji od preokrenutih verzija svih nizova znakova u 𝑳1.
  • Miješanje (engl. shuffle) jezika 𝑳1 i 𝑳2 se sastoji od svih nizova znakova koji mogu biti zapisani u obliku v1w1v2w2vnwn gdje je n1 i v1,,vn su nizovi znakova takvi da nadovezivanje v1vn je u jeziku 𝑳1 i w1,,wn su nizovi znakova takvi da je w1wn u jeziku 𝑳2.

Također pogledajte

Dodatna literatura

  • Hopcroft, J. & Ullman, J. - Introduction to Automata Theory, Languages, and Computation, Addison-Wesley, 1979; Šablon:ISBN
  • Helena Rasiowa and Roman Sikorski - The Mathematics of Metamathematics, PWN, 1970, poglavlje 6 Algebra of formalized languages.
  • Rozemberg, G. & Salomaa, A. (eds.) - Introduction to Automata Theory, Languages, and Computation, Addison-Wesley, 1979; Šablon:ISBN
  • Siniša Srbljić - Jezični procesori 1, Element, 2003; Šablon:ISBN