Sunteți pe pagina 1din 11

iruri

Logic i Structuri Discrete

iruri, Limbaje i Gramatici

Un ir (string) este o secven nit de zero sau mai multe elemente care sunt puse unele lng altele prin juxtapunere
JUXTAPNE, juxtapn, vb. III. Tranz. A pune mai multe obiecte al!turi, unul lng! altul; JUXTAPNERE, juxtapuneri, s. f. Ac"iunea de a juxtapune #i rezultatul ei; Dic"ionar Explicativ (DEX) al Limbii Romne

Exemplu de ir
Dup James Hein Discrete Structures, Logic and Computability Section 1.3 (String Subsection pp.36 - 37) Section 3.1 (Strings Subsection pp. 117-118) Section 3.3 (Strings Subsection pp. 157- 158) Section 3.2 (Language Construction pp. 126-128 without Combining Languages) Section 3.2 (Subsection Grammar and Derivation pp. 130-143 without pages138-140)
1

1232233122

Elementele lui sunt 1,2,3,2,2,3,3,1,2,2 Numrul de elemente dintr-un ir se numete lungimea (length) acelui ir, i uneori e referit prin |irul| e.g. |1232233122|=10 irul gol este referit prin (lambda)
2

Thursday, November 8, 2012

Thursday, November 8, 2012

Alfabet Elementele individuale care compun un ir sunt luate dintr-un set nit denumit alfabet Dac A este un alfabet atunci un ir de elemente din A se spune c este un ir peste A
Exemplu Dac A = {0,1,2,3,4,5,6,7,8,9} este alfabetul cifrelor zecimale (digii zecimali) iruri peste A sunt : 0, 10, 1232233122, 1, 22, 223
digit |dijit| noun 1 any of the numerals from 0 to 9, esp. when forming part of a number DGIT, digi!i, s. m. (Inform., Electron.) Cifr! NUMERL, -$ I. adj. care desemneaz!, exprim! un num!r. ! sistem ~ = ansamblu de simboluri care reprezint! numere Dic"ionarul Mac OS X & DEX al Limbii Romne
3

Setul tuturor irurilor peste un Alfabet Setul tuturor irurilor peste un alfabet A se noteaz cu A*
Exemple A = {1,2,3} A* = { , 1, 2, 3, 11, 12, 21, 13, 31, 23, 32, 111, ... } B = {a} B* = { , a, aa, aaa, aaaa, ...}

Thursday, November 8, 2012

Thursday, November 8, 2012

Notaia cu Exponent Dac w este un ir wn este: w0 = w1 = w w2 = ww ... wn = ww...w (de n ori)


Exemple =a a2 = aa (ab)2= abab (ab)3= ababab {(ab)n | n N} = {, ab, abab, ababab, ...} {anbn | n N} = {, ab, aabb, aaabbb, ...} a1

Reprezentarea

Un ir poate reprezentat print-o list


Exemple poate reprezentat ca <> aabb poate reprezentat ca <a,a,b,b> abcdd poate reprezentat ca <a,b,c,d,d>

Thursday, November 8, 2012

Thursday, November 8, 2012

Operaii de Baz append ( ) nseamn adugarea unui element din alfabet la captul stng a unui ir, n juxtapunere
Este asociativ la dreapta (adic a b = a (b )) i este o operaie de construcie pentru iruri Exemple A = {a, b} a ab = aab a=a

A* este Set Inductiv Baza:


A*

Inducia:
if a A i s A* then a s A*

head(abcd) = a tail(abcd) = bcd


7

i ii iul nc en fu e om ism e ult cu d ecan ioar i m e m er tru siv i nt ns cur cela ile a r co re a m ri d su te edu izn cur u c il n P o t pr A* u utat c dis
8

Thursday, November 8, 2012

Thursday, November 8, 2012

Alte operaii Operaia de alturare a dou iruri unul lng altul se numete concatenare (cat)
Exemple Concatenarea lui abb cu cd (altfel spus cat(abb,cd)) este abbcd a = a = a cat(x,y) = if x = then y else head(x) cat(tail(x),y)

Limbaje Un limbaj este un set de iruri


Dac A este un alfabet, atunci un limbaj peste A este un set de iruri ale cror componente sunt din A
Exemple Dac A este un alfabet atunci limbaje peste A sunt : A* - cel mai mare limbaj peste A {}, A, Dac A = {a} e un alfabet atunci limbaje peste A sunt : , {}, {a}, {, a, aa, aaa}, {an | n N}

append right este similar cu append dar pune elementul la captul drept al unui ir
Uneori e referit prin acelai simbol appendRight(s,x) = if s = then x else head(s) appendRight(tail(s),x)

Observai c, orice limbaj peste A este un subset a lui A*


9 10

Thursday, November 8, 2012

Thursday, November 8, 2012

irurile unui Limbaj


Un ir dintr-un limbaj este denumit formul bine format (well-formed formula ori wff) deoarece deniia unui limbaj permite doar anumite iruri bine formate (doar anumite iruri sunt corecte ntr-un limbaj)
Exemple Fie A = {0,1,2,3,4,5,6,7,8,9,+} un alfabet. Exist multe limbaje posibile peste A Setul operaiilor aritmetice coninnd doar operaia + este un limbaj peste A Unele iruri din limbaj sunt 1678+6766, 1+0+178 Acestea sunt wff n acest limbaj (sunt iruri din limbaj) dar 7854++++77832++ nu e un wff n limbajul expresiilor aritmetice. Dar, de exemplu, este un wff n limbajul A*
11

Cum putem denii un Limbaj ?


... sau cum putem specica structura unui ir dintrun limbaj ?
O posibilitate Multe limbaje pot denite inductiv (amintii-v c un limbaj e un set) Exemplu - Limbajul D a numeralilor zecimali Digii = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Baza: Digits D Inducia: if n D i d Digits i n 0 then n d D Obs: Aici reprezint operaia append right

12

Thursday, November 8, 2012

Thursday, November 8, 2012

Testarea Deniiei
Digii = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Baza: Digits D Inducia: if n D i d Digits i n 0 then n d D

Cum putem denii un Limbaj ?

O alt opiune este s utilizm o gramatic Informal, o gramatic este o mulime de reguli utilizate pentru a denii structura irurilor dintr-un limbaj

Digii D 1 D i 0 Digii i 10 deci 10 D 1 D i 1 Digii i 10 deci 11 D

1 D i 2 Digii i 10 deci 12 D 1 D i 3 Digii i 10 deci 13 D ... 12 D i 0 Digii i 10 deci 120 D ...

n cele ce urmeaz vom face o scurt prezentare simplicat despre gramatici!

D = { 0,1,2,3,4,5,6,7,9 ,10,11,12 ,13 ,...,120 ,...}


13 14

Thursday, November 8, 2012

Thursday, November 8, 2012

Ce este o gramatic (informal) ?


O structur simplicat a unei propoziii n limba englez (ce poate vzut ca un ir) este : Propoziie ! Subiect Predicat Subiect ! Articol Adjectiv Substantiv Predicat ! Verb Articol Obiect Acestea sunt reguli gramaticale Este propoziia the big dog chased the cat corect gramatical ? Este ea construit dup regulile gramaticii ? Subiect : the big dog Articol : the Adjectiv : big Substantiv : dog Predicat : chased the cat Verb : chased Articol : the Obiect : cat

Componentele gramaticii
O gramatic pentru un limbaj L const din:
1. Un alfabet N de simboluri gramaticale denumite neterminale (de obicei litere mari) 2. Un alfabet T de simboluri terminale (TN=) 3. Un simbol neterminal S denumit simbolul de start 4. Un set nit de reguli (producii) de forma unde , sunt iruri peste N T, . Exist cel puin o producie doar cu S n partea stng. Fiecare neterminal trebuie s apar n partea stng a unei producii
Not 1. Cnd avem o producie i o alt producie putem scrie | 2. se citete nlocuim cu , produce , se rescrie n

15

16

Thursday, November 8, 2012

Thursday, November 8, 2012

Un exemplu de gramatic i Derivarea


A = {a, b, c} Gramatica limbajului A* S | aS | bS | cS Cum stabilim c un ir este parte din limbajul denit ? Urmnd un proces de derivare Exemplu pentru irul aacb

Un exemplu de gramatic i Derivarea


A = {a, b, c} Gramatica limbajului A* S | aS | bS | cS Cum stabilim c un ir este parte din limbajul denit ? Urmnd un proces de derivare Exemplu pentru irul aacb
jul l ba u m ir de li l din dac olu te ai imb iile r pa num n s duc ste i t di pro e a ii ir ac iv nd ic r n it d de iliz mat U n t ra Utilizm de ate rt u g po sta S
18

- derivare ntr-un pas aacb = aacb


17

- derivare ntr-un pas aacb = aacb

aS

aaS

aacS

aacbS

aS

aaS

aacS

aacbS

Utilizm S aS
Thursday, November 8, 2012

Utilizm S aS

Utilizm S cS

Utilizm S bS

Utilizm S

Utilizm S aS
Thursday, November 8, 2012

Utilizm S aS

Utilizm S cS

Utilizm S bS

Derivarea i Arborele de Derivare S


S

Derivarea i Arborele de Derivare S aS


S a S

Exemplu pentru irul aacb i gramatica S


Thursday, November 8, 2012

| aS | bS | cS
19

Exemplu pentru irul aacb i gramatica S


Thursday, November 8, 2012

| aS | bS | cS
20

Derivarea i Arborele de Derivare S aS aaS


S a a S S

Derivarea i Arborele de Derivare S aS aaS aacS


S a a c S S S

Exemplu pentru irul aacb i gramatica S


Thursday, November 8, 2012

| aS | bS | cS
21

Exemplu pentru irul aacb i gramatica S


Thursday, November 8, 2012

| aS | bS | cS
22

Derivarea i Arborele de Derivare S aS aaS aacS


S a a c b S S S S

Derivarea i Arborele de Derivare S aS aaS aacS


S a a c b S S S S

aacbS

aacbS

aacb

Exemplu pentru irul aacb i gramatica S


Thursday, November 8, 2012

| aS | bS | cS
23

Exemplu pentru irul aacb i gramatica S


Thursday, November 8, 2012

| aS | bS | cS
24

Derivarea (formal) i Notaia


Dac x i y sunt forme propoziionale i este o producie atunci nlocuirea lui cu n xy este numit derivare i scriem xy derivare ntr-un pas
+ *

Exemplu
S AB A | aA B | bB O derivare leftmost pentru aab S AB aAB aaAB aaB aabB aab

xy

derivare n unul sau mai muli pai derivare n zero sau mai muli pai

Exemplu (bazat pe exemplul anterior) S


+

O derivare rightmost pentru aab S AB AbB Ab aAb aaAb aab


26

aacb (exist o derivare pentru aacb care ia unul sau mai muli pai)

Alte noiuni derivarea leftmost: rescriem n ecare pas neterminalul cel mai din stnga derivarea rightmost: rescriem n ecare pas neterminalul cel mai din dreapta
25

Thursday, November 8, 2012

Thursday, November 8, 2012

Limbaje
Dac G este o gramatic atunci limbajul lui G este setul de iruri derivate din simbolul de start al lui G. Limbajul e referit prim L(G). Formal, L(G) = {s | s T* i S unde T - set de terminale S - simbolul de start
+

Gramatici Recursive
O producie este numit recursiv dac partea ei stng apare n partea ei dreapt
Exemplu S aS

s}

O producie A este recursiv indirect dac A deriv ntr-o form ce-l conine pe A
Exemplu S b | aA A c | bS S aA abS

27

O gramatic este recursiv dac i numai dac ea conine o producie recursiv sau indirect recursiv
28

Thursday, November 8, 2012

Thursday, November 8, 2012

Observaie

Exemplul 1
O gramatic pentru numeralele zecimale

O gramatic pentru un limbaj innit trebuie s e recusiv


De ce ? ntr-un limbaj innit nu exist o limitare asupra lungimii irurilor sale. Deci, nu exist o limit n numrul de pai de derivare utilizai pentru derivarea unui sir. Dar o gramatic are un numr x de producii (ex. n). Deci a n+1 a derivare a unui ir trebuie s utilizeze o producie deja utilizat

S D | DS D0|1|2|3|4|5|6|7|8|9 Derivarea lui 7801 S DS 7S 7DS 78S 78DS 780S 780D 7801 Deci paii de derivare sunt : S DS 7S 7DS 78S 78DS 780S 780D 7801
30

29

Thursday, November 8, 2012

Thursday, November 8, 2012

Exemplul 2
O gramatic pentru expresii aritmetice simple
Ea|b|E-E Derivare leftmost pentru a - b - a E E-E a-E a-E-E a-b-E E E a E b E E a E a E a-b-a E E b E a E a Ea|b|E-E Derivare leftmost pentru a - b - a E E-E a-E a-E-E a-b-E E E b E E E E a-b-a

Exemplul 2
O gramatic pentru expresii aritmetice simple

E E E

Alt derivare leftmost pentru a - b - a E E-E E-E-E a-E-E a-b-E


Thursday, November 8, 2012

a-b-a
31

te 2 a es in ic l pu ost at e am c tm in gr ist righ ir d o a a ,b ex t/ os un it en dac ftm tru en es le n d n igu ri pe jul b riv ite ba Alt derivare leftmost pentru a - am - da er lim b e if E E-E E-E-E a-E-E a - bd- E a-b-a
32

Thursday, November 8, 2012

Examplul 2 (cont)
nelesul unui ir dintr-un limbaj este strns legat de arborele de derivare al irului. Dorim ca ecare ir dintr-un limbaj s aib exact un neles / arbore de derivare. ET|E-T Ta|b Derivare pentru a - b - a E E E a E b a - b - a = a - (b - a) ? E a or E a E b a - b - a = (a - b) - a ? a

Exemplul 2 (cont)

E E E E

E -

Dezambiguarea: vrem ca primul - s e evaluat naintea celui de-al doilea ET|E-T Ta|b
33 34

Thursday, November 8, 2012

Thursday, November 8, 2012

Exemplul 2 (cont)
ET|E-T Ta|b Derivare pentru a - b - a E E-T ET|E-T Ta|b Derivare pentru a - b - a E E-T E-T-T

Exemplul 2 (cont)

E E T E E -

E T T

35

36

Thursday, November 8, 2012

Thursday, November 8, 2012

Exemplul 2 (cont)
ET|E-T Ta|b Derivare pentru a - b - a E E-T E-T-T T-T-T ET|E-T Ta|b Derivare pentru a - b - a E E-T E-T-T T-T-T a-T-T

Exemplul 2 (cont)

E E E T T T E T a
37

E E T T

38

Thursday, November 8, 2012

Thursday, November 8, 2012

Exemplul 2 (cont)
ET|E-T Ta|b Derivare pentru a - b - a E E-T E-T-T T-T-T a-T-T a-b-T ET|E-T Ta|b Derivare pentru a - b - a E E-T E-T-T T-T-T a-T-T

Exemplul 2 (cont)

a-b-T

a-b-a

E E E T a
39

E T E T a
40

T b

E -

T b

T a

Thursday, November 8, 2012

Thursday, November 8, 2012

Exemplul 2 (cont)
ET|E-T Ta|b Derivare pentru a - b - a E E-T E-T-T T-T-T a-T-T a-b-T a-b-a ... for a = 0; a < 10; a++) { x++; } ...
Un program poate vzut ca un ir. Este acest program corect sintactic ?

De ce ?

Nu

E E E T a
Thursday, November 8, 2012

T b

T a

n esen, putem nlocui nodurile neterminalele cu un copil terminal. n acest mod obinem aa numitul arbore sintactic abstract a b
41

O mic parte din gramatica limbajului Java

Reprezentarea programului ca i arbore sintactic abstract (vedere parial)


Thursday, November 8, 2012

42

De ce ?
... for a = 0; a < 10; a++) { x++; } ...
Un program poate vzut ca un ir. Este acest program corect sintactic ?

Nu

O mic parte din gramatica limbajului Java

Reprezentarea programului ca i arbore sintactic abstract (vedere parial)


Thursday, November 8, 2012

ar do e u! sta pl ce em i a ex ... un
43