Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ELEMENTOS DE
MATEMÁTICA DISCRETA
Manual Teórico – Prático
Sergey LABÓVSKIY
Introdução
A investigação de diferentes problemas em ciência acha a sua reflexão em cons-
trução de diferentes modelos matemáticos. Em física e engenharia usam-se
diferentes modelos de análise matemática. Mas desenvolvimento de informática
precisa de modelos matemáticos de outra natureza. A distinção principal con-
siste no seguinte: o objectivo de Análise Matemática é investigação de processos
contínuos, mas informática estuda processos discretos. Um processo discreto é
resultado de realização de um algoritmo. Investigação de algoritmos é o assunto
principal da Matemática Discreta.
Tanto Matemática Discreta como Análise Matemática têm na sua base Te-
oria de conjuntos, Lógica matemática e teoria de algoritmos, Álgebra abstracta.
Por causa de natureza de conjuntos discretos o capítulo Análise combinatória
faz uma parte importante de Matemática Discreta.
Neste manual são apresentados elementos dos tópicos principais de Matemá-
tica Discreta:
• teoria de conjuntos
• análise combinatória
• indução e recursividade
3
4 CONTEÚDO
4 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3 Indução, Algoritmos 35
1 Indução matemática . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.1 Introdução. Exemplo . . . . . . . . . . . . . . . . . . . . . 35
1.2 Princípio da indução matemática . . . . . . . . . . . . . . 36
1.3 O princípio fraco de indução matemática . . . . . . . . . 38
1.4 Princípio de escolha de mínimo elemento . . . . . . . . . . 39
2 Definições recursivas . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.1 Descrição do problema . . . . . . . . . . . . . . . . . . . . 39
2.2 Definição recursiva . . . . . . . . . . . . . . . . . . . . . . 40
2.3 Extensão de domínio . . . . . . . . . . . . . . . . . . . . . 41
2.4 Cálculo iterativo. Algoritmos . . . . . . . . . . . . . . . . 41
2.5 Cálculo recursivo . . . . . . . . . . . . . . . . . . . . . . . 42
2.6 Relações recorrentes lineares . . . . . . . . . . . . . . . . 43
3 Definição recursiva e indução matemática . . . . . . . . . . . . . 44
3.1 Demonstração de proposições . . . . . . . . . . . . . . . . 44
3.2 Indução com base de vários elementos . . . . . . . . . . . 44
4 Algoritmos cíclicos . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.1 Ciclo infinito. Estado . . . . . . . . . . . . . . . . . . . . 46
4.2 Ciclo com pre-condição . . . . . . . . . . . . . . . . . . . 47
4.3 Invariante de ciclo . . . . . . . . . . . . . . . . . . . . . . 48
4.4 Invariante de ciclo com pre-condição . . . . . . . . . . . . 49
4.5 Algoritmo de divisão inteira . . . . . . . . . . . . . . . . . 50
4.6 Demonstração que o ciclo termina . . . . . . . . . . . . . 51
4.7 Algoritmo de Euclid . . . . . . . . . . . . . . . . . . . . . 51
4.8 Equação em números inteiros . . . . . . . . . . . . . . . . 52
4.9 Formação de um algoritmo cíclico . . . . . . . . . . . . . 54
5 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.1 Indução matemática . . . . . . . . . . . . . . . . . . . . . 55
5.2 Definições recursivas . . . . . . . . . . . . . . . . . . . . . 57
5.3 Algoritmos cíclicos . . . . . . . . . . . . . . . . . . . . . . 60
5.4 Formação de algoritmo . . . . . . . . . . . . . . . . . . . . 62
5 Ordenação de um vector 83
1 Procura binária em vector ordenado . . . . . . . . . . . . . . . . 83
2 Ordenação de um vector. Complexidade espacial . . . . . . . . . 84
2.1 Ordenação por união (merge sort) . . . . . . . . . . . . . 84
2.2 Quicksort . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
2.3 Avaliação de complexidade de ordenação . . . . . . . . . . 87
3 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6 Recursividade geral 88
1 Conceito geral da definição recursiva . . . . . . . . . . . . . . . . 88
1.1 Exemplos preliminares . . . . . . . . . . . . . . . . . . . . 88
1.2 Definição recursiva de um conjunto . . . . . . . . . . . . . 90
1.3 Forma inversa. Definições determinadas unicamente . . . 91
1.4 Princípio generalizado da indução matemática . . . . . . 93
1.5 Funções sobre conjuntos dados recursivamente . . . . . . 95
1.6 Árvores binárias e árvores com raízes . . . . . . . . . . . . 97
2 Algoritmos recursivos . . . . . . . . . . . . . . . . . . . . . . . . 101
2.1 Calculo de funções dadas recursivamente . . . . . . . . . . 102
2.2 Prova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
2.3 Percurso dos elementos de um conjunto . . . . . . . . . . 107
3 Questões principais . . . . . . . . . . . . . . . . . . . . . . . . . . 109
4 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Este capitulo serve como uma introdução. Os objectivos desta introdução são
conceitos principais da disciplina. Tanto em álgebra, geometria e análise como
em matemática discreta o conceito de conjunto forma uma base para todos os
passos em criação da teoria. Mas existe uma distinção principal entre conjuntos
que considera Análise Matemática e conjuntos que são objectos de Matemática
Discreta. Quase sempre serão considerados conjuntos finitos. Os conjuntos
infinitos tais como o conjunto de todos os números naturais N = {1, 2, . . .}
também têm estrutura discreta. Deixemos sem atenção a questão sobre definição
rigorosa de um conjunto discreto.
Neste capítulo serão considerados os tópicos principais da teoria de conjuntos
e funções, relações e grafos, conceito informal de algoritmo e sua complexidade.
1 Conjuntos
1.1 Métodos de representação de conjuntos
Lista
O primeiro método para determinar um conjunto é formar uma lista de todos
os elementos
A = {2, 4, 6, 8, 10}, B = {a, b, c}, C = {(1, 2), (5, −1), (30, 0), (0, 0), (−13, 8)}.
O conjunto B contem os 3 objectos, o conjunto C consiste dos 5 objectos
que são pares ordenados de números inteiros.
Lista (algoritmo)
′
Pode-se usar o símbolo . . .′ (etc.) para conjuntos de grande volume ou para
conjuntos infinitos
N100 = {1, 2, 3, . . . , 100}, D3 = {3, 6, 9, . . .}
Mas este método pressupõe um algoritmo de formação de elementos do conjunto.
Por exemplo, para verificar se o número 36 pertence ao conjunto D3 ou não,
é preciso cumprir várias adições 3 + 3 = 6, 6 + 3 = 9, 9 + 3 = 12, . . . ate
obter ou não o elemento necessário. Este exemplo sugere mais um método para
definir um conjunto.
7
8 CAPÍTULO 1. CONJUNTOS, RELAÇÕES E GRAFOS
Propriedade característica
Um conjunto pode ser dado por meio de uma propriedade característica. Con-
sideremos vários exemplos:
1. D = {n : n ∈ N e n é par} = {2, 4, 6, 8, . . .}
2. E = {x : x ∈ R, 1 ≤ x < 3} = [1, 3)
3. F = {n2 : n ∈ N } = {m : m ∈ N, (∃n : m = n2 )}
4. G = {(−1)n : n ∈ N } = {−1, 1}
Em chavetas o primeiro objecto é uma variável ou uma expressão todos os valores
da qual formam o conjunto. A variável (expressão) é seguida pelo símbolo ′ :′ .
A segunda parte contém uma ou várias condições necessárias e suficientes para
verificar se um elemento pertence ao conjunto. Por exemplo, para verificar se o
número 25 pertence ao conjunto F , é preciso encontrar um número natural
n tal que n2 = 25 . A segunda forma da definição do conjunto F é mais
completa e mais clara para usar.
∅, {a}, {b}, {c}, {a, b}, {a, c}, {b, c}, {a, b, c}.
M ⊂N se e somente se x ∈ M ⇒ x ∈ N.
• A ∪ B = {x : x ∈ A ∨ x ∈ B} é união,
• A ∩ B = {x : x ∈ A ∧ x ∈ B} é intersecção,
((x ∈ A) ∨ (x ∈ B)) ∧ (x ∈
/ A).
Portanto x ∈ B .
1. Leis comutativas
(a) A ∪ B = B ∪ A ,
(b) A ∩ B = B ∩ A
2. Leis associativas
(a) (A ∪ B) ∪ C = A ∪ (B ∪ C) ,
(b) (A ∩ B) ∩ C = A ∩ (B ∩ C)
3. Leis distributivas
(a) A ∪ (B ∩ C) = (A ∪ B) ∩ (A ∪ C) ,
(b) A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C)
4. A ∪ A = A, A∩A=A
5. (a) A ∪ ∅ = A
1o símbolo ⇒ é sinal de implicação, isto é A ⇒ B temos que ler: de A decorre B
10 CAPÍTULO 1. CONJUNTOS, RELAÇÕES E GRAFOS
(b) A ∩ U = U
(c) A ∩ ∅ = ∅
(d) A ∩ U = A
6. (Ac )c = A
7. A ∪ Ac = U, A ∩ Ac = ∅
8. U c = ∅, ∅c = U
9. Leis de Morgan
(a) (A ∪ B)c = Ac ∩ B c ,
(b) (A ∩ B)c = Ac ∪ B c
S × T = {(s, t) : s ∈ S ∧ t ∈ T }.
Se S = T escreve-se também S × S = S 2 .
Exemplo 1.2. Sejam S = {1, 2, 3, 4}, T = {a, b, c} . Produto S × T consiste
de 12 pares ordenados:
|S × T | = |S| · |T |.
Generalização:
S1 × . . . × Sn = {(s1 , s2 , . . . , sn ) : sk ∈ Sk , k = 1, 2, . . . , n}.
S1 = S2 = . . . = S n = S
usa-se designação
S × S × . . . × S = Sn.
1. CONJUNTOS 11
1.7 Funções
O que é uma função?
Função ou aplicação f de um conjunto A para um outro (ou o mesmo) con-
junto B é uma regra (uma lei, um algoritmo) que permite a partir de qualquer
valor x ∈ A encontrar um único valor y ∈ B . O conjunto A chama-se
domínio da função f , e B é contradomínio da f . Usa-se notação
f: A→B
e diz-se que f age do A para B . Escreve-se também y = f (x) onde f (x)
designa o valor da função f quando argumento da função toma o valor x ∈ A .
A expressão f (x) chama-se também imagem do x .
Exemplo 1.3. Sejam A = {a, b, c} e B = {1, 2, 3, 4} . Para definir uma função
f : A → B é preciso definir os três valores de função: f (a), f (b), f (c) . Por
exemplo, uma das funções possíveis pode ser dada pela tabela
x a b c
f (x) 2 4 2
Então f (a) = 2 , f (b) = 4 , f (c) = 2 .
Imagem e preimagem
Introduz-se também a imagem de um conjunto. Seja X ⊂ A . Por definição
f (X) = {f (x) : x ∈ X} ≡ {y : y = f (x), x ∈ X}.
A expressão f (X) chama-se a imagem do conjunto X . No exemplo 1.3
f (A) = {2, 4} .
Se f (x) = y o elemento x chama-se preimagem do y . O conjunto de
todos os preimagens do y forma preimagem completo do y . Para preimagem
completo vamos usar notação f −1 (y) . Então
f −1 (y) = {x ∈ A : f (x) = y}.
No exemplo 1.3 f −1 (2) = {a, c}, f −1 (4) = {b}, f −1 (1) = f −1 (3) = ∅ . A
preimagem de um conjunto Y ⊂ B defina-se como união de todos os preimagem
dos elementos y ∈ Y , ou
f −1 (Y ) = {x ∈ A : f (x) ∈ Y }.
No exemplo 1.3 f −1 ({1, 2}) = {a, c} .
Exemplo 1.4. Consideremos uma função f : A → A onde A = {0, 1, 2, 3, 4} ,
definida pela relação2
f (x) = (2x) mod 5.
Encontrar f (A) e f −1 (A) .
Solução. Consideremos a tabela dos valores da função
x 0 1 2 3 4
f (x) 0 2 4 1 3
Da tabela logo f (A) = A e f −1 (A) = A .
2 a operação binária mod determina o resto de divisão do operando esquerdo por direito.
2 Relações
2.1 Conceito de relação
Exemplo. Sejam S um conjunto de todos os estudantes duma universidade e
T conjunto das disciplinas. Consideremos produto directo S × T que consiste
de pares (s, t) onde s é um estudante, t é uma disciplina. Formemos o
subconjunto R ⊂ S × T dos pares (s, t) :
Composição de relações
Sejam R1 ⊂ S × S e R2 ⊂ S × S relações sobre S . O conjunto
def
R1 ◦ R2 = {(x, z) : ∃y : (x, y) ∈ R1 , (y, z) ∈ R2 }
R ◦ R = {(x, y) : x ≤ y − 2}.
2. RELAÇÕES 13
4 5
1 3
2
e γ(e)
a (v1 , v2 )
b (v1 , v2 )
c (v1 , v3 )
d (v1 , v4 )
f (v3 , v1 )
g (v3 , v4 )
h (v4 , v2 )
l (v1 , v1 )
m (v2 , v2 )
n (v2 , v2 )
l a n
m
v1
v2
b
f c h
d
v3 g v4
0 1 0 0
Matriz de adjacência descreve completamente a estrutura do grafo e permite
reconstruir o grafo (se a informação sobre natureza dos vértices e arcos não é
importante).
(R) m ∼ m ∀m ∈ S
2. RELAÇÕES 15
(S) m ∼ n ⇒ n ∼ m
(T) m ∼ n, n ∼ r ⇒ m ∼ r
m ≡ n (mod p).
f (n) = n mod 3.
S0 = {. . . , −6, −3, 0, 3, 6, . . .}
S1 = {. . . , −5, −2, 1, 4, 7, . . .}
S2 = {. . . , −4, −1, 2, 5, 8, . . .}
16 CAPÍTULO 1. CONJUNTOS, RELAÇÕES E GRAFOS
3 Algoritmos
Conceito de algoritmo é também uma noção básica de Matemática Discreta.
Este conceito não pode ser definido agora com rigor matemático e precisa de
preparação séria. Apesar disso o conceito pode ser descrito em termos habituais.
Existe um conjunto finito de instruções que devem ser realizadas passo a passo.
Claro que devem ser dados objectos de aplicação das instruções, condições de
aplicação, ordem de aplicação.
Um exemplo simples de algoritmo é algoritmo cíclico.
s = x1 + x2 + · · · + xn .
3. Se for verdadeira:
s := 0
for i := 1 to n do
for j := 1 to n do
s := s + aij
end for
end for
Algoritmo 1.2: Ciclo duplo
O resultado é
n X
X n
s= aij . (1.2)
i=1 j=1
Note que a fórmula (1.2) é só realmente outra notação para representar o algo-
ritmo (1.2).
Exemplo 1.13. Vamos supor que pelo menos um elemento da matriz (aij ) é
número negativo. Achar os índices i1 , j1 de um elemento negativo.
Uma solução está apresentada na figura 1.3.
Neste exemplo o número dos passos do algoritmo cíclico depende da matriz
(aij ) . O mínimo número dos passos é igual a n quando a primeira linha contém
números negativos. O máximo é n2 se os números negativos contém só última
linha.
n 10 20 30 40 50
t 1 seg 18 min 12 dias 35 anos 35700 anos
Exemplo 1.16. Calcular o produto de uma matriz quadrada (aij )n1 e de uma
matriz coluna composta de elementos (bj )n1 . O resultado é a matriz coluna
Pn
composta dos elementos ci = aij bj , i = 1, 2, . . . n .
j=1
for i := 1 to n do
s := 0
for j := 1 to n do
s := s + aij bj
end for
ci := s
end for
A operação de multiplicação é operação principal. O parâmetro n esco-
lhemos como o parâmetro que determina o volume de dados. É fácil ver que a
complexidade é igual à n2 .
n/2 n/2
lim = 0, lim = 0.
n→∞ n2 n→∞ n(n − 1)/2
|f (n)| ≤ C|g(n)|
x := 0
for i := 1 to n do
for j := i + 1 to n do
for k := j + 1 to n do
x := x + 1
end for
end for
end for
Operação principal é atribuição x := x + 1 . Calculemos o número x ao
terminar do algoritmo. O ciclo interior se cumpre n − j vezes. Para j -ciclo
vamos ter
(1 + (n − i − 1))(n − i − 1) (n − i)(n − i − 1)
(n−i−1)+(n−i−2)+. . .+1 = = .
2 2
Então
n
X (n − i)(n − i − 1)
f (n) = .
i=1
2
Não é necessário calcular esta soma para determinar tipo do algoritmo. É pos-
sível fazer cálculo aproximado. O número de vezes médio de cumprimento do
j -ciclo é igual a n/2 , o número de vezes médio para k -ciclo é uma função da
forma c · n, 0 < c < 1 . Portanto f (n) ≈ n · n/2 · cn = c/2 · n3 = O(n3 ) .
4. EXERCÍCIOS 21
4 Exercícios
4.1 Lógica
1. Demonstrar: se um número n natural é múltiplo de 4 então o n é par.
4. Demonstrar que
(a) A ∩ (B ⊕ C) = (A ∩ B) ⊕ (A ∩ C)
(b) A ⊕ B ⊂ (A ⊕ C) ∪ (B ⊕ C)
(c) (A ⊕ B) ⊕ C = A ⊕ (B ⊕ C)
(A ∩ B ∩ C)c = Ac ∪ B c ∪ C c
4.3 Relações
1. As relações seguintes são definidas sobre o conjunto N dos números na-
turais. Formar a lista de todos os pares da relação:
(a) R1 = {(m, n) : m + n = 5}
(b) R2 = {(m, n) : max{m, n} = 2}
(c) R3 = {(m, n) : min{m, n} = 2} (neste caso obter só 5 pares)
As relações consideradas são simétricas?
2. Achar a composição R ◦ R para a relação R = {(1, 2), (1, 4), (5, 2), (4, 3)}
e para cada uma das relações no exercício 1.
3. Uma relação R ⊂ S × S é transitiva. Demonstrar que R ◦ R ⊂ R .
4. Construir um grafo da relação dada sobre o conjunto S
(a) S = {1, 2, 3, 4}, R = {(1, 2), (1, 1), (4, 1), (2, 3), (2, 2)}
(b) S = {1, . . . , 10}, R = {(m, n) : m|n}
5. Verificar se as relações seguintes são relações de equivalência ou não. No
caso ’não’ indicar quais das condições (R),(S),(T) não se cumprem:
(a) sobre o conjunto das rectas no espaço, relações da paralelidade, per-
pendicularidade
(b) sobre o conjunto dos vectores no espaço (excepto o vector nulo) rela-
ções de colinearidade, perpendicularidade, relação: vectores a e b
têm a mesma direcção
(c) R = {(m, n) ∈ N × N : |m − n| ≤ 1}
(d) S = N × N, R ⊂ S × S , ponhamos por definição (m, n) ∼ (k, l)
se m + l = n + k
6. Demonstrar que as relações seguintes são relações de equivalência e en-
contrar partição do conjunto S :
(a) S = {1, 2, 3, . . . , 10}, R = {(m, n) : m ≡ n (mod 4)}
(b) S = N, R = {(m, n) : ∃k ∈ Z tal que m = 2k n}
(c) S = Z, R = {(m, n) : m2 = n2 }
(d) S = {2, 3, 4, . . .} ,
(a) S = {1, 2, 3, 4}, R = {(1, 2), (4, 3), (2, 3), (3, 2)}
(b) S = {1, 2, 3, 4}, R = {(1, 2), (3, 1), (1, 4), (4, 2)}
Contagem. Análise
combinatória
1 Princípios básicos
Colocação do problema. Determinar o número de elementos de um conjunto
dado.
|S ∪ T | = |S| + |T |
• Caso geral
|S ∪ T | = |S| + |T | − |S ∩ T |.
|D3 ∩ D5 | = |D15 | = 66
24
2. PERMUTAÇÕES, SUBCONJUNTOS E DISTRIBUIÇÕES 25
n
[ X n X X
Ai = |Ai | − |Ai ∩ Aj | + |Ai ∩ Aj ∩ Ak | − · · ·
i=1 i=1 i,j i,j,k
P (n, n) = n! (2.4)
S = {s1 , s2 , . . . , sm }, T = {t1 , t2 , . . . , tn }.
P (n, r) = n1 n2 = Cnr · r!
P (n, r) n!
Cnr = = .
r! (n − r)! · r!
n
Nota. Usa-se também a designação = Cnr , por exemplo
r
5 5! 5·4
= C53 = = = 10.
3 2!3! 1·2
variantes.
Os problemas a seguir são equivalentes neste sentido. A reposta para todos estes
problemas é
k−1
D(n, k) = Cn+k−1 (2.8)
Para demonstrar esta relação, consideremos os quatro problemas equivalentes.
2 2 1 ou 0 4 1 etc.
Como vamos ver em baixo, resposta à esta questão (pôr n objectos idênticos
em k caixas diferentes) pode ser encontrada da formula (2.8).
Exemplo 2.7. O número de variantes de distribuição de 5 objectos idênticos em
3 caixas (de cores diferentes) V = C72 = 7 · 6/2 = 21 .
Existem outros problemas isomorfos ao problema colocado, i.e., é possível
construir uma correspondência biunívoca entre dois conjuntos: o conjunto de
todas as distribuições e o conjunto num outro problema.
x1 + x2 + . . . + xk = n (2.9)
em números inteiros não negativos. A cada uma solução desta equação corres-
ponde uma distribuição em n caixas: a primeira caixa contém x1 objectos, a
k−1
segunda x2 , etc. A reposta à questão é a mesma, D(n, k) = Cn+k−1 .
2. PERMUTAÇÕES, SUBCONJUNTOS E DISTRIBUIÇÕES 29
x · 48 = 9!
n!
n1 !n2 ! · · · nk !
A = A1 ∪ A2 ∪ · · · ∪ Ak
A = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.
4 Exercícios
1. Entre 150 homens 45 sabem nadar, 40 jogam futebol, 50 jogam xa-
drez. Também, 32 homens jogam xadrez mas não jogam futebol, 27
jogam xadrez e nadam, e 10 homens sabem fazer tudo.
(a) Quantos homens jogam xadrez, mas não nadam e não jogam futebol?
(b) Se 21 homens jogam futebol e nadam, quantos homens não sabem
fazer nada de três actividades?
10. Dada uma matriz A que contem m linhas e n colunas. Quantos me-
nores de ordem k onde k ≤ m, k ≤ n é possível formar dos elementos
da A ?
(a) Achar |P |
4. EXERCÍCIOS 33
x1 + x2 + x3 + x4 + x5 = 8,
se xi ≥ 0, i = 1, . . . , 5 e x1 ≤ 7 .
21. Em quantas maneiras se pode distribuir 10 objectos iguais em 4 caixas
diferentes sabendo que cada caixa cabe 4 objectos?
22. Têm-se 20 hastes idênticas que ocupam uma linha de vinte lugares dife-
rentes:
| | | | | | | | | | | | | | | | | | | |,
24. É preciso distribuir 100 estudantes entre três salas com capacidades de
30, 30, 40 . Em quantas maneiras é possível fazer isso? Assumir que es-
tudantes preferem alguns salas, isto é, devemos distinguir as salas com
mesma capacidade.
25. Joan lives in Manhattan, and works at a location that is 10 blocks east
and 15 north from where she lives.
(a) In how many ways can she find a route to work (assuming her route
is as short as possible, and thus is 25 blocks long)?
(b) If she wants to pass a coffee shop on her route, and the coffee shop
is located 3 blocks east and 4 block north, how many routes to work
are possible?
Capítulo 3
Indução e recursividade.
Algoritmos cíclicos
1 Indução matemática
1.1 Introdução. Exemplo
Indução matemática é um dos métodos de demonstração de teoremas e outras
proposições matemáticas. Notemos que demonstração é última etapa na re-
solução de um problema. Também, a indução pode servir para descobrir um
resultado, mas isto não é indução matemática, é raciocínio indutivo informal.
A ideia do método pode ser interpretada de maneira seguinte. Seja A um
subconjunto do conjunto N de todos os números naturais. Imaginemos que os
números do conjunto A são marcados, digamos têm cor vermelho. Mas todos
os outros têm cor branco. Temos informação certa sobre o conjunto A . Sabe-
se que o número 1 tem cor vermelho, isto é, 1 ∈ A . Mais, se um número n
tem cor vermelho, o número n + 1 é também de cor vermelho. O que é que
podemos dizer relativamente ao conjunto A ? Claro que 2 tem cor vermelho,
porque 1 é do A e 1 + 1 = 2 . Mas o que podemos dizer sobre o 3 ?
Intuitivamente claro que A = N . O exemplo abaixo é baseado sobre a
mesma ideia. Mas em vês de dizer que um número n tem cor vermelho, no
exemplo abaixo tem-se uma proposição que que depende do parâmetro n .
n(n + 1)
1 + 2 + 3 + ... + n = , n = 1, 2, 3, . . . (3.1)
2
Ainda não sabemos se para todos os valores de n a relação (3.1) é verdadeira
ou não. Não é possível verificar a relação (3.1) para todos os valores de n ∈ N .
Felizmente existe um método que permite demonstrar a relação da mesma
maneira como foi feita em cima a conclusão que todos os números naturais têm
35
36 CAPÍTULO 3. INDUÇÃO, ALGORITMOS
k(k + 1)
1 + 2 + . . . + k +(k + 1) = +k+1
| {z } 2
suposição
k(k + 1) + 2(k + 1) (k + 1)(k + 2)
= = .
2 2
Este resultado podemos interpretar de maneira seguinte
k(k + 1) (k + 1)(k + 2)
1 + ... + k = → 1 + . . . + k + (k + 1) = .
2 2
(3.2)
Vamos agora raciocinar. Da validade da relação (3.1) para n = 1 teremos
validade para n = 2 , mas isto implica validade para n = 3 , o último implica
para n = 4 , etc. Intuitivamente nós podemos ver que a relação (3.1) deve ser
válida para todos n = 1, 2, . . . .
Para distinguir a estrutura do raciocínio, introduzimos a designação
n(n + 1)
P (n) = 1 + 2 + 3 + . . . + n = (3.3)
2
que depende do n (ou predicado). Estrutura do raciocínio consiste dos dois
elementos:
1. P (1) é verdadeiro
2. a implicação P (k) → P (k + 1) é verdadeira
∀(n ∈ N ) P (n).
n=1 1
n=2 1+3=4
n=3 1+3+5=9
n=4 1 + 3 + 5 + 7 = 16
... ...
38 CAPÍTULO 3. INDUÇÃO, ALGORITMOS
(I) Da validade das proposições P (1), . . . , P (k) segue P (k +1) qualquer que
seja k ∈ {m, m + 1, . . .} .
2 Definições recursivas
2.1 Descrição do problema
A secção precedente mostra que o conjunto de todos os números naturais tem
natureza recursiva. É suficiente demonstrar a implicação P (k) → P (k + 1)
e a partir do número 1 é possível obter um resultado para toda a sucessão
das proposições P (1), P (2), P (3), . . . . Esta propriedade dos números naturais
permite definir uma função f : N → Y sobre o N = {1, 2, 3, . . .} utilizando
uma relação entre valores da função para diferentes argumentos. Notemos que
cada função definida sobre N é a sucessão
f1 , f2 , . . . , fn , . . .
xn = xn−1 + 3, n ≥ 2, x1 = 2. (3.4)
1! = 1, n! = (n − 1)! · n, se n > 1.
f1 = 1, fn = fn−1 · n, se n > 1.
sn , n = 1, 2, . . .
sn = ϕn (s1 , s2 , . . .)
2. DEFINIÇÕES RECURSIVAS 41
f1 = f0 · 1, ou 1 = f0 · 1.
Daqui 0! = f0 = 1 .
Para a sucessão de Fibonacci consideremos a relação dada quando n = 2 :
F2 = F1 + F0 .
s0 = 0, sk = sk−1 + ak , se k ≥ 1.
function Fib(n:integer):integer;
begin
if (n=1) or (n=2) then
Fib:=1
else
Fib:=Fib(n-2)+Fib(n-1)
end;
begin
write(Fib(6))
end.
O seguinte exemplo mostra mais uma variante para utilizar elementos ante-
cedentes da sucessão:
Exemplo 3.10. Consideremos a definição
rp = a1 rp−1 + a2 rp−2 + . . . + ap .
Se esta equação tem p raízes diferentes r1 , . . . , rp existirem números c1 , . . . , cp
tais que
sn = c1 r1n + . . . + cp rpn , n = 1, 2, . . .
As constantes c1 , c2 , . . . , cp podem ser determinadas a partir da condição que
os primeiros termos são dadas. Caso p = 2 vamos ter
sn = asn−1 + bsn−2 .
Equação característica:
r2 = ar + b.
Solução da relação. Se r1 6= r2 teremos
sn = c1 r1n + c2 r2n .
Se r1 = r2 = r então
sn = c1 rn + c2 nrn .
Exemplo 3.11. Consideremos a relação recorrente sn = sn−1 + 2sn−2 onde
s1 = s2 = 3 . Temos sucessão sn :
3 = c1 21 + c2 (−1)1 3 = c1 22 + c2 (−1)2
donde c1 = 1, c2 = −1 e
sn = 2n − (−1)n .
44 CAPÍTULO 3. INDUÇÃO, ALGORITMOS
b0 = b1 = 1, bn = 2bn−1 + bn−2 , se n ≥ 2
e a proposição
P (n) = {bn < 6bn−2 }, n ≥ 2.
É preciso demonstrar que P (n) é verdadeira para n ≥ 4 . Para isso vamos
usar o teorema 3.5.
4. ALGORITMOS CÍCLICOS 45
Indução. Sejam que bk < 6bk−2 e bk+1 < 6bk−1 . Temos que demonstrar:
bk+2 < 6bk . Então:
A1 = {a, b}, A2 = {ab, ba, bb}, A3 = {aba, abb, bab, bba, bbb}.
4 Algoritmos cíclicos
Algoritmo cíclico é um dos métodos principais em construção de algoritmos.
Resultados do trabalho de um algoritmo pode-se representar em forma de uma
tabela onde cada linha apresenta resultado depois de um passo do algoritmo.
Consideremos por exemplo o algoritmo
x := 2
46 CAPÍTULO 3. INDUÇÃO, ALGORITMOS
while true do
x := x + 3
end while
A seguinte tabela representa os valores da variável x depois de n passos
do ciclo
n x
0 2
1 5
2 8
3 11
4 14
... ...
Sobre a sucessão xn dos valores da variável x podemos dizer que xn = 2 +
3n . Esta última proposição pode ser demonstrada usando indução na base da
definição recursiva
x0 = 2, xn = xn−1 + 3, se n ≥ 1.
n r k
0 30 0
1 23 1
2 16 2
3 9 3
4 2 4
S := f (S). (3.5)
S0 , S1 , . . . , Sn , . . . ,
while true do
S := f (S) S := f (S)
end while
S = (r, k).
(30, 0), (23, 1), (16, 2), (9, 3), (2, 4), . . .
S := S0
S := S0 { I(S0 ) }
P (S)
Não while P (S) do
S := f (S)
Sim end while
{ ¬P (S) ∧ I(S) }
S := f (S)
while true do
i := i + 2
end while
com estado S = i . Se na entrada a variável i toma o valor par, então depois
de cada passo do ciclo o i tem um valor par. O mesmo podemos afirmar sobre
valores ímpares.
Exemplo 3.18. Seja S = (m, n) . Demonstrar que I(S) = {m = 2n } é um
invariante do ciclo
while true do
n := n + 1
m := m ∗ 2
end while
Por convenção vamos usar a notação I(m, n) em vez de I(S) . Designemos
m′ = 2m, n′ = n + 1 . Segundo à definição 3.3 temos que demonstrar a
implicação
′
I(m, n) → I(m′ , n′ ) ou {m = 2n } → {m′ = 2n }.
Temos ′
m′ = 2m = 2 · 2n = 2n+1 = 2n .
Compare esta demonstracao com a demonstracao deductiva puramente
′
{m = 2n } → {2m = 2 · 2n = 2n+1 } → {m′ = 2n }.
{a = kb + r} → {a = k ′ b + r′ }.
Demonstração:
k ′ b + r′ = (k + 1)b + r − b = kb + r = a.
No exemplo 3.20 vemos um algoritmo. Como poderemos ver que este algo-
ritmo serve para encontrar quociente incompleto k e resto de divisão r do
número inteiro não negativo a por número natural b . Notemos que antes de
demonstrar é preciso dar definição correspondente.
Definição 3.5. Se o número a é representado em forma a = kb + r onde
0 ≤ r < b , números inteiros k e r chamam-se quociente e resto de divisão a
por b respectivamente.
4. ALGORITMOS CÍCLICOS 51
a = kr + b e r < b.
I ∧ ¬P = {a = kr + b ∧ r ≥ 0} ∧ {r < b}.
MDC(a, b) = MDC(b, r)
m := a ; n := b
while n 6= 0 do
r := m mod n
(m, n) := (n, r)
end while
{ n = 0 ∧ m = MDC(a, b) }
d := m
Algoritmo 3.1: Euclid
ax + by = c (3.9)
x = −1, y = x1 − 2x = 1 − 2(−1) = 3.
k = ⌊a/b⌋ e r = a mod b,
x1
ou X = A1 X1 onde X1 = e x1 , y1 é uma das soluções da equação
y1
(3.10).
Depois de segunda substituição vamos ter
x2
X = A1 X1 = A1 A2 X2 , X2 = ,
y2
a2 x2 + b2 y2 = c (3.11)
com a2 = b1 , b2 = r = a1 mod b1 .
Em caso geral, depois de n passos
X = A1 A2 · · · An Xn .
an xn + bn yn = c
x
então X = é uma das soluções da equação inicial (3.9).
y
k m n P
1 0
início 23 13
0 1
0 1
1 13 10
1 −1
1 −1
1 10 3
−1 2
−1 4
3 3 1
2 −7
4 −13
3 1 0
−7 23
Ao terminar o algoritmo temos
x 4 −13 x̃
= ·
y −7 23 ỹ
x = 4 − 13t, y = −7 + 23t.
5 Exercícios
5.1 Indução matemática
1. Demonstrar as identidades
n(n + 1)(2n + 1)
(a) 12 + 22 + . . . + n2 = , n∈N
6
an+1 − 1
(b) 1 + a + a2 + . . . + an = (a 6= 1)
a−1
2. Demonstrar que para todos os números n naturais
6. Demonstrar
m−1 m−1 m−1 m−1
Cnm = Cn−1 + Cn−2 + Cn−3 + · · · + Cm−1
7. Demonstrar que ∀n ∈ N
√ a1 + . . . + an
n
a1 · . . . · an ≤
n
ai ≥ 0, i = 1, . . . , n .
a1 · . . . · an ≤ 1. (3.13)
então
a′1 · . . . · an−1 ≤ 1.
ai = mxi , i = 1, 2, . . . , n.
5. EXERCÍCIOS 57
(a) calcular s0 , s1 , s2 , s3
(b) encontrar uma relação recursiva para sn
(c) calcular s8
11. Verificar que a sucessão dada por sn = 2n+1 +(−1)n satisfaz às condições
s0 = s1 = 3 e sn = sn−1 + 2sn−2
58 CAPÍTULO 3. INDUÇÃO, ALGORITMOS
s1 = a1 , sn+1 = an+1 sn , se n ≥ 1.
s0 = 1, sn+1 = an+1 sn , se n ≥ 0.
23. Em cada um dos seguintes casos achar uma fórmula explícita para sn .
5. Consideremos o ciclo
while j ≥ n do
i := i + 2; j := j + 1
5. EXERCÍCIOS 61
end while
Quais das seguintes asserções
(a) i < j 2 se n = 1
(b) i < j 2 se n = 0
(c) i ≤ j 2 se n = 0
(d) i ≤ j 2 se n = 0
são invariantes ?
7. Dado o algoritmo
p := 1; x := a; i := n
while i > 0 do
if odd(i) then
p := p ∗ x
end if
x := x ∗ x
i := i div 2
end while
Demonstre que
x := x ∗ x
m := m div 2
end if
end while
Demonstrar que o ciclo termina e logo ao terminar k = an .
9. Demonstrar que a proposição {kx + y = a} é invariante no algoritmo
cíclico ( a é um número natural)
k := 1; x := a; y := 0
while x > 1 do
if odd(x) then
y := y + k
end if
k := 2 ∗ k
x := x div 2
end while
Demonstrar que o ciclo termina e logo ao terminar x = 1 .