Você está na página 1de 108

TEORIA DA COMPUTAÇÃO

Unidade 01 – Apresentação da Disciplina e


Introdução à Teoria da Computação

DIEGO KASUO NAKATA DA SILVA

1
Apresentação da Disciplina
• Teoria da Computação:
❑Carga Horária Total: 68 horas
❑Carga horária Semanal:

Dias da Semana Horário


Terça-feira 07:30h às 09:10h
Quarta-feira 09:20h às 11:00h

2
Apresentação da Disciplina
Objetivos
• Fornecer uma visão geral sobre as capacidades e limitações
fundamentais dos computadores e sobre os problemas que podem ou
não ser resolvidos computacionalmente.
• Compreender modelos computacionais, incluindo autômatos e a
máquina de Turing.

3
Apresentação da Disciplina

Ementa
• Autômatos e Linguagens Formais, Linguagens regulares.
• Linguagens livres de contexto.
• Modelos computacionais universais, Computabilidade, Máquina de
Turing, Variações da Máquina de Turing.

4
Apresentação da Disciplina
Material Didático
Básica:
SIPSER, Michael. Introdução à teoria da computação. 2.ed. São Paulo:
Thomson, 2007.
HOPCROFT, John E ; ULLMAN, Jeffrey D ; MOTWANI, Rajeev. Introdução à
teoria de autômatos, linguagens e computação. São Paulo: Campus, 2002.
LEWIS, Harry R. ; PAPADIMITRIOU, Christos H. Elementos de teoria da
computação. Bookman, 2004.
5
Apresentação da Disciplina
Material Didático
Complementar:
DIVERIO, Tiaraju Asmuz; MENEZES, Paulo Fernando Blauth. Teoria da
computação: máquinas universais e computabilidade. Bookman, 2008.
MENEZES, Paulo Fernando Blauth. Linguagens formais e autômatos.
Bookman, 1999.
BROOKSHEAR, J. Glenn ; PIVETA, Eduardo Kessler. Ciência da computação :
uma visão abrangente. Porto Alegre: Bookman, 2013.
6
Apresentação da Disciplina
Metodologia e Avaliação
Metodologia
• Aulas expositivas;
• Resolução de exercícios;
• Atividades individuais e coletivas.
Avaliação
• Prova escrita MP = ((P1+P2)/2);
• EXTRA: Frequência, participação em aula (FP) e realização das
atividades.
7
INTRODUÇÃO À TEORIA DA
COMPUTAÇÃO

8
Por que estudar Teoria da Computação?

O livro texto base enfoca três áreas tradicionalmente centrais da


teoria da computação: autômatos, computabilidade, e complexidade.

• “Quais são as capacidades e limitações fundamentais dos


computadores?”
• Começou nos anos 1930’s quando lógicos matemáticos começaram a
explorar o significado de computação.
9
Por que estudar Teoria da Computação?

• Entender sobre as formas elementares nas quais um computador


pode ser feito para pensar.
• Estabelece uma base sólida para muitas áreas abstratas da
computação.
• Tenta responder as seguintes questões:
➢ Quais são as propriedades matemáticas do hardware e software do
computador?
➢Quais são as limitações dos computadores? Pode-se calcular "tudo"? 10
Por que estudar Teoria da Computação?

• Tecnologias se tornam obsoletas mas Teorias permanecem para


sempre.
• Teoria da Computação provê ferramentas para resolver problemas
computacionais como expressões regulares para combinações de
padrões de strings.
• Estudar diferentes tipos de gramáticas ajuda em muitas outras áreas
como projeto de compiladores e processamento de linguagem
natural. 11
Teoria da Complexidade

• Classificar problemas de acordo com o seu grau de dificuldade.


• Dar uma prova rigorosa de que um problema que parece difícil, é
verdadeiramente difícil.
• Exemplos de problemas fáceis:
➢Converter um número decimal para sua representação binária (ou vice-versa).
➢Ordenar uma sequência de 1 milhão de números. (qualquer computador resolve)
➢Computar a forma mais rápida de dirigir de uma dado lugar para outro.
12
Teoria da Complexidade
• Exemplos de problemas difíceis:
➢Escalonar horários de aulas e salas de aulas de todos os cursos da universidade. (1000 aulas
pode levar séculos)
➢Fatorar um número inteiro de 300 dígitos em seus fatores primos.

• A questão central da teoria da complexidade é: “O que faz alguns


problemas computacionalmente difíceis e outros fáceis?”

13
Teoria da Complexidade
• Comparações entre o tempo de fatoração de números com muitos algarismos em
seus fatores primos, de tamanhos diferentes, quando realizadas pelos
computadores atuais e por algoritmos quânticos1.

14
Teoria da Complexidade
• o Frontier é o computador mais poderoso do mundo em
2023, com um poder de processamento de mais de 1,5
exaflops. Sua combinação única de processadores de
CPU e GPU e sua capacidade de usar IA o tornam
capaz de realizar cálculos complexos em uma variedade
de áreas. A competição por esse título continuará a
crescer à medida que a computação de alto
desempenho se torna cada vez mais importante. Esses
números tornam o Frontier a primeira máquina
efetivamente exascale da história (mais de 1,5 exaflops)
— já que é capaz de executar a marca de um
quintilhão* de cálculos por segundo.

* O número 1 000 000 000 000 000 000 = 1018, denominado trilião ou quintilhão, é o número natural que corresponde
à designação de "um milhão de milhões de milhões
15
Teoria da Complexidade
• Pode-se demonstrar, com um método, uma maneira de evidenciar de
que certos problemas são computacionalmente difíceis.
• Quando você se depara com um problema que parece ser
computacionalmente difícil, você pode:
➢Primeiro, dependendo do aspecto do problema, você pode ser capaz de alterá-lo de
modo que o problema seja mais facilmente solúvel.
➢Segundo, você pode ser capaz de se contentar com menos que uma solução perfeita.
➢Terceiro, alguns problemas são difíceis somente na situação do pior caso, porém fáceis
na maior parte do tempo. Dependendo da aplicação, você pode ficar satisfeito com um
procedimento que ocasionalmente é lento mas resolve.
16
➢Finalmente, você pode considerar tipos alternativos de computação.
Teoria da Complexidade
• Na maioria das áreas, um problema computacional fácil é
preferível a um difícil porque os fáceis são mais baratos de
resolver.
• Criptografia é incomum porque ela especificamente requer
problemas computacionais que sejam difíceis, ao invés de
fáceis, porque códigos secretos têm que ser difíceis de quebrar
sem a chave ou senha secreta.
• A teoria da complexidade tem mostrado aos criptógrafos o
caminho dos problemas computacionalmente difíceis em torno
dos quais eles têm projetado novos códigos revolucionários. 17
Teoria da Computabilidade

• Alan Turing delineou a ideia de computabilidade: "Existe alguma


coisa que não possa ser feita mecanicamente (sem intuição, sem
inteligência)?".
• Determinar se um enunciado matemático é verdadeiro ou falso.
• Desenvolvimento de ideias concernentes a modelos teóricos de
computadores.
• A computabilidade de um problema está ligada a existência de um
algoritmo que o resolva. 18
Teoria da Computabilidade
• Classificar problemas em resolvíveis (solúveis) e não resolvíveis
(insolúveis).
• Definições formais e rigorosa das noções de computador, algoritmo e
computação.
• Exemplo de problema sem solução:
➢Hipótese de Riemann (1943): existe uma regra capaz de dizer quantos números primos
existem (sequência que parece não ter lógica). Não se encontrou um meio de provar sua
correção senão submetendo cada número ao teste. Isso já foi feito com os primeiros 1,5
bilhão de números e continua correta, mas ainda é pouco para se provar que ela é
totalmente verdadeira. 19
Teoria dos Autômatos
• Lida com definições e propriedades de diferentes tipos de modelos
matemáticos de computação.
• Esses modelos desempenham um papel em diversas áreas aplicadas da
ciência da computação.
• Exemplo de modelos:
➢Autômatos finitos: modelo usado em processamento de texto, compiladores e projeto
de hardware.
➢Gramática livre de contexto: modelo usado em linguagens de programação e
inteligência artificial.
➢Máquina de Turing: modelo abstrato simples de um computador real como o que
utilizamos hoje em dia (nosso PC é uma máquina de Turing com memória limitada). 20
Relação entre as áreas da Teoria da Computação
Em resumo:
Na Teoria da Complexidade, o objetivo é classificar problemas como fáceis ou
difíceis, enquanto que na Teoria da Computabilidade a classificação de
problemas é por meio da separação entre os que são solúveis e os que não
são. Ambas requerem uma definição precisa de um computador.
A Teoria dos Autômatos permite praticar com definições formais de
computação pois ela introduz conceitos relevantes a áreas não teóricas da
computação.

• Faremos um estudo das duas últimas áreas, na ordem reversa.


Começaremos com Teoria dos Autômatos e seguiremos com Teoria da
Computabilidade. 21
Relação entre as áreas da Teoria da Computação

22
NOÇÕES E TERMINOLOGIA MATEMÁTICAS

23
Noções e Terminologias Matemáticas

• Conjuntos
• Sequências e Uplas
• Funções e Relações
• Grafos
• Cadeias e Linguagens
• Lógica Booleana
24
Noções e Terminologias Matemáticas

• Conjuntos
• Sequências e Uplas
• Funções e Relações
• Grafos
• Cadeias e Linguagens
• Lógica Booleana
25
Conjuntos

• Um conjunto é um grupo de objetos representado como uma


unidade.
• Os objetos em um conjunto são chamados elementos ou membros.

26
Conjuntos
• Descrição de conjuntos:
➢Listar elementos entre chaves: {λ, 30, @, {𝑎𝑏𝑎, 𝑏𝑏}}
➢Descrever com uma regra: 𝑛 𝑛 = 𝑚2 𝑝𝑎𝑟𝑎 𝑎𝑙𝑔𝑢𝑚 𝑚 ∈ 𝑁}
➢Usando diagrama de Venn:

27
Conjuntos
• Descrição de conjuntos:
➢A ordem de descrever um conjunto não importa, nem a repetição de seus membros.
{ 57, 7, 7, 7, 21 } = { 57, 7, 21 }.
➢Se desejamos levar em consideração o numero de ocorrências de membros chamamos
o grupo um multiconjunto ao invés de um conjunto. Logo { 7 } e { 7, 7 } são diferentes
como multiconjunto mas idênticos como conjuntos.

➢Um conjunto infinito contém uma quantidade infinita de elementos. O


conjunto de números naturais N, { 1, 2, 3, . . . }. O conjunto de inteiros Z,
escrito como { . . . , − 2, − 1, 0, 1, 2, . . . } .
➢O conjunto com 0 membros é chamado o conjunto vazio e é escrito ∅ . 28
Conjuntos
Relações e Operações sobre Conjuntos

1. Pertinência:
• Pertence a: 𝛼 ∈ {𝛼, 𝑏, 0}
• Não pertence a: 1 ∉ {𝛼, 𝑏, 0}

29
Conjuntos
Relações e Operações sobre Conjuntos
2. Inclusão:
• É subconjunto: {1,18} ⊂ {1,2,18}
• Não é subconjunto: {1,19} ⊄ {1,2,18}
• É superconjunto : {1,2,18} ⊃ {1,18}
• Não é superconjunto: {1,2,18} ⊉ {1,10}
• É subconjunto: {1,2,18} ⊆ {1,2,18}
• Não é subconjunto: {1,3,19} ⊈ {1,2,18}
• É superconjunto: {1,2,18} ⊇ {1,2,18}
30

• Não é superconjunto: {1,2,19} ⊉ {1,2,18}


Conjuntos
Relações e Operações sobre Conjuntos

• União: 1 ∪ 𝑞, 𝑤 = {1, 𝑞, 𝑤}
• Interseção: 1, 𝑞, 𝑤 ∩ 𝑞, 𝑤 = {𝑞, 𝑤}
• Complementar: 𝐴ҧ
• Diferença: 1, 2, 3 − 1 = {2, 3} ou 1, 2, 3 \ 1 = {2, 3}

31
Conjuntos – Exercício
Examine as descrições formais de conjuntos abaixo de modo que você
entenda quais membros eles contem. Escreva uma descrição informal
breve em português de cada conjunto.
1. {1, 3, 5, 7, … }
2. {… , −4, −2, 0, 2, 4, … }
3. 𝑛 𝑛 = 2𝑚 𝑝𝑎𝑟𝑎 𝑎𝑙𝑔𝑢𝑚 𝑚 ∈ ℕ}
4. 𝑛 𝑛 = 3𝑘 𝑝𝑎𝑟𝑎 𝑎𝑙𝑔𝑢𝑚 𝑘 ∈ ℕ}
5. 𝑛 é 𝑢𝑚 𝑖𝑛𝑡𝑒𝑖𝑟𝑜 𝑒 𝑛 = 𝑛 + 1}
32
Conjuntos – Exercício
Escreva descrições formais dos seguinte conjuntos:

1. O conjunto contendo os números 1, 10, e 100.


2. O conjunto contendo todos os inteiros que são maiores que 5.
3. O conjunto contendo todos os naturais que são menores que 5.

33
Conjuntos – Exercício
Seja 𝐴 = {𝑥, 𝑦, 𝑧} e 𝐵 = {𝑥, 𝑦}:

1. A é um subconjunto de B?
2. B é subconjunto de A?
3. Quem é A∪B ?
4. Quem é A∩B ?
5. Quem é o complementar de A em relação a B?
6. Quem é o complementar de B em relação a A?. 34
Sequências e Uplas

• Uma sequência de objetos é uma lista desses objetos na mesma


ordem.
• Em um conjunto a ordem e repetição não importam, mas em
sequências importam.
• Uplas são sequências finitas. Uma sequência com k elementos é uma
k-upla.

35
Sequências e Uplas
Exemplos:
• A sequência 7, 21, 57 pode ser escrita como uma k-upla
• (7, 21, 57) com 𝑘 = 3, ou seja 3 − 𝑢𝑝𝑙𝑎.
• (7, 21, 57) não é o mesmo que (7, 57, 21), e ambas são diferentes
de (7, 7, 21, 57).
• {7, 21, 57} é idêntico a {7, 7, 21, 57}.

36
Sequências e Uplas

• Conjuntos e sequências podem aparecer como elementos de outros


conjuntos e sequências.
• O conjunto das partes de um conjunto A é um conjunto de todos os
subconjuntos de A.

37
Sequências e Uplas

Exemplos:
Seja 𝐵 = {0, 1}
• O conjunto das partes de B é o conjunto {∅, 0 , 1 , {0, 1}}.
• O conjunto de todos os pares cujos elementos são 0s e 1s é
{ 0,0 , 0,1 , 1,0 , (1,1)}.

38
Sequências e Uplas

Se A e B são dois conjuntos, o produto cartesiano ou produto cruzado


de 𝐴 e 𝐵, escrito como 𝐴𝑥𝐵, é o conjunto de todos os pares nos quais o
primeiro elemento é membro de A e o segundo elemento é um membro
de B.

39
Sequências e Uplas
Exemplos:

Seja A = {1, 2} e 𝐵 = {𝑥, 𝑦, 𝑧}.


• 𝐴𝑥𝐵 = { 1, 𝑥 , 1, 𝑦 , 1, 𝑧 , 2, 𝑥 , 2, 𝑦 , (2, 𝑧)}.
• 𝐴𝑥𝐵𝑥𝐴 =
{ 1, 𝑥, 1 , 1, 𝑦, 1 , 1, 𝑧, 1 , 2, 𝑥, 1 , 2, 𝑦, 1 , 2, 𝑧, 1 ,
1, 𝑥, 2 , 1, 𝑦, 2 , 1, 𝑧, 2 , 2, 𝑥, 2 , 2, 𝑦, 2 , (2, 𝑧, 2)}

40
Funções e Relações
• Uma função ou mapeamento é um objeto que estabelece um
relacionamento entrada-saída.
• É um procedimento para computar uma saída a partir de uma
entrada especificada.
• Se f é uma função cujo valor de saída é b quando o valor de
entrada é a, escrevemos f(a) = b, onde f mapeia a para b.
• O conjunto das possíveis entradas para a função é chamado
domínio. As saídas da função vêm de um conjunto chamado
contradomínio. 41
Funções e Relações

• A notação 𝑓: 𝐷 → 𝐶 representa que "f é uma função com domínio em


𝐷 e contradomínio em 𝐶".
• Uma função pode não necessariamente usar todos os elementos do
contradomínio especificado.
• Uma função que usa todos os elementos do contradomínio é dita ser
sobre o contradomínio.

42
Funções e Relações
Exemplos:
• Função do valor absoluto: 𝑎𝑏𝑠 2 = 2 e 𝑎𝑏𝑠 −2 = 2.
• Na função 𝑎𝑏𝑠, se o domínio e o contradomínio é o conjunto ℤ, então
𝑎𝑏𝑠: ℤ → ℤ.
• Função da adição: 𝑎𝑑𝑑 2,3 = 5 e 𝑎𝑑𝑑 0, −2 = −2
• Na função 𝑎𝑑𝑑, o domínio é o conjunto de pares de inteiros ℤ𝑥ℤ e o
contradomínio é ℤ, então 𝑎𝑑𝑑: ℤ𝑥ℤ → ℤ.

43
Funções e Relações

• Quando o domínio de uma função 𝑓 é 𝐴1 × ⋯ × 𝐴𝑘 para alguns


conjuntos 𝐴1 , ⋯ , 𝐴𝑘 a entrada para 𝑓 é uma 𝑘 −
𝑢𝑝𝑙𝑎 (𝑎1 , 𝑎2 , ⋯ , 𝑎𝑘 ) e chamamos os 𝑎𝑖 de argumentos.
• Uma função com 𝑘 argumentos é chamada função 𝒌 − á𝒓𝒊𝒂, e 𝑘 é
dita a aridade da função. Se 𝑘 é 1, 𝑓 tem um único argumento e 𝑓 é
chamada uma função unária. Se 𝑘 é 2, 𝑓 é uma função binária.

44
Funções e Relações

• Funções binárias familiares são escritas em uma notação infixa


(símbolo da função entre argumentos) ao invés da notação prefixa
(símbolo da função precedendo os argumentos): 𝑎 + 𝑏 ao invés de
𝑎𝑑𝑑(𝑎, 𝑏), por exemplo.
• Um predicado ou propriedade é uma função cujo contradomínio é
{𝑇𝑅𝑈𝐸, 𝐹𝐴𝐿𝑆𝐸}. Ex.: 𝑝𝑎𝑟 5 = 𝐹𝐴𝐿𝑆𝐸.

45
Funções e Relações
Exemplo:
• Em um jogo infantil chamado Tesoura–Papel–Pedra, os dois jogadores escolhem simultaneamente
um membro do conjunto { TESOURA, PAPEL, PEDRA } e indicam suas escolhas com sinais de mão.
Se as duas escolhas são iguais, o jogo começa. Se as escolhas diferem, um jogador vence,
conforme a relação bate.

Dessa tabela determinamos que TESOURA bate PAPEL é VERDADEIRO e que PAPEL bate TESOURA
é FALSO. 46
Funções e Relações

Um tipo especial de relação binária é chamada um relação de


equivalência R se R satisfaz três condições:
• 1. 𝑅 é reflexiva se para todo 𝑥, 𝑥𝑅𝑥;
• 2. 𝑅 é simétrica se para todo 𝑥 e 𝑦, 𝑥𝑅𝑦 implica 𝑦R𝑥; e
• 3. 𝑅 é transitiva se para todo 𝑥, 𝑦, e 𝑧, 𝑥𝑅𝑦 e 𝑦R𝑧 implica 𝑥𝑅𝑧.

47
Grafos

• Um grafo não-direcionado, ou simplesmente um grafo (representado


por 𝐺 = (𝑉, 𝐸)) é um conjunto de pontos com linhas conectando
alguns dos pontos.
• Os pontos são chamados nós (vértices, V) e as linhas são arestas E.
• O número de arestas de um dado nó representa o grau desse nó.

48
Grafos
Exemplos:
• Na figura, o 𝐺 = (𝑉, 𝐸) tem 𝑉 = {𝐴, 𝐵, 𝐶, 𝐷} e
𝐸 = { 𝐴, 𝐵 , 𝐴, 𝐶 , 𝐵, 𝐷 , (𝐶, 𝐷)}.

Aqui, a ordem das coordenadas das arestas não importa.


*Grafos frequentemente são usados para representar dados. Nós podem ser cidades e arestas as 49

estradas que as conectam, ou nós podem ser componentes elétricas e arestas os fios entre elas
Grafos
Exemplos:
• Seja

• O número de arestas em um nó específico é o grau daquele nó. Na Figura


acima, (a) todos os nós têm grau 2. Na Figura (b) todos os nós têm grau 3.
50
• Não mais que uma aresta é permitida entre quaisquer dois nós.
Grafos
Exemplos:
• Seja

uma descrição formal do grafo na Figura (a) é


({ 1, 2, 3, 4, 5 } , { (1, 2), (2, 3), (3, 4), (4, 5), (5, 1) }
e uma descrição formal do grafo na Figura (b) é
({ 1, 2, 3, 4 } , { (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4) }).
51
Grafos
Definições:
• Grafos rotulados possui identificação em vértices e arestas.
• Um grafo G é um subgrafo de um grafo H se os nós de G formam um
subconjunto dos nós de H, e as arestas de G são as arestas de H
sobre os nós correspondentes.

52
Grafos
Definições:
• Um caminho em um grafo é uma sequência de nós conectados por
arestas.
• Um caminho simples é um caminho que não repete nenhum nó.
• Um grafo é conexo se cada dois nós têm um caminho entre eles.
• Um caminho é um ciclo se ele começa e termina no mesmo nó
• Um ciclo simples é aquele que contém pelo menos três nós e repete
somente o primeiro e último nós.
53
Grafos
Definições:
• Árvore é um grafo conexo sem ciclos.
• Raiz é o nó de origem da árvore
• Os nós de grau 1 em uma árvore, exceto a raiz, são chamados as folhas da
árvore.

54
Grafos
Definições:
• Um grafo com “setas” ao invés de linhas é um grafo direcionado.
• O número de setas apontando para um dado nó representa o grau de entrada.
• O número de setas apontando a partir de um dado nó representa o grau de saída.
• Um grafo no qual todas as setas apontam na mesma direção de seus passos é chamado um
caminho direcionado.

55
Grafos

Em um grafo direcionado representamos uma aresta de 𝑖 para 𝑗 como


um par (𝑖, 𝑗). A descrição formal de um grafo direcionado 𝐺 é (𝑉, 𝐸)
onde 𝑉 é o conjunto de nós e 𝐸 é o conjunto de arestas. A descrição
formal do grafo acima é
56

( {1,2,3,4,5,6 } , { (1,2), (1,5), (2,1), (2,4), (5,4), (5,6), (6,1), (6,3) } )


Cadeias e Linguagens

• Alfabeto é um conjunto finito de caracteres usados na escrita de uma


linguagem.
• Os membros do alfabeto são os símbolos (caracteres) do alfabeto.
• Geralmente usamos letras gregas maiúsculas Σ 𝑒 Γ para designar
alfabetos.
• Também usamos as letras minúsculas do nosso alfabeto para
representar os símbolos.
57
Cadeias e Linguagens

Exemplos:
• Σ1 = 0, 1 .
• Σ2 = 𝑎, 𝑏, 𝑐, 𝑑, 𝑒, 𝑓, 𝑔, ℎ, 𝑖, 𝑗, 𝑘, 𝑙, 𝑚, 𝑛, 𝑜, 𝑝, 𝑞, 𝑟, 𝑠, 𝑡, 𝑢, 𝑣, 𝑤, 𝑥, 𝑦, 𝑧 .
• Γ = 0, 1, 𝑥, 𝑦, 𝑧 .

58
Cadeias e Linguagens
• Uma cadeia sobre um alfabeto (palavra) é uma sequência de símbolos
daquele alfabeto, usualmente escrito um seguido do outro e não separados
por vírgulas.
• O comprimento de uma cadeia é o número de símbolos que ela contém.
Se 𝑤 é uma cadeia, então seu comprimento é representado por 𝑤 .
• Uma cadeia vazia é uma cadeia de comprimento zero, e é representada
por 𝜀 (Épsilon). Uma cadeia sem símbolos é uma cadeia válida.
• O reverso de uma cadeia é essa cadeia escrita na ordem inversa, é
representado por 𝑤 𝑅
59
Cadeias e Linguagens
Exemplos:
• Σ1 = 0, 1 pode gerar a cadeia 𝑤 = 01001.
• O comprimento de 𝑤 é 5, isto é, 𝑤 = 5
• 𝑤 𝑅 = 10010

60
Cadeias e Linguagens
• A cadeia 𝑧 é uma subcadeia de 𝑤 se 𝑧 aparece consecutivamente dentro
de 𝑤. Por exemplo, cad é uma subcadeia de abracadabra.
• Se temos a cadeia 𝑥 de comprimento 𝑚 e a cadeia 𝑦 de comprimento 𝑛, a
concatenação de 𝑥 e 𝑦, é escrito x𝑦. Ao concatenar uma cadeia em si
própria podemos usar notação de expoente.
• A ordenação lexicográfica de cadeias é a mesma que a ordenação
familiar do dicionário, exceto que cadeias mais curtas precedem cadeias
mais longas. Por exemplo, a ordenação lexicográfica de todas as cadeias
sobre o alfabeto { 0,1 } é: (ε, 0, 1, 00, 01, 10, 11, 000, . . .).
• Uma linguagem é um conjunto de cadeias. 61
Cadeias e Linguagens
Exemplos:
• 𝑤 = 01001 é uma cadeia, e 𝑧 = 100 é a subcadeia de 𝑤.
• Se 𝑦 = 𝑐𝑐𝑐𝑑𝑎 é uma cadeia, então 𝑧𝑦 = 100𝑐𝑐𝑐𝑑𝑎 é uma cadeia
concatenada.
• 𝑤1 = 𝑎𝑎𝑎 e 𝑤2 = 𝑎𝑎, então 𝑤1 + 𝑤2 = 𝑎5 .

62
Cadeias e Linguagens

A operação de concatenação satisfaz às seguintes propriedades:


➢Associativa: 𝑣 𝑤𝑡 = 𝑣𝑤 𝑡.
➢Elemento neutro: 𝜀 𝑤 = 𝑤 = 𝑤𝜀

Em todos os casos os parênteses podem ser omitidos.

63
Cadeias e Linguagens

• Se Σ representa um alfabeto, então Σ ∗ denota o conjunto de todas as


palavras possíveis sobre Σ, e Σ + denota Σ ∗ − {𝜀}.
• Um prefixo (respectivamente, sufixo) de uma cadeia/palavra é
qualquer sequência inicial (respectivamente, final) de símbolos dessa
cadeia.

64
Cadeias e Linguagens
Exemplos:
• Se Σ = {𝑎, 𝑏}, então Σ ∗ = 𝜀, 𝑎, 𝑏, 𝑎𝑎, 𝑎𝑏, 𝑏𝑎, 𝑏𝑏, 𝑎𝑎𝑎, ⋯ .
• Σ + = 𝑎, 𝑏, 𝑎𝑎, 𝑎𝑏, 𝑏𝑎, 𝑏𝑏, 𝑎𝑎𝑎, ⋯ .

65
Lógica Booleana
• Lógica booleana é um sistema matemático construído em torno de dois
valores: verdadeiro e falso.

• Os valores verdadeiro e falso são chamados os valores booleanos.


• Podemos manipular valores booleanos com operações especialmente
desenhadas, chamadas as operações booleanas.
• As operações booleanas básicas são a negação (¬, ~), conjunção
(∧, 𝑬) e disjunção ∨, 𝑶𝑼 .
66
Lógica Booleana
Exemplos:
• ¬0 = 1 e ¬1 = 0
• 0∧0 = 0, 0∧1 = 0, 1∧0 = 0 e 1∧1 = 1
• 0∨0 = 0, 0∨1 = 1, 1∨0 = 1 e 1∨1 = 1

67
Lógica Booleana
• A operação de ou exclusivo ou XOR é designada por ⊕ (oplus). Se
entre dois operadores um deles for igual a 1, então o resultado é 1.
• A operação de igualdade, escrita com o símbolo ↔, é 1 se o seus
dois operandos são iguais.
• A operação de implicação, escrita com o símbolo →, é 0 se seu
primeiro operando é 1 e se seu segundo operando é 0; caso
contrário é 1.

68
Lógica Booleana

Exemplos:
• 0⊕0 = 0, 0⊕1 = 1, 1⊕0 = 1 e 1⊕1 = 0
• 0↔0 = 1, 0↔1 = 0, 1↔0 = 0 e 1↔1 = 1
• 0→0 = 1, 0→1 = 1, 1→0 = 0 e 1→1 = 1

69
Lógica Booleana

• A lei distributiva para E e OU permite manipulação de expressões


booleanas, similar ao que é feito em adições e multiplicações.
Exemplos:
• P ∧ (Q ∨ R) = (P ∧ Q) ∨ (P ∧ R)
• P ∨ (Q ∧ R) = (P ∨ Q) ∧ (P ∨ R)

70
Lógica Booleana
• Proposição ou sentença é toda declaração que pode ser classificada
como Verdadeira ou falsa.
• Tal declaração deve conter sujeito e predicado, ter apenas um entre
os dois valores lógicos e ser declarativa (não ser exclamativa nem
interrogativa).
Exemplos:
➢Nove é diferente de cinco. (9 ≠ 5)
➢Três é divisor de onze. (3|11)
➢Dois é um número inteiro. (2 ∈ ℤ) 71
Lógica Booleana
• Sentenças abertas são sentenças que contêm variáveis e cujo valor
lógico (Verdadeira ou falsa) vai depender do valor atribuído à
variável.
• Há duas maneiras de transformar sentenças abertas em proposições:
(i) atribuir valor às variáveis; e (ii) utilizar quantificadores;
• O quantificador universal é indicado pelo símbolo ∀ e lido como
"qualquer que seja", "para todo", "para cada".
• O quantificador existencial é indicado pelo símbolo ∃ e lido como
"existe", "existe pelo menos um", "existe um". 72
Lógica Booleana
Exemplos:
•x+1=7
• (∀x)(x +1 = 7), "qualquer que seja x, temos x +1 = 7"
• (∃x)(x +1 = 7), "existe um número x, tal que x +1 = 7"

73
Lógica Booleana
• Uma sentença quantificada com um quantificador universal, do tipo
(∀x)(p(x)), é negada substituindo-se o quantificador pelo existencial
e negando-se p(x), ou seja, (∃x)(¬p(x)).
• Uma sentença quantificada com um quantificador existencial, do tipo
(∃x)(p(x)), é negada substituindo-se o quantificador pelo universal e
negando-se p(x), ou seja, (∀x)(¬p(x)).
Exemplos:
➢Sentença: (∀𝑥)(𝑥 + 3 = 5); negação: (∃𝑥)(𝑥 + 3 ≠ 5)
➢Sentença: (∃𝑥)(𝑥 + 1 = 7); negação: (∀𝑥)(𝑥 + 1 ≠ 7) 74
DEFINIÇÕES, TEOREMAS E
PROVAS

75
Definições, Teoremas e Provas
• Definições descrevem os objetos e noções que usamos. Precisão é
essencial. É preciso deixar claro o que constitui o objeto e o que não
constitui.
• Após termos definido vários objetos e noções, usualmente fazemos
enunciados matemáticos sobre eles para expressar suas propriedades.
Exemplos:
➢Definição: Um inteiro é considerado par se é divisível por 2.
➢Enunciado: Para todo grafo G, a soma dos graus de todos os nós em
G é um número par. 76
Definições, Teoremas e Provas

• Enunciados podem ser verdadeiros ou falsos. Prova é um argumento


lógico de que o enunciado é verdadeiro em sentido absoluto.
• Um teorema é um enunciado matemático demonstrado como
verdadeiro. São enunciados de interesse especial.
• Um Lema é um teorema que ajuda na prova de outro teorema.
• Corolários são teoremas ou sua prova rápida que ajudam a concluir
facilmente que outros enunciados relacionados são verdadeiros.
77
Definições, Teoremas e Provas
Exemplos:

• Teorema: Se 𝑎 e 𝑏 são os comprimentos dos catetos de um


triângulo retângulo e 𝑐 é o comprimento da hipotenusa,
então 𝑎2 + 𝑏 2 = 𝑐 2 .

78
Definições, Teoremas e Provas
• Uma prova é uma argumentação que mostra, de maneira indiscutível,
que uma afirmação é verdadeira. É convincente em um sentido
absoluto.
• A ´única maneira de determinar a veracidade ou a falsidade de um
enunciado matemático é com uma prova matemática.
• Tipos mais frequentes de enunciados ocorrem na forma “P se e
somente se Q” (P sse Q) ou P↔Q, que significa um enunciado de duas
partes:
➢Direção de ida: “P somente se Q” ou P → Q
➢Direção reversa: “P se Q” ou P ← Q
79
Definições, Teoremas e Provas
• Um outro tipo de enunciado de múltiplas partes afirma que dois
conjuntos A e B são iguais. Para provar que dois conjuntos são iguais,
demonstre que todos os membros de um também é um membro do
outro.
• Experimentar com exemplos é especialmente útil. Se o enunciado diz
que todos os objetos de um certo tipo têm uma propriedade
específica, escolha uns poucos objetos daquele tipo e observe que
eles na realidade têm mesmo aquela propriedade.
• Contra-exemplos são usados para demonstrar que algum objeto rompe 80

com as propriedades enunciadas como válidas.


Definições, Teoremas e Provas

Exemplo 1: Provar o enunciado: "para todo grafo G, a soma dos graus


de todos os nós em G é um número par".

81
Definições, Teoremas e Provas

Exemplo 1: Provar o enunciado: "para todo grafo G, a soma dos graus


de todos os nós em G é um número par".

Como provar??

82
Definições, Teoremas e Provas

• Uma prova bem-escrita é uma sequencia de enunciados.


• Escrever uma prova é importante, tanto para permitir que um leitor a
entenda quanto para você ter certeza de que ela está livre de erros.

83
Definições, Teoremas e Provas
Dicas para se produzir uma prova:

• Seja paciente. Encontrar provas leva tempo. Pesquisadores às vezes


trabalham por semanas ou até anos para encontrar uma única prova.
• Volte a ela. Dê uma olhada no enunciado que você quer provar,
pense nele um pouco, então retorne uns poucos minutos ou horas mais
tarde. Deixe a parte inconsciente, intuitiva de sua mente ter uma
chance de trabalhar.
84
Definições, Teoremas e Provas
Dicas para se produzir uma prova:
• Seja claro. Quando você está construindo sua intuição para o
enunciado que você está tentando provar, use figuras e/ou textos
simples, claros. Além disso, quando você está escrevendo uma solução
para uma outra pessoa ler, a clareza ajudará aquela pessoa a
entendê-la.
• Seja conciso. Brevidade ajuda a você a expressar ideias de alto nível
sem se perder em detalhes.
85
Definições, Teoremas e Provas
Exemplo 1: Provar o enunciado: "para todo grafo G, a soma dos graus
de todos os nós em G é um número par".

Toda aresta em G está conectada a dois nós. Cada aresta aumenta


em uma unidade o grau de cada nó ao qual ela está conectada.
Portanto, cada aresta contribui com 2 para a soma dos graus de
todos os nós. Logo, se G tem 𝑒 arestas, então a soma dos graus de
todos os nós de G é 2𝑒, que é um número par.
86
Definições, Teoremas e Provas
Exemplo 2: Provar uma das leis de DeMorgan: "para quaisquer dois
conjuntos 𝐴 e 𝐵, 𝐴 ∪ 𝐵 = 𝐴ҧ ∩ 𝐵”.

• Suponha que 𝑥 seja um elemento de 𝐴 ∪ 𝐵. Então x não está em 𝐴 ∪ 𝐵 da


definição do complemento de um conjunto, ou seja, não está em A nem em
B. Em outras palavras, 𝑥 está em 𝐴ҧ e em 𝐵. ത Logo, a definição da
intersecção de dois conjuntos mostra que 𝑥 está em 𝐴ҧ ∩ 𝐵.

87
Definições, Teoremas e Provas
Exemplo 2: Provar uma das leis de DeMorgan: "para quaisquer dois
conjuntos 𝐴 e 𝐵, 𝐴 ∪ 𝐵 = 𝐴ҧ ∩ 𝐵”.

• Para a outra direção, suponha que x esteja em 𝐴ҧ ∩ 𝐵. ത Então 𝑥 está em


ambos 𝐴ҧ e 𝐵.
ത Consequentemente, 𝑥 não está em 𝐴 nem em 𝐵, e portanto
não está na união de dois conjuntos. Logo, 𝑥 está no complemento da união
desses dois conjuntos, isto é, 𝑥 está em 𝐴 ∪ 𝐵, o que complementa a prova
do teorema.

88
Definições, Teoremas e Provas
Tipos de provas:

1. Prova por construção


2. Prova por contradição
3. Prova por indução

89
Definições, Teoremas e Provas
Tipos de provas:
1. Prova por construção: Para teoremas que enunciam que
um objeto existe, demonstramos como construir esse objeto.
2. Prova por contradição: Assumimos que o teorema é falso e
mostramos que essa suposição leva a uma consequência
falsa.
3. Prova por indução: Demonstra que o teorema é correto
em todos os passos ou para todas as entradas. 90
Tipos de Provas: Prova por construção
Exemplo 3: Para cada número par 𝑛 maior que 2, existe um
grafo 3-regular com 𝑛 nós.

91
Tipos de Provas: Prova por construção
Exemplo 3: Para cada número par 𝑛 maior que 2, existe um
grafo 3-regular com 𝑛 nós.
• Seja 𝑛 > 2. Construa o grafo 𝐺 = (𝑉, 𝐸), com 𝑉 = 𝑛 nós. Seja 𝑉 =
0, 1, ⋯ , 𝑛 − 1 , e 𝐸 = 𝑖, 𝑖 + 1 0 ≤ 𝑖 ≤ 𝑛 − 2} ∪ {{𝑛 − 1, 0}} ∪
𝑛
{{𝑖, 𝑖 + 𝑛/2}| 0 ≤ 𝑖 ≤ − 1} . Desenhe os nós desse grafo escritos
2
consecutivamente ao redor da circunferência de um círculo. Nesse caso, as
arestas descritas na linha superior de E ligam pares adjacentes ao longo
do círculo. As arestas descritas na linha inferior de E ligam nós em lados
opostos do círculo. Dessa forma fica demonstrado que todo nó em G tem
92

grau 3.
Tipos de Provas: Prova por contradição

Jack vê Jill, que acaba de chegar da rua. Observando que


ela está completamente enxuta, ele sabe que não está
chovendo. Sua “prova” de que não está chovendo é que, se
estivesse chovendo (a suposição de que o enunciado é falso),
Jill estaria molhada (a consequência obviamente falsa).
Portanto não pode estar chovendo.
93
Tipos de Provas: Prova por contradição
Exemplo 4: 2 é irracional.

94
Tipos de Provas: Prova por contradição
Exemplo 4: 2 é irracional.

(Parte 1): Primeiramente, vamos supor que 2 é racional. Assim,


𝑚
2= , onde 𝑚 e 𝑛 são inteiros.
𝑛
Se 𝑚 e 𝑛 são divisíveis pelo mesmo inteiro maior que 1, divida
ambos por esse inteiro. Fazer isso não muda o valor da fração.

95
Tipos de Provas: Prova por contradição
Exemplo 4: 2 é irracional.
(Parte 2): Agora, pelo menos um, dentre 𝑚 e 𝑛, não é par. Multiplicamos
ambos os lados por 𝑛 e obtemos 𝑛 2 = 𝑚. Elevando ambos os lados ao
quadrado temos 2𝑛2 = 𝑚2 . Em virtude de 𝑚2 ser 2 vezes o inteiro 𝑛2 ,
sabemos que 𝑚2 é par. Assim, 𝑚 também é par, pois o quadrado de um
número ímpar é sempre ímpar. Portanto, podemos escrever 𝑚 = 2𝑘 para
algum inteiro 𝑘. Então, substituindo 𝑚 por 2𝑘, obtemos 2𝑛2 = (2𝑘)2 = 4𝑘 2 .
Dividindo ambos os lados por 2 obtemos 𝑛2 = 2𝑘 2 . Mas esse resultado
mostra que 𝑛2 é par e, assim, 𝑛 é par. Dessa forma, estabelecemos que
tanto 𝑚 quanto 𝑛 são pares. Mas tínhamos reduzido 𝑚 e 𝑛 de modo que
não fossem pares, o que é uma contradição. 96
Tipos de Provas: Prova por indução
• Na linguagem usual, indução se refere à extração de conclusões gerais ao
se examinar vários fatos particulares.
• Prova por indução é um método avançado usado para mostrar que todos
os elementos de um conjunto infinito têm uma propriedade especificada.
• Usamos rotineiramente para mostrar que um programa funciona
corretamente em todos os passos ou para todas as entradas.

97
Tipos de Provas: Prova por indução
• Toda prova por indução consiste de duas partes, o passo da indução e a
base.
• Prova por indução = Base de indução (B.I) + passo de indução (P.I.)
• Passo de indução começa com uma hipótese de indução (H.I.)
• Base de indução: P(1) é verdadeira
• Passo de indução:
➢Hipótese de indução: Supor que 𝑃(𝑖) é verdadeira, ∀𝑖 ≥ 1.
➢Passo: Se 𝑃(𝑖) é verdadeiro, provar que 𝑃(𝑖 + 1) é verdadeiro.
98
Tipos de Provas: Prova por indução
Exemplo 5: Provar por indução a correção da fórmula usada para calcular
as prestações mensais da casa própria. Ao comprar uma casa, muitas
pessoas tomam algum dinheiro emprestado (financiamento) e o pagam
durante alguns anos. Uma quantidade fixa é paga a cada mês para cobrir
os juros, assim como uma parte do montante original.

𝑡
𝑡
𝑀 −1
𝑃𝑡 = 𝑃𝑀 − 𝑌 , ∀𝑡 ≥ 0
𝑀−1

99
Tipos de Provas: Prova por indução
Exemplo 5: Provar por indução a correção da fórmula usada para calcular
as prestações mensais da casa própria. Ao comprar uma casa, muitas
pessoas tomam algum dinheiro emprestado (financiamento) e o pagam
durante alguns anos. Uma quantidade fixa é paga a cada mês para cobrir
os juros, assim como uma parte do montante original.
Passos da solução
• Nomes e significados das variáveis
• Acontecimento mês a mês
• Prova
100
Tipos de Provas: Prova por indução
Passos da solução
• Nomes e significados das variáveis:
➢P: principal (montante do empréstimo)
➢I: taxa de juros anual (I = 6% = 0.06)
➢Y : pagamento mensal
𝐼
➢M: multiplicador mensal (taxa de mudança do valor mensal) sendo 𝑀 = 1 + .
12
• Acontecimento mês a mês:
(a) Montante do empréstimo (P) cresce devido ao multiplicador mensal (M)
(b) Montante (P) tende a diminuir devido ao pagamento mensal (Y )
• Prova 101
Tipos de Provas: Prova por indução

Seja 𝑃𝑡 o montante restante do empréstimo após o 𝑡 − é𝑠𝑖𝑚𝑜 mês. Então:


• 𝑃0 = 𝑃 montante do empréstimo original.
• 𝑃1 = 𝑀𝑃0 − 𝑌 montante do empréstimo após 1 mês.
• 𝑃2 = 𝑀𝑃1 − 𝑌 montante do empréstimo após 2 meses.
•⋯
• Vamos provar um teorema por indução sobre 𝒕 que dá uma fórmula
para 𝑃𝑡 .
102
Tipos de Provas: Prova por indução
Fórmula:
𝑡
𝑡
𝑀 −1
𝑃𝑡 = 𝑃𝑀 − 𝑌 , ∀𝑡 ≥ 0
𝑀−1
Base da indução
Caso base: Provar que a fórmula é verdadeira para 𝑡 = 0.
0
0
𝑀 −1
𝑃0 = 𝑃𝑀 − 𝑌
𝑀−1
Com isso, obtemos:
𝑃0 = 𝑃
103

𝑃0 = 𝑃 é verificável, portanto a indução é verdadeira.


Tipos de Provas: Prova por indução
Passo da indução:
Hipótese da indução: Para 𝑘 ≥ 0, suponha que a fórmula abaixo seja
verdadeira
𝑘
𝑘
𝑀 −1
𝑃𝑘 = 𝑃𝑀 − 𝑌
𝑀−1
Provar que a fórmula é verdadeira para 𝑡 = 𝑘 + 1.
𝑘+1
𝑘+1
𝑀 −1
𝑃𝑘+1 = 𝑃𝑀 −𝑌
𝑀−1
104
Tipos de Provas: Prova por indução

Da definição de 𝑃𝑘+1 a partir de 𝑃𝑘 , sabemos que:


𝑃𝑘+1 = 𝑃𝑘 𝑀 − 𝑌
Usando a hipótese de indução para calcular 𝑃𝑘 ,
𝑘
𝑘
𝑀 −1
𝑃𝑘+1 = 𝑃𝑀 − 𝑌 𝑀−𝑌
𝑀−1

105
Tipos de Provas: Prova por indução
Distribuindo 𝑀 e reescrevendo 𝑌 temos:
𝑘−1
𝑀 𝑀−1
𝑃𝑘+1 = 𝑃𝑀𝑘+1 − 𝑌𝑀 −𝑌
𝑀−1 𝑀−1
Logo,
(𝑀𝑘+1 −𝑀) 𝑀−1
𝑃𝑘+1 = 𝑃𝑀𝑘+1 − 𝑌 𝑀−1 −𝑌 𝑀−1

𝑀 𝑘+1 − 𝑀 + 𝑀 − 1
= 𝑃𝑀𝑘+1 − 𝑌
𝑀−1
𝑘+1 − 1
𝑀
= 𝑃𝑀𝑘+1 − 𝑌
𝑀−1
106

Portanto, a fórmula é verdadeira para 𝑡 = 𝑘 + 1, o que prova o teorema.


Tipos de Provas: Prova por indução
Exercícios:
1. Use a equação anterior para derivar uma fórmula para calcular o tamanho do
pagamento mensal para uma amortização em termos do principal 𝑃, taxa de
juros I, e o número de pagamentos 𝑡. Assuma que, após 𝑡 pagamentos tiverem
sido feitos, o montante do empréstimo é reduzido a 0. Use a fórmula para
calcular o montante em dólares de cada pagamento mensal para uma
amortização de 30-anos com 360 pagamentos mensais sobre um montante de
empréstimo inicial de $100.000 com uma taxa anual de juros de 5%.

107
Tipos de Provas: Prova por indução
Exercícios:
2. Encontre o erro na seguinte prova de que 2 = 1.
Considere a equação 𝑎 = 𝑏. Multiplique ambos os lados por 𝑎 para obter
𝑎2 = 𝑎𝑏. Subtraia 𝑏 2 de ambos os lados para obter 𝑎2 − 𝑏 2 = 𝑎𝑏 − 𝑏 2 .
Agora fatore cada lado, 𝑎 + 𝑏 𝑎 − 𝑏 = 𝑏(𝑎 − 𝑏), e divida cada lado por
(𝑎 − 𝑏), para chegar em 𝑎 + 𝑏 = 𝑏. Finalmente, faça 𝑎 e 𝑏 b iguais a 1, o
que mostra que 2 = 1.

108

Você também pode gostar