340 likes | 441 Views
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?
E N D
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áticasneste 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 podeelevar 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 separarosproblemasquepossuemsoluçãocomputacionaldaquelesquenãopossuem? COMPLEXIDADE COMPUTABILIDADE
Teoria da ComputaçãoNosso curso • As teoriasdacomplexidade e computabilidaderequeremumadefiniçãoprecisa de um computador. • A teoria dos autômatosintroduzdefinições de modelosmatemáticos de computação. • Daícomeçamos o nossocursoestudandoessesmodelos.
Teoria da ComputaçãoOutros modelos Sóparasabermos: • Outrosmodelos de computaçãotambémforampropostos. • -cálculo (Alonzo Church) • Funçõesrecursivas (Kurt Godel, Jacques Herbrand) • Lógicacombinatória (Moses Schonfinkel, Haskell B. Curry)
Teoria da ComputaçãoContexto do que vamos começar a estudar No cursoiremosestudarosseguintesmodelos de computação: • Autômatosfinitos • Autômatos com pilha • Máquinas de Turing • 1 e 2 possuemmémóriafinitaaopassoque 3 possuimemóriailimitada.
FERRAMENTAS MATEMÁTICAS • CONJUNTOS • Operações • Produtocartesiano • 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. • Predicadooupropriedade • Relação n-ária, binária, etc. • Propriedades de umarelação • Relações de equivalência • GRAFOS
FERRAMENTAS MATEMÁTICAS • TEOREMAS • Métodos de Prova • Provasdiretas • Provasporcontradição • Provasporcontrapositiva • Provasporinduçãomatemá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. • Essaopereçãopegaduascadeiasx e y e forma uma nova colocandoyapósx. • A cadeiaxy é 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çãorecursivaparaxk: • 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 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ênciaa 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, M1produz 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 0 M2 1 q1 1 0 q3 0,1
Autômatos Finitos M3 q0 0 1 0 q1 1 L(M3)={w | w termina em 1}
Autômatos Finitos 1 M4 1 q0 q1 0 0 L(M4)={w | w é a cadeia vazia ou termina em 0}
Autômatos Finitos b a q0 M5 a b q2 q1 a b b a q3 q4 b a L(M5)={w | w começa e termina no mesmo símbolo}
Autômatos Finitos b a q0 b q2 q1 a a b q3 a,b Os 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 0 1 q1 1 0 1,0 q3 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.