Buscar

Teoria da Computação: Fundamentos e Objetivos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Engenheiro de Computação
Mestre em Ciência da Computação
@E-mail: carlos.bruno@estacio.br 
Aula 01
CCT0737 - TEORIA DA COMPUTAÇÃO
CENTRO UNIVERSITÁRIO ESTÁCIO DA AMAZÔNIA
Carlos Bruno Oliveira Lopes
EMENTA
• Linguagens formais (regulares, livres de contexto, sensíveis ao contexto);
• Autômatos finitos determinísticos e não determinísticos;
• Autômatos com pilha;
• Máquinas de Turing;
• Tese de Church;
• Proposições sobre Computabilidade;
• Conceitos básicos de classes de complexidade de linguagens.
2
OBJETIVOS GERAIS
• Obter conhecimentos sobre a teoria da computação a fim de permitir
uma visão ampla dos conceitos e técnicas dessa área que possibilitam o
entendimento de ferramentas e estruturas fundamentais para a
formação em ciência da computação como compiladores e linguagens
de programação;
3
CONTEÚDOS
Unidade 1. FUNDAMENTOS
Alfabetos e Linguagens;
Expressões regulares;
Autômatos finitos deterministas e não-deterministas;
Equivalência entre autômatos;
Linguagens regulares e suas propriedades;
Existência de linguagens não-regulares: teorema do 
bombeamento;
Unidade 2. LINGUAGENS REGULARES E LIVRES DE 
CONTEXTO
Conceito de gramáticas livres de contexto;
Gramáticas regulares;
Autômatos de pilha;
Linguagens livres de contexto e suas propriedades;
Determinismo;
Introdução à análise léxica e sintática;
Unidade 3. MÁQUINA DE TURING
Definição;
Computação com Máquinas de Turing;
Combinação de Máquinas de Turing;
Extensões das Máquinas de Turing;
Máquinas de Turing não-deterministas.
Unidade 4. TEORIA DA COMPUTABILIDADE
A tese de Church;
Funções primitivas recursivas;
Máquinas de Turing universais;
Não computabilidade;
O problema de parada em Máquinas de Turing;
Enumerabilidade, Aceitabilidade e Decidibilidade.
Unidade 5. COMPLEXIDADE COMPUTACIONAL
Máquinas de Turing limitadas em tempo e espaço;
Grau de crescimento de funções;
Simulações limitadas em tempo;
As classes P e NP;
NP-completude;
Hierarquia de complexidade.
4
AVALIAÇÃO
O processo de avaliação será composto de três etapas: Avaliação 1 (AV1),
Avaliação 2 (AV2) e Avaliação 3 (AV3).
Para aprovação na disciplina o aluno deverá:
1. Atingir resultado igual ou superior a 6.0, calculado a partir da média 
aritmética entre os graus das avaliações, sendo consideradas apenas as duas 
maiores notas obtidas dentre as três etapas de avaliação (AV1, AV2 e AV3). A 
média aritmética obtida será o grau final do aluno na disciplina.
2. Obter grau igual ou superior a 4.0 em, pelo menos, duas das três avaliações.
3. Frequentar, no mínimo, 75% das aulas ministradas.
5
BIBLIOGRAFIA BÁSICA
DIVÉRIO, Tiarajú A.; MENEZES, Paulo B. Teoria da Computação: Máquinas
universais e computabilidade. 3. ed. Porto Alegre: Bookman, 2011.
Glenn, J. Ciência da Computação: Uma visão Abrangente. 11 ed.. Porto
Alegre: Bookman, 2013.
MENEZES, Paulo B. Linguagens Formais e Autômatos. 6a. ed. Porto Alegure:
Bookman, 2011.
6
BIBLIOGRAFIA COMPLEMENTAR
AHO, Alfred V.; SETHI, Ravi; ULLMAN, Jeffrey D. Compiladores: princípios, técnicas e ferramentas. 2. ed.
Rio de Janeiro: LTC, 2008.
CARVALHO, André C. P. L. F.; LORENA, Ana C. Introdução à Computação: Hardware, Software e Dados. 1.
ed. Rio de Janeiro: LTC, 2017.
Fedeli, R. D. Polloni, E. G. F. Peres, F. E. Introdução à Ciência da Computação. 2. ed. São Paulo: Cengage
Learning, 2010.
LOUDEN, Kenneth C. Compiladores: princípios e práticas. São Paulo: Cengage Learning, 2004.
SANTOS, Pedro R.; LANGLOIS, Thibault. Compiladores da teoria à prática. 1. ed. Rio de Janeiro: LTC, 2018.
7
8
Fundamentos
Ao longo da história da computação três perguntas se destacaram em seus estudos e
desenvolvimento:
• O que é uma solução computável?
• Quais são os limites do que pode ser computado?
• Existem problemas sem solução computacional?
Elas caracterizam boa parte do escopo da teoria da computação
A teoria da computação estuda modelos de computação suficientemente genéricos para 
especificar qualquer função computável, assim como, explora os limites do que pode ser 
computado.
9
Fundamentos
David Hilbert (1862-1943): Problema de Decisão
“Encontrar um algoritmo que recebe como entrada a descrição de uma linguagem formal e uma sentença nesta linguagem e 
tem como saída “verdadeiro” ou “falso” dependendo se a sentença de entrada é verdadeira ou falsa.”
• Problema de decisão lógica de primeira ordem. Objetivo determinar se um sentença na lógica de primeira ordem é válida ou não.
Kurt Gödel (1906-1978): Teorema da não completude
“Demonstra que qualquer sistema axiomático que define a multiplicação e a adição no conjunto dos números naturais não 
pode ser simultaneamente completo e consistente: se é consistente, existem proposições que não podem ser verificadas 
nesta axiomatização (incompleto); se for completo, não poderá́ validar a si mesmo, (inconsistente)”
• Primeiro a identificar um formalismo para definir a noção de procedimento efetivo.
1928, Devid Hilbert
 Problema de Decisão
1931, Kurt Gödel
 Teorema da não completude
1936, Alonzo Church
 ● cálculo Lamba
 funções recursivas● 
, Alan Turing1936
 Máquina de Turing
1943, Sistema canônico de Post
, Algoritmo de Markov e Linguagem Snobol1954
1963, Máquina de registradores
, RASP (Random Acess Stored Programs)1964
1976, Máquina Norma
Procedimento efetivo: Descrição de todos os procedimentos possíveis que podem ser executados em um
computador por meio de um formalismos
10
Fundamentos
• Essas estudos desenvolveram os principais aspectos da teoria da computação:
• Criando abordagens próximas dos sistemas de computadores modernos;
• Permitindo o entendimento e associação dos problemas abstratos com os problemas típicos da 
ciência da computação atual;
Linguagem é um conceito fundamental em teoria da computação.
• Ela permiti-nos expressar problemas por meio de um desenvolvimento formal 
adequado a computabilidade.
o Ex.: Java, C, Pascal, HTML, etc.
11
Linguagens Formais
• O conteúdo de Linguagens Formais envolve três principais termos:
• Esses termos possuem conceitos próprios que estão relacionados entre si.
Linguagens Gramáticas Autômatos
Linguagens Enumeráveis 
Recursivamente ou Tipo 0
Linguagens Sensíveis ao Contexto 
ou Tipo 1
Linguagens livres de 
Contexto ou Tipo 2
Linguagens 
Regulares ou Tipo 3
Máquina de Turing
Máquina de Turing com fita limitada 
Autômatos à Pilha
Gramáticas Livres de Contexto
Autômatos Finitos 
Expressões Regulares 
Gramáticas Regulares
12
Linguagens Formais
Linguagens Formais construídas respeitam 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
13
Alfabetos
Toda linguagem formal possui um alfabeto
▪ Conjunto finito e não vazio de símbolos.
O alfabeto de uma linguagem é representado
por Σ (sigma).
Definição Exemplo 01
Σ = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
• Permite representar números naturais na
base decimal
▪ 1
▪ 20
▪ 131
▪ 1235562
14
Alfabetos
Toda linguagem formal possui um alfabeto
▪ Conjunto finito e não vazio de símbolos.
O alfabeto de uma linguagem é representado
por Σ (sigma).
Definição Exemplo 02
Σ = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "," , −
• Permite representar todos os números reais
na base decimal
▪ 9,80655
▪ -0,05
▪ 1,13
▪ 902
15
Alfabetos
Toda linguagem formal possui um alfabeto
▪ Conjunto finito e não vazio de símbolos.
O alfabeto de uma linguagem é representado
por Σ (sigma).
Definição Exemplo 03
Σ = 0, 1
• Permite representar sequências binárias
(de 0s e 1s)
▪ 0
▪ 10
▪ 101
▪ 110010
16
Alfabetos
Toda linguagem formal possui um alfabeto
▪ Conjunto finito e não vazio de símbolos.
O alfabeto de uma linguagem é representado
por Σ (sigma).
Definição Exemplo 04
Σ = 0
• Permite representar sequências de 0s
▪ 0
▪ 000
▪ 0000
▪ 00000000000000
17
Alfabetos
Toda linguagem formal possui um alfabeto
▪ Conjunto finito e não vazio de símbolos.
O alfabeto de umalinguagem é representado
por Σ (sigma).
Definição Exemplo 05
Σ = 𝑎, 𝑏, 𝑐, 𝑠
• Permite representar algumas palavras
▪ casa
▪ assa
▪ babaca
▪ abacaba
▪ aaaaaaaaaaaaaaaaaaa
18
Palavra
• Uma palavra sobre o alfabeto Σ é uma
sequência finita de símbolos de Σ.
• Tamanho de uma palavra p, representado 
por |p|
▪ Número de símbolos usados na palavra
Ex.:
o p = 0 , então |p| = 1;
o p = 100 , então |p| = 3;
o p = 1011 , então |p| = 4;
• Existe uma palavra vazia, ou seja, sem 
símbolos
▪ Representado por 𝜆 (|p| = 0)
Definição Exemplo
• Σ = 0, 1
▪ 011
▪ 10010
▪ 01001
▪ 010010
• Σ = 𝑎, 𝑏
▪ aab
▪ aba
▪ bbba
Palavras sobre
Palavras sobre
19
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|, é o número de palavras da linguagem (possivelmente
infinito)
20
Linguagem
• Exemplo
Dada a linguagem 𝐿1 defina como “todas as palavras sobre o alfabeto Σ = 0, 1 com no máximo
3 símbolos”, temos:
𝐿1 = {𝜆, 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101, 110, 111}
Tamanho de 𝐿1 é dado por 𝐿1 = 15
Dada a linguagem 𝐿2 definida como “todas as palavras sobre o alfabeto Σ = 𝑎, 𝑏, 𝑐 com dois
símbolos e que não começam com a”, temos:
𝐿2 = 𝑏𝑎, 𝑏𝑏, 𝑏𝑐, 𝑐𝑎, 𝑐𝑏, 𝑐𝑐
Tamanho de 𝐿2 é dado por 𝐿2 = 6
Dada a linguagem 𝐿3 definida como “todos os números binários com um dígito que começam 
com 0 e terminam com 1”
𝐿3 = ∅
Tamanho de 𝐿3 é dado por 𝐿3 = 0
21
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”
• A linguagem dos números naturais é definida por 𝐿𝑁 = {
}
p é uma palavra
sobre Σ | p > 0
“Conjunto das palavras p sobre o alfabeto Σ tal que o tamanho de p é maior do que zero”
22
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”
• A linguagem dos números naturais é definida por 𝐿𝑁 = {
}
p é uma palavra
sobre Σ | p > 0
“Conjunto das palavras p sobre o alfabeto Σ tal que o tamanho de p é maior do que zero”
Qual o valor de |𝐿𝑁|?
23
Palavra
• 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
24
Formalização de linguagens
• A linguagem dos números reais é 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.
o Difícil de entender
o Difícil de verificar se está correta
o Difícil de escrever um algoritmo para verificar se uma palavra representa ou não um 
número válido
25
Operações Básicas
• Certas operações permitem a auxiliam na 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
26
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
Ex.:
o 02 é uma sequência de dois “0”s: 00
o 15 é uma sequência de cinco “1”s: 11111
o z3 é uma sequência de três “z”s: zzz
o k0 é uma sequência de zero “k”s: λ
• Qualquer símbolo repetido zero vezes gera λ (palavra vazia)
• O operador de repetição é muito útil na definição de linguagens: 𝐿 = {𝑎𝑘 | 𝑘 < 5}
27
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
Ex.:
o 02 é uma sequência de dois “0”s: 00
o 15 é uma sequência de cinco “1”s: 11111
o z3 é uma sequência de três “z”s: zzz
o k0 é uma sequência de zero “k”s: λ
• Qualquer símbolo repetido zero vezes gera λ (palavra vazia)
• O operador de repetição é muito útil na definição de linguagens: 𝐿 = {𝑎𝑘 | 𝑘 < 5}
“Conjunto de sequências de a’s dado que tenham menos de 5 letras”
𝐿 = 𝜆, 𝑎, 𝑎𝑎, 𝑎𝑎𝑎, 𝑎𝑎𝑎𝑎
28
Repetição
• O operador de repetição também pode ser aplicado sobre conjuntos (neste caso,
gera-se conjuntos de palavras)
o 𝐿 = 0, 1 2 é o conjunto de todas as palavras sobre {0, 1} que possuem tamanho 2
▪ 𝐿 = 00, 01, 10, 11
o 𝐿 = 𝑎, 𝑏 3 é o conjunto de todas as palavras sobre {a, b} que possuem tamanho 3
▪ 𝐿 = 𝑎𝑎𝑎, 𝑎𝑎𝑏, 𝑎𝑏𝑎, 𝑎𝑏𝑏, 𝑏𝑎𝑎, 𝑏𝑎𝑏, 𝑏𝑏𝑎, 𝑏𝑏𝑏
o 𝐿 = 0, 1 0 é o conjunto de todas as palavras sobre {0, 1} que possuem tamanho 0
▪ 𝐿 = 𝜆
• Só existe uma palavra de tamanho 0 (λ), independentemente do alfabeto!
29
Repetição
Exemplo 01
𝐿 = {p ∈ 0,1 𝑛 | 𝑛 ≤ 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”
𝐿 = 𝜆, 0, 1, 00, 01, 10, 11
30
Repetição
Exemplo 01
𝐿 = {p ∈ 0,1 𝑛 | 𝑛 ≤ 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”
𝐿 = 𝜆, 0, 1, 00, 01, 10, 11
Exemplo 02
𝐿 = {p ∈ 0,1 𝑛 | 𝑛 > 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., 𝐿 = ∞
31
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 O Fecho de Kleene, representado por “elevado a asterisco”, aplicado a um conjunto e significa “repetido
zero ou mais vezes”
𝐿∗ = ራ
𝑛 ∈ ℕ
𝐿𝑛
Exemplos:
▪ 𝐿 = 𝑠 ∗, ou seja, 𝐿 = {𝜆, 𝑠, 𝑠𝑠, 𝑠𝑠𝑠, 𝑠𝑠𝑠𝑠, 𝑠𝑠𝑠𝑠𝑠, … }
▪ 𝐿 = 𝑎, 𝑏, 𝑐 ∗, ou seja, 𝐿 = {p ∈ 𝑎, 𝑏, 𝑐 𝑛 | 𝑛 ≥ 0} ∴
𝐿 = 𝜆, 𝑎, 𝑏, 𝑐, 𝑎𝑎, 𝑎𝑏, 𝑎𝑐, 𝑏𝑎, 𝑏𝑏, 𝑏𝑐, 𝑐𝑎, 𝑐𝑏, 𝑐𝑐, 𝑎𝑎𝑎, 𝑎𝑎𝑏, …
o Ou seja, sequências arbitrárias de 0 e 11, logo, neste linguagem o 1 nunca aparece sozinho.
32
Fecho de Kleene
• É comum o Fecho de Kleene aplicado diretamente ao alfabeto 𝐿 = Σ∗
Significando “a linguagem contendo todas as palavras sobre o alfabeto Σ”
FECHO POSITIVO DE KLEENE
• O símbolos do fecho é “elevado a mais”;
• Se aplica a um conjunto repetido uma ou mais vezes o seu alfabeto;
𝐿+ = ራ
𝑛 ∈ ℕ − 0
𝐿𝑛
Exemplo:
▪ 𝐿 = 0 + ∴ 𝐿 = 0, 00, 000, 0000, 00000,…
▪ 𝐿 = 0,1 + ∴ 𝐿 = {p ∈ 0,1 𝑛 | 𝑛 ≥ 1} e 𝐿 = {p ∈ 0,1 𝑛 | 𝑛 > 0}
o é uma representação concisa do conjunto de números binários!
▪ 𝐿 = 0,11 + ∴ 𝐿 = 0, 11, 00, 011, 110, 1111, 000, 0011,…
▪ 𝐿 = 𝜆, 0,11 +] ∴ 𝐿 = 𝜆, 0, 11, 00, 011, 110, 1111, 000, 0011,…
33
Fecho de Kleene
Casos interessantes:
• 𝐿 = ∅, então 𝐿∗ = {𝜆}
• 𝐿 = ∅, então 𝐿+ = ∅
• 𝐿 = 𝜆 , então 𝐿∗ = 𝜆
• 𝐿 = 𝜆 , então 𝐿+ = 𝜆
Em gera,
• 𝜆 ∈ 𝐿, então 𝜆 ∈ 𝐿+, caso contrário 𝜆 não pertence a 𝐿+.
34
Concatenação
• A concatenação de duas palavras é a palavra formada pelos símbolos da primeira
palavra seguidos dos símbolos da segunda palavra.
o A concatenação de duas palavras p e q é escrita pq;
Exemplos:
▪ 𝑝 = 1 e 𝑞 = 0 ∴ 𝑝𝑞 = 10
▪ 𝑟 = 1101 e 𝑠 = 01 ∴ 𝑟𝑠 = 110101
▪ 𝑚 = 𝑝𝑎𝑙𝑎 e 𝑛 = 𝑣𝑟𝑎 ∴ 𝑚𝑛 = 𝑝𝑎𝑙𝑎𝑣𝑟𝑎
▪ 𝑎 = 𝑎𝑎𝑏𝑎 e 𝑏 = 𝜆 ∴ 𝑎𝑏 = 𝑎𝑎𝑏𝑎
▪ 𝑐 = 𝜆 e 𝑑 = 𝜆 ∴ 𝑐𝑑 = 𝜆
35
Concatenação
• Concatenação de duas linguagens 𝐿1 e 𝐿2 é alinguagem contendo todas as
concatenações de cada palavra de 𝐿1 com cada palavra de 𝐿2.
o 𝐿1𝐿2 = 𝑝1𝑝2 para cada 𝑝1 ∈ 𝐿1 e 𝑝2 ∈ 𝐿2
Exemplos:
▪ 𝐿1 = 𝑎, 𝑏, 𝑐 e 𝐿2 = 𝑥, 𝑦 ∴ 𝐿1𝐿2 = {𝑎𝑥, 𝑎𝑦, 𝑏𝑥, 𝑏𝑦, 𝑐𝑥, 𝑐𝑦}
▪ 𝐿1 = 0, 00 e 𝐿2 = 𝜆, 1 ∴ 𝐿1𝐿2 = 0, 01, 00, 001
▪ 𝐿1 = {𝜆, 0} e 𝐿2 = 𝜆, 0 ∴ 𝐿1𝐿2 = {𝜆, 0, 00}
▪ 𝐿1 = 0
∗ e 𝐿2 = 𝜆, 1 ∴ 𝐿1𝐿2 = 𝜆, 1, 0, 01, 00, 001,…
▪ 𝐿1 = 0
∗ e 𝐿2 = 1
∗ ∴ 𝐿1𝐿2 = ?
36
Concatenação
• Se uma das linguagens concatenadas for vazia, o resultado também é um conjunto
vazio!
Exemplos:
o 𝐿1 = 𝑎, 𝑏, 𝑐 e 𝐿2 = ∅, 𝐿1𝐿2 = ∅
o 𝐿1 = ∅ e 𝐿2 = 𝜆 , 𝐿1𝐿2 = ∅
o 𝐿1 = ∅ e 𝐿2 = 0,1 , 𝐿1𝐿2 = ∅
o 𝐿1 = ∅ e 𝐿2 = ∅, 𝐿1𝐿2 = ∅
Cuidado! A linguagem  é diferente da linguagem {λ}!
37
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)
Exemplos:
▪ 𝐿1 = 𝑎 𝑎, 𝑏
2
o Linguagem formada por duas vezes a concatenação 𝑎 𝑎, 𝑏 ∴ 𝐿2 = {𝑎𝑎𝑎𝑎, 𝑎𝑎𝑎𝑏, 𝑎𝑏𝑎𝑎, 𝑎𝑏𝑎𝑏}
▪ 𝐿2 = 𝑎 𝑏
0
o Linguagem formada por zero vezes a concatenação 𝑎 𝑏 ∴ 𝐿2 = {𝜆}
▪ 𝐿4 = 𝑎, 𝑏 𝑐, 𝑑
∗
o Linguagem formada pelo fecho de Kleene sobre a concatenação 𝑎, 𝑏 𝑐, 𝑑 ∴ 𝐿4 =
𝜆, 𝑎𝑐, 𝑎𝑑, 𝑏𝑐, 𝑏𝑑, 𝑎𝑐𝑎𝑐, 𝑎𝑐𝑎𝑑, 𝑎𝑐𝑏𝑐, 𝑎𝑐𝑏𝑑, 𝑎𝑑𝑎𝑐, …
o 𝐿4 = {𝑎𝑐, 𝑎𝑑, 𝑏𝑐, 𝑏𝑑} ∗
▪ 𝐿5 = 𝑎, 𝑏 𝑐, 𝑑
+ ∗
o 𝐿5 = {𝜆, 𝑎𝑐, 𝑎𝑑, 𝑎𝑐𝑐, 𝑎𝑐𝑑, … , 𝑏𝑐, 𝑏𝑑, 𝑏𝑐𝑐, 𝑏𝑐𝑑, … , 𝑎𝑐𝑎𝑐𝑐, 𝑎𝑐𝑎𝑐𝑑, 𝑎𝑐𝑎𝑐𝑐𝑐,… , 𝑎𝑐𝑐𝑎𝑐, 𝑎𝑐𝑐𝑎𝑑, 𝑎𝑐𝑐𝑎𝑐𝑐, … }
o Sempre há uma sequência de c’s e/ou d’s após cada a e cada b!
38
União
• União de duas linguagens 𝐿1 e 𝐿2 é a linguagem que contém todas as palavras de 𝐿1 e
𝐿2.
• A união é representada pelo operador ∪
Exemplos:
▪ 𝐿1 = 0, 1, 01 e 𝐿2 = 𝜆, 0, 11 ∴ 𝐿1 ∪ 𝐿2 = 𝜆, 0, 1, 01, 11
▪ 𝐿1 = 𝑎
+ e 𝐿2 = 𝜆 ∴ 𝐿1 ∪ 𝐿2 = 𝑎
∗
▪ 𝐿1 = 0, 1
∗ 0 e 𝐿2 = 0, 1
∗ 1 ∴ 𝐿1 ∪ 𝐿2 = 0, 1
+
39
Interseção
• Interseção de duas linguagens 𝐿1 e 𝐿2 é a linguagem que contém todas as palavras
comuns a 𝐿1 e 𝐿2.
• A interseção é representada pelo operador ∩
Exemplos:
▪ 𝐿1 = 𝜆, 0, 1, 01 e 𝐿2 = 𝜆, 1, 111 ∴ 𝐿1 ∩ 𝐿2 = 𝜆, 1
▪ 𝐿1 = 𝑎𝑎
+ e 𝐿2 = 𝑎
𝑛 | 𝑛 ≤ 5 ∴ 𝐿1 ∩ 𝐿2 = 𝑎𝑎, 𝑎𝑎𝑎𝑎
▪ 𝐿1 = 0, 1
∗ e 𝐿2 = 0
∗ 1 ∗ ∴ 𝐿1 ∩ 𝐿2 = 𝜆, 01
40
Diferença
• Diferença entre duas linguagens 𝐿1 e 𝐿2 é a linguagem que contém as palavras de 𝐿1
que não pertencem a 𝐿2.
• A diferença é representada pelo operador −
Exemplos:
▪ 𝐿1 = 𝜆, 0, 1, 01 e 𝐿2 = 𝜆, 1, 111 ∴ 𝐿1 − 𝐿2 = 0, 01
▪ 𝐿1 = 𝑎𝑎
+ e 𝐿2 = 𝑎
𝑛 | 𝑛 ≤ 5 ∴ 𝐿1 − 𝐿2 = 𝑎
𝑛 | 𝑛 > 5
▪ 𝐿1 = 10
∗ e 𝐿2 = 01
∗ ∴ 𝐿1 − 𝐿2 = 10
+
41
Complemento
• Complemento de uma linguagem 𝐿 é a linguagem que contém as palavras que não 
pertencem a 𝐿.
Σ∗ − 𝐿
• O complemento é representado por uma barra sobre a linguagem ത𝐿 = Σ∗ − 𝐿
Exemplos:
▪ Σ = 𝑎, 𝑏 e 𝐿 = 𝑎 ∗ → ത𝐿 = 𝑎, 𝑏 ∗ 𝑏 𝑎, 𝑏 ∗
▪ Σ = 𝑎, 𝑏 e 𝐿 = 𝑎 + → ത𝐿 = 𝑎, 𝑏 ∗ 𝑏 𝑎, 𝑏 ∗ ∪ 𝜆
▪ Σ = 0, 1 e 𝐿 = 0,1 ∗ 1 → ത𝐿 = 1 , 0 ∗ 0 ∪ 𝜆
42
Exercício
1. Formalize as linguagens abaixo:
a) Conjunto de todos os números binários com tamanho par e cujos dígitos nas posições pares são 
obrigatoriamente 0.
b) Conjunto de todos os números binários que contenham a sequência 0000.
c) Conjunto de todos os números binários que contenham a sequência 0000 pelo menos três vezes.
43
Exercício
1. Formalize as linguagens abaixo:
a) Conjunto de todos os números binários com tamanho par e cujos dígitos nas posições pares são 
obrigatoriamente 0.
𝐿 = 0,1 + 0
b) Conjunto de todos os números binários que contenham a sequência 0000.
𝐿 = 0,1 ∗ 0000 0,1 ∗
c) Conjunto de todos os números binários que contenham a sequência 0000 pelo menos três vezes.
𝐿 = 0,1 ∗ 0000 0,1 ∗ 0000 0,1 ∗ 0000 0,1 ∗
44
Exercício
2. Descreva mais formalmente as seguintes linguagens sobre o alfabeto 0, 1 :
a) o conjunto das palavras com, no mínimo, um 0;
b) o conjunto das palavras de tamanho ímpar;
c) o conjunto das palavras que não têm 00 como prefixo, mas têm 00 como sufixo;
d) o conjunto dos palíndromos que não tenham símbolos consecutivos idênticos;
e) o conjunto das palavras de tamanho par cuja primeira metade é idêntica à segunda;

Outros materiais

Outros materiais