(Hopcroft, 2002) A teoria de autômatos é o estudo dos dispositivos abstratos de computação, ou "máquinas". Antes de existirem os computadores, na década de 1930, Alan Turing estudou uma máquina abstrata que tinha todas as características dos computadores atuais, pelo menos no que se refere ao quanto eles poderiam calcular. O objetivo de Turing era descrever com exatidão o limite entre o que uma máquina de computação podia fazer e aquilo que ela não podia fazer; suas conclusões se aplicam não apenas às suas máquinas de Turing abstratas, mas também às máquinas reais de hoje. Analise as seguintes afirmativas a respeito dos conceitos centrais da teoria de autômatos:
A análise permite concluir que:
a. nenhuma das afirmativas está correta.
b. apenas as afirmativas I e II estão corretas.
c. apenas as afirmativas I e III estão corretas.
d. apenas as afirmativas II e III estão corretas.
e. todas as afirmativas estão corretas.
(Menezes, 2000) Um prefixo (respectivamente, sufixo) de uma palavra é qualquer sequência de símbolos inicial (respectivamente, final) da palavra. Uma subpalavra de uma palavra é qualquer sequência de símbolos contígua da palavra. Analise as seguintes afirmativas sobre prefixos, sufixos e subpalavras de uma palavra:
A análise permite concluir que:
a. apenas a alternativa I está correta.
b. apenas a alternativa II está correta.
c. apenas a alternativa III está correta.
d. apenas as afirmativas I e II estão corretas.
e. apenas as afirmativas II e III estão corretas.
(Hopcroft, 2002) Um autômato finito determinístico (AFD) consiste em:
Desenvolva um autômato finito determinístico sobre o alfabeto Σ = {x, y, z} que reconheça a linguagem L = {w | w possui xzz ou zzz como prefixo, zzy ou zzz como subpalavra e zyy ou zzx como sufixo}.
(Ramos, 2009) Apesar do elevado interesse prático que recai sobre os autômatos finitos determinísticos, uma vez que eles servem como base para a construção de programas extremamente eficientes, do ponto de vista teórico há também um interesse muito grande pelos autômatos finitos não-determinísticos, devido à maior facilidade com que eles permitem a demonstração de certos teoremas. Do ponto de vista prático, os autômatos finitos não-determinísticos são, muitas vezes, mais intuitivos do que os correspondentes autômatos finitos determinísticos, o que os torna, geralmente, mais adequados para a análise e especificação de linguagens regulares. Considere o autômato finito não-determinístico apresentado a seguir:
M4 = ({a, b, c}, {q0, q1, q2}, δ, q0, {q1, q2})
Qual dos autômatos finitos determinísticos apresentados a seguir é equivalente ao autômato finito não-determinístico M4.
a.
M4a = ({a, b, c}, {q0, q1}, δ, q0, {q1})
b.
M4b = ({a, b, c}, {q0, q1, q2, q3}, δ, q0, {q2, q3})
c.
M4c = ({a, b, c}, {q0, q1, q2}, δ, q0, {q1})
d.
M4d = ({a, b, c}, {q0, q1, q2}, δ, q0, {q1, q2})
e.
M4e = ({a, b, c}, {q0, q1, q2}, δ, q0, {q1, q2})
(Rosa, 2010) Movimentos vazios são transições em autômatos finitos não determinísticos (AFN) que permitem a mudança de estado sem consumir símbolo da cadeia terminal. Uma das vantagens dos movimentos vazios nos estudos das linguagens formais é o fato de facilitar algumas construções relacionadas com os autômatos. Vale lembrar que, assim como os autômatos não determinísticos, a existência de movimentos vazios não aumenta o poder computacional no reconhecimento de linguagens.
Desenvolva um autômato finito com movimentos vazios sobre o alfabeto Σ = {a, b, c} que reconheça a linguagem L = {w | w possui [abc como prefixo e bba ou cab como subpalavra] ou [cba como prefixo e acc ou bab como subpalavra] e bac ou bcc como sufixo}.
(Ramos, 2009) Como alternativa para a representação dos conjuntos regulares, visando obter maior concisão e facilidade de manipulação, Kleene desenvolveu, na década de 1950, a notação das expressões regulares. Da mesma forma como ocorre para os conjuntos regulares, as expressões regulares sobre um alfabeto Σ podem também ser definidas recursivamente como segue:
Se x e y são expressões regulares sobre Σ que denotam, respectivamente, os conjunto regulares X e Y, então:
Também são expressões regulares e denotam, respectivamente, os conjunto regulares X, X ∪ Y, XY e X*.
Construa uma expressão regular sobre o alfabeto Σ = {a, b}, tal que a respectiva linguagem gerada contenha todas aquelas cadeias w ∈ Σ* que apresentem a seguinte característica:
ER = ((a + ε)(ba + a)*) + ((b + ε)(ab + b)*)
(Menezes, 2000) O Algoritmo de Thompson é um algoritmo utilizado para transformar uma expressão regular em um autômato finito com movimentos vazios, ou seja, pode ser considerado como um compilador de expressão regular para autômato finito com movimentos vazios. Do ponto de vista mais teórico, o Algoritmo de Thompson é uma parte da prova de que ambos aceitam exatamente as mesmas palavras, ou seja, as linguagens regulares. Qual das expressões regulares apresentas a seguir gera o autômato finito com movimentos vazios M7.
M7 = ({a, b, c}, {q0, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10, q11, q12, q13, q14, q15, q16, q17, q18, q19, q20, q21, q22, q23, q24, q25, q26, q27, q28, q29}, δ, q0, {q29})
a. ER = (ab* + ac*)*b
b. ER = a(b* + ac*)*b
c. ER = a(b* + ac)*b
d. ER = a(b* + c*)*b
e. ER = ((ab)* + (ac)*)*b
(Rosa, 2010) Um autômato mínimo de uma linguagem regular L é um autômato finito determinístico (AFD) M = (Q, Σ, δ, q0, F) tal que L = T(M) e que, para qualquer outro AFD M’ = (Q’, Σ’, δ’, q0’, F’) tal que L = T(M’), tem-se que #Q’ ≥ #Q. Para um dado conjunto A, #A denota o cardinal (número de elementos) de A. Dado um AFD M, deve-se denotar por T(M) o conjunto de cadeias aceitas por M, o conjunto de w ∈ Σ* que envia M de q0 para algum estado em F. Considere o autômato finito determinístico apresentado a seguir:
M8 = ({a, b}, {q0, q1, q2, q3, q4, q5}, δ, q0, {q3, q5})
Qual dos autômatos finitos determinísticos apresentados a seguir é o autômato mínimo do autômato finito determinístico M8.
a.
M8a = ({a, b}, {q0, q1, q2, q3}, δ, q0, {q3})
b.
M8b = ({a, b}, {q0, q1, q2}, δ, q0, {q2})
c.
M8c = ({a, b}, {q0, q1}, δ, q0, {q1})
d.
M8d = ({a, b}, {q0, q1, q2}, δ, q0, {q2})
e.
M8e = ({a, b}, {q0, q1, q2, q3, q4}, δ, q0, {q2, q4})