folha 12 - Departamento de Ciência de Computadores

Propaganda
Departamento de Ciência de Computadores
FCUP
Modelos de Computação CC1004
2014/2015
Folha Prática 12
Lema da Repetição para Linguagens Regulares: Seja L uma linguagem regular de alfabeto Σ. Então existe
um inteiro positivo n tal que, qualquer que seja z ∈ L com |z| ≥ n, existem u, v, w ∈ Σ? tais que z = uvw,
|uv| ≤ n, v 6= ε e, para todo i ≥ 0, tem-se uv i w ∈ L.
É conhecido que se pode tomar n como o número de estados de um qualquer autómato finito que aceite L.
Lema da Repetição para Linguagens Independentes de Contexto: Seja L uma linguagem independente
de contexto de alfabeto Σ. Então existe um inteiro positivo n tal que, qualquer que seja z ∈ L com |z| ≥ n,
existem u, v, w, x, y ∈ Σ? tais que z = uvwxy, |vwx| ≤ n, vx 6= ε e, para todo i ≥ 0, tem-se uv i wxi y ∈ L.
É conhecido que se pode tomar n = 2k , onde k é o número de variáveis de uma qualquer gramática na forma normal de Chomsky (estendida) que gere L.
As condições indicadas nos lemas terão de ser satisfeitas por todas as palavras “z ∈ L com |z| ≥ n”, que existirem. As palavras “z ∈ L com |z| < n”, se existirem, são irrelevantes.
Observação: Se uma dada linguagem L não satisfizer a condição indicada no lema da repetição para linguagens regulares, podemos concluir que não é regular (e, portanto, não é LIC). Se uma dada linguagem L
não satisfizer a condição indicada no lema da repetição para LICs, podemos concluir que não é LIC. Importa
salientar que existem linguagens que satisfazem as condições indicadas e que não são nem regulares nem LICs.
Não satisfazer a condição indicada quer dizer, respetivamente, que:
• Para todo o inteiro positivo n, existe z ∈ L com |z| ≥ n e tal que, para todas as decomposições de z na
forma z = uvw, com |uv| ≤ n e v 6= ε, tem-se uv i w ∈
/ L, para algum i ≥ 0.
• Para todo o inteiro positivo n, existe z ∈ L com |z| ≥ n e tal que, para todas as decomposições de z na
forma z = uvwxy, com |vwx| ≤ n e vx 6= ε, tem-se uv i wxi y ∈
/ L, para algum i ≥ 0.
Exercı́cios
1. Sejam L = {2m w2w | w ∈ {0, 1}? , m ≥ 1} e M = {x2y | x, y ∈ {0, 1}? } linguagens sobre Σ = {0, 1, 2}
e seja R = L ∪ L((0 + 1)? 2? (0 + 1)? ) também de alfabeto Σ.
a) Justifique que M é regular e mostre que satisfaz a condição do lema da repetição para linguagens regulares
e a condição do lema da repetição para LICs, para n = 2, e que não se poderia tomar n = 1.
b) Por aplicação do Lema de Repetição para linguagens regulares, prove que L não é regular.
c) Por aplicação do Lema de Repetição para LICs, prove que L não é LIC.
Sugestão: usar z = 200n 11n 200n 11n
d) Mostre que R satisfaz a condição do Lema da Repetição para linguagens regulares, para n = 1.
e) Por aplicação do teorema de Myhill-Nerode, prove que R não é regular.
f) Mostre que R satisfaz a condição do Lema da Repetição para linguagens independentes de contexto, para
n = 1 (embora seja conhecido que R não é independente de contexto).
[*] Para concluir que R não é LIC, pode usar redução ao absurdo, considerando 1c) e o resultado enunciado no exercı́cio 12a).
g) [*] Defina uma máquina de Turing que reconheça L. A máquina não deve repor o estado inicial da fita
depois da análise da palavra dada. Indique o significado dos estados.
1
2. Seja Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ), (, /, +, ∗, −} e sejam G0 , G1 , G2 , G3 , G4 e G5 as gramáticas:
• G0 = ({K, N, D}, Σ, P0 , K), com P0 dado por
K → DN | D | 0
→ DN | 0N | D | 0
N
D → 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
• G1 = ({N, D}, Σ, P1 , N ), com P1 dado por
N
→ DN | D
D → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
• G2 = ({E, N, D}, Σ, P1 ∪ P2 , E), sendo P1 o conjunto de regras de G1 e P2 constituı́do por
E → E+E | E∗E | E/E | E−E
E → (E) | −E | N
• G3 = ({E, N, D, F }, Σ, P1 ∪ P2 , E), sendo P1 o conjunto de regras de G1 e P3 constituı́do por
E → E+F | E∗F | E/F | E−F | F
F
→ −F | (E) | N
• G4 = ({E, N, D, T, F }, Σ, P1 ∪ P4 , E), sendo P1 o conjunto de regras de G1 e P4 constituı́do por
E → T +E | T −E | T
T
→ F ∗T | F/T | F
F
→ −F | (E) | N
• G5 = ({E, N, D, T, F }, Σ, P1 ∪ P5 , E), sendo P1 o conjunto de regras de G1 e P5 constituı́do por
E → E+T | E−T | T
T
→ T ∗F | T /F | F
F
→ −F | (E) | N
a) Descreva L(G0 ) e L(G1 ), interpretando as sequências como representações de inteiros em decimal.
b) Justifique que a palavra (−5)−7+3∗2 pertence à linguagem gerada por G2 e dê exemplo de pelo menos
quatro árvores de derivação distintas para essa palavra.
c) Determine todas as árvores de derivação das palavras −7+3∗2 e 3∗2−7 em G2 , G3 , G4 e G5 . Determine
todas as árvores de derivação 3∗2−7∗5/8 em G3 , G4 e G5 .
d) Compare as gramáticas atendendo à interpretação usual das expressões aritméticas (por exemplo, na linguagem C ou Java, considerando a precedência e associatividade dos operadores) e à interpretação que se
abstrairia das árvores obtidas (se servissem para guiar o cálculo do valor da expressão que lhes deu origem).
3. Para cada uma das linguagens seguintes, de alfabeto Σ = {0, 1, 2}, verifique se satisfaz ou não a condição
imposta pelo Lema da Repetição para Linguagens Regulares. Na justificação deve mostrar diretamente se a
condição se verifica ou não. Nos casos em que é satisfeita, diga, justificando, se a linguagem é regular.
a) L1 = {y2y | y ∈ {0, 1}? e |y| ≥ 1}
b) L2 = {000(10)2n | n > 0}
2
c) L3 = {11, 102, ε}
d) L4 = {22m w2wR | w ∈ {0, 1}? e m ≥ 0}
e) L5 = {x22y | x, y ∈ {0, 1}? {1} e |x| > |y|}
f) L6 = {(22)m y2x | x, y ∈ {0, 1}? , m ≥ 1 e |x| = |y|}
g) L7 = {xzy | x, y ∈ {0}? , z ∈ {1, 2}? \ {ε} e |x| − |y| é ı́mpar}
h) L8 = {x | x ∈ {0, 1, 2}? e x tem igual número de 0’s e 1’s}
i) L9 = {x | x ∈ {0, 1, 2}? e x tem igual número de 0’s, 1’s e 2’s}
j) L10 = {x | x ∈ {0, 1, 2}? e x não tem igual número de 0’s e 1’s}
k) L11 = {0n | n primo}
2
l) L12 = {an | n ≥ 0, a ∈ {0, 1, 2}} ∪ {23 , 16 }
4. Na continuação do exercı́cio anterior, identifique as linguagens que são independentes de contexto. Justifique
a resposta apresentando GICs que as gerem ou autómatos de pilha que as reconheçam (ou, se apropriado,
autómatos finitos que as reconheçam ou expressões regulares que as descrevam). Para as restantes, prove que
não satisfazem a condição do lema da repetição para LICs.
5. [*] Para cada linguagem indicada no exercı́cio 3., com exceção de L11 e L12 , defina uma máquina de Turing
que a reconheça. Para simplificar a definição, a máquina não reporá o estado inicial da fita depois da análise da
palavra dada. Indique o significado dos estados.
Para revisão de alguns tópicos. . .
6. Considere a gramática G = ({S}, {0, 1}, {S → 10, S → 0S11}, S). Recorde que quaisquer que sejam
y e y ⇒G x, onde
k ≥ 2 e x ∈ {0, 1, S}? tem-se S ⇒kG x se e só se existe y ∈ {0, 1, S}? tal que S ⇒k−1
G
⇒G é a relação de derivação num passo em G.
a) Complete a afirmação seguinte, e demonstre-a: “quaisquer que sejam n ∈ N \ {0} e w ∈ {0, 1, S}? tem-se
S ⇒nG w se e só se w é da forma . . . . . . ”.
b) Diga, justificando, qual é a linguagem gerada pela gramática G.
c) Partindo da descrição indicada em b), determine um autómato de pilha que reconheça L por pilha vazia.
d) [*] Por aplicação de um algoritmo de conversão a G, construa um autómato de pilha que aceite L(G) por
pilha vazia e, a partir desse autómato, determine um outro equivalente com aceitação por estados finais.
7. Sejam L1 e L2 linguagens de alfabeto Σ = {0, 1} tais que L1 é descrita pela expressão regular (1 + 001)?
e L2 = {x | x ∈ {0, 1}? e x tem dois ou mais 1’s}.
a) Justifique que a descrição de L1 como sendo o conjunto das palavras em {0, 1}? que não têm mais do que
dois 0’s consecutivos está errada. Corrija essa descrição de forma a ter uma descrição informal correta.
b) Apresente o diagrama de transição de um AFD que reconheça L1 ∩ L2 e explique sucintamente o objetivo
(e, preferencialmente, também a necessidade) de cada mudança de estado desse autómato.
c) Descreva L1 ∩ L2 por uma expressão regular.
d) Dê exemplo de GICs G1 , G2 e G3 tais que L1 = L(G1 ), L2 = L(G2 ) e L(G3 ) = L1 ∪ L2 . Justifique a
importância da observação: “não se esqueça de indicar qual é o sı́mbolo inicial de cada gramática”.
e) Diga, justificando, se alguma das gramáticas que definiu em d) é ambı́gua e, caso seja, apresente uma outra
não ambı́gua equivalente.
3
8. Seja G = ({A, B, C}, {a, b, c}, P, A) uma gramática independente de contexto, com P dado por:
A → aaA | bbA | B
B → cbB | bbbB | C
C → Ca | ε
a) Diga porque é que G não é linear à esquerda nem é à direita e indique uma GIC equivalente linear à direita.
b) Justifique que existe um autómato finito que aceita L(G) e indique um tal autómato.
c) Justifique que L(G) pode ser aceite por um autómato de pilha determinı́stico, e apresente um tal autómato.
d) Descreva L(G) por uma expressão regular.
e) [*] Seja L = L(G)∩{x | x ∈ {a, b, c}? e x tem igual número de a’s e b’s}. Diga se L é regular (e justifique
a resposta), e apresente um autómato de pilha que reconhece L por pilha vazia.
9. Considere as afirmações seguintes sobre linguagens de alfabeto Σ = {a, b} e averigue a sua a veracidade
ou falsidade, justificando.
a) Existe L tal que L não é independente de contexto e Σ? \ L é regular.
b) Existe L tal que L é independente de contexto e L não é regular.
c) Existe L tal que L é regular e LL ∩ (Σ? \ L) não é aceite por um autómato finito determinı́stico.
d) Existe L regular tal que o AFD minı́mo que reconhece L tem exatamente quatro estados finais.
e) A linguagem {ai bj (ab)k | i, j, k ≥ 0, i = j} ∩ {ai bj (ab)k | i, j, k ≥ 0, k = j} pode ser aceite por um
autómato de pilha.
10. Justifique a veracidade ou falsidade de cada uma das afirmações seguintes, onde L1 e L2 são quaisquer
linguagens independentes de contexto sobre o mesmo alfabeto Σ, com |Σ| ≥ 2.
a) L1 L2 é independente de contexto, quaisquer que sejam L1 e L2 .
b) Existem linguagens L1 e L2 tais que L1 ∩ L2 não é independente de contexto.
c) L1 ∩ L2 não é independente de contexto, quaisquer que sejam L1 e L2 .
d) L1 é independente de contexto, qualquer que seja L1 .
e) L?1 ∪ L2 é independente de contexto, quaisquer que sejam L1 e L2 .
11. Justifique a validade ou falsidade de cada uma das seguintes afirmações:
a) A linguagem {x | x ∈ {0, 1}? tem mais 0’s que 1’s} é independente de contexto.
b) O complementar de uma linguagem regular é uma linguagem independente de contexto.
c) A linguagem {(ab)n (cd)n cn | n ≥ 0} de alfabeto {a, b, c, d} não é independente de contexto.
d) Se L é uma LIC que não é regular, o seu complementar Σ? \ L nunca é independente de contexto.
e) Se L e o seu complementar Σ? \ L são LICs, então ambas são linguagens regulares.
f) Qualquer linguagem regular pode ser reconhecida por um autómato de pilha com apenas dois estados.
12. Demonstrar as afirmações seguintes, usando o facto de a classe de linguagens independentes de contexto
ser a classe de linguagens reconhecidas por autómatos de pilha.
a) [**] A interseção de uma linguagem independente de contexto com uma linguagem regular é independente
de contexto. Sugestão: Tentar seguir uma ideia análoga à da construção do autómato (finito) produto.
b) [**] Qualquer linguagem que seja reconhecida por um autómato de pilha determinı́stico é não ambı́gua.
Sugestão: Pode ser útil conhecer o algoritmo de conversão de autómatos de pilha para GICs.
4
13. Considere a gramática G = ({S, T, N, E}, Σ, P, S) com Σ = { 1, -, ), (, =, + } e P dado por:
S → E=E | E=S
T → (E) | N
E → T | E+T | E-T
N → 1 | 1N
a) Apresente uma árvore de derivação para a palavra 11+(1+1)=(1−1)−1 de L(G) e ainda duas derivações
distintas que correspondam a essa árvore. Diga, justificando, porque é que tal não implica que G seja ambı́gua.
b) Prove que a linguagem L(G) não é regular.
c) Determine uma gramática G0 que seja equivalente a G e esteja na forma normal de Chomsky. Por aplicação
do algoritmo CYK, mostre que 1=1+1 pertence a L(G0 ) e que 1=1+ não pertence a L(G0 ). Note que a
segunda palavra é igual à primeira mas não tem o 1 final.
d) [*] Seja M a linguagem das palavras de L(G) que são da forma x=y=z, com x ∈ {1, +}? , y ∈ {1}? ,
z ∈ {1, +}? , e em que o número de 1’s em y é igual ao número de 1’s em x e também em z. Defina uma
máquina de Turing que reconheça M , sem repor o estado inicial da fita. Indique o significado dos estados.
e) [**] Prove que a gramática G1 = ({T, N, E}, Σ, P1 , E) não é ambı́gua, sendo P1 constituı́do pelas
produções de G para E, T e N . Conclua que G não é ambı́gua.
Sugestão: Por indução (forte) sobre o número de operadores e/ou parentesis nas palavras, justifique que tem uma única árvore de derivação para cada palavra.
14. Seja L a linguagem aceite pelo autómato de pilha A = ({q}, { , , f, g, x, (, )}, {S, E, C, D}, δ, q, S, {}) por
pilha vazia, com δ(q, α, Z) = ∅, para todos os ternos (q, α, Z), excepto os seguintes:
δ(q, f, S) = {(q, CSESD)}
δ(q, g, S) = {(q, CSD)}
δ(q, x, S) = {(q, ε)}
δ(q, (, C) = {(q, ε)}
δ(q, , , E) = {(q, ε)}
δ(q, ), D) = {(q, ε)}
Para ser mais legı́vel, na descrição do alfabeto e das transições usou-se , para representar a vı́rgula.
a) [*] Por aplicação de um algoritmo de conversão, determine G tal que L(G) = L.
b) Usando `A e as relações associadas (`?A e `nA ), mostre que f(f(g(x), x), g(x)) ∈ L e que f(g(x, x)) ∈
/ L.
15. Seja L = {wcwR | w ∈ {a, b}? , c ∈ {a, b, ε}. Recorde que L é aceite por pilha vazia pelo autómato de
pilha A = ({q0 , q1 }, {a, b}, {A, B, Z}, δ, q0 , Z, {}), com δ dada por:
δ(q0 , ε, Z) = {(q1 , ε)}
δ(q0 , a, Z) = {(q0 , A), (q1 , ε)}
δ(q0 , a, A) = {(q0 , AA), (q1 , ε), (q1 , A)}
δ(q0 , a, B) = {(q0 , AB), (q1 , B)}
δ(q1 , a, A) = δ(q1 , b, B) = {(q1 , ε)}
δ(q0 , b, Z) = {(q0 , B), (q1 , ε)}
δ(q0 , b, B) = {(q0 , BB), (q1 , ε), (q1 , B)}
δ(q0 , b, A) = {(q0 , BA), (q1 , A)}
sendo δ(q, α, X) = ∅, para todos os restantes ternos (q, α, X) ∈ {q0 , q1 } × {a, b, ε} × {A, B, Z}.
a) A partir da descrição de L, determine uma gramática independente de contexto que gere L.
b) [*] A partir do autómato A, construa uma GIC que gere L. Simplifique-a, eliminando os sı́mbolos
desnecessários (i.e., que não entram em derivações de palavras de L).
16. Usando o facto de a classe das LICs ser a classe de linguagens que podem ser reconhecidas por autómatos
de pilha, determine uma GIC não ambı́gua para cada uma das linguagens seguintes de alfabeto {a, b}:
a) [*] a linguagem das palavras que têm igual número de a’s e b’s.
b) [**] a linguagem das palavras cujo número de a’s é superior ao dobro dos b’s.
17. [***] Defina uma máquina de Turing que dada uma sequência x0y na fita, com x, y ∈ {1}? {1} coloca na
fita o quociente e resto da divisão inteira de |x| por |y| (representados também em unário, e separados por 0).
Se algum dos valores for zero, represente-o por Z. Usando a ideia dessa máquina, defina máquinas de Turing
que reconheçam as linguagens L11 e L12 do exercı́cio 3..
5
Download