Escolar Documentos
Profissional Documentos
Cultura Documentos
Conceitos bsicos
Smbolo: uma entidade abstrata que no precisa ser definida. Eles devem ser ordenveis. Portanto podem ser comparados quanto sua igualdade.
a<b<c<<z 0<1<2<<9
Cadeia: uma cadeia sobre um alfabeto qualquer , uma seqncia finita de smbolos desse alfabeto.
Se w = abc, |w| = 3
Se w = ab, w 3 = ababab
Concatenao: se w e z so cadeias, a concatenao wz formada pela escrita da primeira cadeia w, seguida da segunda cadeia z, justapostas.
Se w = ab e z = bc, wz = abbc
Cadeia vazia: uma cadeia vazia representada por um smbolo nulo, que corresponde uma cadeia especial de comprimento igual a zero.
Fechamento Estrela: ou Fecho Kleene, o conjunto de todas as cadeias de qualquer comprimento sobre um alfabeto.
Dado ={a, b}, * = 0 U 1 U 2 U U n = { , a, b, aa, bb, aab, abb, aabb, bbaa, ... } onde 0 =
Fechamento Positivo: + = * -
Linguagens Formais
Exemplo:
O conjunto de cadeias ou palavras vlidas para a lngua portuguesa um subconjunto de {a, b, c, d, z}+.
Linguagens Formais
L = { w * | w tem a propriedade P } L = { w * | w sempre termina com a } Se ={a,b}, ento L = {a, aa, aaa, aba, aaaba, bba, ba, bbba, ... } L = { w * | |w| = 2 } Se ={a,b}, ento L = {aa, bb, ab, ba}
Linguagens Formais
Qual seria a definio matemtica dessa linguagem? Ela formal? Sobre qual alfabeto ela est definida? Ela finita ou infinita? Como representar essa linguagem?
Estudo das formas de representao dessas linguagens. O problema da representao est relacionada com o fato da linguagem ser finita ou infinita.
Linguagem Finita: pode ser enumervel.
Linguagem Infinita: no pode ser enumervel. Necessita de uma representao finita que a define.
Gerador: um dispositivo formal de gerao onde as sentenas de uma linguagem podem ser sitematicamente geradas.
Linguagens Formais:
So linguagens que podem ser representadas de maneira finita e precisa, atravs de sistemas com sustentao matemtica.
Linguagens Regulares:
Trata-se do conjunto de linguagens formais bastante simples e com propriedades bem definidas. Essas linguagens podem ser definidas pelo que chamamos de Expresses Regulares.
Expresses Regulares
Definio:
Seja um alfabeto . As expresses regulares sobre esse alfabeto denotam conjuntos (Linguagens) como segue:
uma expresso que denota o conjunto vazio. uma expresso que denota o conjunto {} Para cada smbolo do alfabeto , representa uma expresso regular que gera o conjunto {}. Se r e s so expresses regulares que denotam os conjuntos R e S respectivamente
Alternncia/Escolha: dada duas expresses regulares M e N, o operador de alternncia | gera uma nova expresso regular M | N. Dessa forma, se uma cadeia est na linguagem M | N, a cadeia pertence linguagem M ou linguagem N.
Obs.: Em algumas bibliografias, o smbolo que denota alternncia/escolha o smbolo de unio (U).
Concatenao: dada duas expresses regulares M e N, o operador de concatenao . gera uma nova expresso regular M.N . Dessa forma, uma string est na linguagem M.N, se a string pertence concatenao de duas strings a e b, desde que a pertena linguagem M, e b pertena linguagem N.
Fechamento Estrela dado por M*. Uma string est em M* se ela for uma concatenao de zero ou mais strings de M. Fechamento Positivo dado por M+. Uma string est em M+ se ela for uma concatenao de uma ou mais strings de M.
Dada a expresso regular: a | b* Como ela deve ser interpretada? (a | b)* ou a | (b)* ?
As repeties possuem precedncia maior. De forma que * recebe precedncia maior que | .
Frequentemente, til simplificar a notao com nomes para ERs muito longas.
Ex.: Expresso regular para expressar nmeros com no mnimo um dgito. a) (0 | 1 | 2 | | 9) (0 | 1 | | 9)*
Ou ainda: (0 | 1 | 2 | | 9)+
Intervalos
Primeira forma: tentar expressar um nmero razovel de cadeias que pertenam linguagem e tentar encontrar o padro. (Documente isso na sua avaliao escrita e exerccios!!) Ex.: Cadeias que contm no mximo um b sobre o alfabeto ={a, b,c} Algumas cadeias que pertencem linguagem:
a, aa, ac, aac, abc, aaabc, c, b. (Dficil? Separe por comprimento da cadeia): Comprimento 0: Comprimento 1: a, b, c Comprimento 2: aa, ab, ba, ac, ca, cc, bc, cb. Comprimento 3: aaa, aab,
O que se pode pensar : se tem no mximo 1 b, ento pode no ter bs. Logo, sua expresso deveria contemplar casos em que h b e casos em que no h. Logo:
r1= (a | c)* | (a|c)*b(a|c)* => r1= (a|c)*( | b(a|c)*) => r1= (a|c)*( | b)(a|c)*
Exemplos
Considere o alfabeto ={a, b, c} a = {a} a* = {, a, aa, aaa, } ab* = {a, ab, abb, abbb, ...} (a | c)* = {, a, c, aa, ac, aac, cc, ccca, aaccc, }
Exemplos
( a | c ) * | ( a | c ) * b ( a | c )* (a|c)*(b|)(a|c)*
OBS: A mesma linguagem pode ser representada por muitas expresses regulares diferentes.
Exemplos
( a | b )* ( a* b* )* ( a* b* )+ Por qu?
( a | b | c )*
Exemplos
( aa | bb )*
Todas as cadeias comeando com a duplo seguido por qualquer quantidade de b's seguido por c. A linguagem cadeia aaac. Todas as cadeias constitudas de a's e c's.
Exemplos
Conjunto de todas as cadeias constitudas da concatenao de pares de a's e b's. (do slide anterior)
( aabb)*
(aa | bb)* deveria ser entendida como o conjunto de todas as cadeias constitudas de um nmero arbitrrio de pares de a's e b's.
Exerccios