22
Informática Teórica Engenharia da Computação

Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Embed Size (px)

Citation preview

Page 1: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Informática Teórica

Engenharia da Computação

Page 2: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Teoria é importante para a prática

Ela provê ferramentas conceituais que os praticantes usam em engenharia da computação.

Projetando uma nova linguagem de programação para uma aplicacão especializada?

O que você aprender sobre gramáticas neste curso irá bem a calhar.

Page 3: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Teoria é importante para a prática

Lidando com busca por cadeias e casamento de padrões?

Lembre-se de autômatos finitos e expressões regulares.

Page 4: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Teoria é importante para a prática

Lidando com busca por cadeias e casamento de padrões?

Lembre-se de autômatos finitos e expressões regulares.

Page 5: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Teoria é importante para a prática

Confrontado com um problema que parece requerer mais tempo de computador do que você pode suportar?

Pense no que você aprendeu sobre NP -completude.

Page 6: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Teoria é importante para a prática

Os melhores projetos e aplicações de computadores são concebidos com elegância em mente.

Um curso teórico pode elevar seu sentido estético e ajudá-lo a construir sistemas mais bonitos.

Page 7: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Teoria é importante para a prática

Finalmente, teoria é bom para você porque estudá-la expande sua mente.

Conhecimento técnico específico, embora útil hoje, fica desatualizado em apenas uns poucos anos.

Por outro lado as habilidades de pensar, exprimir-se claramente e precisamente, para resolver problemas, e saber quando você não resolveu um problema.

Essas habilidades têm valor duradouro. Estudar teoria treina você nessas áreas.

Page 8: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Teoria dos Autômatos

Lida com as definições e propriedades de modelos matemáticos de computação.

Um modelo, chamado autômato finito, é usado em processamento de texto, compiladores, e projeto de hardware.

Um outro modelo, chamado gramática livre-do-contexto, é usado em linguagens de programação e inteligência artificial.

Page 9: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Cadeias e Linguagens

Alfabeto : conjunto de símbolos.

Cadeias sobre um alfabeto.

Tamanho de uma cadeia w: |w|.

Cadeia de tamanho vazio: Reverso de w: wR.

Concatenação.

Concatenação de x com si própria: xK.

Linguagem: é um conjunto de cadeias.

Page 10: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Autômatos Finitos

É um dos modelos computacionais que

estudaremos. Porém com uma quantidade extremamente

limitada de memória. O que um computador pode fazer com uma

memória tão pequena? Na verdade, interagimos com tais computadores o

tempo todo, pois eles residem no coração de vários dispositivos eletromecânicos.

Page 11: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Autômatos Finitos

O controlador para uma porta automática é um exemplo de tal dispositivo.

As lavadoras de louça/roupa, termômetros eletrônicos, relógios digitais, calculadoras e máquinas de venda automática....

Os autômatos também são chamados de máquinas de estados finitos.

Page 12: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Autômatos Finitos: exemploControlador para uma porta automática

Estado Nenhum Frente Atrás Ambos

Fechado Fechado Aberto Aberto Fechado

Aberto Fechado Aberto Aberto Aberto

Sinal de entrada

Esse controlador é um computador com apenas 1 bit de memória, capaz de registrar em quais dos dois estados o controlador está.

Page 13: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Autômatos Finitos

Ao começar a descrever a teoria matemática de autômatos finitos, fazemos isso no nível abstrato, sem referência a qualquer aplicação específica.�

A seguir vamos ver alguns exemplos usando um diagrama de estados e identificar os conceitos de: estado inicial, estado de aceitação ou final, transição.

Page 14: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Autômatos Finitos

Uma máquina M1 que recebe cadeias de bits como entrada e aceita somente aquelas que começam com um ou mais zeros seguidos de um ou mais 1’s apenas.

Page 15: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Autômatos Finitos

O autômato recebe os símbolos da cadeia de entrada um por um da esquerda para a direita.

Após ler cada símbolo, M1 move de um estado para outro ao longo da transição que tem aquele símbolo como seu rótulo.

Quando ele lê o último símbolo, M1 produz sua saída. A saída é aceite se M1 está agora no estado de

aceitação e rejeite se ele não está.

Page 16: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Autômatos Finitos

Um AF que recebe cadeias de bits e aceita aquelas que possuem 10 como subcadeia

Page 17: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Autômatos Finitos

q0

q1

q3

0

1

0

1

0,1

Page 18: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Autômatos Finitos

M2

q0

q1

1

0

1

0

L(M2)={w | w termina em 1}

Page 19: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Autômatos Finitos

M3

0

1

0

L(M3)={w | w é a cadeia vazia ou termina em 0}

q0 q1

1

Page 20: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Autômatos Finitos

M4 q0

q2q1

q3

a b

b ba a

b

L(M4)={w | w começa e termina no mesmo símbolo}

q4

a

ba

Page 21: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Autômatos Finitos

q0

q2q1

q3

a b

b

b

a

a

a,bOs estados q1 e q2 servem para “memorizar’’ o símbolo

anterior.Esse AF aceita as cadeias sobre o alfabeto {a,b} que possuem aa ou bb como subcadeias.

Page 22: Informática Teórica Engenharia da Computação. Teoria é importante para a prática Ela provê ferramentas conceituais que os praticantes usam em engenharia

Autômatos Finitos

q0

q1

q3

0

1

1

0

1,0

Esse AF aceita qualquer cadeia binárias que termina com o símbolo 1 ou que termina com um número par de 0s seguindo o último 1.