Buscar

Teoria_aula2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Nome: Debora Chaia Stadler
1 - Conforme visto na aula de ontem, comente sobre os pontos que você acha mais importante em 
relação à pergunta: "Por que estudar teoria da computação?"
R: Para melhor compreensão dos procedimentos e algoritmos, tem uma representação clara de 
humanos x computador, além de entender a representação formal X computador.
2 - Pesquise quem foi Avram Noam Chomsky, e qual foi uma de suas maiores contribuições para 
área da computação.
R: Avram Noam Chomsky, analista político estadunidense que nasceu na Filadélfia (Estados 
Unidos), no dia sete de dezembro de 1928. Foi introduzido na liguística por seu pai, especializado 
em linguística histórica hebraica. Estudou na universidade da Pensilvânia, onde se tornou doutor 
(1955) com uma tese sobre a análise transformacional, elaborada a partir das teorias de Z. Harris, de 
quem foi discípulo. Assim, tornou-se professor do renomado MIT (Massachussetts Institute of 
Technology), a partir de 1961.
Ele desenvolveu a Hierarquia de Chomsky é a classificação de gramáticas formais descrita em 
1959 pelo linguista Noam Chomsky. Esta classificação possui 4 níveis, sendo que os dois últimos 
níveis são amplamente utilizados na descrição de linguagem de programação e na implementação 
de interpretadores e compiladores. A classificação das gramáticas começa pelo tipo 0, com maior 
nível de liberdade em suas regras, e aumentam as restrições até o tipo 3. Cada nível é um super 
conjunto do próximo. Logo, uma gramática de tipo n é conseqüentemente uma gramática de tipo n - 
1.
3 - Quais são as linguagens presentes na Hierarquia de Chomsky, bem como os automatos que as 
reconhecem?
Gramática com estrutura de frase - Também conhecida como Tipo 0, são aquelas às quais nenhuma 
limitação é imposta. O universo das linguagens que se podem definir através dos mecanismos 
gerativos definidos pela gramática corresponde exatamente ao conjunto das linguagens que esta 
classe de gramática é capaz de gerar.
Gramáticas sensíveis ao contexto - Também conhecida como Tipo 1. Se as regras de substituição 
forem sujeitas à restrição de que nenhuma substituição possa reduzir o comprimento da forma 
sentencial à qual a substituição é aplicada, cria-se uma classe chamada sensíveis ao contexto ou tipo 
1.
Gramáticas livres de contexto - Também conhecida como de Tipo 2, são aquelas em que é 
levantado o condicionamento das substituições impostas pelas regras definidas pelas produções. 
Este condicionamento é eliminado impondo às produções uma restrição adicional, que restringe as 
produções à forma geral:
onde e 
Forma Normal de Backus - Backus-Naur Form ou somente BNF, é uma outra forma de representar 
as produções de Gramáticas livres de contexto. Onde, é substituído por ::= e os não terminais 
por <"nome" >.
Ela é usada para definir gramáticas com o lado esquerdo de cada regra composto por um único 
símbolo não terminal.
Exemplo: 
<Y> ::= y1
<Y> ::= y2
 :
<Y> ::= yn
escreve-se: <Y> ::= y1| y2| ...| yn
Gramáticas regulares - Também conhecida como de Tipo 3, é uma restrição sobre a forma das 
produções, pode-se criar uma nova classe de gramáticas de grande importância no estudo dos 
compiladores por possuírem propriedades adequadas para a obtenção de reconhecedores simples. 
Que também podem ser denominada de Expressão regular.
Teoria de Autômatos: Linguagem formal e gramática formal 
Hierarquia Chomsky Gramática Linguagem Reconhecedor
Tipo-0 Estrutura de frase Recursivamente enumerável Máquina de Turing 
-- Estrutura de frase Recursiva Máquina de Turing
Tipo-1 Sensíveis ao contexto Sensíveis ao contexto Máquina de Turing 
com memória 
limitada 
Tipo-2 Livre de contexto Livre de contexto Autômato com pilha
Tipo-3 Regular Regular Autômato finito
4 - Tendo em vista os autômatos finitos determinísticos e não determinísticos, qual a principal 
diferença entre eles? Há diferença entre o poder computacional? Quais as aplicações e limitações?
R:
Os autômatos finitos constituem um modelo útil para muitos elementos importantes de hardware e 
software. Alguns exemplos:
• Software para projetar e verificar comportamento de circuitos digitais
• Analisador Léxico de um compilador típico (isto é, componente que divide o texto de 
entrada em unidades lógicas, como identificadores, palavras-chave, etc.)
• Software para examinar grandes corpos de texto, como páginas Web
• Software para verificar sistemas de todos os tipos que tem um número finito de estados 
distintos, como protocolos de comunicação ou segurança.
Estes elementos têm como características estarem a todo o momento em um determinado “estado” 
de um conjunto finito deles. Como o conjunto é finito a história
toda de execução não pode ser memorizada, assim o sistema deve ser projetado a fim de memorizar 
apenas o que é relevante. A vantagem de usar um número finito de estados é que é possível 
implementá-lo de uma forma simples em hardware como um circuito, ou em um software que possa 
tomar decisões examinando apenas um número limitado de dados ou a própria posição no código.
Exemplo de autômato finito: um interruptor que memoriza se está no estado “ligado” ou 
“desligado”, e permite que o usuário pressione um único botão cujo efeito 
será diferente de acordo com o estado em que o interruptor se encontra, ou seja, se ele
estiver desligado e for pressionado ele irá ligar, e vice-versa.
 Autômato Finito Determinístico é aquele em que, dado um estado e uma transição, leva a um 
único estado. Autômatos Finitos podem ser implementados por código direto, que é mais eficiente, 
no entanto menos geral, ou controlados por tabela, que é menos eficiente, só que mais geral, visto 
que o programa pode ser usado para qualquer autômato, apenas modificando os campos da tabela.
A linguagem de um AFD A = (Q,Σ,δ,q0,F), denotada por L(A) é definida por:
L(A) = {w | δ(q0,w) está em F}
 ou seja, dado um string w, se construirmos sua função de transição 
estendida δ e chegarmos a um estado que está em F (o conjunto de estados finais), então w está em 
A (é aceito pelo autômato A). Se L é L(A) para algum AFD A, dizemos que L é uma linguagem 
regular.
Autômato Finito não Determinístico é aquele em que, dado um estado e uma transição, pode levar 
a mais de um estado. m autômato finito “não-determinístico” (AFND, ou NFA do inglês) tem o 
poder de estar em vários estados ao mesmo tempo. Essa habilidade é expressa com freqüência como 
a capacidade de “adivinhar” algo sobre sua entrada. Por exemplo, quando o autômato é usado para 
procurar certas seqüências de caracteres (como por exemplo, palavras-chave) em um longo string de 
texto, é útil “adivinhar” que estamos no início e um desses strings e usar uma seqüência de estados 
apenas para verificar se o string aparece, caractere por caractere.
5 - Responda a pergunta 4, tendo em vista o autômato a pilha determinísticos e não determinísticos.
Um autômato à pilha é dito determinístico se, para cada q Î E, a Î V, b Î (P È {l}
), a aplicação de f 
oferece no máximo uma escolha. Para alguns f(q,a,b) pode não haver movimentos possíveis. 
Um autômato à pilha não determinístico aceita uma cadeia w se houver pelo menos uma 
seqüência correta de passos. Se w Ï L, então w não pode ser aceita, quaisquer que forem as escolhas 
feitas.
6 - Preencha a seguinte tabela com as informações apropriadas:
Tipo de 
Linguagem
Ex. da Linguagem Ex. de Produções da 
Grmática
Cadeias Aceitas
Regular a (ba)* S -> aA
A -> baA |(lambda)
a, aba, ababa,...
Livre de 
Contexto
S → SS 
S → (S) 
S → () 
S → SS → SSS → 
(S)SS → ((S))SS → 
((SS))S(S) 
→ ((()S))S(S) → ((()
()))S(S) → ((()()))()(S) 
→ ((()()))()(()) 
S, SS, ()....
Sensível ao 
Contexto : 
1.
 
2. 
3. 
4. 
5. 
6. 
7. 
8.A derivação para abab é:
 
 
 
 
 
 
 
 
abab.
Irrestrita L = {an b2n an / n ≥ 1}
é descrita a seguir.
S → aAbba
aAb → aabbbA | ab
bAb → bbA
bAa → Bbaa
A cadeia aaabbbbbbaaa pode 
ser derivada dessa gram ́
atica como segue
S
 aAbba⇒
 aabbBbbaa⇒
aaabbbbbbaaa
bB → Bb
aB → aA
 aaabbbbAbbaa⇒
 aaabbbbBbbaaa⇒
 aaaBbbbbbbaaa⇒
 aabbbAba⇒
 aabBbbbaa⇒
 aaabbbbbAbaa⇒
 aaabbbBbbbaaa⇒
 aaaAbbbbbbaaa⇒
 aabbbbAa⇒
 aaBbbbbaa⇒
 aaabbbbbbAaa⇒
 aaabbBbbbbaaa⇒
 aaabbbbbbaaa⇒
 aabbbBbaa⇒
 aaabbbAbbbaa⇒
 aaabbbbbBbaaa⇒
 aaabBbbbbbaaa⇒

Outros materiais