Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Alfabeto
Alfabeto
={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}
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:
Exponenciao
Exponenciao de Alfabetos: k o conjunto de todas as cadeias com tamanho k, formadas sobre o alfabeto .
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
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:
17 Teoria da Computao
Concatenao Sucessivas
Concatenao sucessiva:
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
19
Conceitos
Operaes sobre linguagens;
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:
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:
22 Teoria da Computao
Conceitos Bsicos
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
29 Teoria da Computao
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
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
34
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
Linguagem de um AFD
A linguagem de um AFD A = (Q,,,q0,F), denotada por L(A) definida por:
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:
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