informática teórica engenharia da computação
DESCRIPTION
Informática Teórica Engenharia da Computação. 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? - PowerPoint PPT PresentationTRANSCRIPT
Informática Teórica Engenharia da Computação
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.
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.
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.
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.
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.
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.
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.
Teoria da ComputaçãoNosso curso
Três áreas centrais: autômatos, computabilidade e complexidade.
Quais são as habilidades e limitações fundamentais dos computadores?
O que faz alguns problemas computacionalmente difíceis e outros fáceis?
Como separar os problemas que possuem solução computacional daqueles que não possuem?
COMPLEXIDADE
COMPUTABILIDADE
Teoria da ComputaçãoNosso curso
As teorias da complexidade e computabilidade requerem uma definição precisa de um computador.
A teoria dos autômatos introduz definições de modelos matemáticos de computação.
Daí começamos o nosso curso estudando esses modelos.
Teoria da ComputaçãoOutros modelos
Só para sabermos:
Outros modelos de computação também foram propostos.
-cálculo (Alonzo Church) Funções recursivas (Kurt Godel, Jacques
Herbrand) Lógica combinatória (Moses Schonfinkel, Haskell
B. Curry)
Teoria da ComputaçãoContexto do que vamos começar a estudar
No curso iremos estudar os seguintes modelos de computação:
1. Autômatos finitos 2. Autômatos com pilha3. Máquinas de Turing
1 e 2 possuem mémória finita ao passo que 3 possui memória ilimitada.
FERRAMENTAS MATEMÁTICAS
CONJUNTOS
Operações Produto cartesiano Conjunto das partes
SEQUÊCIAS E UPLAS
FERRAMENTAS MATEMÁTICAS
FUNÇÕES E RELAÇÕES Domínio, contra-domínio e imagem Argumentos e aridade Função n-ária, unária, binária, etc. Predicado ou propriedade Relação n-ária, binária, etc. Propriedades de uma relação Relações de equivalência
GRAFOS
FERRAMENTAS MATEMÁTICAS
TEOREMAS
Métodos de Prova Provas diretas Provas por contradição Provas por contrapositiva Provas por indução matemática
FERRAMENTAS MATEMÁTICAS
CADEIAS E LINGUAGENS
Alfabeto Conjunto finito não vazio de símbolos. Notação: ou
Cadeias sobre um alfabeto É uma sequência finita de símbolos daquele
alfabeto. * é o conjunto de todas as cadeias sobre o
alfabeto
FERRAMENTAS MATEMÁTICAS
CADEIAS E LINGUAGENS
Tamanho de uma cadeia w: |w|.
Cadeia vazia (de tamanho zero):
Reverso de w: wR.
FERRAMENTAS MATEMÁTICAS
CADEIAS E LINGUAGENS
Operação de concatenação de cadeias. Essa opereção pega duas cadeias x e y e forma
uma nova colocando y após x. A cadeia xy é chamada de concatenação de x e y. Em geral xy é diferente de yx
FERRAMENTAS MATEMÁTICAS
CADEIAS E LINGUAGENS
Concatenação de cadeias: algumas propriedades Associativa: (xy)z = x(yz) A cadeia é a identidade: x = x = x |xy| = |x| + |y|
FERRAMENTAS MATEMÁTICAS
CADEIAS E LINGUAGENS
Concatenação de x com si própria: xK. Exemplo: (ab)3 = ababab (ab)0 = Definição recursiva para xk: x0 = xn+1 = xnx
Linguagem: conjunto de cadeias
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.
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.
Autômatos Finitos: exemploControlador para uma porta automática de entrada
Estado Nenhum Frente Atrás AmbosFechado Fechado Aberto Fechado 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á.
Autômatos Finitos
Controladores para diversos aparelhos domésticos, como lavadora de pratos e termostatos eletrônicos, assim como peças de relógios digitais e calculadoras, são exemplos adicionais de computadores com memória limitada.
O projeto requer que se tenha em mente a metodologia e terminologia de autômatos finitos.
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.
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.
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á.
Autômatos Finitos
Um AF M2 que recebe cadeias de bits e aceita aquelas que possuem 10 como subcadeia
Autômatos Finitos
q0
q1
q3
0
1
0
1
0,1
M2
Autômatos Finitos
M3
q0
q1
1
0
1
0
L(M3)={w | w termina em 1}
Autômatos Finitos
M4
0
1
0
L(M4)={w | w é a cadeia vazia ou termina em 0}
q0 q1
1
Autômatos Finitos
M5 q0
q2q1
q3
a b
b ba a
b
L(M5)={w | w começa e termina no mesmo símbolo}
q4
a
ba
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.
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.