Você está na página 1de 50

Linguagens Formais: Conceitos

e definições
Fundamentos Teóricos da Computação
Roberto Gomes Ribeiro

1/50
O problema fundamental relativo ao uso dos computadores e a
necessidade de representar coisas.

Definição de um Estratégia de A solução


problema solução propriamente dita

2/50
A representação de uma entidade nas formas de um programa, de
entrada para um programa ou de saída de um programa é, muitas
vezes, constituída por uma:

sequências de símbolos

3/50
A matemática entre a entidade e a
representação

Entidade Modelo Matemático Representação


Número inteiro no Um dos carácteres
Mês
intervalo [1, 12] [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, A, B]
Número real Número com duas casas
Remuneração
positivo decimais
Tabela em que cada linha
FP Relação
tem o nome, cargo, salário
Cálculo de FP Algoritmo Programa

4/50
A matemática entre a entidade e a
representação
Entidade Modelo Matemático Representação
Número inteiro no Um dos carácteres
Mês
intervalo [1, 12] [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, A, B]
Número real Número com duas casas
Remuneração
positivo decimais
Tabela em que cada linha
FP Relação
tem o nome, cargo, salário
Cálculo de FP Algoritmo Programa
Rep. por sequência de símbolos =⇒ Linguagens formais

5/50
Linguagem formal vs Linguagem natural

A linguagem natural é construída historicamente, tem uma estrutura própria e é


dinâmica. Além disso, ela é social, ou sejam não pertence a ninguém. O
significado dos seus termos varia de acordo com o seu contexto. em comparação
com uma as linguagens formais, a linguagem natural tem um poder de
expressividade maior. Ela é mais flexível, contudo mais ambígua.

Por outro lado, a estrutura de uma linguagem formal é mais simples. A sua
gramática possui normas reduzidas, o significado dos seus termos é fixo e a
ambiguidade é nula. Contudo, o poder expressivo é menor.
Exemplo:

6/50
Exemplo de linguagem formal: linguagem de
programação

• Linguagem de programação −→ conjunto de programas


• main.c (um programa)−→ arquivo de texto com uma sequência de símbolos
• Símbolos −→ caracter ou uma sequência de caracteres

Linguagens Formais: úteis para caracterizar o conceito de COMPUTABILIDADE

7/50
Linguagens Formais

Uma linguagem formal, ao contrário de uma linguagem natural, é tal que:


• tem uma sintaxe bem definida, de forma que, dada uma sentençaa, seja
sempre possível saber se ela pertence ou não à linguagem; e
• tem uma semântica precisa, de modo que não contenha sentenças sem
significado ou ambíguas.

8/50
DEFINIÇÕES

9/50
Toda linguagem tem um alfabeto associado

Um alfabeto é um conjunto finito e não vazio (de símbolos).

• {0, 1}
• {R, P, S} (Pedra, Papel e Tesoura)
• {1}
• {C, D, E, F, G, A, B}
• {0, 1, 2, · · · , 9,+, −}

10/50
Palavra

Uma palavra sobre um alfabeto Σ é uma sequência finita de


símbolos de Σ.

Palavras no alfabeto {0, 1} Palavras no alfabeto


•λ {C, D, E, F, G, A, B}
•0 •λ
•1 • CEG
• 11100 • GBD
• 010101 • ACE

11/50
Comprimento de uma Palavra

O comprimento de uma palavra w, denotado por |w|, é o número


de símbolos de w.

Palavras no alfabeto {0, 1} Palavras no alfabeto


• |λ| → 0 {C, D, E, F, G, A, B}
• |0| =→ 1 • |λ| → 0
• |1| =→ 1 • |CEG| → 3
• |11100| =→ 5 • |GBD| → 3
• |010101| =→ 6 • |ACE| → 3

12/50
Notação
Abreviação: seja a um símbolo qualquer de um alfabeto e n ∈ Z, an
representa uma sequência de n símbolos a s.

Exemplos para o alfabeto:


Σ = {0, 1}

• 10 = λ
• 04 = 0000
• 13 012 = 111011
13/50
O conjunto de todas as palavras

Σ∗ é o conjunto de todas a palavras de sobre Σ.

Exemplos:
Σ = {0, 1}

• {1}∗ = {λ, 1, 11, 111, 14 , 15 , 16 , · · · }


• {0, 1}∗ = {λ, 0, 1, 00, 01, 10, 11, 000, · · · }
• {0, 1, 2, · · · , 9, −,+}∗ = {λ, 0, · · · , 9, 42+9 − 2, 7++45−}

14/50
Linguagem
Uma linguagem do alfabeto Σ é um subconjunto de Σ∗ .

Exemplos - Linguagem do alfabeto:


Σ = {0, 1}
• ∅
• {λ}
• {λ, 0}
• {w ∈ {0, 1}∗ | 1 ≤ |w| ≤ 5}
• {0n 1n |n ∈ N}
• {0, 1}∗
15/50
Operações sobre conjuntos se aplicam a
linguagens

Alguns exemplos: Sejam as linguagens L1 sobre Σ1 e L2 sobre Σ2 .


• L1 ∪ L2 é uma linguagem sobre Σ1 ∪ Σ2
• L1 ∩ L2 é uma linguagem sobre Σ1 ∩ Σ2
• L1 − L2 é uma linguagem sobre Σ1
• L1 = Σ∗ − L1 é uma linguagem sobre Σ1
• P (L1 ) → conjunto de linguagens sobre Σ1
• P (Σ∗ ) → conjunto de TODAS as linguagens sobre Σ1

16/50
Concatenação de palavras

A concatenação de x = a1 a2 · · · am e y = b1 b2 n é
xy = x = a1 a2 · · · am y = b1 b2 n
Exemplos:
• se x = 001 e y = 10, então xy = 00110
• λw = wλ = w
• x(yz) = (xy)z. Assim, pode-se escrever sem parênteses: xyz
• wwwww = w5
• w0 = λ

17/50
Definição de prefixos, sufixos e subpalavras de
uma palavra

• x é prefixo de w se existe y tal que w = xy.


• y é sufixo de w se existe x tal que w = xy.
• z é subpalavra de w se existem x e y tais que w = xzy.
Exemplos:
• Prefixos de abc: λ, a, ab e abc.
• Sufixos de abc: λ, c, bc e abc.
• Subpalavra de abc: λ, a, b, c, ab, bc e abc.

18/50
Outras definições

O reverso de w = a1 a2 · · · an é w R = an an−1 · · · a1 .

Um palíndromo é uma palavra w tal que w=wR .

19/50
Concatenação de linguagens
A concatenação de L1 e L2 é L1 L2 = {xy | x ∈ L1 e y ∈ L2 }. Em
particular, ∅L = L∅ = ∅ e {λL} = L{λ} = L, para qualquer linguagem
L.

Exemplos:
Sejam L1 = {w ∈ {0, 1}∗ | |w|=5} e L2 = {0y | y ∈ {0, 1}∗
• L1 L1 = { ∈ {0, 1}∗ | |w|=10};
• L1 L2 = { ∈ {0, 1}∗ | o sexto símbolo de w é 0};
• L2 L1 = { ∈ {0, 1}∗ | w começa com 0 e |w| ≥ 6};
• L2 L2 = {0y | y ∈ {0, 1}∗ e y contém no mínimo um 0.
20/50
Fecho de Kleene

O Fecho de Kleene sobre uma linguagem L, denotado como L∗ é


definido como:
• λ = L∗ ;
• se x ∈ L∗ e y ∈ L, então xy ∈ L∗ .

Podemos então mostrar que:

L∗ = Ln = L0 ∪ L1 ∪ L2 ∪ · · · = {λ} ∪ L ∪ LL ∪ · · ·
S
n ∈N

21/50
Fecho positivo de Kleene
O O Fecho positivo de Kleene sobre uma linguagem L, denotado
como L+ é definido como:
• L+ = LL∗

Podemos então mostrar que:

L+ = Ln = L1 ∪ L2 ∪ · · · = {λ} ∪ L ∪ LL ∪ · · · .
S
n ≥1

Sendo, então:
L ∗ = L+ ∪ λ
22/50
Fecho de Kleene: Exemplos

• ∅∗ = {λ}
• ∅+ = ∅
• {λ}∗ = {λ}+ = {λ}
• {0}∗ = {0n | n ∈ N}
• {0}+ = {0n | n ≥ 1}
• {00}∗ = {02n | n ∈ N}
• {00}+ = {02n | n ≥ 1}
• {λ, 00, 11}∗ = {λ, 00, 11}+ = {λ} ∪ {00, 11}+

23/50
Conjunto de linguagens de um alfabeto

Seja o alfabeto: {0, 1}


• O conjunto das palavras que começam com 0
• O conjunto das palavras que contêm 00 ou 11
• O conjunto das palavras que terminam com 0 seguido de um
número ímpar de 1s consecutivos
• O conjunto das palavras que começam ou terminam com 0

24/50
Conjunto de linguagens de um alfabeto

Seja o afabeto: {0, 1}


• O conjunto das palavras de tamanho par que começam com 0
ou terminam com 0
• O conjunto das palavras com um prefixo de um ou mais 0s
seguido (imediatamente) de um sufixo de 1s de mesmo tamanho
• O conjunto das palavras formadas por concatenações de
palavras da forma 0n 1n para n ≥ 1.

25/50
GRAMÁTICA

26/50
Gramáticas: Formalismo recursivo para
definição de Linguagens
Gramática: formalismo que permite o uso de recursão,
especialmente projetado para a definição de linguagens.

• Terminais: o alfabeto da linguagem definida.


• Exemplo: Σ = {0, 1}.
• Variáveis (não terminais): o alfabeto de símbolos auxiliares.
• Exemplo: Γ = {A, B}.
• Regra: par ordenado (u, v), normalmente escrito na forma
u → v.
27/50
Exemplo de derivação

• Ex: 0AB → 10A (Regra)

• Derivação (geração) de 110A10A a partir de 0ABB0AB:

0ABB0AB ⇒ 10AB0AB
⇒ 110A0AB
⇒ 110A10A

28/50
Definição informal de gramática

• Uma gramática é constituída de uma variável de partida e um


conjunto de regras.
• Toda derivação deve iniciar pela variável de partida.
• Forma sentencial: palavra constituída de terminais e/ou
variáveis.
• Sentença: forma sentencial constituída de terminais apenas.
• Linguagem gerada: sentenças que podem ser derivadas.
• Notação: L(G) é a linguagem gerada pela gramática G.

29/50
Um exemplo de gramática
G é uma gramática constituída de:
• variáveis: P (variável de partida) e X
• terminais: 0 e 1
• regras:
1. 1. P → 0P
2. 2. P → 1X
3. 3. X → 1X
4. 4. X → λ
Exemplo de derivação:
• P ⇒ 0P (regra 1)
• ⇒ 01X (regra 2)
• ⇒ 01 (regra 4)
30/50
A linguagem gerada por G
A linguagem gerada por G com as seguintes regras:
1. P → 0P
2. P → 1X
3. X → 1X
4. X → λ
Uma derivação de sentença em G envolve:
• Aplicar n ≥ 0 vezes a regra 1, gerando 0n P
• Aplicar uma vez a regra 2, gerando 0n 1X
• Aplicar k ≥ 0 vezes a regra 3, gerando 0n 1k X
• Aplicar uma vez a regra 4, gerando 0n 1k
31/50
A linguagem gerada por G
A linguagem gerada por G com as seguintes regras:
1. P → 0P
2. P → 1X
3. X → 1X
4. X → λ
Uma derivação de sentença em G envolve:
• Aplicar n ≥ 0 vezes a regra 1, gerando 0n P
• Aplicar uma vez a regra 2, gerando 0n 1X
• Aplicar k ≥ 0 vezes a regra 3, gerando 0n 1k X
• Aplicar uma vez a regra 4, gerando 0n 1k
L(G) = {0}∗ {1}+
32/50
Definição formal de gramática

Uma gramática é uma quadrupla (V, Σ, R, P), onde:


a) V é um conjunto finito de elementos denominados variáveis
b) Σ é um alfabeto; V ∩ Σ = ∅
c) R ⊆ (V ∪ Σ)+ × (V ∪ Σ)∗ é um conjunto finito de pares
ordenados chamados regras
d) P ∈ V é uma variável conhecida como variável de partida

33/50
Um outro exemplo de gramática

H = ({P, B}, {a, b, c}, R, P) em que R consta das regras:


1. P → aPBc
2. P → abc
3. cB → Bc
4. bB → bb
L(H) = {an bn cn |n ≥ 1}

34/50
Múltiplas regras com o mesmo lado esquerdo
O conjunto
1. P → 0P
2. P → 1X
3. X → 1X
4. X → λ
pode ser reescrito como
1. 1, 2.P → 0P|1X
2. 3, 4.X → 1X|λ

35/50
Derivação em n passos

Definição A relação n ⇒ é definida recursivamente assim para uma


gramática G:
a) x0 ⇒ x para toda forma sentencial x de G;
b) se wn ⇒ xuy e u → v é regra de G, então wn+1 ⇒ xvy.

36/50
Derivação em vários passos

Derivação em zero ou mais passos:


• Definição: x ∗ ⇒ y sse existe n ≥ 0 tal que x n ⇒ y
Derivação em um ou mais passos:
• Definição: x+ ⇒ y sse existe n ≥ 1 tal que x n ⇒ y

37/50
A linguagem gerada por uma gramática

Definição
• Seja G = (V, Σ, R, P). L(G) = {w ∈ Σ∗ |P∗ ⇒ w}

38/50
Exemplo de esquema de derivação

I = ({X, B}, {a, b}, R, X), em que R consta das regras:


• 1, 2. P → aPb|Bb
• 3, 4. B → Bb|λ

39/50
Exemplo de esquema de derivação (cont.)

Esquema de derivação para an bn+1+k , n ≥ 0, k ≥ 0:

Pn ⇒ an Pbn (regra 1 n vezes, n ≥ 0)


⇒ an Bbn+1 (regra 2)
⇒ an bn+1+k (regra 3 k vezes, k ≥ 0)
⇒ an bn+1+k (regra 4)

40/50
Exemplo de esquema de derivação (cont.)

Esquema de derivação para an bn+1+k , n ≥ 0, k ≥ 0:

Pn ⇒ an Pbn (regra 1 n vezes, n ≥ 0)


⇒ an Bbn+1 (regra 2)
⇒ an bn+1+k (regra 3 k vezes, k ≥ 0)
⇒ an bn+1+k (regra 4)

Logo, {an bm |n < m} ⊆ L(I).

41/50
Outro exemplo de esquema de derivação

H:
• 1, 2. P → aPBc|abc
• 3. cB → Bc
• 4. bB → bb

42/50
Outro exemplo de esquema de derivação
Esquema de derivação para an bn cn , n ≥ 1:
Pk ⇒ ak P(Bc)k (regra 1 k vezes, k ≥ 0)
⇒ ak+1 bc(Bc)k (regra 2)
⇒ ak+1 bBcc(Bc)k−1 (regra 3 uma vez)
⇒ ak+1 bBBccc(Bc)k−2 (regra 3 duas vezes)
..
.
⇒ ak+1 bBk cck (regra 3 k vezes)
⇒ ak+1 bk+1 ck+1 (regra 4 k vezes)
43/50
Outro exemplo de esquema de derivação
Esquema de derivação para an bn cn , n ≥ 1:
Pk ⇒ ak P(Bc)k (regra 1 k vezes, k ≥ 0)
⇒ ak+1 bc(Bc)k (regra 2)
⇒ ak+1 bBcc(Bc)k−1 (regra 3 uma vez)
⇒ ak+1 bBBccc(Bc)k−2 (regra 3 duas vezes)
..
.
⇒ ak+1 bBk cck (regra 3 k vezes)
⇒ ak+1 bk+1 ck+1 (regra 4 k vezes)
44/50 Logo, {an bn cn |n ≥ 1} ⊆ L(H).
Equivalência de gramáticas

Definição: Duas gramáticas G e G ′ são ditas gramáticas


equivalentes quando L(G) = L(G ′ ).

45/50
Um exemplo de gramática mais “prático”
G = (V, Σ, R, E), em que:
• V = {E, T, N, D}
• Σ = {+, −, (, ), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
R contém as regras:
• E → E + T|E − T|T
• T → (E)|N
• N → DN|D
• D → 0|1|2|3|4|5|6|7|8|9

46/50
Recursão à esquerda: um ou mais Ts

As 3 primeiras regras geram somas e/ou subtrações de Ts:

E⇒E+T (regra E → E + T)
⇒E−T+T (regra E → E − T)
⇒E−T−T+T (regra E → E − T)
⇒T−T−T+T (regra E → T)
⇒ recursão à esquerda

47/50
Recursão à direita: um ou mais Ds

Sexta e sétima regras geram um ou mais Ds:

N ⇒ DN (regra N → DN)
⇒ DDN (regra N → DN)
⇒ DDDN (regra N → DN)
⇒ DDDD (regra N → D)
⇒ recursão à direita

48/50
Recursão indireta

A quarta regra diz que uma expressão entre “(” e “)” é um termo de
uma expressão:

E⇒E+T (regra E → E + T)
⇒T+T (regra E → T)
⇒ (E) + T (regra T → (E))
⇒ E aparece, recursivamente, entre “(” e “)”

49/50
Exercícios

Favor visitar o Moodle:


• https://www.minhaufop.ufop.br/minhaufop
• Primeira lista de exercícios
• Pontuaçao:

50/50

Você também pode gostar