9 de junho de 2013
marcus.ramos@univasf.edu.br
www.univasf.edu.br/~marcus.ramos
LFA 2010-1
9 de junho de 2013
1 / 94
Bibliografia
LFA 2010-1
9 de junho de 2013
2 / 94
Roteiro
Smbolos e Cadeias
Linguagens
Gramticas
Reconhecedores
LFA 2010-1
9 de junho de 2013
3 / 94
Smbolos e Cadeias
LFA 2010-1
9 de junho de 2013
4 / 94
Smbolos e Cadeias
LFA 2010-1
9 de junho de 2013
5 / 94
Smbolos e Cadeias
Convenes
LFA 2010-1
9 de junho de 2013
6 / 94
Smbolos e Cadeias
Exemplo
Exemplo 1.1
Como exemplo de alfabeto podemos mencionar o conjunto dos dgitos
hexadecimais, em que cada elemento (dgito) desse conjunto corresponde a um
determinado smbolo:
= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f }
Naturalmente, as cadeias que podem ser construdas a partir dos smbolos desse
alfabeto correspondem aos numerais hexadecimais: 123, a0b56, fe5dc, b, abc, 55efff ...
LFA 2010-1
9 de junho de 2013
7 / 94
Smbolos e Cadeias
LFA 2010-1
9 de junho de 2013
8 / 94
Smbolos e Cadeias
Cadeia unitria
LFA 2010-1
9 de junho de 2013
9 / 94
Smbolos e Cadeias
Cadeia vazia
LFA 2010-1
9 de junho de 2013
10 / 94
Smbolos e Cadeias
Concatenao de cadeias
LFA 2010-1
9 de junho de 2013
11 / 94
Smbolos e Cadeias
Exemplos
Exemplo 1.3
Considere o alfabeto = {a, b, c, d}, e as cadeias = abc, = dbaca e = a.
A concatenao da cadeia com a cadeia assim obtida:
= = abcdbaca, e | | = | | + | | = 3 + 5 = 8
Da mesma forma, obtm-se a concatenao de com :
= = dbacaabc, e, | | = | | + | | = 5 + 3 = 8
Note-se que, neste exemplo, 6= .
A concatenao da cadeia com a cadeia elementar dada por:
= = abca, e | | = | | + | | = 3 + 1 = 4
Finalmente, a concatenao da cadeia elementar com a cadeia obtida como:
= = adbaca, e | | = | | + | | = 1 + 5 = 6
LFA 2010-1
9 de junho de 2013
12 / 94
Smbolos e Cadeias
= =
| | = | | = | |
LFA 2010-1
9 de junho de 2013
13 / 94
Smbolos e Cadeias
Prefixos e sufixos
LFA 2010-1
9 de junho de 2013
14 / 94
Smbolos e Cadeias
Subcadeias
LFA 2010-1
9 de junho de 2013
15 / 94
Smbolos e Cadeias
Cadeia reversa
LFA 2010-1
9 de junho de 2013
16 / 94
Smbolos e Cadeias
Repetio de smbolos
Finalmente, convenciona-se que i representa a cadeia formada por
i smbolos concatenados. Por definio, 0 = .
Exemplo 1.5
Considere-se o smbolo a. Ento:
I
a0 = ;
a1 = a;
a2 = aa;
a3 = aaa;
etc.
LFA 2010-1
9 de junho de 2013
17 / 94
Linguagens
Linguagem formal
LFA 2010-1
9 de junho de 2013
18 / 94
Linguagens
cadeia vazia ;
conjunto vazio 0;
/
LFA 2010-1
9 de junho de 2013
19 / 94
Linguagens
LFA 2010-1
9 de junho de 2013
20 / 94
Linguagens
LFA 2010-1
9 de junho de 2013
21 / 94
Linguagens
LFA 2010-1
9 de junho de 2013
22 / 94
Linguagens
Exemplo
Exemplo 2.1
O smbolo a elemento do alfabeto {a} e tambm um item da cadeia aaa, que por
sua vez elemento da linguagem {aaa}. Por outro lado, a linguagem {aaa} um
conjunto que contm a cadeia aaa, a cadeia aaa uma seqncia de smbolos a e o
alfabeto {a} contm o smbolo a. A Figura 3 ilustra esses conceitos, conforme a
Figura 1.
LFA 2010-1
9 de junho de 2013
23 / 94
Linguagens
Exemplo
Exemplo 2.2
A Figura 4 ilustra uma aplicao dos conceitos da Figura 2 ao alfabeto {a, b}. A
linguagem apresentada , naturalmente, apenas uma das inmeras que podem ser
criadas a partir desse alfabeto.
LFA 2010-1
9 de junho de 2013
24 / 94
Linguagens
Concatenao de linguagens
A concatenao de duas linguagens X e Y, denotada por X Y ou
simplesmente XY, corresponde a um conjunto Z formado pela coleo
de todas as cadeias que possam ser obtidas pela concatenao de
cadeias x X com cadeias y Y, nesta ordem. Formalmente,
Z = X Y = XY = {xy | x X e y Y}
A concatenao , que gera cadeias de comprimento 2 formadas
sobre um alfabeto , tambm representada por 2 . Analogamente, a
concatenao , que gera cadeias de comprimento 3 sobre o
alfabeto , representada como 3 , e assim sucessivamente.
Generalizando-se:
i = i1 , i > 0
Por definio, 0 = { }
Marcus Ramos (UNIVASF)
LFA 2010-1
9 de junho de 2013
25 / 94
Linguagens
Exemplo
Exemplo 2.3
Considere-se = {a, b, c}. Ento,
0
{ }
{a, b, c}
=
=
etc.
LFA 2010-1
9 de junho de 2013
26 / 94
Linguagens
i=0
LFA 2010-1
9 de junho de 2013
27 / 94
Linguagens
LFA 2010-1
9 de junho de 2013
28 / 94
Linguagens
Maior linguagem
LFA 2010-1
9 de junho de 2013
29 / 94
Linguagens
Maior linguagem
LFA 2010-1
9 de junho de 2013
30 / 94
Linguagens
Menor linguagem
Por outro lado, a menor linguagem que pode ser definida sobre um
alfabeto qualquer 0,
/ ou seja, a linguagem vazia ou a linguagem
composta por zero sentenas.
LFA 2010-1
9 de junho de 2013
31 / 94
Linguagens
Todas as linguagens
LFA 2010-1
9 de junho de 2013
32 / 94
Linguagens
LFA 2010-1
9 de junho de 2013
33 / 94
Linguagens
Exemplos
Exemplo 2.4
Seja = {a, b, c} e P o conjunto formado pela nica propriedade todas as cadeias
so iniciadas com o smbolo a. Ento:
I
L0 , L1 , L2 , L3 ;
L0 2 , L1 2 , L2 2 , L3 2 ;
LFA 2010-1
9 de junho de 2013
34 / 94
Linguagens
Fechamento transitivo
i=1
LFA 2010-1
9 de junho de 2013
35 / 94
Linguagens
Exemplo
Exemplo 2.5
Seja = {n, (, ), +, , , /}. Neste caso:
I
+ = { }, pois
/
LFA 2010-1
9 de junho de 2013
36 / 94
Linguagens
LFA 2010-1
9 de junho de 2013
37 / 94
Linguagens
LFA 2010-1
9 de junho de 2013
38 / 94
Linguagens
Exemplo
Conforme j mencionado, o conjunto contm todas as possveis
linguagens que podem ser definidas sobre o alfabeto . Na prtica, as
linguagens de interesse costumam ser definidas como um
subconjunto prprio de , para um dado alfabeto .
Exemplo 2.7
Considere-se o alfabeto 1 = {n, (, ), +, , , /}. Uma linguagem L1 , passvel de ser
definida sobre o alfabeto 1 , e que corresponde a um subconjunto prprio de 1 ,
aquela em que as cadeias se assemelham, do ponto vista estrutural, s cadeias que
representam expresses aritmticas bem-formadas em muitas linguagens populares
de programao de alto nvel.
A seguir esto relacionadas algumas das cadeias que fazem parte de L1 , de acordo
com esse critrio.
LFA 2010-1
9 de junho de 2013
39 / 94
Linguagens
Exemplo
I
n+n
(n*n)
n*(n/(n+n+n))
n++
nn*
(n*n)))
n*-(n(+n+/))
LFA 2010-1
9 de junho de 2013
40 / 94
Linguagens
Mtodos e notaes
LFA 2010-1
9 de junho de 2013
41 / 94
Linguagens
Mtodos e notaes
LFA 2010-1
9 de junho de 2013
42 / 94
Linguagens
Mtodos e notaes
LFA 2010-1
9 de junho de 2013
43 / 94
Linguagens
Gramticas
LFA 2010-1
9 de junho de 2013
44 / 94
Linguagens
Reconhecedores
LFA 2010-1
9 de junho de 2013
45 / 94
Linguagens
Enumeraes
LFA 2010-1
9 de junho de 2013
46 / 94
Linguagens
Usos
LFA 2010-1
9 de junho de 2013
47 / 94
Linguagens
Equivalncias
LFA 2010-1
9 de junho de 2013
48 / 94
Linguagens
Exemplo
Exemplo 2.8
Considerem-se a gramtica G e o reconhecedor M, respectivamente definidos atravs
das linguagens gerada e aceita:
I
I
Portanto:
I
fcil perceber que a condio (2) acima verificada, mas a condio (1) no. Por
exemplo, a cadeia ab L2 e ab L1 . Por outro lado, a cadeia aba L1 , porm
aba
/ L2 . Logo, L1 L2 e no se pode dizer que G e M sejam equivalentes.
Marcus Ramos (UNIVASF)
LFA 2010-1
9 de junho de 2013
49 / 94
Linguagens
Metalinguagem
LFA 2010-1
9 de junho de 2013
50 / 94
Gramticas
Conceito
LFA 2010-1
9 de junho de 2013
51 / 94
Gramticas
Conceito
LFA 2010-1
9 de junho de 2013
52 / 94
Gramticas
Metalinguagens
LFA 2010-1
9 de junho de 2013
53 / 94
Gramticas
Definio
Formalmente, uma gramtica G pode ser definida como sendo uma
qudrupla:
G = (V, , P, S)
onde:
I
LFA 2010-1
9 de junho de 2013
54 / 94
Gramticas
Definio
com V NV e V
LFA 2010-1
9 de junho de 2013
55 / 94
Gramticas
Definio
LFA 2010-1
9 de junho de 2013
56 / 94
Gramticas
Exemplo
Exemplo 3.1
Seja G1 = (V1 , 1 , P1 , S), com:
V1
1
=
=
{0, 1, 2, 3, S, A}
{0, 1, 2, 3}
N1
P1
=
=
{S, A}
{S 0S33, S A, A 12, A }
fcil verificar que G1 est formulada de acordo com as regras gerais acima
enunciadas para a especificao de gramticas.
LFA 2010-1
9 de junho de 2013
57 / 94
Gramticas
Forma sentencial
LFA 2010-1
9 de junho de 2013
58 / 94
Gramticas
Derivao direta
LFA 2010-1
9 de junho de 2013
59 / 94
Gramticas
LFA 2010-1
9 de junho de 2013
60 / 94
Gramticas
LFA 2010-1
9 de junho de 2013
61 / 94
Gramticas
Sentena
LFA 2010-1
9 de junho de 2013
62 / 94
Gramticas
Substituies
LFA 2010-1
9 de junho de 2013
63 / 94
Gramticas
Exemplo
Exemplo 3.2
Considere-se a gramtica G1 , definida no Exemplo 3.1.
I
LFA 2010-1
9 de junho de 2013
64 / 94
Gramticas
LFA 2010-1
9 de junho de 2013
65 / 94
Gramticas
LFA 2010-1
9 de junho de 2013
66 / 94
Gramticas
LFA 2010-1
9 de junho de 2013
67 / 94
Gramticas
Exemplo
Exemplo 3.4
Considere G2 = (V2 , 2 , P2 , S), com:
V2
= {a, b, c, S, B, C}
2
P2
= {a, b, c}
= {S aSBC, S abC, CB BC, bB bb, bC bc, cC cc}
LFA 2010-1
9 de junho de 2013
68 / 94
Gramticas
Exemplo
Atravs da aplicao sucessiva da regra CB BC, obtm-se agora:
ai+1 b(CB)i C ai+1 bBi Ci C = ai+1 bBi Ci+1
Finalmente, a aplicao i vezes da regra bB bb faz com que todos os smbolos B
sejam substitudos por smbolos b:
ai+1 bBi Ci+1 i ai+1 bbi Ci+1 = ai+1 bi+1 Ci+1
A aplicao uma nica vez da regra bC bc substitui o primeiro smbolo da cadeia
de smbolos C pelo smbolo c:
ai+1 bi+1 Ci+1 ai+1 bi+1 cCi
Para terminar, a aplicao i vezes da regra cC cc substitui todos os demais
smbolos C por smbolos c:
ai+1 bi+1 cCi i ai+1 bi+1 cci = ai+1 bi+1 ci+1
LFA 2010-1
9 de junho de 2013
69 / 94
Gramticas
Exemplo
A forma sentencial:
ai+1 bi+1 ci+1
gera, portanto, as sentenas aabbcc, aaabbbccc etc. A sentena aabbcc, por exemplo,
derivada da seguinte forma nessa gramtica:
S aSBC aabCBC aabBCC aabbCC aabbbcC aabbcc
pela aplicao, respectivamente, das produes:
S aSBC, S abC, CB BC, bB bb, bC bc e cC cc
LFA 2010-1
9 de junho de 2013
70 / 94
Gramticas
Exerccio
LFA 2010-1
9 de junho de 2013
71 / 94
Gramticas
Exerccio
I Comeam com aa;
I No comeam com aa;
I Terminam com bbb;
I No terminam com bbb;
I Contm a subcadeia aabbb;
I No contm a subcadeia aaa;
I Possuem comprimento maior ou igual a 3;
I Possuem comprimento menor ou igual a 3;
I Possuem comprimento diferente de 3;
I Possuem comprimento par;
I Possuem comprimento mpar;
I Possuem comprimento mltiplo de 4;
I Possuem quantidade par de smbolos a;
I Possuem quantidade mpar de smbolos b.
Marcus Ramos (UNIVASF)
LFA 2010-1
9 de junho de 2013
72 / 94
Gramticas
Gramticas equivalentes
possvel definir uma mesma linguagem atravs de duas ou mais
gramticas distintas. Quando isso ocorre, diz-se que as gramticas
que definem a linguagem em questo so sintaticamente equivalentes
ou, simplesmente, equivalentes uma outra.
Exemplo 3.5
As gramticas G3 e G4 a seguir definidas so equivalentes:
G3
G4
=
=
Uma rpida anlise de G3 e G4 permite concluir que L3 (G3 ) = L4 (G4 ) = {a, b}+.
LFA 2010-1
9 de junho de 2013
73 / 94
Gramticas
Notao algbrica
LFA 2010-1
9 de junho de 2013
74 / 94
Gramticas
Outras notaes
LFA 2010-1
9 de junho de 2013
75 / 94
LFA 2010-1
9 de junho de 2013
76 / 94
LFA 2010-1
9 de junho de 2013
77 / 94
Exemplo
Exemplo 4.1
A gramtica G0 = ({a, b, S}, {a, b}, {S aS, S bS, S }, S) tal que
L0 (G0 ) = .
Substituindo a regra S pelas regras S a e S b, em G, obtm-se uma nova
gramtica G1 = ({a, b, S}, {a, b}, {S aS, S bS, S a, S b}, S), de tal forma
que agora L1 (G1 ) = + .
A linguagem L2 , formada por cadeias sobre = {a, b}, de tal modo que todas elas
sejam iniciadas pelo smbolo a, gerada pela gramtica
G2 = ({a, b, S, X}, {a, b}, {S aX, X aX, X bX, X }, S). So exemplos de
cadeias pertencentes a L2 : a, abb, abaaa, aabbbba, aaa etc.
LFA 2010-1
9 de junho de 2013
78 / 94
Exemplo
Por outro lado, considere-se a linguagem L3 , composta por cadeias sobre = {a, b},
de tal forma que todas elas sejam iniciadas com o smbolo a e terminadas com o
smbolo b. Uma possvel gramtica que gera L3
G3 = ({a, b, S, X}, {a, b}, {S aX, X aX, X bX, X b}, S). Perceba a sutil
diferena que existe entre G2 e G3 .
Em seguida, considere-se a linguagem L4 que compreende todas as cadeias sobre
= {a, b} que possuam exatamente dois smbolos b (nem mais, nem menos). So
exemplos: bb, bab, abb, aaaaabaab etc. L4 gerada pela gramtica
G4 = ({a, b, S, X}, {a, b}, {S XbXbX, X aX, X }, S).
Finalmente, a linguagem L5 definida pelas cadeias sobre = {a, b}, de tal forma
que todas elas sejam iniciadas com o smbolo b e contenham um nico smbolo b.
So exemplos b, ba, baa, baaa etc. A linguagem L5 gerada por
G5 = ({a, b, S, X}, {a, b}, {S bX, X aX, X }, S).
Esquematicamente, a relao entre as linguagens L0 , L1 , L2 , L3 , L4 e L5 pode ser
observada na Figura 5 ( bom ter em mente que linguagens so conjuntos).
LFA 2010-1
9 de junho de 2013
79 / 94
Exemplo
LFA 2010-1
9 de junho de 2013
80 / 94
Exemplo
Observe-se a relao de incluso prpria entre as linguagens estudadas. A cadeia
ilustra a incluso prpria de L1 em L. A cadeia bbba, de L2 em L1 . Atravs da cadeia
abaa, exemplifica-se a incluso prpria de L3 em L2 . Sobre L4 pode-se apenas dizer
que est includa propriamente em L1 .
A cadeia abb pertence simultaneamente s linguagens L0 , L1 , L2 , L3 e L4 . A cadeia
abaabab pertence a L0 , L1 , L2 e L3 apenas. A cadeia ababa, somente s linguagens
L0 , L1 , L2 e L4 , e assim por diante.
Cumpre, novamente, notar que:
I
A maior linguagem que pode ser definida sobre {a, b} {a, b}, que, neste
caso, corresponde a L0 ;
O conjunto de todas as linguagens que podem ser definidas sobre {a, b} dado
{a,b}
palavras, cada uma dessas linguagens um elemento de 2
, que por sua vez
um conjunto infinito.
LFA 2010-1
9 de junho de 2013
81 / 94
Reconhecedores
Conceito
LFA 2010-1
9 de junho de 2013
82 / 94
Reconhecedores
Organizao geral
Os reconhecedores esboados em sua forma geral na Figura 6
apresentam quatro componentes fundamentais: uma memria (fita)
contendo o texto de entrada do reconhecedor, um cursor, que indica o
prximo elemento da fita a ser processado, uma mquina de estados
finitos, sem memria, e uma memria auxiliar opcional.
LFA 2010-1
9 de junho de 2013
83 / 94
Reconhecedores
Fita de entrada
A fita de entrada contm a cadeia a ser analisada pelo reconhecedor.
Ela dividida em clulas, e cada clula pode conter um nico smbolo
da cadeia de entrada, pertencente ao alfabeto de entrada escolhido
para o reconhecedor. A cadeia de entrada disposta da esquerda
para a direita, sendo o seu primeiro smbolo colocado na posio mais
esquerda da fita.
Dependendo do tipo de reconhecedor considerado, a fita (ou o
conjunto de fitas) de entrada pode apresentar comprimento finito ou
infinito. Neste ltimo caso, a fita pode ter ou no limitao esquerda
e/ou direita. A cadeia de entrada registrada na fita de entrada pode
estar delimitada por smbolos especiais, no pertencentes ao alfabeto
de entrada, sua esquerda e/ou sua direita, porm isso no
obrigatrio.
LFA 2010-1
9 de junho de 2013
84 / 94
Reconhecedores
Cursor
A leitura dos smbolos gravados na fita de entrada feita atravs de
um cabeote de acesso, normalmente denominado cursor, o qual
sempre aponta o prximo smbolo da cadeia a ser processado. Os
movimentos do cursor so controlados pela mquina de estados, e
podem, dependendo do tipo de reconhecedor, ser unidirecionais
(podendo deslocar-se para um lado apenas, tipicamente para a
direita) ou bidirecionais (podendo deslocar-se para a esquerda e para
a direita). Determinados tipos de reconhecedores utilizam o cursor
no apenas para lerem os smbolos da fita de entrada, mas tambm
para escreverem sobre a fita, substituindo smbolos nela presentes
por outros, de acordo com comandos determinados pela mquina de
estados.
LFA 2010-1
9 de junho de 2013
85 / 94
Reconhecedores
Mquina de estados
LFA 2010-1
9 de junho de 2013
86 / 94
Reconhecedores
Memria auxiliar
A memria auxiliar opcional, e torna-se necessria apenas em
reconhecedores de linguagens que apresentam uma certa
complexidade. Normalmente, ela assume a forma de uma estrutura de
dados de baixa complexidade, como, por exemplo, uma pilha (no caso
do reconhecimento de linguagens livres de contexto). As informaes
registradas na memria auxiliar so codificadas com base em um
alfabeto de memria, e todas as operaes de manipulao da
memria auxiliar (leitura e escrita) fazem referncia apenas aos
smbolos que compem esse alfabeto. Os elementos dessa memria
so referenciados atravs de um cursor auxiliar que, eventualmente,
poder coincidir com o prprio cursor da fita de entrada. Seu tamanho
no obrigatoriamente limitado e, por definio, seu contedo pode
ser consultado e modificado.
LFA 2010-1
9 de junho de 2013
87 / 94
Reconhecedores
Limitada / No limitada
No limitada
LFA 2010-1
9 de junho de 2013
88 / 94
Reconhecedores
Configurao
Estado;
Posio do cursor;
LFA 2010-1
9 de junho de 2013
89 / 94
Reconhecedores
Configurao inicial
LFA 2010-1
9 de junho de 2013
90 / 94
Reconhecedores
Configurao final
A configurao final de um autmato aquela na qual as seguintes
condies so obedecidas:
1
LFA 2010-1
9 de junho de 2013
91 / 94
Reconhecedores
Movimentao
LFA 2010-1
9 de junho de 2013
92 / 94
Reconhecedores
Movimentao
Uma transio mapeia triplas formadas por:
I
Estado corrente;
Prximo estado;
LFA 2010-1
9 de junho de 2013
93 / 94
Reconhecedores
Linguagem
Diz-se que um autmato aceita (ou reconhece) uma cadeia se lhe for
possvel atingir alguma configurao final a partir de sua configurao
inicial nica, atravs de movimentos executados sobre tal cadeia.
Caso contrrio, diz-se que o autmato rejeita a cadeia. A maneira
como tais configuraes sucedem umas s outras durante o
reconhecimento (ou aceitao) da cadeia de entrada define uma
caracterstica fundamental dos autmatos, conforme explicado a
seguir.
Seja o autmato determinstico ou no-determinstico, a linguagem
por ele aceita (ou definida) corresponde ao conjunto de todas as
cadeias que ele aceita.
LFA 2010-1
9 de junho de 2013
94 / 94