• Nenhum resultado encontrado

Teoria da Comp 02

N/A
N/A
Protected

Academic year: 2021

Share "Teoria da Comp 02"

Copied!
63
0
0

Texto

(1)

Teoria da

Computação

Rayol de Mendonça Neto

[email protected]

(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

• 2. Semântica precisa: toda sentença da linguagem possui um significado único

(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

235562

(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

*não é necessário usar

todos os símbolos

(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

inteiros positivos com este alfabeto?

(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

algumas palavras

casa

asa

assa

abacaba

aaaaaaaaaaaaaaaaa

(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 • Palavras sobre Σ

(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 λ • |λ| = 0

(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 λ • |λ| = 0

(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

 O tamanho de uma linguagem L, representado por |L|, e o

(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ê? • Tamanho de L2 é dado por |L2| = 6

(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| > 0”

(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}

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

(22)

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

(23)

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

(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  ‐  1,2,3  20‐7  λ  ,‐2

(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

Difícil de escrever um algoritmo para verificar se uma

(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 • Complemento

(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}

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

(32)

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”

(33)

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”

(34)

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”

(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 = {λ}

Só existe uma palavra de tamanho 0 (λ), independentemente do alfabeto!

(37)

Repetição

• Exemplo 1

(38)

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”

(39)

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”

(40)

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”

(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” • Note que esta linguagem possui infinitas palavras, i.e.,

(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 • Neste caso, 1 nunca aparece sozinho!

(46)

Fecho de Kleene

• É comum o Fecho de Kleene aplicado diretamente ao alfabeto

 L = Σ∗

• Significa “a linguagem contendo todas as palavras sobre o alfabeto Σ”

(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}+

• L = {0, 00, 000, 0000, 00000, ...}

(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 representação concisa o conjunto de números binários!

(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}+

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

(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 L+

(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 • c = λ e d = λ  cd = λ

(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 L2 = {λ,1}  L1L2 = {λ, 1, 0, 01, 00, 001, …} • L1 = {0}* e L2 = {1}*  L1L2 = ?

(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

• O agrupamento é representado por um par de parênteses em torno da sequência de símbolos: (sequência)

(56)

Agrupamento

• Exemplos • L

1 = ({0}{1})³

 Linguagem formada por três vezes a concatenação {0}{1}  L1 = {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

 Linguagem formada por zero vezes a concatenação {a}{b}  L3 = {λ}

(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, ... }

• Sempre há uma sequência de c’s e/ou d’s após cada a e cada b!

(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 L 2 = {λ}  L1 ∪ L2 = {a}* • L1 = {0,1}*{0} e L2 = {0,1} *{1}  L1 ∪ L2 = {0,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}*  L1 ∩ L2 = {λ, 01}

(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}*  L1 − L2 = {10}+

(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}*∪{λ} • Σ = {0,1} e L = {0,1}*{1} →L = {0,1}*{0}∪{λ}

(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. • 5. Conjunto de todos os números binários que não

(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

 Possuem no máximo uma vírgula (,), desde que seja

Referências

Documentos relacionados

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

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 é

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

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

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

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