Formális nyelv

Matematika
A matematika alapjai

Halmazelmélet · Naiv halmazelmélet
Axiomatikus halmazelmélet · Matematikai logika

Algebra

Elemi algebra · Lineáris algebra · Polinomok
Absztrakt algebra · Csoportelmélet · Gyűrűelmélet · Testelmélet
Mátrixok · Univerzális algebra

Analízis

Valós analízis · Komplex analízis · Vektoranalízis
Differenciálegyenletek · Funkcionálanalízis
Mértékelmélet

Geometria

Euklideszi geometria · Nemeuklideszi geometria
Affin geometria · Projektív geometria
Differenciálgeometria · Algebrai geometria
Topológia

Számelmélet

Algebrai számelmélet · Analitikus számelmélet

Diszkrét matematika

Kombinatorika · Gráfelmélet · Játékelmélet
Algoritmusok · Formális nyelvek
Információelmélet

Alkalmazott matematika

Numerikus analízis · Valószínűségszámítás
Statisztika · Káoszelmélet · Matematikai fizika
Matematikai biológia · Gazdasági matematika
Kriptográfia

Általános

Matematikusok · Matematikatörténet
Matematikafilozófia · Portál

Sablon:Matematika
  • m
  • v
  • sz

A formális nyelv a matematika, a logika és az informatika számára egy véges ábécéből generálható, véges hosszúságú szavak (például karakterstringek, jelsorozatok) halmaza, amelyekkel a formális nyelvek elmélete foglalkozik. (Más kontextusban, mint például jog vagy politika, a formális nyelv kifejezés alatt egy, a napi beszédtől eltérő, udvarias, megfontolt, körülíró jellegű, túlzottan modoros kifejezési módot értenek. Jelen cikkben a formális nyelvet a formális nyelvek elmélete szerint értjük, és minden esetben szigorúan csak írott nyelvről beszélünk, ezért a jelsorozat elemei megjeleníthető, nyomtatható karakterek.)

Definíció

Legyen A = { a 1 , a 2 , , a n } {\displaystyle A=\left\{a_{1},a_{2},\dots ,a_{n}\right\}} véges halmaz, amelyet a továbbiakban ábécének nevezünk.

Készítsünk A {\displaystyle A} elemeiből véges sorozatokat minden lehetséges módon. Jelölje A 1 {\displaystyle A^{1}} az egyelemű sorozatok halmazát (ezekből értelemszerűen annyi van, ahány jelből áll az ábécé), A 2 {\displaystyle A^{2}} a kételeműekét, és így tovább. A 0 {\displaystyle A^{0}} jelenti az üres sorozatok halmazát (ez megint csak könnyen beláthatóan egyelemű). A hatványjelölés a halmaz önmagával vett Descartes-szorzataira utal.

Jelölje A = A 0 A 1 A 2 {\displaystyle A^{*}=A^{0}\cup A^{1}\cup A^{2}\cup \dots } az ábécé elemeiből képzett véges sorozatok halmazát (ezt az A {\displaystyle A} ábécé feletti univerzumnak hívjuk). Ekkor formális nyelvnek nevezzük A {\displaystyle A^{*}\,} egy (nem feltétlenül valódi) részhalmazát. Szokásos még az A {\displaystyle A\,} ábécé feletti formális nyelv megnevezés is.

Észrevehető, hogy a definíció megengedi az üres szót is (ami nem más, mint egy nulla hosszúságú jelsorozat), és gyakran az e {\displaystyle e} , ϵ {\displaystyle \epsilon } vagy a Λ {\displaystyle \Lambda } szimbólumokkal jelölik. Bár véges halmaz az ábécé, és a belőlük képzett jelsorozatok (szavak) hossza is véges (bár nem korlátos), egy nyelvhez mégis akár megszámlálhatóan végtelenül sok jelsorozat is tartozhat (mivel a szavak száma nincs korlátozva, akár a teljes univerzumot is vehetjük!). A formális nyelvek száma kontinuum számosságú (mivel az univerzum hatványhalmazát képezve megkapjuk az összes formális nyelv halmazát; és nyilván az univerzum megszámlálhatóan végtelen számosságú, mivel elemei felsorolhatóak).

Kitüntetett nyelvek az univerzum, a csak az üres jelsorozatot tartalmazó nyelv, és az egyetlen jelsorozatot sem tartalmazó nyelv.

Az egyes nyelveket szokás L {\displaystyle L} betűvel jelölni, és ha többet is használunk, indexszel megkülönböztetni őket (például L 1 {\displaystyle L_{1}} , L 2 {\displaystyle L_{2}} , L a {\displaystyle L_{a}} , stb.)

Példák

Legyen az ábécé A = { a , b } {\displaystyle A=\left\{a,b\right\}} . Ekkor egy jelsorozat például a b a b b a {\displaystyle ababba} . Egy egyszerű nyelv lehet a fenti ábécé alapján például az, amely az összes olyan jelsorozatot tartalmazza, amelyekre igaz, hogy ugyanannyi a {\displaystyle a} szimbólumból és b {\displaystyle b} szimbólumból állnak.

Néhány további példa formális nyelvekre:

  • Az üres halmaz és maga A {\displaystyle A^{*}} is nyelvek. Triviális nyelvek.
  • L 1 = { a n : n N } {\displaystyle L_{1}=\left\{a^{n}:n\in \mathbb {N} \right\}} (ahol a n {\displaystyle a^{n}} az a {\displaystyle a} n-szeri ismétlését jelenti)
  • egy adott programozási nyelven szintaktikailag helyes programok halmaza, vagy
  • egy bizonyos Turing-gépet megállító bemeneti jelek halmaza.

Formális nyelvek megadása, definiálása

Egy formális nyelv nagyon sok lehetséges módon meghatározható, többek között:

  • A jelsorozatok felsorolásával. Például L := { a b b a , b a b a , b a b } {\displaystyle L:=\left\{abba,baba,bab\right\}}
  • A jelsorozatok létrehozása (generálása) valamilyen formális nyelvtan alapján (lásd még Chomsky-féle hierarchia);
  • A jelsorozatok létrehozása (generálása) reguláris kifejezések segítségével;
  • A tartalmazott jelsorozatok elfogadása valamilyen automata használatával, például Turing-gép vagy véges állapotú automata;
  • Azon kérdések halmazából, amelyekre IGEN/NEM válasz adható, azok a kérdések, amelyekre IGEN a válasz – lásd döntési probléma.

Műveletek formális nyelvekkel

Adott formális nyelvből vagy nyelvekből műveletekkel új nyelvek állíthatóak elő. Tegyük fel, hogy L 1 {\displaystyle L_{1}} és L 2 {\displaystyle L_{2}} közös ábécén értelmezett nyelvek. A formális nyelvek halmazok, tehát a halmazműveletek minden további nélkül alkalmazhatóak rájuk:

Halmazműveletek

  • metszet – L 1 L 2 {\displaystyle L_{1}\cap L_{2}} közösrész képzés művelet az L 1 {\displaystyle L_{1}} és L 2 {\displaystyle L_{2}} nyelvre előállítja az összes olyan jelsorozatot, amelyek L 1 {\displaystyle L_{1}} -ben és L 2 {\displaystyle L_{2}} -ben is léteznek.
  • unió – L 1 L 2 {\displaystyle L_{1}\cup L_{2}} egyesítés művelet az L 1 {\displaystyle L_{1}} és L 2 {\displaystyle L_{2}} nyelvre előállítja az összes olyan jelsorozatot, amelyek vagy L 1 {\displaystyle L_{1}} -ben vagy L 2 {\displaystyle L_{2}} -ben léteznek.
  • komplementer – L 1 ¯ {\displaystyle {\bar {L_{1}}}} – az L 1 {\displaystyle L_{1}} nyelvre előállítja az összes olyan jelsorozatot, amelyek az L 1 {\displaystyle L_{1}} nyelvben nem szerepelnek, de az A {\displaystyle A^{*}} alaphalmazban igen.
  • különbség – L 1 L 2 {\displaystyle L_{1}\setminus L_{2}} különbségképzés művelet az L 1 {\displaystyle L_{1}} és L 2 {\displaystyle L_{2}} nyelvekre előállítja az összes olyan jelsorozatot, amelyek L 1 {\displaystyle L_{1}} -ben léteznek, L 2 {\displaystyle L_{2}} -ben viszont nem.

A formális nyelvek speciális halmazok, így speciális műveletek is értelmezhetőek rajtuk:

Egyéb műveletek

  • konkatenáció – L 1 L 2 {\displaystyle L_{1}L_{2}} konkatenáció vagy összekapcsolás művelet előállítja az összes v w {\displaystyle vw} formájú jelsorozatot, ahol v {\displaystyle v} egy L 1 {\displaystyle L_{1}} -ből származó jelsorozat, és w {\displaystyle w} a L 2 {\displaystyle L_{2}} -ből származó jelsorozat.
  • A right quotient L 1 / L 2 {\displaystyle L_{1}/L_{2}} különbségképzés művelet az L 1 {\displaystyle L_{1}} és L 2 {\displaystyle L_{2}} nyelvek között előállítja az összes olyan L 2 {\displaystyle L_{2}} -ben létező w {\displaystyle w} jelsorozatot, amely jelsorozatok az L 1 {\displaystyle L_{1}} nyelvben v w {\displaystyle vw} formában fordulnak elő (ahol v {\displaystyle v} jelsorozat az L 1 {\displaystyle L_{1}} nyelvben létezik).
  • A tranzitív lezárt (lezárt, lezárás, angolul Kleene star, Kleene csillag) – L 1 {\displaystyle L_{1}^{*}} – a tranzitív lezárt művelet előállítja az összes w 1 w 2 . . . w n {\displaystyle w_{1}w_{2}...w_{n}} formában leírható jelsorozatot, ahol a w i {\displaystyle w_{i}} jelsorozat az L 1 {\displaystyle L_{1}} nyelvben létezik és n 0 {\displaystyle n\geq 0} ). Meg kell jegyezni, hogy az n = 0 {\displaystyle n=0} értékadás megengedett, tehát az ϵ {\displaystyle \epsilon } üres jelsorozat mindig része a L 1 {\displaystyle L_{1}^{*}} nyelvnek, minden L 1 {\displaystyle L_{1}} nyelvre! (Ha az eredeti nyelv nem is tartalmazta az üres jelsorozatot, a tranzitív lezártja akkor is tartalmazni fogja!) A legalább egy betűt (karaktert) tartalmazó nyelvek tranzitív lezártja végtelen számosságú; az elnevezés onnan származik, hogy a tranzitív lezárt az összes olyan elemet tartalmazza, ami az eredeti nyelv szavaiból kiindulva konkatenációk tetszőleges egymás után alkalmazásával megkapható (lezárt, mert ez a „legnagyobb” ilyen halmaz, elemeinek konkatenációjával már nem bővíthető).
  • A reverse L 1 R {\displaystyle L_{1}^{R}} fordítottja művelet előállítja az összes L 1 {\displaystyle L_{1}} nyelvben létező jelsorozat fordítottját ( például az a b a b b a {\displaystyle ababba} jelsorozat fordítottja a a b b a b a {\displaystyle abbaba} jelsorozat).
  • A shuffle, megkever művelet az L 1 {\displaystyle L_{1}} és az L 2 {\displaystyle L_{2}} nyelvek között előállítja az összes 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}} formában leírható jelsorozatot, ahol n 1 {\displaystyle n\geq 1} és a v 1 , . . . , v n {\displaystyle v_{1},...,v_{n}} jelsorozatok, amelyek az L 1 {\displaystyle L_{1}} nyelvben léteznek, és az előzőek szerinti értelemben össze vannak kapcsolva a w 1 , . . . , w n {\displaystyle w_{1},...,w_{n}} jelsorozatokkal, amelyek az L 2 {\displaystyle L_{2}} nyelvben léteznek.

A generatív nyelvek

Bővebben: Formális nyelvtan

A formális nyelvek definíciója (hogy minden formális nyelv egy univerzum részhalmaza) nyilván általános, de praktikus értelemben használhatatlan definíció (hiszen például egy végtelen számosságú nyelvet nem tudunk kezelni így, nem tudjuk felsorolni az elemeit). A gyakorlati problémák szempontjából fontosabb a generatív nyelvek osztálya; generatív nyelvek azok a nyelvek, amelyekre igaz, hogy van olyan nyelvtan (más néven grammatika), ami éppen az ő elemeiket generálja.

Matematikai-nyelvészeti problémák

A formális nyelvekkel kapcsolatosan gyakran felmerülő kérdés „milyen nehéz eldönteni egy adott szóról, hogy egy adott nyelvhez tartozik-e?” Ez az alapja a kiszámíthatóságelméletnek és bonyolultságelméletnek.

További fontos, generatív nyelvekkel kapcsolatos problémák:

  • Egy nyelvtan a teljes univerzumot generálja-e?
  • Két nyelvtan ugyanazt a nyelvet generálja-e?
  • Egy nyelvtan által generált nyelv tartalmazza-e egy másik nyelvtan által generált nyelv minden szavát?

Kapcsolódó szócikkek

Források

  • Bach, Iván. Formális nyelvek: Egyetemi tankönyv. Budapest: Typotex (2002). ISBN 963 9132 92 6 
  • Csirmaz, László: Matematikai logika egyetemi jegyzet, ELTE Bp., 1994 (Postscript változat)
  • Szeredi – Lukácsy – Benkő: A szemantikus világháló elmélete és gyakorlata. Typotex Kiadó, 2005. ISBN 963-9548-48-0

További információk

  • Alice és Bob – 6. rész: Alice és Bob a kiszámíthatóság határán
  • Alice és Bob – 7. rész: Alice és Bob egymillió dolláros kérdése
  • Alice és Bob – 8. rész: Alice és Bob biztonsága
Nemzetközi katalógusok
  • LCCN: sh85050802
  • GND: 4017848-1
  • NKCS: ph208851
  • BNF: cb11967270h
  • KKT: 00576869
  • matematika Matematikaportál
  • Informatika Informatikai portál