1 / 10

Computabilidade e Linguagens Formais

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. História.

vanig
Download Presentation

Computabilidade e Linguagens Formais

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. 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

  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 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 Start on off Press

  5. Reconhecedor • 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” h e n t Start th the then t

  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 “4200-465 Porto” mas falha “5505-032 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, 000111, …} • 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

More Related