Sei sulla pagina 1di 43

Curso: Cincia da Computao Turma: 6 Srie Teoria da Computao Aula 3 Autmatos Finitos

Alfabeto
Alfabeto

Conjunto finito de smbolos; Normalmente descrito por ; Exemplos:


={a, b} ={1, 2, 3} ={00, 11} Alfabeto romano {a,b,c,...,z} Alfabeto binrio {0,1}
2 Teoria da Computao

Smbolo ou Letra
Smbolo ou letra:

todo elemento pertencente um alfabeto; a um smbolo de se a ; Exemplo: dado o alfabeto ={0, 1, 23}

0 um smbolo de ; 1 um smbolo de ; 23 um smbolo de ;

3 Teoria da Computao

Conceitos
Essas duas primeiras definies so bastante livres. Embora os smbolos tambm possam ser chamados de letras, eles no precisam ter necessariamente um nico caractere. E alm disso, os smbolos de um alfabeto no precisam todos ter o mesmo nmero de caracteres. A nica restrio que o tamanho do smbolo seja finito.

4 Teoria da Computao

Cadeia ou Palavra

Cadeia ou palavra:

uma concatenao de smbolos de um mesmo alfabeto; uma sequncia finita de smbolos do alfabeto justapostos; Assim, dado um alfabeto e uma sequncia de smbolos x=a1a2a3...an, x uma cadeia sobre se ai para i=1,2,...,n. denota uma cadeia vazia ou uma palavra vazia.

Uma palavra como computao um cadeia do nosso alfabeto. Assim 01010111 uma cadeia do alfabeto {0,1} Cadeia sem nenhum smbolo a cadeia vazia.
5 Teoria da Computao

Tamanho da Cadeia
Comprimento de Cadeia ou Tamanho de Palavra:

o nmero de smbolos que compem uma dada cadeia (ou palavra). O comprimento de uma cadeia x denotado por |x| Ento, a cadeia x=a1a2a3...an, tem seu comprimento |x| = n. Cadeia nula ou palavra vazia: um caso especial, ela denotada por (ou ) e tem tamanho igual a zero.

6 Teoria da Computao

Exemplo

Exerccio: dado o alfabeto ={a, b, c, de}, verifique se as cadeias a seguir so 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 Teoria da Computao

Exponenciao

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

Exerccio: Encontre 3 para o exemplo anterior.

8 Teoria da Computao

Conceitos

Fechamento de um Alfabeto: Seja um alfabeto, ento o fechamento de , descrito por * definido como:

* = 0 U 1 U 2 U U n ...

* o conjunto de todas as cadeias possveis de se formar sobre o alfabeto incluindo a cadeia vazia. Fechamento positivo = - {} Questo: quando * infinito?
9 Teoria da Computao

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 contm *

10 Teoria da Computao

Linguagem
Exemplo: Suponha o alfabeto = {a, b} ento: a)O conjunto vazio e o conjunto formado pela palavra vazia so linguagens sobre . Lembrando que { } b)O conjunto de palndromos (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, ... so palavras desta linguagem.

11 Teoria da Computao

Linguagem
comum definir linguagens usando um formador de conjuntos:

{ w | algo sobre w } Essa expresso 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 nmero igual de 0s e 1s} {w | w um nmero inteiro binrio primo} {w | w um programa em C sintaticamente correto}
12 Teoria da Computao

Linguagem
Tambm comum substituir w por alguma expresso com parmetros e descrever os strings na linguagem declarando condies sobre os parmetros. Exemplos:

{0n1n | 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 smbolo a uma potncia n para representar n cpias desse smbolo. {0i1j | 0 i j}. Essa linguagem consiste em strings com alguns 0s (possivelmente nenhum) seguidos por um nmero igual ou superior de 1s.
13 Teoria da Computao

Vamos descrever o conjunto da linguagem abaixo


{0i1j | 0 i j}. Essa linguagem consiste em strings com alguns 0s (possivelmente nenhum) seguidos por um nmero igual ou superior de 1s.
i 0 1 i>j 0 0 0 0 1 1 ... 1 2 3 ... 2 3 ... j 0 0 Resultado 1 11 111 1j 011 0111 ...

14 Teoria da Computao

Concatenao

Concatenao de cadeias: dado o alfabeto e as cadeias x, y *, a concatenao de x e y, indicada por xy, produz uma cadeia formada pelos smbolos de x seguidos pelos smbolos de y. Em outras palavras so duas cadeias, sobre o mesmo alfabeto, que se juntam para formar uma terceira cadeia. Se x = a1a2...an * e y = b1b2...bm *, ento xy = a1a2...anb1b2...bm

15 Teoria da Computao

Concatenao 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 concatenao definida sobre uma linguagem L no necessariamente fechada sobre L, ou seja, a concatenao de duas palavras de L no necessariamente uma palavra de L.

Exemplo: Suponha a linguagem L de palndromos sobre = {a, b}. A concatenao das palavras aba e bbb resultam na palavra ababbb a qual no palndromo. Portanto a operao de concatenao no fechada sobre L.
16 Teoria da Computao

Concatenao de Palavras
Exemplos:

= {a, b} x = abaa, y = ba, z=


xy = abaaba yx = baabaa yz = ba = zy = y A cadeia nula ( ) o elemento neutro da concatenao.

17 Teoria da Computao

Concatenao Sucessivas
Concatenao sucessiva:

concatenao de uma palavra com ela mesma;

Representada atravs de um expoente: wn

Onde w uma palavra e n indica o nmero de concatenaes sucessivas;

18 Teoria da Computao

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 so os prefixos; , b, cb, bcb, abcb so os sufixos;


Teoria da Computao

19

Conceitos
Operaes sobre linguagens;

Considere L1 e L2 linguagens definidas sobre :

Unio: L1 U L2 = {x | x L1 v x L2} Interseco: L1 L2 = {x | x L1 x L2} Diferena: L1 - L2 = {x | x L1 x no L2} Concatenao: L1.L2 = {x | x = yz, y L1 z L2} Complemento: L1={x | x * x no L1}

20 Teoria da Computao

Conceitos

Exemplos de operaes:

Sejam L1 e L2 definidas sobre {0,1}:


L1 = {0,11} L2 = {0, 1, 00}

L1 U L2= {0, 1, 00, 11} L1 L2 = {0} L1 - L2 = {11} L1.L2 = {00, 01, 000, 110, 111, 1100}

21 Teoria da Computao

Conceitos
Comparando as definies:

Linguagem Natural:

Uma palavra em portugus equivale um smbolo; Uma sentena da lngua portuguesa uma cadeia composta por vrios smbolos; Cada programa escrito numa linguagem computacional corresponde a uma cadeia de smbolos que podem ser:

Linguagem Computacional:

identificadores; palavras reservadas; smbolos especiais e operadores; constantes numricas.

22 Teoria da Computao

Conceitos Bsicos

Uma linguagem computacional como linguagem formal:

Alfabeto da linguagem Java

long, float, for, int;

O cdigo fonte de um programa corresponde uma cadeia formada a partir de smbolos do alfabeto.

LINGUAGEM: Conjunto de todas as cadeias descritas a partir do alfabeto que respeitam um conjunto de regras sintticas.
23 Teoria da Computao

Autmatos Finitos
Os autmatos 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 Lxico de um compilador tpico (isto , componente que divide o texto de entrada em unidades lgicas, como identificadores, palavras-chave, etc.) Software para examinar grandes corpos de texto, como pginas Web Software para verificar sistemas de todos os tipos que tem um nmero finito de estados distintos, como protocolos de comunicao ou segurana
24 Teoria da Computao

Autmatos Finitos
Estes elementos tm como caractersticas estarem a todo o momento em um determinado estado de um conjunto finito deles. Como o conjunto finito a histria toda de execuo no pode ser memorizada, assim o sistema deve ser projetado a fim de memorizar apenas o que relevante. A vantagem de usar um nmero finito de estados que possvel implement-lo de uma forma simples em hardware como um circuito, ou em um software que possa tomar decises examinando apenas um nmero limitado de dados ou a prpria posio no cdigo.
25 Teoria da Computao

Autmatos Finitos
Exemplo de autmato finito: um interruptor que memoriza se est no estado ligado ou desligado, e permite que o usurio pressione um nico boto 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 esto representados por crculos, e a ao (ou entrada) est representada pelos arcos. Neste caso temos os estados ligado e desligado, e ambos os arcos representam a ao de pressionar o boto. O estado inicial indicado pela palavra incio e por uma seta que leva a este estado.
Pressionar Inicio Ligado Pressionar
Teoria da Computao

Desligado

26

Autmatos Finitos
Outro exemplo: um autmato 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 aceitao aquele em que a palavra aparece completa. Podemos imaginar este autmato como parte de um analisador lxico, que estar analisando um a um os caracteres do programa.
inicio C C A CA S CAS E CASE
27 Teoria da Computao

Autmatos Finitos
Na teoria dos autmatos, um problema a questo de verificar se uma dada string (palavra) elemento de uma linguagem especfica. Assim se um alfabeto e L uma linguagem sobre , ento dado um string w em *, definir se w est ou no em L.

28 Teoria da Computao

Autmatos Finitos Determinsticos


Um autmato finito determinstico (AFD, ou DFA em ingls) um autmato que se encontra sempre em um nico estado aps ler uma sequncia qualquer de entrada. O termo determinstico implica que existe um e somente um estado ao qual o autmato pode transitar a partir de seu estado atual. Em contraste, autmatos finitos no determinsticos podem estar em vrios estados ao mesmo tempo.

29 Teoria da Computao

Definio Formal: Autmato Finito Determinstico


Um autmato finito determinstico consiste em: a)Um conjunto finito de estados, frequentemente denotado por Q. b)Um conjunto finito de smbolos de entrada, frequentemente denotado por c) Uma funo de transio que toma como argumentos um estado e um smbolo de entrada e retorna um estado. A funo de transio ser comumente denotada por (delta minsculo). No grafo representada pelos arcos e rtulos entre os estados. Se q um estado, e a um smbolo de entrada, ento (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 aceitao F. O conjunto F um subconjunto de Q.
Teoria da Computao 30

Definio Formal: Autmato Finito Determinstico Frequentemente um AFD denotado como uma tupla de cinco elementos, como se segue: A = (Q,,,q0,F) Onde A o nome do AFD, Q seu conjunto de estados, seu conjunto de smbolos de entrada, sua funo de transio, q0 seu estado inicial e F seu conjunto de estados de aceitao.

31 Teoria da Computao

AFD processando strings


A linguagem de um AFD o conjunto de todos os strings que ele aceita. Suponha que a1, a2, a3, ... an seja uma sequncia de smbolos de entrada. Comeamos com o AFD em seu estado inicial q0 e procuramos por uma funo de transio, algo como (q0, a1) = q1, para saber em qual estado o AFD se encontrar aps processar a1. Em seguida processaremos a2, avaliando (q1, a2) e assim sucessivamente. Se a funo procurada no for encontrada um sinal de que a string de entrada no faz parte da linguagem definida pelo autmato e deve ser rejeitada. 32
Teoria da Computao

Exemplo: AFD processando strings


Exemplo: Especificar formalmente um AFD que aceita todos e somente os strings de 0s e 1s que tm a sequncia 01 em algum lugar na string. Podemos escrever essa linguagem como:

{x01y | x e y so quaisquer strings de 0s e 1s }

Alguns exemplos de strings presentes na linguagem so 01, 1010, 01010 e 100010. Exemplos de strings que no esto na linguagem so: 0, 111000 e .

33 Teoria da Computao

Exemplo: AFD processando strings


Sabemos ento que o alfabeto de entrada = {0,1}, que existe um conjunto de estados Q, e que h um estado inicial que chamaremos de q0. Para decidir se 01 uma substring de entrada, o autmato precisa se lembrar: 1. Ele j viu 01? Nesse caso ele aceita toda sequncia de entrada adicional; ou seja, ele estar sempre em estado de aceitao 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 no existente (ele apenas iniciou). Nesse caso, ele no pode aceitar at ver um 0 seguido de 1. Cada uma dessas condies pode ser representada por um estado. A condio 3 representada pelo estado inicial q0, pois quando iniciamos ainda esperamos por 01. Se estivermos em q0 e recebermos um 1, ento devemos permanecer no estado q0. Isto (q0, 1) = q0.
Teoria da Computao

34

Exemplo: AFD processando strings cont.


Entretanto, se estamos em q0 e vemos um 0, estaremos na condio 2, isto , no vimos 01, mas temos um 0. Assim vamos usar q2 para representar esta condio. A transio , portanto (q0, 0) = q2. Agora, estando em q2, podemos ver um 0, neste caso estaremos na mesma situao que antes, ou seja, continuamos com um 0 e esperando um 1. Portanto devemos ficar no mesmo estado (q2, 0) = q2. Porm se estamos em q2 e vemos uma entrada 1, sabemos agora que existe um 0 seguido de 1. Podemos ento passar para um estado de aceitao que chamaremos de q1 e que corresponde a condio 1. Assim: (q2, 1) = q1.
35 Teoria da Computao

Exemplo: AFD processando strings cont.


Finalmente, estando no estado q1 qualquer que seja a entrada, ainda estaremos na condio 1, em que j vimos um 01. Assim permaneceremos neste estado, (q1, 1) = (q1, 0) = q1. Portanto, Q = {q0, q1, q2}, q0 o estado inicial como dito anteriormente e q1 o nico estado de aceitao portanto F = {q1}. Assim a especificao completa do autmato pode ser dada por:

A = ({q0, q1, q2},{0,1}, , q0,{q1})

onde (delta minscula) a funo de transio descrita anteriormente.


36 Teoria da Computao

Diagrama de Transies
Especificar um AFD atravs da tupla de cinco e das funes de transio algo tedioso e que fica difcil de ler, existem outros tipos de notaes que so preferenciais, dentre elas podemos destacar o diagrama de transies, que um grafo. Voc sabe o que um grafo? Um grafo representado como um conjunto de pontos (vrtices) ligados por retas (as arestas). Dependendo da aplicao, as arestas podem ser direcionadas, e so representadas por "setas".
37 Teoria da Computao

Diagrama de Transio
Um diagrama de transies para um AFD A = (Q,,,q0,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 smbolo de entrada a em , seja (q,a) = p. Ento, o diagrama de transies tem um arco do n q para o n p, rotulado por a. Se existem vrios smbolos de entrada que causam transies de q para p, ento o diagrama de transies pode ter um arco rotulado pela lista desses smbolos. 3. Existe uma seta no estado inicial q0, identificada como incio. Essa seta no se origina em nenhum n. 4. Os ns correspondentes aos estados de aceitao (aqueles em F) so marcados por um crculo duplo. Todos os outros estados tem um nico crculo. Exemplo: abaixo vemos o diagrama de transies para o AFD que projetamos na seo anterior, e que aceita todos os strings que contem o substring 01: 1 inicio q0 0 0 q2 1 0,1 q1 CASE
38 Teoria da Computao

Tabela de Transies
Outra maneira mais simples de especificar um AFD a tabela de transies que uma representao convencional e tabular de uma funo 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 so especificados implicitamente. O estado de entrada indicado com uma seta, e os estados de aceitao so marcados com asterisco. Exemplo: abaixo vemos a tabela de transio para o nosso mesmo exemplo anterior que aceita todos os strings que contem o substring 01:
0 q0 * q1 q2 q2 q1 q2 1 q0 q1 q1
39

Teoria da Computao

Funo de Transio Estendida


Funo de Transio Estendida uma funo que toma um
estado q e um string w e retorna um estado p o estado que o autmato alcana quando comea no estado q e processa a sequncia de entradas w. A funo de transio estendida normalmente denotada por , * ou ainda com acento circunflexo.
Exemplos: funes de transio estendida para cada prefixo da string 11010 com o autmato do nosso exemplo que aceita strings que contem 01 como substring:

(q0,11010) = ((q0,1),1010) = (q0,1010) = ((q0,1),010) = (q0,010) = ((q0,0),10) = (q2,10) = ((q2,1),0) = (q1,0) = q1


40 Teoria da Computao

Linguagem de um AFD
A linguagem de um AFD A = (Q,,,q0,F), denotada por L(A) definida por:

L(A) = {w | (q0,w) est em F}

ou seja, dado um string w, se construirmos sua funo de transio estendida e chegarmos a um estado que est em F (o conjunto de estados finais), ento w est em A ( aceito pelo autmato A). Se L L(A) para algum AFD A, dizemos que L uma linguagem regular.

41 Teoria da Computao

Exerccios
1. O conjunto do nmeros naturais N um alfabeto? 2. Exerccio: dado o alfabeto ={ala, bi, c}, verifique se as cadeias a seguir so 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} ento: quem + e * ? 5. Defina um autmato 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 autmato finito para ele. Use sua inteligncia e criatividade.
42 Teoria da Computao

Exerccios
7.Fornea 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 trs 0s consecutivos (no necessariamente no final) O conjunto de strings que tm 011 como um substring O conjunto de strings que comeam ou terminam (ou ambos) com 01. O conjunto de strings tais que o nmero de 0s divisvel por 5, e o nmero de 1s divisvel 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. Tambm faa a tabela de transio.

43 Teoria da Computao

Potrebbero piacerti anche