• Nenhum resultado encontrado

Introdução à Teoria dos Autômatos

N/A
N/A
Protected

Academic year: 2019

Share "Introdução à Teoria dos Autômatos"

Copied!
63
0
0

Texto

(1)

Introdução à

Teoria dos

Autômatos

Rayol de Mendonça Neto

rayol.neto@gmail.com

(2)

Linguagens Formais

• Linguagens construídas respeitando duas restrições

• 1. Sintaxe bem definida sempre possível verificar se uma sentença pertence ou não à linguagem

(3)
(4)

Alfabeto

Definição

Toda linguagem formal

possui um alfabeto!

Conjunto finito e não

vazio de símbolos

O alfabeto de uma

linguagem será

representado por Σ

(sigma)

Exemplo 01

Σ = {

0,1,2,3,4,5,6,7,8,9}

Permite representar

números naturais na

base decimal

1

20

131

(5)

Alfabeto

Definição

Toda linguagem formal

possui um alfabeto!

Conjunto finito e não

vazio de símbolos

O alfabeto de uma

linguagem será

representado por Σ

(sigma)

Exemplo 02

• Σ = {0,1,2,3,4,5,6,7,8,9,",”,-}

Permite representar

todos os números reais

na base decimal

9,80665

0,05

1,13

902

5

(6)

Alfabeto

Definição

Toda linguagem formal

possui um alfabeto!

Conjunto finito e não

vazio de símbolos

O alfabeto de uma

linguagem será

representado por Σ

(sigma)

Exemplo 03

Σ

= {0,1}

Permite representar

sequências de 0s e 1s

0

10

101

110010

Como podemos

representar os números

naturais com este

(7)

Alfabeto

Definição

Toda linguagem formal

possui um alfabeto!

Conjunto finito e não

vazio de símbolos

O alfabeto de uma

linguagem será

representado por Σ

(sigma)

Exemplo 04

Σ

= {0}

Permite representar

sequências de 0s

0

000

0000

00000000000000

Como podemos

representar os números

(8)

Alfabeto

Definição

Toda linguagem formal

possui um alfabeto!

Conjunto finito e não

vazio de símbolos

O alfabeto de uma

linguagem será

representado por Σ

(sigma)

Exemplo 05

Σ

= {a,b,c,s}

Permite representar

(9)
(10)

Palavra

Definição

• Uma palavra sobre o

alfabeto Σ é uma sequência finita de símbolos de Σ

Exemplo

(11)

Palavra

Definição

• Uma palavra sobre o

alfabeto Σ é uma sequência finita de símbolos de Σ

Exemplo

• Σ = {0,1}

• 011

• 10010

• 01001

• 101010

(12)

Palavra

• Tamanho de uma palavra

p, representado por |p|

• Número de símbolos usados na palavra

• Exemplo

• p = 0, então |p| = 1

• p = 100, então |p| = 3

• p = 1011, então |p|=

• Existe uma palavra vazia, ou seja, sem símbolos

• Representada por λ

(13)

Palavra

• Tamanho de uma palavra

p, representado por |p|

• Número de símbolos usados na palavra

• Exemplo

• p = 0, então |p| = 1

• p = 100, então |p| = 3

• p = 1011, então |p|= 4

• Existe uma palavra vazia, ou seja, sem símbolos

• Representada por λ

(14)

Linguagem

• Linguagem

• Uma linguagem sobre um alfabeto Σ é um subconjunto (possivelmente infinito) de todas as possíveis palavras sobre Σ

 Uma linguagem define quais palavras sobre Σ são “válidas” segundo algum critério preestabelecido

• Tamanho da Linguagem

(15)

Linguagem

• Exemplo

• Dada a linguagem L1 definida como “todas as palavras

sobre o alfabeto Σ = {0,1} com no máximo 3 símbolos” • L1 = {λ , 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101,

110, 111}

(16)

Linguagem

• Exemplo

• Dada a linguagem L2 definida como “todas as palavras

sobre o alfabeto Σ = {a,b,c} com dois símbolos e que não começam com a”

• L2 = {ba, bb, bc, ca, cb, cc}

• λλ é uma palavra de dois símbolos? Por quê?

(17)

Linguagem

• Exemplo

• Dada a linguagem L3 definida como “todos os números binários com um dígito que começam com 0 e terminam com 1”

• L3 =

(18)

Linguagem

• O alfabeto Σ = {0,1,2,3,4,5,6,7,8,9} pode representar

números naturais (na base decimal)

Todas as palavras sobre Σ representam um número?

Todas as palavras sobre Σ são válidas?

(19)

Linguagem

• “A linguagem dos números naturais é constituída por

todas as palavras sobre o alfabeto Σ =

{0,1,2,3,4,5,6,7,8,9} que possuem pelo menos um dígito”

• “Uma palavra p sobre o alfabeto Σ = {0,1,2,3,4,5,6,7,8,9}

representa um número natural se, e somente se, |p| >

(20)

Linguagem

• A linguagem dos números naturais é definida por

(21)

Linguagem

• A linguagem dos números naturais é definida por

 LN ={p é uma palavra sobre Σ | |p| > 0}

(22)

Linguagem

• A linguagem dos números naturais é definida por

 LN ={p é uma palavra sobre Σ | |p| > 0}

(23)

Linguagem

• A linguagem dos números naturais é definida por

 LN ={p é uma palavra sobre Σ | |p| > 0}

(24)

Linguagem

• A linguagem dos números naturais é definida por

 LN ={p é uma palavra sobre Σ | |p| > 0}

• “Conjunto das palavras p sobre o alfabeto Σ tal que o

tamanho de p é maior do que zero”

(25)

Linguagem

• O alfabeto

Σ={0,1,2,3,4,5,6,7,8,9,’’,’’,‐} pode representar números reais

• Algumas palavras sobre Σ

são “válidas”, outras não

• Válidas

 1958  ‐55  2,1  ‐9,44

• Inválidas

(26)

Formalização das Linguagens

• A linguagem dos números é constituída por todas as

palavras sobre o alfabeto Σ = {0,1,2,3,4,5,6,7,8,9,’’,”,‐} que obedeçam às seguintes regras

1. Possuem pelo menos um dígito (0 a 9)

2. Podem possuir um único hífen (-), desde que seja o primeiro símbolo

3. Possuem no máximo uma vírgula (,), desde que seja precedida e seguida por pelo menos um dígito

Difícil de entender

Difícil de verificar se está correta

(27)
(28)

Operações

• Certas operações permitem representação conveniente de linguagens

• Repetição

• Fecho de Kleene e Fecho Positivo de Kleene

• Agrupamento

• Concatenação

• União

• Interseção

• Subtração

(29)

Repetição

• O operador de repetição aparece como um “expoente” após um símbolo e indica o número de repetições desse símbolo

• 0² é uma sequência de dois “0”s: 00

• 1 é uma sequência de cinco “1”s: 11111

• z³ é uma sequência de três “z”s: zzz

• k⁰ é uma sequência de zero “k”s: λ

(30)

Repetição

• O operador de repetição é muito útil na definição de linguagens

(31)

Repetição

• O operador de repetição é muito útil na definição de linguagens

• L = {ak | k < 5}

(32)

Repetição

• O operador de repetição é muito útil na definição de linguagens

• L = {ak | k < 5}

(33)

Repetição

• O operador de repetição é muito útil na definição de linguagens

• L = {ak | k < 5}

(34)

Repetição

• O operador de repetição é muito útil na definição de linguagens

• L = {ak | k < 5}

(35)

Repetição

• O operador de repetição é muito útil na definição de linguagens

• L = {ak | k < 5}

“Conjunto de sequências de a’s dado que tenham menos de 5 letras”

• Ou ainda

 “Conjunto de sequências de a’s com menos de 5 letras”

(36)

Repetição

• O operador de repetição também pode ser aplicado sobre conjuntos (neste caso, gera-‐se conjuntos de palavras)

• L = {0,1}² é o conjunto de todas as palavras sobre {0,1}

que possuem tamanho 2

 L = {00, 01, 10, 11}

• L = {a,b}³ é o conjunto de todas as palavras sobre {a,b}

que possuem tamanho 3

 L = {aaa,aab,aba,abb,baa,bab,bba,bbb}

• L = {0,1}⁰ é o conjunto de todas as palavras sobre {0,1}

que possuem tamanho 0

 L = {λ}

(37)

Repetição

• Exemplo 1

(38)

Repetição

• Exemplo 1

• L = {p ∈ {0,1}n| n ≤ 2}

(39)

Repetição

• Exemplo 1

• L = {p ∈ {0,1}n| n ≤ 2}

(40)

Repetição

• Exemplo 1

• L = {p ∈ {0,1}n | n ≤ 2}

(41)

Repetição

• Exemplo 1

• L = {p ∈ {0,1}n| n ≤ 2}

“Conjunto das palavras sobre o alfabeto {0,1} dado que o

número de símbolos de {0,1} é no máximo 2”

Ou

Conjunto de palavras sobre

{0,1}

com no máximo

dois dígitos

(42)

Repetição

• Exemplo 2

• L = {p ∈ {0,1}n | n > 0}

“Conjunto das palavras sobre o alfabeto {0,1} com pelo

menos um símbolo”

• Pode ser lido como “Conjunto de números binários”

(43)

Fecho de Kleene

• As repetições “zero ou mais vezes” e “uma ou mais vezes” são tão comuns que há operadores específicos para elas:

• O Fecho de Kleene, representado por “elevado a

asterisco”, aplicado a um conjunto e significa “repetido

zero ou mais vezes”

• Exemplo 1

 L = {s}∗

(44)

Fecho de Kleene

• Exemplo 2

L = {a,b,c}∗

• Ou seja

L = {p ∈ {a,b,c}n | n ≥ 0}

• Ou seja

(45)

Fecho de Kleene

• Exemplo 3

L = {0,11}∗

• As seguintes palavras fazem parte de L

L = {λ, 0, 11, 00, 011, 110, 1111, 000, 0011, ...}

• Ou seja, sequências arbitrárias de 0 e 11

(46)

Fecho de Kleene

• É comum o Fecho de Kleene aplicado diretamente ao alfabeto

 L = Σ∗

(47)

Fecho Positivo de Kleene

Fecho Positivo de Kleene

 “elevado a mais” (+)

 Se aplica a um conjunto  Repetido uma ou mais

vezes

• Exemplo 1

• L = {0}+

(48)

Fecho Positivo de Kleene

Fecho Positivo de Kleene

 “elevado a mais” (+)

 Se aplica a um conjunto  Repetido uma ou mais

vezes

• Exemplo 2

• L = {0,1}+

• L = {p {0,1}n | n ≥ 1}

• L = {p {0,1}n | n > 0}

• L = {0,1}+ é uma

(49)

Fecho Positivo de Kleene

Fecho Positivo de Kleene

 “elevado a mais” (+)

 Se aplica a um conjunto  Repetido uma ou mais

vezes

• Exemplo 3

• L = {0,11}+

• L = {0, 11, 00, 011, 110, 1111, 000, 0011, ...}

(50)

Fecho Positivo de Kleene

Fecho Positivo de Kleene

 “elevado a mais” (+)

 Se aplica a um conjunto  Repetido uma ou mais

vezes

• Exemplo 4 (e se?)

• L = {λ,0,11}+

(51)

Fecho Positivo de Kleene

• Casos interessantes

• L = ∅ , então L* = {λ}

• L = ∅, então L+ =

• L = {λ}, então L* = {λ}

• L = {λ}, então L+ = {λ}

• Em geral

• λ ∈ L, então λ ∈ L +, caso

contrário λ não pertence a

(52)

Concatenação

• A concatenação de duas palavras é a palavra

formada pelos símbolos da primeira palavra seguidos dos símbolos da segunda palavra

• A concatenação de duas palavras p e q é escrita pq

• Exemplos

• p = 1 e q = 0

 pq = 10

• r = 1101 e s = 01

 rs =110101

• m = pala e n = vra

 mn = palavra

• a = aaba e b = λ

 ab = aaba

(53)

Concatenação

• Concatenação de duas linguagens L1 e L2 é a

linguagem contendo todas as concatenações de cada palavra de L1 com cada palavra de L2

• L1L2 = {p1p2} para cada p1 L1 e p2 ∈ L2

• Exemplos

• L1 = {a,b,c} e L2 = {x,y}

 L1L2 = {ax, ay, bx, by, cx, cy}

• L1 = {0,00} e L2 = {λ,1}

 L1L2 = {0, 01, 00, 001}

• L1 = {λ,0} e L2 = {λ,0}

 L1L2 = {λ, 0, 00}

• L1 = {0} * e L

2 = {λ,1}

 L1L2 = {λ, 1, 0, 01, 00, 001,

…}

• L1 = {0}* e L

2 = {1}*

(54)

Concatenação

• Se uma das linguagens concatenadas for vazia

• O resultado também é um conjunto vazio!

• Exemplos

• L1 = {a,b,c} e L2 = ∅

 L1L2 = ∅

• L1 = ∅ e L2 = {λ}

 L1L2 =

• L1 = e L2 = {0,1}

 L1L2 =

• L1 = e L2 =

 L1L2 = ∅

(55)

Agrupamento

• O agrupamento é uma forma conveniente de especificar que uma operação de repetição se aplica sobre uma

sequência de outras operações

(56)

Agrupamento

• Exemplos

• L

1 = ({0}{1})³

 Linguagem formada por três vezes a concatenação {0}{1}  L

1 = {010101}

• L2 = ({a}{a,b})²

 Linguagem formada por duas vezes a concatenação {a}{a,b}  L2 = {aaaa, aaab, abaa, abab}

• L3 = ({a}{b})0

(57)

Agrupamento

• Exemplos

• L4 = ({a,b}{c,d})*

 Linguagem formada pelo fecho de Kleene sobre a concatenação {a,b}{c,d}

 L4 = {λ, ac, ad, bc, bd, acac, acad, acbc, acbd, adac, ...}  L4 = {ac, ad, bc, bd}*

• L5 = ({a,b}{c,d}+)*

 L5 = { λ, ac, ad, acc, acd, ..., bc, bd, bcc, bcd, ..., acac, acacc, acacd, acaccc, ..., accac, accad, accacc, ... }

(58)

União

• União de duas linguagens L1 e L2

• Linguagem que contém todas as palavras de L1 e L2

• A união é representada pelo operador ∪

• Exemplos

• L1 = {0,1,01} e L2 = {λ,0,11}

 L1 ∪ L2 = {λ, 0, 1, 01, 11}

• L

1 = {a} +

e L2 = {λ}

 L1 L2 = {a}*

• L1 = {0,1}*{0} e L2 = {0,1} *{1}

(59)

Interseção

• Interseção de duas linguagens L1 e L2

• Linguagem que contém

todas as palavras comuns a L1 e L2

• A interseção é representada

pelo operador ∩

• Exemplos

• L1 = {λ,0,1,01} e L2 = {λ,1,111}

 L1 ∩ L2 = {λ, 1}

• L1 = {aa}+ e L2 = {an | n ≤ 5}

 L1 ∩ L2 = {aa, aaaa}

• L1 = {01}* e L2 = {0}*{1}*

(60)

Diferença

• Diferença entre duas linguagens L1 e L2

• Linguagem que contém as palavras de L1 que não pertencem a L2

• A diferença é representada

pelo operador −

• Exemplos

• L1 = {λ,0,1,01} e L2 = {λ,1,111}

 L1 − L2 = {0, 01}

• L1 = {a}+ e L2 = {an | n ≤ 5}

 L1 − L2 = {an | n > 5}

• L1 = {10}* e L2 = {01}*

(61)

Complemento

• Complemento de uma linguagem L

• Linguagem que contém as palavras que não

pertencem a L

• Σ* − L

• O complemento é

representado por uma barra sobre a linguagem

• L = Σ* − L

• Exemplos

• Σ = {a,b} e L = {a}* → L = {a, b}*{b}{a, b}*

• Σ = {a,b} e L = {a}+ → L = {a, b}*{b}{a, b}*∪{λ}

(62)

Exercícios

• Formalize as linguagens abaixo

• 1. Conjunto de todos os números binários com tamanho par e cujos dígitos nas posições pares (2o dígito, 4o

dígito, etc.) são obrigatoriamente 0

• 2. Conjunto de todos os números binários cujos dígitos nas posições pares (2o dígito, 4o dígito, etc.) são

obrigatoriamente 0

• 3. Conjunto de todos os números binários que contenham a sequência 0000

• 4. Conjunto de todos os números binários que

contenham a sequência 0000 pelo menos três vezes.

(63)

Exercícios

• Formalize as linguagens abaixo

• 6. A linguagem dos números inteiros é constituída por

todas as palavras sobre o alfabeto Σ =

{0,1,2,3,4,5,6,7,8,9,‐} que obedeçam às seguintes regras:

 Possuem pelo menos um dígito (0–9);

 Podem opcionalmente começar com um hífen(-‐), e este é único

• 7. A linguagem dos números inteiros é constituída por

todas as palavras sobre o alfabeto Σ =

{0,1,2,3,4,5,6,7,8,9, ‘,’ , −} que obedeçam às seguintes

regras:

 Possuem pelo menos um dígito (0–9);

 Podem opcionalmente começar com um hífen(−), e este é único

Referências

Documentos relacionados

Este assistente tem o objetivo de auxiliar no processo de calibração do pedal. Ele pode ser acessado através do botão Erro! Fonte de referência não encontrada. na barra

RODRIGUES RAÇÃO PRODUZIDA COM PRODUTOS REGIONAIS PARA PEIXES DE ÁGUA DOCE EM CATIVEIRO ABAETETUBA 82 NÃO APROVADO. HERMÍNIO TAVARES SOUSA

KATRINA SATAKI: Sim, nós tivemos uma reunião do conselho do ccNSO durante essa reunião e nós vamos ver se vamos fechar esse grupo de trabalho ou não?. Bom, vamos discutir

d) Prova de regularidade para com a Fazenda Estadual, mediante apresentação de Certidão Negativa, ou Certidão Positiva com efeitos de Negativa, emitida pela Secretaria da Fazenda

A Metodologia de Atendimento Sis- têmico está concebida como uma me- todologia para solução de situação- -problema, em contexto colaborativo, de autonomia, cujo processo básico é

Contudo, e dado que para a utilização dos ascensores (seja para o transporte de pessoas ou de cargas) é necessário alimentar um sistema de tracção composto por

Identificação todos os medicamentos utilizados a nível hospitalar; Comum a todos os Hospitais, ACSS e INFARMED.. Estrutura: Código sequencial constituído por 7 dígitos + 1

(I) 02 (duas) notas e/ou cupons fiscais e/ou comprovantes de compras emitidos para a mesma pessoa, pela mesma loja ou quiosque participante, com numeração sequenciada