Sunteți pe pagina 1din 4

1.

1 Limbaje formale Noiunea de limbaj se ntlnete att n lingvistic, unde se refer la limbajele naturale, ct i n informatic, unde se refer la limbajele de programare. O limb natural se definete, conform dicionarului, ca o mulime de cuvinte i de metode de combinare a lor, folosit i neleas de o comunitate uman considerabil. Un limbaj de programare se definete ca o mulime de programe scrise n acel limbaj. O limb natural sau un limbaj de programare pot fi considerate ca mulimi de secvene, adic iruri finite de elemente ale unui anumit vocabular de baz. entru a putea studia proprietile acestor limbaje a fost necesar formalizarea noiunii de limbaj, construirea unei teorii matematice riguroase a limbajelor. O astfel de teorie este suficient de general pentru a include i limbajele naturale i limbajele de programare, precum i o mulime de alte limbaje, formnd la un loc aa numitele limbaje formale. entru a putea defini noiunea de limbaj formal vom introduce o serie de noiuni i notaii folosite frecvent n aceast teorie. Definiia 1.1.1 Un alfabet sau vocabular, V, este o mulime finit, nevid de elemente. Definiia 1.1.2 Un element al alfabetului ! se numete liter sau simbol. "n cele ce urmeaz vom folosi ca simboluri cifrele, literele latine i greceti mari i mici i simboluri speciale cum ar fi $, #. Exemplul 1.1.1 #$emple de alfabete sunt% &alfabetul latin% {A, , !, ..., "# &alfabetul grecesc% {, , , ..., # &alfabetul binar% {$, %#. Definiia 1.1.3 Un cuv&nt peste alfabetul V este un ir finit constnd din zero sau mai multe simboluri ale lui V, unde un acelai simbol poate s apar de mai multe ori. Notm cu sau , cuv&ntul vid, format din zero simboluri. 'ac ! este un alfabet atunci prin V' vom nota mulimea tuturor cuvintelor peste V, inclusiv cuvntul vid , iar V() V' * { }. Exemplul 1.1.2 'ac V ) { $, % } atunci V'){, $, %, $$, $%, %$, %%, ...} i V(){$, %, $$, $%, %$, %%, $$$ , ...}. #vident V' i V( sunt mulimi infinite deoarece ele conin cuvinte de lungime orict de mare. Definiia 1.1.4 Un limbaj este o mulime de cuvinte peste un alfabet. Exemplul 1.1.3 "ntr&un limbaj natural alfabetul, n sensul definiiilor de mai sus, este dicionarul limbii respective, cuvintele sunt frazele, iar limbajul este mulimea tuturor frazelor. "ntr&un limbaj de programare simbolurile sunt instruciunile limbajului, cuvintele sunt programele iar limbajul este mulimea tuturor programelor. "n mulimea cuvintelor se introduce o operaie numit concatenare%

Definiia 1.1.5 'ac u i v sunt dou cuvinte din V' atunci concatenarea uv este tot un cuvnt din V', care se obine prin alturarea simbolurilor lui v dup ultimul simbol al lui u. Observaia 1.1.1 #vident operaia de concatenare este asociativ, u+v,-)+uv-,, dar nu este comutativ (n general uvvu) iar cuvntul vid este element neutru relativ la operaia de concatenare% u)u)u. Definiia 1.1.6 .uterea a i*a a cuv&ntului u, notat ui, este definit recursiv astfel% (*) u$ ) (+) ui(% ) uiu Definiia 1.1.7 /ungimea unui cuvnt u, notat lg+u- sau 0u,, este numrul de simboluri ale cuvntului u i este o aplicaie lg1 V' 2 . rin definiie lg+- ) $, fiind cuvntul format din zero simboluri. Definiia 1.1.8 Un cuvnt u este subcuv&nt al lui v dac i numai dac e$ist cuvintele i astfel nct v ) u. 'ac ) atunci u se numete prefi3 al lui v iar dac ) atunci u se numete sufi3 al lui v. Un subcuvnt u al lui v se numete subcuv&nt propriu al lui v numai dac u{,v#. -ajoritatea limbajelor care ne intereseaz vor conine o mulime infinit de cuvinte. .e pun atunci trei c/estiuni importante% 1. Cum se poate repre enta un limba!" 'ac limbajul este finit atunci el s&ar putea reprezenta prin enumerarea cuvintelor sale, dei la un numr mare de cuvinte enumerarea poate fi complicat. 'ac ns limbajul este infinit apare problema gsirii unei reprezentri finite pentru limbaj. 0pare atunci o alt problem% 2. Exist# o repre entare finit# pentru ori$e limba!" #vident mulimea V' a tuturor cuvintelor peste un alfabet finit V este o mulime numrabil. Un limbaj este o submulime a lui V', deci mulimea tuturor limbajelor peste V este mulimea prilor lui V', adic o mulime nenumrabil. 'ei nu am definit nc o reprezentare finit a unui limbaj, se pare c mulimea reprezentrilor finite este numrabil 123 deci ar rezulta c e$ist mai multe limbaje dect reprezentri finite ale limbajelor. 3. Ce se poate spune %espre stru$tura a$elor $lase %e limba!e $are a%mit repre ent#ri finite" 0ceasta este una din principalele problemele de care ne vom ocupa n continuare. . considerm acum cteva limbaje peste alfabetul {a, b#. /%){ # /4){ a, ba, aaba, bbbb # /5){ ap 0 p numr prim # /6){ ai bi 0 i numr natural # /7){ u {a, b}4 0 2a+u-)2b+u- # unde 2a +u- este numrul de apariii ale simbolului a n cuvntul u. 5onsiderm i limbajul vid , care nu conine nici un cuvnt. .e observ c {# pentru c limbajul { # conine un cuvnt i anume . 6imbajele /% i /4 fiind finite se pot reprezenta prin enumerarea cuvintelor lor pe cnd limbajele /5, /6 i 67 sunt infinite i au fost caracterizate de o proprietate pe care

trebuie s o satisfac toate cuvintele limbajului. O astfel de proprietate specific este un mijloc de baz de definire a unui limbaj infinit. Un alt mod de a defini un limbaj infinit este de a introduce un mecanism generativ i de a considera cuvintele produse de acest mecanism. .e poate, de asemenea, construi un mecanism analitic, de recunoatere. 0stfel un limbaj se poate defini ca mulimea tuturor cuvintelor recunoscute de un astfel de mecanism. -ecanismele generative i analitice se pot defini n termenii unui sistem de rescriere. . considerm cteva moduri de definire ale unor limbaje n e$emplele urmtoare. Exemplul 1.1.4 8ie / un limbaj peste alfabetul {a, b# definit dup cum urmeaz% (i) 8 / (ii) 'ac 3 / atunci a3b / (iii) Nici un alt cuvnt nu aparine lui /. .e poate demonstra prin dubl incluziune c limbajul / construit conform acestor reguli este c/iar limbajul /6 ) { ai bi 0 i numr natural #. .e observ c (i)&(iii) constituie un mecanism generativ pe cnd /6 este definit de o proprietate specific. Exemplul 1.1.5 8ie /9 definit dup cum urmeaz % (i) /9 (ii) 'ac 3/9, atunci a3b/9 i b3a/9 (iii) 'ac 3%/, 34/9 atunci 3%34/9 (iv) Nici un alt cuvnt nu aparine lui /9. .i aici se poate demonstra c /9)/7. Exemplul 1.1.6 8ie /: un limbaj constnd din toate cuvintele care se pot reduce la prin nlocuirea subcuvintelor ab prin . 0stfel cuvintele , ab, abab i aabbab /:. #vident /:/7 dar /:/7 pentru c, de e$emplu, ba69. 'efiniia aceasta poate fi considerat ca un mecanism de recunoatere sau analitic. "n e$emplele date anumite subcuvinte sunt rescrise. "n conformitate cu definiia urmtoare, o mulime finit de reguli de rescriere determin un sistem de rescriere. Definiia 1.1.& Un sistem de rescriere este o perec/e ordonat ;<)+V, =-, unde V este un alfabet i = o mulime finit de perec/i ordonate de cuvinte peste V. #lementele +>,?- ale lui = sunt numite reguli de rescriere sau producii i se noteaz >?. Un cuvnt 3 peste V generea@ direct cuvntul : +3 ;< A- dac i numai dac e$ist cuvintele u, v, > , ? astfel nct% 3)u>v, A)u?v, iar >%?% =, adic subcuvntul > al lui 3 este nlocuit prin subcuvntul ?. Un cuvnt > peste V generea@ ? (n mai muli pai) (> ?) dac i numai dac e$ist un ir finit de cuvinte >$, >% , ..., >B, B $, unde >$)>, >B)? i >i >i(%, pentru $ i B*%. .ecvena ;< ;*... ;= se va numi derivaie a lui > din ; n conformitate cu sistemul de rescriere, ;<. ;? ;< ;* ;+.... ;=?> 0stfel relaia este o relaie binar pe V' iar este nc/iderea refle$iv i tranzitiv a relaiei . Numrul B se numete lungimea derivaiei sau numr de pai.
4 4

Un sistem de rescriere poate fi transformat ntr&un mecanism generativ prin specificarea unei submulimi A3 V', numit mulimea de a3iome, i considernd limbajul (*) /g+;<, A3-){ ? 0 > ?, >A3 # .imilar un sistem de rescriere poate fi privit ca un mijloc analitic sau de recunoatere, considernd limbajul (+) /a+;<, A3-){ > 0 > ?, ?A3 # 8ormula (*) reprezint limbajul generat de perec/ea +;<, A3), iar formula (+) reprezint limbajul recunoscut sau acceptat de perec/ea +;<, A3-. Observaia 1.1.3 'e cele mai multe ori mulimea A3 este format dintr&un singur simbol (simbolul iniial) sau are o structur foarte simpl. Observaia 1.1.4 'e cele mai multe ori V se mparte n dou submulimi%! @, mulimea terminalelor, V2 mulimea neterminalelor sau a variabilelor i limbajul se definete ca o submulime a lui VC '. Aevenind la e$emplele anterioare, n e$emplul *.*.B, /: se poate defini, n termenii unui sistem de rescriere ca /: ) /a+;<,{#-, unde V){a,b# iar =){ab#. "n e$emplul *.*.2, /)/g+;<,{3#-{a,b#', unde ;<)+{a,b,3#, {3, 3a3b#-. 6imbajul /9 din e$emplul *.*.7 este definit acum % /9 ) /g+;<,{3#-{a,b#', Unde ;<)+{a,b,3#, {3, 3a3b, 3b3a, 333#-. .istemele de rescriere sunt de asemenea denumite sisteme semi * CDue. 'intre cele mai cunoscute sisteme de rescriere fac parte% algoritmul normal n sens -ar=ov1*B3, sistemele normale ost si gramaticile generative.
4