Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 3. Autômatos Finitos



Documentos relacionados
Teoria da Computação

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos

Alfabeto, Cadeias, Operações e Linguagens

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Linguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 4. Autômatos Finitos

Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior.

Linguagens Regulares. Prof. Daniel Oliveira

Aula 3: Autômatos Finitos

Teoria da Computação Aula 02 Introdução

Lista de exercícios 1

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens Formais e Autômatos

Aula 3: Autômatos Finitos

COMPILADORES. Revisão Linguagens formais Parte 01. Geovane Griesang

BCC242. Auômato Finito Determinístico

Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.

Linguagens Formais - Preliminares

1 INTRODUÇÃO E CONCEITOS BÁSICOS

IBM1088 Linguagens Formais e Teoria da

Teoria da Computação. Unidade 1 Conceitos Básicos. Referência Teoria da Computação (Divério, 2000)

LFA. Aula 04. Sintaxe e Semântica. Conceitos Básicos Alfabeto Palavra Linguagem

Apostila 01 Fundamentação da Teoria da Computação e Linguagens Formais

Conceitos Básicos. Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem

Linguagens Formais e Autômatos 02/2016. LFA Aula 01 24/10/2016. Celso Olivete Júnior.

Introdução Definição Conceitos Básicos de Linguagem

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

Sistemas de Estados Finitos AF Determinísticos. (H&U, 1979) e (H;M;U, 2001)

Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Curso de Ciências de Computação

Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07

Definições Exemplos de gramáticas

Histórico e motivação

Definições Hierarquia de Chomsky Exemplos de gramáticas. Gramáticas. Objetivo de ensinar o inglês pelo computador e conseguir um tradutor de línguas

a n Sistemas de Estados Finitos AF Determinísticos

Problema A Codificação Símbolos Dado um inteiro n, n é N representação de inteiros 0,1,...,b - 1 numa base b Dado um grafo G, G é conexo?

a n Sistemas de Estados Finitos AF Determinísticos

Autômatos Finitos Determinís3cos (AFD)

Expressões Regulares e Gramáticas Regulares

Fundamentos da Teoria da Computação

Aula 7: Autômatos com Pilha

Autômatos finitos não-determinísticos

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios

Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação

SCC Capítulo 1 Linguagens Regulares e Autômatos Finitos

Como construir um compilador utilizando ferramentas Java

Linguagens Formais e Problemas de Decisão

Autómatos Finitos Determinísticos (AFD)

Fundamentos da Teoria da Computação

Prof. Adriano Maranhão COMPILADORES

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Apostila 02. Objetivos: Estudar os autômatos finitos Estudar as expressões regulares Estudar as gramáticas regulares Estudar as linguagens regulares

Prof. Dr. Marcos Castilho. Departamento de Informática/UFPR. 27 de Fevereiro de 2018

Conceitos Básicos. Vocabulário Cadeias Linguagens Problema

Modelos de Computação

LINGUAGENS FORMAIS E AUTÔMATOS. Prova 2-10/06/ Prof. Marcus Ramos

SCC 205 Teoria da Computação e Linguagens Formais

LFA Aula 05. AFND: com e sem movimentos 05/12/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.

INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos

Compiladores - Análise Léxica

Linguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD)

LINGUAGENS FORMAIS Definições. Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam

Linguagens livres de contexto e autômatos de pilha

Aula 9: Máquinas de Turing

LINGUAGENS FORMAIS E AUTÔMATOS

a n Sistemas de Estados Finitos AF Determinísticos (H&U, 1979) e (H;M;U, 2001)

Linguagens Formais e Autômatos P. Blauth Menezes

INE5317 Linguagens Formais e Compiladores. AULA 4: Gramáticas

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Folha 2 Autómatos e respectivas linguagens

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Capítulo 1: Alfabetos, cadeias, linguagens

Compiladores - Análise Léxica

Lema do Bombeamento Operações Fechadas sobre LR s Aplicações

Linguagens Formais e Autômatos 02/2016. LFA Aula 04 16/11/2016. Celso Olivete Júnior.

Expressões e Gramáticas Regulares e Autómatos Finitos

Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.

Teoria das Linguagens. Linguagens Formais e Autómatos (Linguagens)

Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9.

Linguagem (formal) de alfabeto Σ

AFNs, Operações Regulares e Expressões Regulares

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 5. Aplicação Prática de Autômatos Finitos

1 introdução. capítulo. O que é uma solução computável? Quais são os limites do que pode ser computado? Existem problemas sem solução computacional?

Compiladores. Prof. Bruno Moreno Aula 8 02/05/2011

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 2. Conceitos Básicos da Teoria da Computação

Linguagens Formais e Autômatos P. Blauth Menezes

LFA Aula 07. Equivalência entre AFD e AFND. Equivalência entre ER s e AF s Equivalência entre GR s e AF s. Linguagens Formais e Autômatos

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

Instituto Superior Técnico Teoria da Computação - LEIC, LERC 2012/2013 Aula prática 6. 1 Palavras e linguagem gerada por gramática

Modelos de Computação Folha de trabalho n. 8

Autómatos de Pilha. Cada transição é caracterizada pelo estado, símbolo que está ser lido e o elemento no topo da pilha. dados de entrada.

Linguagens e Autômatos

Revisões de Conjuntos

Segunda Lista de Exercícios 2004/2...

Conceitos básicos de Teoria da Computação

Exercicios. 7.2 Quais das seguintes afirmações são verdadeiras? Justifica. (d) abcd L((a(cd) b) )

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador

Transcrição:

Curso: Ciência da Computação Turma: 6ª Série Aula 3 Autômatos Finitos

Alfabeto Alfabeto Conjunto finito de símbolos; Normalmente descrito por ; Exemplos: ={a, b} ={1, 2, 3} ={00, 11} Ø Alfabeto romano {a,b,c,...,z} Alfabeto binário {0,1} 2

Símbolo ou letra: Símbolo ou Letra é todo elemento pertencente à um alfabeto; a é um símbolo de se a є ; Exemplo: dado o alfabeto ={0, 1, 23} 0 é um símbolo de ; 1 é um símbolo de ; 23 é um símbolo de ; 3

Conceitos Essas duas primeiras definições são bastante livres. Embora os símbolos também possam ser chamados de letras, eles não precisam ter necessariamente um único caractere. E além disso, os símbolos de um alfabeto não precisam todos ter o mesmo número de caracteres. A única restrição é que o tamanho do símbolo seja finito. 4

Cadeia ou palavra: Cadeia ou Palavra É uma concatenação de símbolos de um mesmo alfabeto; É uma sequência finita de símbolos do alfabeto justapostos; Assim, dado um alfabeto e uma sequência de símbolos x=a 1 a 2 a 3...a n, x é uma cadeia sobre se a i є para i=1,2,...,n. ε denota uma cadeia vazia ou uma palavra vazia. Uma palavra como computação é um cadeia do nosso alfabeto. Assim 01010111 é uma cadeia do alfabeto {0,1} Cadeia sem nenhum símbolo é a cadeia vazia. 5

Tamanho da Cadeia Comprimento de Cadeia ou Tamanho de Palavra: É o número de símbolos que compõem uma dada cadeia (ou palavra). O comprimento de uma cadeia x é denotado por x Então, a cadeia x=a 1 a 2 a 3...a n, tem seu comprimento x = n. Cadeia nula ou palavra vazia: é um caso especial, ela é denotada por λ (ou ε) e tem tamanho igual a zero. 6

Exemplo Exercício: dado o alfabeto ={a, b, c, de}, verifique se as cadeias a seguir são formadas sobre este alfabeto, e se for, verifique qual o comprimento das mesmas: x = ababac y = abdec z = abedc w = abdceaba s = d t = a x=de y=dee 7

Exponenciação Exponenciação de Alfabetos: k é o conjunto de todas as cadeias com tamanho k, formadas sobre o alfabeto. Exemplo: considere = {0, 1} 0 = {ε} 1 = {0, 1} = S 2 = {00, 01, 10, 11}... Exercício: Encontre 3 para o exemplo anterior. 8

Conceitos Fechamento de um Alfabeto: Seja um alfabeto, então o fechamento de, descrito por * é definido como: * = 0 U 1 U 2 U U n... * é o conjunto de todas as cadeias possíveis de se formar sobre o alfabeto incluindo a cadeia vazia. Fechamento positivo + = * - {ε} Questão: quando * é infinito? 9

Linguagem Uma Linguagem Formal ou simplesmente Linguagem é um conjunto de palavras sobre um alfabeto. Linguagem: dado o alfabeto, o conjunto de palavras L é uma linguagem sobre, se L contém * 10

Linguagem Exemplo: Suponha o alfabeto Σ = {a, b} então: a)o conjunto vazio e o conjunto formado pela palavra vazia são linguagens sobre Σ. Lembrando que Ø { ε } b)o conjunto de palíndromos (palavras que tem a mesma leitura da esquerda para a direita e viceversa) sobre Σ é um conjunto de linguagem infinita. Assim: ε, a, b, aa, bb, aaa, aba, bab, bbb, aaaa,... são palavras desta linguagem. 11

Linguagem É comum definir linguagens usando um formador de conjuntos : { w algo sobre w } Essa expressão é lida como o conjunto de palavras w tais que (seja o que for dito sobre w à direita da barra vertical). Alguns exemplos: {w w consiste em um número igual de 0 s e 1 s} {w w é um número inteiro binário primo} {w w é um programa em C sintaticamente correto} 12

Linguagem Também é comum substituir w por alguma expressão com parâmetros e descrever os strings na linguagem declarando condições sobre os parâmetros. Exemplos: {0n 1 n n 1}. Lê-se o conjunto de 0 elevado a n 1 elevado a n tal que n maior ou igual a 1 ; essa linguagem consiste nos strings {01, 0011, 000111,...}. Note que, como ocorre com os alfabetos, podemos elevar um único símbolo a uma potência n para representar n cópias desse símbolo. {0i 1 j 0 i j}. Essa linguagem consiste em strings com alguns 0 s (possivelmente nenhum) seguidos por um número igual ou superior de 1 s. 13

Vamos descrever o conjunto da linguagem abaixo {0 i 1 j 0 i j}. Essa linguagem consiste em strings com alguns 0 s (possivelmente nenhum) seguidos por um número igual ou superior de 1 s. i j Resultado 0 0 Ø 1 0 Ø i>j Ø 0 1 1 0 2 11 0 3 111 0... 1 j 1 2 011 1 3 0111......... 14

Concatenação Concatenação de cadeias: dado o alfabeto e as cadeias x, y є *, a concatenação de x e y, indicada por xy, produz uma cadeia formada pelos símbolos de x seguidos pelos símbolos de y. Em outras palavras são duas cadeias, sobre o mesmo alfabeto, que se juntam para formar uma terceira cadeia. Se x = a 1 a 2...a n є * e y = b 1 b 2...b m є *, então xy = a 1 a 2...a n b 1 b 2...b m 15

Concatenação de Palavras Exemplos: Suponha o alfabeto Σ = {a, b} e as palavras v = baa e w = bb, tem-se que: vw = baabb vε = v = baa Uma concatenação definida sobre uma linguagem L não é necessariamente fechada sobre L, ou seja, a concatenação de duas palavras de L não é necessariamente uma palavra de L. Exemplo: Suponha a linguagem L de palíndromos sobre Σ = {a, b}. A concatenação das palavras aba e bbb resultam na palavra ababbb a qual não é palíndromo. Portanto a operação de concatenação não é fechada sobre L. 16

Exemplos: = {a, b} Concatenação de Palavras x = abaa, y = ba, z= ε xy = abaaba yx = baabaa yz = ba = zy = y A cadeia nula ( ε ) é o elemento neutro da concatenação. 17

Concatenação Sucessivas Concatenação sucessiva: concatenação de uma palavra com ela mesma; Representada através de um expoente: w n Onde w é uma palavra e n indica o número de concatenações sucessivas; 18

Conceitos Dado um alfabeto e x, y є *, diz-se que: x é um prefixo de y se existe um w є * tal que y= xw; x é um sufixo de y se existe um w є * tal que y= wx; x é um sub-palavra de y se existe um w,u є * tal que y= wxu; Exemplo: Seja a palavra abcb ε, a, ab, abc, abcb são os prefixos; ε, b, cb, bcb, abcb são os sufixos; 19

Conceitos Operações sobre linguagens; Considere L 1 e L 2 linguagens definidas sobre : União: L 1 U L 2 = {x x є L 1 v x є L 2 } Intersecção: L 1 L 2 = {x x є L 1 Λ x є L 2 } Diferença: L 1 - L = {x x є L Λ x não є L } 2 1 2 Concatenação: L 1.L 2 = {x x = yz, y є L 1 Λ z є L 2 } Complemento: L 1 ={x x є * Λ x não є L 1 } 20

Conceitos Exemplos de operações: Sejam L 1 e L 2 definidas sobre {0,1}: L 1 = {0,11} L 2 = {0, 1, 00} L 1 U L 2 = {0, 1, 00, 11} L 1 L 2 = {0} L 1 - L 2 = {11} L 1.L 2 = {00, 01, 000, 110, 111, 1100} 21

Conceitos Comparando as definições: Linguagem Natural: Uma palavra em português equivale à um símbolo; Uma sentença da língua portuguesa é uma cadeia composta por vários símbolos; Linguagem Computacional: Cada programa escrito numa linguagem computacional corresponde a uma cadeia de símbolos que podem ser: identificadores; palavras reservadas; símbolos especiais e operadores; constantes numéricas. 22

Conceitos Básicos Uma linguagem computacional como linguagem formal: Alfabeto da linguagem Java long, float, for, int; O código fonte de um programa corresponde à uma cadeia formada a partir de símbolos do alfabeto. LINGUAGEM: Conjunto de todas as cadeias descritas a partir do alfabeto que respeitam um conjunto de regras sintáticas. 23

Autômatos Finitos Os autômatos finitos constituem um modelo útil para muitos elementos importantes de hardware e software. Alguns exemplos: Software para projetar e verificar comportamento de circuitos digitais Analisador Léxico de um compilador típico (isto é, componente que divide o texto de entrada em unidades lógicas, como identificadores, palavras-chave, etc.) Software para examinar grandes corpos de texto, como páginas Web Software para verificar sistemas de todos os tipos que tem um número finito de estados distintos, como protocolos de comunicação ou segurança 24

Autômatos Finitos Estes elementos têm como características estarem a todo o momento em um determinado estado de um conjunto finito deles. Como o conjunto é finito a história toda de execução não pode ser memorizada, assim o sistema deve ser projetado a fim de memorizar apenas o que é relevante. A vantagem de usar um número finito de estados é que é possível implementá-lo de uma forma simples em hardware como um circuito, ou em um software que possa tomar decisões examinando apenas um número limitado de dados ou a própria posição no código. 25

Autômatos Finitos Exemplo de autômato finito: um interruptor que memoriza se está no estado ligado ou desligado, e permite que o usuário pressione um único botão cujo efeito será diferente de acordo com o estado em que o interruptor se encontra, ou seja, se ele estiver desligado e for pressionado ele irá ligar, e vice-versa. Os estados estão representados por círculos, e a ação (ou entrada ) está representada pelos arcos. Neste caso temos os estados ligado e desligado, e ambos os arcos representam a ação de pressionar o botão. O estado inicial é indicado pela palavra início e por uma seta que leva a este estado. Pressionar Inicio Ligado Desligado Pressionar 26

Autômatos Finitos Outro exemplo: um autômato que reconhece a palavra chave case, ele tem cinco estados que representam desde a string vazia até a palavra completa, passando por todos os seus prefixos. O único estado de aceitação é aquele em que a palavra aparece completa. Podemos imaginar este autômato como parte de um analisador léxico, que estará analisando um a um os caracteres do programa. C CA CAS CASE inicio C A S E CASE 27

Autômatos Finitos Na teoria dos autômatos, um problema é a questão de verificar se uma dada string (palavra) é elemento de uma linguagem específica. Assim se Σ é um alfabeto e L é uma linguagem sobre Σ, então dado um string w em Σ*, definir se w está ou não em L. 28

Autômatos Finitos Determinísticos Um autômato finito determinístico (AFD, ou DFA em inglês) é um autômato que se encontra sempre em um único estado após ler uma sequência qualquer de entrada. O termo determinístico implica que existe um e somente um estado ao qual o autômato pode transitar a partir de seu estado atual. Em contraste, autômatos finitos não determinísticos podem estar em vários estados ao mesmo tempo. 29

Definição Formal: Autômato Finito Determinístico Um autômato finito determinístico consiste em: a)um conjunto finito de estados, frequentemente denotado por Q. b)um conjunto finito de símbolos de entrada, frequentemente denotado por Σ c) Uma função de transição que toma como argumentos um estado e um símbolo de entrada e retorna um estado. A função de transição será comumente denotada por δ (delta minúsculo). No grafo é representada pelos arcos e rótulos entre os estados. Se q é um estado, e a é um símbolo de entrada, então δ(q,a) é o estado p tal que existe um arco identificado por a de q até p. d)um estado inicial, que é um dos estados em Q e)um conjunto de estados finais ou de aceitação F. O conjunto F é um subconjunto de Q. 30

Definição Formal: Autômato Finito Determinístico Frequentemente um AFD é denotado como uma tupla de cinco elementos, como se segue: A = (Q,Σ,δ,q 0,F) Onde A é o nome do AFD, Q é seu conjunto de estados, Σ é seu conjunto de símbolos de entrada, δ sua função de transição, q 0 é seu estado inicial e F é seu conjunto de estados de aceitação. 31

AFD processando strings A linguagem de um AFD é o conjunto de todos os strings que ele aceita. Suponha que a 1, a 2, a 3,... a n seja uma sequência de símbolos de entrada. Começamos com o AFD em seu estado inicial q 0 e procuramos por uma função de transição, algo como δ(q 0, a 1 ) = q 1, para saber em qual estado o AFD se encontrará após processar a 1. Em seguida processaremos a 2, avaliando δ(q 1, a 2 ) e assim sucessivamente. Se a função procurada não for encontrada é um sinal de que a string de entrada não faz parte da linguagem definida pelo autômato e deve ser rejeitada. 32

Exemplo: AFD processando strings Exemplo: Especificar formalmente um AFD que aceita todos e somente os strings de 0 s e 1 s que têm a sequência 01 em algum lugar na string. Podemos escrever essa linguagem como: {x01y x e y são quaisquer strings de 0 s e 1 s } Alguns exemplos de strings presentes na linguagem são 01, 1010, 01010 e 100010. Exemplos de strings que não estão na linguagem são: 0, 111000 e ε. 33

Exemplo: AFD processando strings Sabemos então que o alfabeto de entrada é Σ = {0,1}, que existe um conjunto de estados Q, e que há um estado inicial que chamaremos de q 0. Para decidir se 01 é uma substring de entrada, o autômato precisa se lembrar: 1. Ele já viu 01? Nesse caso ele aceita toda sequência de entrada adicional; ou seja, ele estará sempre em estado de aceitação de agora em diante 2. Ele nunca viu 01, mas sua entrada mais recente foi 0; assim se agora ele vir o 1, terá visto 01 e poderá aceitar tudo que vir por diante 3. Ele nunca viu 01, mas sua entrada mais recente foi 1 ou não existente (ele apenas iniciou). Nesse caso, ele não pode aceitar até ver um 0 seguido de 1. Cada uma dessas condições pode ser representada por um estado. A condição 3 é representada pelo estado inicial q 0, pois quando iniciamos ainda esperamos por 01. Se estivermos em q 0 e recebermos um 1, então devemos permanecer no estado q 0. Isto é δ(q 0, 1) = q 0. 34

Exemplo: AFD processando strings cont. Entretanto, se estamos em q 0 e vemos um 0, estaremos na condição 2, isto é, não vimos 01, mas temos um 0. Assim vamos usar q 2 para representar esta condição. A transição é, portanto δ(q 0, 0) = q 2. Agora, estando em q 2, podemos ver um 0, neste caso estaremos na mesma situação que antes, ou seja, continuamos com um 0 e esperando um 1. Portanto devemos ficar no mesmo estado δ(q 2, 0) = q 2. Porém se estamos em q 2 e vemos uma entrada 1, sabemos agora que existe um 0 seguido de 1. Podemos então passar para um estado de aceitação que chamaremos de q 1 e que corresponde a condição 1. Assim: δ(q 2, 1) = q 1. 35

Exemplo: AFD processando strings cont. Finalmente, estando no estado q 1 qualquer que seja a entrada, ainda estaremos na condição 1, em que já vimos um 01. Assim permaneceremos neste estado, δ(q 1, 1) = δ(q 1, 0) = q 1. Portanto, Q = {q 0, q 1, q 2 }, q 0 é o estado inicial como dito anteriormente e q 1 é o único estado de aceitação portanto F = {q1}. Assim a especificação completa do autômato pode ser dada por: A = ({q 0, q 1, q 2 },{0,1}, δ, q 0,{q 1 }) onde δ (delta minúscula) é a função de transição descrita anteriormente. 36

Diagrama de Transições Especificar um AFD através da tupla de cinco e das funções de transição é algo tedioso e que fica difícil de ler, existem outros tipos de notações que são preferenciais, dentre elas podemos destacar o diagrama de transições, que é um grafo. Você sabe o que é um grafo? Um grafo é representado como um conjunto de pontos (vértices) ligados por retas (as arestas). Dependendo da aplicação, as arestas podem ser direcionadas, e são representadas por "setas". 37

Diagrama de Transição Um diagrama de transições para um AFD A = (Q,Σ,δ,q 0,F) é um grafo definido da seguinte forma: 1. Para cada estado em Q existe um nó correspondente. 2. Para cada estado q em Q e para cada símbolo de entrada a em Σ, seja δ(q,a) = p. Então, o diagrama de transições tem um arco do nó q para o nó p, rotulado por a. Se existem vários símbolos de entrada que causam transições de q para p, então o diagrama de transições pode ter um arco rotulado pela lista desses símbolos. 3. Existe uma seta no estado inicial q 0, identificada como início. Essa seta não se origina em nenhum nó. 4. Os nós correspondentes aos estados de aceitação (aqueles em F) são marcados por um círculo duplo. Todos os outros estados tem um único círculo. Exemplo: abaixo vemos o diagrama de transições para o AFD que projetamos na seção anterior, e que aceita todos os strings que contem o substring 01: 1 0 0,1 inicio q 0 0 q 1 2 CASE q 1 38

Tabela de Transições Outra maneira mais simples de especificar um AFD é a tabela de transições que é uma representação convencional e tabular de uma função como δ que recebe dois argumentos e retorna um valor. As linhas da tabela correspondem aos estados, e as colunas correspondem as entradas. O conjunto de estados e o alfabeto de entrada são especificados implicitamente. O estado de entrada é indicado com uma seta, e os estados de aceitação são marcados com asterisco. Exemplo: abaixo vemos a tabela de transição para o nosso mesmo exemplo anterior que aceita todos os strings que contem o substring 01: 0 1 q 0 q 2 q 0 * q 1 q 1 q 1 q 2 q 2 q 1 39

Função de Transição Estendida Função de Transição Estendida é uma função que toma um estado q e um string w e retorna um estado p o estado que o autômato alcança quando começa no estado q e processa a sequência de entradas w. A função de transição estendida é normalmente denotada por δ, δ* ou ainda δ com acento circunflexo. Exemplos: funções de transição estendida para cada prefixo da string 11010 com o autômato do nosso exemplo que aceita strings que contem 01 como substring: δ(q 0,11010) = δ(δ(q 0,1),1010) = δ(q 0,1010) = δ(δ(q 0,1),010) = δ(q 0,010) = δ(δ(q 0,0),10) = δ(q 2,10) = δ(δ(q 2,1),0) = δ(q 1,0) = q 1 40

Linguagem de um AFD A linguagem de um AFD A = (Q,Σ,δ,q 0,F), denotada por L(A) é definida por: L(A) = {w δ(q 0,w) está em F} ou seja, dado um string w, se construirmos sua função de transição estendida δ e chegarmos a um estado que está em F (o conjunto de estados finais), então w está em A (é aceito pelo autômato A). Se L é L(A) para algum AFD A, dizemos que L é uma linguagem regular. 41

Exercícios 1. O conjunto do números naturais N é um alfabeto? 2. Exercício: dado o alfabeto ={ala, bi, c}, verifique se as cadeias a seguir são formadas sobre este alfabeto, e se for, verifique qual o comprimento das mesmas: x = ababac y = alabi z = bic w = abdceaba s = d t = b 3. Seja o conjunto S = {a,b,c} Encontre todos os elementos de 3 4. Se Σ = {a, b} então: quem é + e *? 5. Defina um autômato finito para um jogador de argola. Ele tem direito a 5 argolas para jogar. Se ele acertar 3 argolas ele ganha o jogo. 6. Pense em um problema e defina um autômato finito para ele. Use sua inteligência e criatividade. 42

Exercícios 7.Forneça os AFDs que aceitam as seguintes linguagens sobre o alfabeto {0,1}: O conjunto de todos os strings que terminam em 00 O conjunto de todos os strings com três 0 s consecutivos (não necessariamente no final) O conjunto de strings que têm 011 como um substring O conjunto de strings que começam ou terminam (ou ambos) com 01. O conjunto de strings tais que o número de 0 s é divisível por 5, e o número de 1 s é divisível por 3 8.Escreva um grafo que represente um AFD que leia strings e que trabalhe sobre um = {a,b} e que somente aceite strings que tenham ab consecutivos. Também faça a tabela de transição. 43