Exercícios de Exame

Limpar todos os resolvidos?

Autómatos finitos e expressões regulares

Expressão de um DFA mínimo e equivalênciaAutoavaliação

Exame de Época Normal, 2021/22

Um ε-NFA foi convertido num DFA e depois minimizado; a expressão regular do DFA mínimo obtida é (01)∗(01)^*. Pode concluir-se que a expressão regular obtida pelo método de eliminação de estados para o mesmo autómato é equivalente a (01)∗(01)^*? Justifique.

Solução

Sim. A expressão regular que representa o DFA mínimo é (01)∗(01)^*. Como o DFA mínimo se obtém por técnicas provadas que transformam qualquer ε-NFA num DFA equivalente e depois num DFA mínimo, e a expressão regular foi obtida por outra técnica provada (eliminação de estados), as duas expressões são equivalentes, isto é, representam a mesma linguagem.

Dois procedimentos correctos aplicados à mesma linguagem não podem dar resultados diferentes: ambos preservam a linguagem reconhecida. Assim, se o DFA mínimo gera (01)∗(01)^*, a expressão por eliminação de estados tem de gerar a mesma linguagem.

Confere a tua resposta:

  • A resposta é sim (as duas expressões são equivalentes).
  • A justificação recorre ao facto de ambos os métodos (eliminação de estados e minimização) serem técnicas provadas que produzem autómatos/expressões para a mesma linguagem.
Voltar à explicação
Prova por indução de um subconjunto de (01)*Autoavaliação

Exame de Época Normal, 2021/22

Prove por indução que todas as palavras representadas pela expressão regular 0101(01)∗0101(01)^*, isto é, da forma 0101(01)n0101(01)^n com n≥0n\geq 0, pertencem à linguagem (01)∗(01)^*.

Solução

Hipótese: SnS_n: as palavras dadas por 0101(01)n0101(01)^n, com n≥0n\geq0, pertencem a (01)∗(01)^*. Caso de base: a palavra mais curta é 0101=(01)20101=(01)^2, que pertence a (01)∗(01)^*. Passo indutivo: 0101(01)n+1=0101(01)n(01)0101(01)^{n+1}=0101(01)^n(01); por hipótese, 0101(01)n∈(01)∗0101(01)^n\in(01)^*, e como (01)∗(01)^* é fechada para a concatenação, a concatenação com (01)(01) continua em (01)∗(01)^*. Logo todas as palavras 0101(01)n0101(01)^n pertencem a (01)∗(01)^*.

Como 0101=(01)20101=(01)^2, cada palavra 0101(01)n0101(01)^n é (01)n+2(01)^{n+2}, claramente uma palavra de (01)∗(01)^*. A prova por indução formaliza este facto: o caso de base cobre n=0n=0 e o passo mostra que acrescentar um bloco (01)(01) preserva a pertença.

Confere a tua resposta:

  • A hipótese de indução é SnS_n: as palavras 0101(01)n0101(01)^n, com n≥0n\geq0, pertencem a (01)∗(01)^*.
  • O caso de base trata a palavra mais curta, 0101=(01)20101=(01)^2.
  • No passo indutivo usa-se 0101(01)n+1=0101(01)n (01)0101(01)^{n+1}=0101(01)^n\,(01) e a hipótese para concluir que a palavra seguinte também pertence a (01)∗(01)^*.
Voltar à explicação
Equivalência de duas expressões regulares de um autómato generalizadoAutoavaliação

Exame de Época de Recurso, 2021/22

Nas aulas sugeriu-se a expressão regular (R+SU∗T)∗SU∗(R+SU^*T)^*SU^* para converter um autómato finito generalizado numa expressão regular. Alguém propõe antes R∗SU∗(TR∗SU∗)∗R^*SU^*(TR^*SU^*)^*, com RR, SS, UU e TT expressões regulares. Acha que esta expressão é equivalente a (R+SU∗T)∗SU∗(R+SU^*T)^*SU^*? Se sim, descreva como o poderia provar.

Solução

Sim, são equivalentes. Pode provar-se convertendo R∗SU∗(TR∗SU∗)∗R^*SU^*(TR^*SU^*)^* num DFA (expressão →\to ε-NFA →\to DFA) e comparando-o com o DFA do autómato generalizado: se os estados iniciais forem equivalentes (indistinguíveis pela tabela de estados distinguíveis), as duas expressões são equivalentes. Alternativamente, constrói-se o produto cartesiano dos dois DFA e verifica-se que ambas as subtrações dão a linguagem vazia, ou prova-se por indução que L(R∗SU∗(TR∗SU∗)∗)L(R^*SU^*(TR^*SU^*)^*) é a linguagem do autómato.

Ambas as expressões descrevem percursos no mesmo autómato generalizado: ciclos no estado inicial (RR), um avanço SS seguido de ciclos U∗U^*, e repetições do bloco TR∗SU∗TR^*SU^*. A equivalência prova-se pelos métodos padrão de equivalência de autómatos, que são completos.

Confere a tua resposta:

  • A resposta indica um método de prova válido (converter ambas para DFA e testar equivalência, ou provar por indução).
  • A justificação explica que dois autómatos são equivalentes se os estados iniciais forem indistinguíveis (ou se ambas as subtrações produzirem a linguagem vazia).
Voltar à explicação

Gramáticas livres de contexto e autómatos de pilha

Linguagem de uma gramática com dois blocosAutoavaliação

Exame de Época Normal, 2021/22

Considere a gramática livre de contexto GG com produções S→aSc∣BS\to aSc\mid B e B→bBc∣εB\to bBc\mid\varepsilon. Defina formalmente o conjunto das palavras da linguagem de GG.

Solução

L(G)={akblcm∣m=k+l, k,l,m≥0}L(G)=\{a^k b^l c^m\mid m=k+l,\ k,l,m\geq0\}.

A produção de SS gera kk letras aa à esquerda e kk letras cc à direita, com um bloco BB no meio. Por sua vez, BB gera ll letras bb à esquerda e ll letras cc à direita. No total, o número de cc é m=k+lm=k+l, pelo que a linguagem é exatamente {akblcm∣m=k+l}\{a^k b^l c^m\mid m=k+l\}.

Confere a tua resposta:

  • A resposta apresenta L(G)={akblcm∣m=k+l, k,l,m≥0}L(G)=\{a^k b^l c^m\mid m=k+l,\ k,l,m\geq0\}.
  • A justificação separa o papel de SS (acrescenta um aa à esquerda e um cc à direita) do de BB (acrescenta um bb à esquerda e um cc à direita, ou termina com ε\varepsilon).
Voltar à explicação
Uma gramática é ambígua?Autoavaliação

Exame de Época Normal, 2021/22

Considere ainda a gramática GG com produções S→aSc∣BS\to aSc\mid B e B→bBc∣εB\to bBc\mid\varepsilon. A gramática é ambígua? Justifique a sua resposta.

Solução

A gramática não é ambígua, pois não é possível derivar duas árvores sintáticas diferentes para a mesma palavra de L(G)L(G).

A primeira produção do símbolo inicial SS deriva recursivamente um aa à esquerda e um cc à direita, e deriva BB para o substring do meio; em BB, a primeira produção deriva um bb à esquerda e um cc à direita, ou termina com ε\varepsilon. Como só há uma maneira de acrescentar o par a,ca,c e depois o par b,cb,c, não há mais do que uma árvore sintática por palavra.

Confere a tua resposta:

  • A resposta diz que a gramática não é ambígua.
  • A justificação mostra que não existe nenhuma palavra de L(G)L(G) com duas árvores sintáticas distintas.
Voltar à explicação
Gramática para a^k b^l a^m com m=k+lAutoavaliação

Exame de Época de Recurso, 2021/22

Considere a linguagem L1={akblam∣m=k+l ∧ k,l,m≥0}L_1=\{a^k b^l a^m\mid m=k+l\ \wedge\ k,l,m\geq0\}. Defina uma gramática livre de contexto para L1L_1.

Solução

Uma gramática para L1L_1 é S→aSa∣BS\to aSa\mid B, B→bBa∣εB\to bBa\mid\varepsilon.

A regra S→aSaS\to aSa acrescenta um aa no início e um aa no fim (contribuindo kk de cada lado), e B→bBaB\to bBa acrescenta um bb no início e um aa no fim (contribuindo ll bb e ll aa finais). No total, o número de aa finais é m=k+lm=k+l, como se pretende.

Confere a tua resposta:

  • A gramática apresentada tem produções equivalentes a S→aSa∣BS\to aSa\mid B e B→bBa∣εB\to bBa\mid\varepsilon.
  • A justificação relaciona cada aa inicial com um aa final e cada bb com um aa final, garantindo m=k+lm=k+l.
Voltar à explicação
Prova por indução de que uma gramática gera L2Autoavaliação

Exame de Época de Recurso, 2021/22

Considere a linguagem L2={ancmdmbn∣n,m≥0}L_2=\{a^n c^m d^m b^n\mid n,m\geq0\} e a gramática G2G_2 (sendo SS o símbolo inicial) com produções S→aSb∣TS\to aSb\mid T e T→cTd∣εT\to cTd\mid\varepsilon. Prove por indução que as palavras de L2L_2 são reconhecidas pela gramática G2G_2.

Solução

Prova por indução no tamanho de ww, para todo w∈L2w\in L_2. Caso de base: ∣w∣=0|w|=0, logo w=εw=\varepsilon, e S⇒T⇒εS\Rightarrow T\Rightarrow\varepsilon. Passo indutivo: seja w∈L2w\in L_2 com derivação em G2G_2 e ∣w∣=n|w|=n; a palavra seguinte vv, de tamanho n+2n+2, pode formar-se de duas maneiras: (i) vv só com cc e dd (ou w=εw=\varepsilon), e v=cwdv=cwd, pois S⇒T⇒cTd⇒∗cwdS\Rightarrow T\Rightarrow cTd\Rightarrow^* cwd; (ii) v=awbv=awb, pois S⇒aSb⇒∗awbS\Rightarrow aSb\Rightarrow^* awb. Assim, as palavras de L2L_2 são reconhecidas por G2G_2.

Cada palavra de L2L_2 obtém-se a partir de ε\varepsilon aplicando repetidamente um par exterior a…ba\ldots b (regra de SS) ou um par interior c…dc\ldots d (regra de TT). A indução cobre exatamente estas duas possibilidades de crescimento.

Confere a tua resposta:

  • A prova faz indução no comprimento de ww, com caso de base w=εw=\varepsilon (S⇒T⇒εS\Rightarrow T\Rightarrow\varepsilon).
  • O passo indutivo considera as duas formas de aumentar a palavra: v=cwdv=cwd (via T→cTdT\to cTd) e v=awbv=awb (via S→aSbS\to aSb ).
  • A conclusão afirma que todas as palavras de L2L_2 têm derivação em G2G_2.
Voltar à explicação

Máquinas de Turing

Máquina de Turing para a^3m b c^2nAutoavaliação

Exame de Época de Recurso, 2021/22

Pretende-se implementar uma máquina de Turing (MT) que aceite a linguagem L3={a3mbc2n∣m,n≥0}L_3=\{a^{3m}bc^{2n}\mid m,n\geq0\}. Por exemplo, aaabaaab e aaabccaaabcc são aceites; aaabcaaabc é rejeitado. Descreva uma possível MT para L3L_3, apresentando a tabela de transições.

Solução

Uma possível MT é M=({s0,s1,s2,s3,s4,s5,s6,sf},{a,b,c},{a,b,c,B},δ,s0,B,{sf})M=(\{s_0,s_1,s_2,s_3,s_4,s_5,s_6,s_f\},\{a,b,c\},\{a,b,c,B\},\delta,s_0,B,\{s_f\}), com δ\delta dada pela tabela: s0s_0: em a→(s1,B,R)a\to(s_1,B,R), em b→(s4,B,R)b\to(s_4,B,R); s1s_1: em a→(s2,B,R)a\to(s_2,B,R); s2s_2: em a→(s3,B,R)a\to(s_3,B,R); s3s_3: em a→(s1,B,R)a\to(s_1,B,R), em b→(s4,B,R)b\to(s_4,B,R); s4s_4: em c→(s5,B,R)c\to(s_5,B,R), em B→(sf,B,R)B\to(s_f,B,R); s5s_5: em c→(s6,B,R)c\to(s_6,B,R); s6s_6: em c→(s5,B,R)c\to(s_5,B,R), em B→(sf,B,L)B\to(s_f,B,L); sfs_f: sem transições.

Os estados s0,s1,s2,s3s_0,s_1,s_2,s_3 varrem os aa em ciclo de três (s0→s1→s2→s3→s1s_0\to s_1\to s_2\to s_3\to s_1), garantindo que o número de aa é múltiplo de 3; o bb leva a s4s_4. Depois, s4,s5,s6s_4,s_5,s_6 varrem os cc em ciclo de dois (s4→s5→s6→s5s_4\to s_5\to s_6\to s_5), garantindo que o número de cc é par. Se a fita chegar ao branco nesse padrão, a máquina aceita em sfs_f; caso contrário (como aaabcaaabc, com um único cc) não há transição e rejeita.

Confere a tua resposta:

  • A MT proposta tem estados distintos para contar os aa (múltiplo de 3) e os cc (múltiplo de 2).
  • A tabela de transições cobre as leituras de aa, bb, cc e do branco BB, com o estado final sfs_f.
  • A justificação mostra que aaabaaab e aaabccaaabcc são aceites e aaabcaaabc é rejeitado.
Voltar à explicação
Traço de computação para a entrada aaabAutoavaliação

Exame de Época de Recurso, 2021/22

Usando a máquina de Turing MM da questão anterior (cuja tabela de transições foi dada), indique os primeiros 6 passos do traço de computação quando a entrada é aaabaaab.

Solução

s0aaab⊢s1aab⊢s2ab⊢1s3b⊢s4B⊢sfBs_0aaab\vdash s_1aab\vdash s_2ab\vdash 1s_3b\vdash s_4B\vdash s_fB.

Aplicando a tabela: s0s_0 com aa escreve BB e vai para s1s_1 (s1aabs_1aab); s1s_1 com a→s2a\to s_2 (s2abs_2ab); s2s_2 com a→s3a\to s_3 (1s3b1s_3b); s3s_3 com b→(s4,B,R)b\to(s_4,B,R) (s4Bs_4B); s4s_4 com B→(sf,B,R)B\to(s_f,B,R) (sfBs_fB). A máquina aceita, pois atinge o estado final.

Confere a tua resposta:

  • O traço começa em s0aaabs_0aaab.
  • O traço apresenta as configurações intermédias até sfBs_fB.
  • O número de passos indicado é 5 (ou 6 incluindo a configuração final).
Voltar à explicação
Modificar a MT para a^2m b c^2nAutoavaliação

Exame de Época de Recurso, 2021/22

Reutilizando a MT da questão anterior com o menor número possível de alterações, descreva uma possível MT que aceite a linguagem L4={a2mbc2n∣m,n≥0}L_4=\{a^{2m}bc^{2n}\mid m,n\geq0\}.

Solução

Altera-se (s1,a)(s_1,a) para (s3,B,R)(s_3,B,R) e remove-se o estado s2s_2. Assim, os aa são varridos em ciclo de dois (s0→s1→s3→s1s_0\to s_1\to s_3\to s_1), o que corresponde a a2ma^{2m}.

Na MT original, o ciclo s0→s1→s2→s3→s1s_0\to s_1\to s_2\to s_3\to s_1 conta os aa de três em três. Para passar a contar de dois em dois, basta que s1s_1 volte diretamente a s3s_3, eliminando s2s_2; o resto da máquina (o bb e os cc pares) permanece inalterado.

Confere a tua resposta:

  • A resposta altera a transição (s1,a)(s_1,a) para (s3,B,R)(s_3,B,R).
  • A resposta remove o estado s2s_2.
  • A justificação explica que o ciclo de aa passa a ser de dois em vez de três.
Voltar à explicação

Afirmações sobre linguagens

Subtração de uma linguagem regular por uma não regularAutoavaliação

Exame de Época Normal, 2021/22

Indique, justificando sucintamente (com um par de frases ou um contraexemplo), se a seguinte afirmação é Verdadeira (V) ou Falsa (F): a linguagem obtida pela subtração de uma linguagem regular (LR) por uma linguagem não regular (LNR) que inclua palavras da LR é sempre uma LNR.

Solução

Falsa. Contraexemplo: se a LR for uma linguagem finita, a subtração resulta noutra linguagem finita, e toda a linguagem finita é regular. Outro contraexemplo: com L1=ab+(0+1)∗L_1=ab^+(0+1)^* (regular) e L2={cndn+1ab∣n≥0}L_2=\{c^nd^{n+1}ab\mid n\geq0\} (não regular), tem-se L1−L2=(0+1)∗L_1-L_2=(0+1)^*, que é regular.

A subtração não preserva a não-regularidade. Se a LR tem um número finito de palavras em comum com a LNR, o resultado pode ser finito (logo regular), e mesmo que haja sobreposição infinita o resultado pode continuar regular.

Confere a tua resposta:

  • A resposta classifica a afirmação como Falsa.
  • A justificação apresenta um contraexemplo (por exemplo, LR finita, ou L1=ab+(0+1)∗L_1=ab^+(0+1)^* e L2={cndn+1ab}L_2=\{c^nd^{n+1}ab\}, com L1−L2=(0+1)∗L_1-L_2=(0+1)^*).
Voltar à explicação
Duas derivações diferentes implicam gramática ambígua?Autoavaliação

Exame de Época Normal, 2021/22

Indique, justificando sucintamente, se a seguinte afirmação é Verdadeira (V) ou Falsa (F): dada uma gramática livre de contexto GG, se for possível definir duas derivações diferentes para a mesma palavra, podemos dizer que GG é ambígua.

Solução

Falsa. Para uma gramática ser ambígua, as duas derivações diferentes têm de ser ambas à esquerda ou ambas à direita. Numa gramática não ambígua podem existir duas derivações diferentes, uma à esquerda e outra à direita, que conduzem à mesma árvore sintática.

A ambiguidade mede a existência de duas árvores sintáticas distintas, e duas árvores distintas equivalem a duas derivações à esquerda diferentes (ou, equivalentemente, duas à direita). Duas derivações genéricas diferentes não bastam.

Confere a tua resposta:

  • A resposta classifica a afirmação como Falsa.
  • A justificação explica que, para a gramática ser ambígua, as duas derivações têm de ser ambas à esquerda (ou ambas à direita), não bastando serem diferentes.
Voltar à explicação
Interseção decidível implica linguagens decidíveis?Autoavaliação

Exame de Época Normal, 2021/22

Indique, justificando sucintamente, se a seguinte afirmação é Verdadeira (V) ou Falsa (F): se L1∩L2L_1\cap L_2 é decidível (recursiva), então L1L_1 e L2L_2 são ambas decidíveis.

Solução

Falsa. L1L_1 e/ou L2L_2 podem ser linguagens recursivamente enumeráveis (não decidíveis) cuja interseção é decidível; por exemplo, se a interseção for o conjunto vazio, que é uma linguagem decidível.

A decidibilidade não é hereditária para os operandos de uma interseção. O conjunto vazio é decidível, pelo que duas linguagens não decidíveis podem ter interseção vazia e, ainda assim, a interseção ser decidível.

Confere a tua resposta:

  • A resposta classifica a afirmação como Falsa.
  • A justificação dá um contraexemplo: L1L_1 e/ou L2L_2 podem ser apenas recursivamente enumeráveis e a interseção ser vazia (decidível).
Voltar à explicação
A linguagem w^(2^n) é regular?Autoavaliação

Exame de Época de Recurso, 2021/22

Indique, justificando sucintamente, se a seguinte afirmação é Verdadeira (V) ou Falsa (F): a linguagem L={w2n∣w∈{0,1}∗ ∧ n≥0}L=\{w^{2^n}\mid w\in\{0,1\}^*\ \wedge\ n\geq0\} é uma linguagem regular (LR).

Solução

Verdadeira. Como ww representa qualquer palavra sobre {0,1}\{0,1\} e 2n2^n pode ser 1 (quando n=0n=0), LL é a linguagem de todas as palavras sobre {0,1}\{0,1\}, que se representa pela expressão regular (0+1)∗(0+1)^*, sendo assim uma LR.

O expoente 2n2^n percorre 1, 2, 4, 8, ..., incluindo o valor 1. Para n=0n=0, w20=w1=ww^{2^0}=w^1=w, com ww arbitrário em {0,1}∗\{0,1\}^*. Logo L={0,1}∗L=\{0,1\}^*, que é regular.

Confere a tua resposta:

  • A resposta classifica a afirmação como Verdadeira.
  • A justificação nota que 2n2^n pode ser 1 (para n=0n=0), pelo que LL contém todas as palavras de {0,1}∗\{0,1\}^*, sendo representada por (0+1)∗(0+1)^*.
Voltar à explicação
Interseção de duas CFL é sempre uma CFL?Autoavaliação

Exame de Época de Recurso, 2021/22

Indique, justificando sucintamente, se a seguinte afirmação é Verdadeira (V) ou Falsa (F): a interseção de duas linguagens, cada uma representada por uma gramática livre de contexto (GLC), resulta sempre numa linguagem que pode ser representada por uma GLC.

Solução

Falsa. Se as linguagens são represented por GLC, são ambas livres de contexto. A interseção de duas CFL não é uma propriedade de fecho das CFL. Exemplo: L1={anbncm∣m,n≥0}L_1=\{a^nb^nc^m\mid m,n\geq0\} e L2={anbmcm∣m,n≥0}L_2=\{a^nb^mc^m\mid m,n\geq0\}; então L1∩L2={anbncn∣n≥0}L_1\cap L_2=\{a^nb^nc^n\mid n\geq0\}, que não é uma CFL e, portanto, não pode ser representada por uma GLC.

As CFL são fechadas para a unión, a concatenação e a estrela, mas não para a interseção nem para o complemento. O exemplo clássico anbncna^nb^nc^n mostra que a interseção de duas CFL pode cair fora da classe.

Confere a tua resposta:

  • A resposta classifica a afirmação como Falsa.
  • A justificação usa o contraexemplo L1={anbncm}L_1=\{a^nb^nc^m\} e L2={anbmcm}L_2=\{a^nb^mc^m\}, cuja interseção {anbncn}\{a^nb^nc^n\} não é livre de contexto.
Voltar à explicação
L* decidível implica L decidível?Autoavaliação

Exame de Época de Recurso, 2021/22

Indique, justificando sucintamente, se a seguinte afirmação é Verdadeira (V) ou Falsa (F): se L∗L^* é decidível (linguagem recursiva), então LL é decidível.

Solução

Falsa. Contraexemplo: seja L1L_1 uma linguagem não decidível sobre {0,1}\{0,1\} e L2={0,1}∪L1L_2=\{0,1\}\cup L_1. L2L_2 continua não decidível, mas L2∗={0,1}∗L_2^*=\{0,1\}^*, que é decidível. Logo L∗L^* decidível não implica LL decidível.

A operação estrela pode "absorver" a parte não decidível: se LL já contém todos os símbolos do alfabeto, L∗L^* é todo o Σ∗\Sigma^*, que é decidível, independentemente de LL ser ou não decidível.

Confere a tua resposta:

  • A resposta classifica a afirmação como Falsa.
  • A justificação apresenta um contraexemplo: L2={0,1}∪L1L_2=\{0,1\}\cup L_1, com L1L_1 não decidível, tem L2∗={0,1}∗L_2^*=\{0,1\}^* decidível mas L2L_2 não decidível.
Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.