A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Computabilidade e Linguagens Formais

Apresentações semelhantes


Apresentação em tema: "Computabilidade e Linguagens Formais"— Transcrição da apresentação:

1 Computabilidade e Linguagens Formais
Introdução à teoria dos autómatos Notas baseadas em John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. “Introduction to automata theory, languages and computation”. 2nd ed, Addison-Wesley, 2001. Gabriel David / Cristina Ribeiro

2 TC2- Lógica Proposicional
História Teoria dos autómatos: estudo dos dispositivos computacionais abstractos [máquinas] Alan Turing (1930’s) Estudou os limites de uma máquina abstracta equivalente às máquinas actuais Antes de haver computadores! 1940’s, 1950’s Estudos em autómatos finitos para modelar o cérebro Noam Chomsky (1950’s) Gramáticas formais - relacionadas com autómatos abstractos; úteis em compilação S. Cook (1969) Teoria da complexidade – o que é possível ou não computar Cristina Ribeiro

3 Interesse da teoria dos autómatos
Útil na modelação de hardware e software Projecto e teste de circuitos digitais Análise lexical em compilação Processamento de texto, pesquisa na Web Máquinas de estados, protocolos de comunicação, criptografia Autómato finito Sistema que em cada momento está num de um nº finito de estados Estado memoriza a porção relevante da história do sistema Sendo finito tem que esquecer o que não for relevante Pode ser implementado com recursos fixos

4 Interruptor on/off Autómato finito mais simples – modela interruptor
Press Start off on Press Autómato finito mais simples – modela interruptor Dois estados [círculos]: on e off Uma só entrada [etiquetas nos arcos]: Press Representa influência externa no sistema [transição de estado] Carregar no botão tem um efeito dependente do estado Estado inicial indicado por uma seta com a etiqueta Start Pode existir um (ou mais) estados finais ou de aceitação, indicados por círculo de linha dupla Chegar a um desses estados significa que a sequência de entradas é boa

5 Reconhecedor Start t h e n t th the then Se a entrada for a cadeia t-h-e-n o autómato evolui do estado inicial para o final Acumula a história das entradas O seu objectivo é reconhecer a palavra “then”

6 Representações estruturais
Gramáticas Processar dados com estrutura recursiva [expressões] Exemplo de regra gramatical: E  E + E Uma expressão pode ser constituída por duas expressões ligadas por “+” Usadas em analisadores [parsers] de compiladores Expressões regulares Descreve a estrutura de cadeias de caracteres Exemplo: [1-9][0-9][0-9][0-9][-][0-9][0-9][0-9][ ][A-Z][a-z]* Descreve “ Porto” mas falha “ Vila Real” Correcção: [1-9][0-9][0-9][0-9][-][0-9][0-9][0-9]([ ][A-Z][a-z]*)*

7 Conceitos centrais Alfabeto é um conjunto finito e não vazio de símbolos  = {0, 1} , alfabeto binário  = {a, b, …, z} , conjunto das minúsculas Conjunto dos caracteres ASCII Cadeia (ou palavra) é uma sequência finita de símbolos escolhidos de um alfabeto 01101 é uma cadeia do alfabeto  = {0, 1} Cadeia vazia () tem zero ocorrências de símbolos Comprimento de uma cadeia é o número de ocorrências de símbolos: |01101| = 5, || = 0 Potência de um alfabeto k é o conjunto de cadeias de comprimento k, formadas por símbolos do alfabeto  (produto cartesiano) 0 = {} Se  = {0, 1} então 1 = {0, 1} , 2 = {00, 01, 10, 11}, 3 = {000, 001, …, 111} Distinção entre  = {0, 1} conjunto de símbolos e 1 = {0, 1} conjunto de cadeias

8 Linguagem O conjunto de todas as cadeias sobre um alfabeto  é denotada por * * = 0  1  2  … + = 1  2  … * = 0  + Linguagem L sobre um alfabeto  é um subconjunto de * (L  *) Linguagem das cadeias com n 0’s seguidos de n 1’s {, 01, 0011, , …} Conjunto dos números binários que são primos {10, 11, 101, 111, 1011, …} Linguagem vazia Linguagem só com a cadeia vazia {}

9 Problema Problema é a questão de decidir se, dada uma cadeia, ela é membro de uma determinada linguagem Dados w  * e L  *, w  L ? É comum descrever uma linguagem através de um construtor de conjuntos {w | w consiste de um número igual de 0’s e 1’s} Conjunto dos w tal que w… {w | w é um programa em C sintacticamente correcto} Problema de testar a primalidade w  Lp ? em que w é uma cadeia com a representação binária de um número e Lp é a linguagem que contém todas as cadeias que são representações binárias de números primos

10 Linguagem ou problema? Problema em sentido comum
Pedido para calcular ou transformar uma entrada (ex: compilador) Não uma questão de decisão (sim/não) Para efeitos de estudos de complexidade, definir um problema em termos de uma linguagem é adequado É tão difícil resolver a questão da decisão como a do problema Se for difícil decidir se uma cadeia pertence à linguagem LX das cadeias válidas na linguagem de programação X então não é mais fácil traduzir programas na linguagem X para código objecto Se fosse, executava-se o tradutor e decidia-se da pertença a LX conforme o sucesso do tradutor em produzir código objecto. O problema da decisão ficava fácil, o que contradiz a suposição (prova por contradição) Exemplo de redução de um problema a outro Linguagens e problemas são a mesma coisa Cadeias enquanto tal – linguagem; objectos representados – problema


Carregar ppt "Computabilidade e Linguagens Formais"

Apresentações semelhantes


Anúncios Google