Escolar Documentos
Profissional Documentos
Cultura Documentos
2022/1
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 1 / 61
Introdução
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 2 / 61
Indução e recursão: Introdução
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 3 / 61
Definições Recursivas e
Indução Estrutural
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 4 / 61
Recursão: Introdução
1 funções, 3 conjuntos, e
2 sequências, 4 algoritmos.
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 5 / 61
Definição recursiva de funções
Uma definição recursiva de uma função com domı́nio nos números inteiros
não-negativos tem duas partes:
Definição recursiva de função:
Lembre-se de que uma função f (n) dos inteiros não-negativos para os reais é
equivalente a uma sequência
a0 , a1 , a2 , ...,
onde ai é um número real para cada inteiro não-negativo i.
Logo, definir uma sequência a0 , a1 , a2 , . . . de números reais de forma recursiva
é equivalente a definir uma função recursiva dos inteiros não-negativos para
os reais.
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 6 / 61
Definição recursiva de funções
Solução.
f (1) = 2f (0) + 3 = 2 · 3 + 3 = 9;
f (2) = 2f (1) + 3 = 2 · 9 + 3 = 21;
f (3) = 2f (2) + 3 = 2 · 21 + 3 = 45;
f (4) = 2f (3) + 3 = 2 · 45 + 3 = 93.
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 7 / 61
Definição recursiva de funções
Exemplo 2 Encontre uma definição recursiva para a função fatorial
f (n) = n!, e compute f (5) usando sua definição.
f (3) = a · f (2)
= a · (a · f (1))
= a · (a · (a · f (0)))
= a · (a · (a · 1))
= a3 .
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 9 / 61
Definição recursiva de funções
Exemplo 4 Outros exemplos de definições recursivas:
(P
0
ai = 0
a) Somatório: Pni=1 Pn−1
i=1 i =
a i=1 ai + an , n≥1
Note que o somatório do passo base é vazio, pois seu limite inferior é i = 1 é
maior que o superior i = 0, e não há termo ai que satisfaça estes limites.
Um somatório de 0 parcelas tem valor 0, que é o elemento neutro da soma.
P3
Por exemplo, o somatório i=1 i pode ser computado como
P3 P2
i=1 i= i=1 i + 3 (passo recursivo)
P1
= i=1 i + 2 + 3 (passo recursivo)
P0
= i=1 i + 1 + 2 +3 (passo recursivo)
= (((0) + 1) + 2) + 3 (passo base)
=6 (soma)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 10 / 61
Definição recursiva de funções
Exemplo 4 (Continuação)
(Q
0
ai = 1
b) Produtório: Qi=1
n Qn−1
i=1 ai = i=1 ai · an , n≥1
Note que o produtório do passo base é vazio e, portanto, seu valor é 1, que é
o elemento neutro da multiplicação.
Por exemplo, o produtório 3i=1 i 2 pode ser computado como
Q
Q3 Q2
i2 = 2
· 32
i=1 i=1 i (passo recursivo)
Q1 2
· 22 · 32
= i=1 i (passo recursivo)
Q0 2 2 2 2
= i=1 i ·1 ·2 ·3 (passo recursivo)
2
2 2
= (1) · 1 ·2 ·3 (passo base)
= 36 (multiplicação e exponenciação)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 11 / 61
Definição recursiva de funções
Exemplo 4 (Continuação)
(S
0
Ai = ∅
c) União: Si=1
n Sn−1
i=1 Ai = i=1 Ai ∪ An , n≥1
Note que a união do passo base é vazio e, portanto, seu valor é ∅, que é o
elemento neutro da união de conjuntos.
Por exemplo, a união 3i=1 Ai , onde Ai = {1, 2, . . . , i}, pode ser computada
S
como
S3 S2
i=1 Ai = i=1 Ai ∪ {1, 2, 3} (passo recursivo)
S1
= i=1 Ai ∪ {1, 2} ∪ {1, 2, 3} (passo recursivo)
S0
= i=1 Ai ∪ {1} ∪ {1, 2} ∪ {1, 2, 3} (passo base)
= (((∅) ∪ {1}) ∪ {1, 2}) ∪ {1, 2, 3} (passo base)
= {1, 2, 3} (união de conjuntos)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 12 / 61
Definição recursiva de funções
Exemplo 4 (Continuação)
(T
0
Ai = U, (onde U é o conjunto universo)
d) Interseção: Tni=1 Tn−1
i=1 Ai = i=1 Ai ∩ An , n≥1
Note que a interseção do passo base é vazio e, portanto, seu valor é o
conjunto universo U, que é o elemento neutro da interseção de conjuntos.
Por exemplo, a interseção 3i=1 Ai , onde Ai = {1, 2, . . . , i} e o conjunto
T
universo é U = N, pode ser computada como
T3 T2
i=1 Ai = i=1 Ai ∩ {1, 2, 3} (passo recursivo)
T1
= i=1 Ai ∩ {1, 2} ∩ {1, 2, 3} (passo recursivo)
T0
= i=1 Ai ∩ {1} ∩ {1, 2} ∩ {1, 2, 3} (passo base)
= (((N) ∩ {1}) ∩ {1, 2}) ∩ {1, 2, 3} (passo base)
= {1} (interseção de conjuntos)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 13 / 61
Definição recursiva de funções
Exemplo 5 A sequência de Fibonacci é aquela em que os dois primeiros
termos são 0 e 1, e cada termo seguinte é a soma dos dois anteriores:
0, 1, 1, 2, 3, 5, 8, 13, ...
Esta função retorna 91 para todo inteiro positivo n ≤ 100, e para inteiros
positivo n > 100 ela começa em 91 e vai aumentando de 1 em 1.
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 15 / 61
Definição recursiva de funções
Exemplo 7 Seja a sequência {an }, n = 1, 2, 3, . . . definida explicitamente
como
an = n2 + 3n
Solução.
Primeiro determinamos o passo base da sequência, ou seja, a1 :
a1 = 12 + 3 · 1
= 4.
Exemplo 7 (Continuação)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 17 / 61
Definição recursiva de funções
Exemplo 7 (Continuação)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 18 / 61
Definição recursiva de funções
Exemplo 7 (Continuação)
a1 = 1 2 + 3 · 1 = 4 a1 = 4 a1 = 4
a2 = 22 + 3 · 2 = 10 a2 = 4 + 2 · 1 + 4 = 10 a2 = 4 + 2 · 2 + 2 = 10
a3 = 32 + 3 · 3 = 18 a3 = 10 + 2 · 2 + 4 = 18 a3 = 10 + 2 · 3 + 2 = 18
a4 = 42 + 3 · 4 = 28 a4 = 18 + 2 · 3 + 4 = 28 a4 = 18 + 2 · 4 + 2 = 28
a5 = 52 + 3 · 5 = 40 a5 = 28 + 2 · 4 + 4 = 40 a5 = 28 + 2 · 5 + 2 = 40
... ... ...
Mais para frente nesta unidade vamos ver a técnica de indução estrutural,
que pode ser usada para demonstrar formalmente que cada definição
recursiva é equivalente à definição original.
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 19 / 61
Definição recursiva de conjuntos e estruturas
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 20 / 61
Definição recursiva de conjuntos e estruturas
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 21 / 61
Definição recursiva de conjuntos e estruturas
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 22 / 61
Definição recursiva de conjuntos e estruturas
Solução.
Sabemos que:
λ ∈ Σ∗ pelo passo base;
0 ∈ Σ∗ porque λ ∈ Σ∗ , 0 ∈ Σ, e podemos juntar λ0 = 0;
1 ∈ Σ∗ porque λ ∈ Σ∗ , 1 ∈ Σ, e podemos juntar λ1 = 1;
00 ∈ Σ∗ porque 0 ∈ Σ∗ , 0 ∈ Σ, e podemos juntar 00;
01 ∈ Σ∗ porque 0 ∈ Σ∗ , 1 ∈ Σ, e podemos juntar 01;
011 ∈ Σ∗ porque 01 ∈ Σ∗ , 1 ∈ Σ, e podemos juntar 011;
...
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 23 / 61
Definição recursiva de conjuntos e estruturas
Seja ` (length) a função que retorna o comprimento de uma cadeia, ou seja,
para todo w ∈ Σ∗ , o valor `(w ) é o número de sı́mbolos em w .
Podemos definir ` recursivamente como:
Passo base: `(λ) = 0.
Passo recursivo: `(wx) = `(w ) + 1, se w ∈ Σ∗ e x ∈ Σ.
`(01011) = `(0101) + 1
= (`(010) + 1) + 1
= ((`(01) + 1) + 1) + 1
= (((`(0) + 1) + 1) + 1) + 1
= ((((`(λ) + 1) + 1) + 1) + 1) + 1
= ((((0 + 1) + 1) + 1) + 1) + 1
=5
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 24 / 61
Definição recursiva de árvores
Para o próximo exemplo, vamos precisar de alguns conceitos úteis.
Um grafo G = (V , E ) é formado por: Por exemplo, no grafo abaixo:
um conjunto V de vértices ou
nodos, e
um conjunto E de arestas, em que
cada aresta é um par ordenado
(vi , vj ) indicando que os vértices
vi , vj ∈ V estão conectados.
Vértices são representados por
Um ciclo em um grafo é um caminho cı́rculos e arestas por linhas
de arestas consecutivas que começa e conectando vértices.
termina no mesmo vértice.
Existe um ciclo começando no
Um vértice interno está conectado vértice c e passando por g , h, f ,
até voltar em c.
a pelo menos 2 outros vértices do
grafo. Os vértices a, b, c, f , g , h são
vértices internos.
Uma folha é um vértice conectado a Os vértice d, e são folhas.
no máximo um outro vértice.
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 25 / 61
Definição recursiva de árvores
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 26 / 61
Definição recursiva de árvores
Exemplo 11 (Continuação)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 27 / 61
Indução estrutural
então
3. todos os elementos do conjunto satisfazem a propriedade.
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 28 / 61
Indução estrutural
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 29 / 61
Exemplos de uso de indução estrutural
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 30 / 61
Exemplos de uso de indução estrutural
Exemplo 12 (Continuação)
Passo indutivo: Assuma que P(x) e P(y ) são verdadeiros para dois
elementos x e y em A. Ou seja, a I.H. é que os x e y de S são
ambos divisı́veis por 3.
A regra recursiva diz que podemos usar x e y para incluir o
elemento x + y em S, logo que mostrar que P(x + y ) também
é verdadeiro.
Para isto, note que se x e y são divisı́veis por 3, então existem
k 0 , k 00 ∈ N tais que x = 3k 0 e y = 3k 00 . Nesse caso, podemos
derivar:
x + y = 3k 0 + 3k 00 = 3(k 0 + k 00 ),
(¬G ) (G ∨ H) (G ↔ H)
(G ∧ H) (G → H)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 32 / 61
Exemplos de uso de indução estrutural
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 33 / 61
Exemplos de uso de indução estrutural
Exemplo 13 (Continuação)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 34 / 61
Exemplos de uso de indução estrutural
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 35 / 61
Exemplos de uso de indução estrutural
Exemplo 14 (Continuação)
Passo indutivo: Temos que verificar que cada uma das regra de criação de
novos pares ordenados mantém a propriedade de que o novo
par ordenado tem a soma de suas coordenadas divisı́vel por 5.
A I.H. é de que P((x, y )) é verdadeiro para um (x, y ) ∈ S.
Vamos analisar cada regra separadamente.
Regra (x + 2, y + 3) ∈ S: a soma das coordenadas deste novo
par é (x + 2) + (y + 3) = (x + y ) + 5. Pela I.H. (x + y ) é
divisı́vel por 5, logo (x + y ) + 5 também é divisı́vel por 5 e
podemos concluir que P((x + 2, y + 3)) é verdadeiro.
Regra (x + 3, y + 2) ∈ S: a soma das coordenadas deste novo
par é (x + 3) + (y + 2) = (x + y ) + 5. Pela I.H. (x + y ) é
divisı́vel por 5, logo (x + y ) + 5 também é divisı́vel por 5 e
podemos concluir que P((x + 3, y + 2)) é verdadeiro.
an = n2 + 3n,
Exemplo 15 (Continuação)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 38 / 61
Exemplos de uso de indução estrutural
0, se o único vértice da árvore binária
completa T é a própria raiz;
h(T ) =
1 + max(h(T1 ), h(T2 )), se a árvore binária completa T
é formada por uma raiz conectada
a duas sub-árvores T1 e T2 .
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 39 / 61
Exemplos de uso de indução estrutural
1, se o único vértice da árvore binária
completa T é a própria raiz
n(T ) =
1 + n(T1 ) + n(T2 ), se a árvore binária completa T
é formada por uma raiz conectada
a duas sub-árvores T1 e T2 .
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 40 / 61
Exemplos de uso de indução estrutural
Exemplo 16 Mostre em uma árvore binária completa T , temos
n(T ) = 1 , e
2h(T )+1 − 1 = 20+1 − 1 = 1 ,
e, portanto,
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 41 / 61
Exemplos de uso de indução estrutural
Exemplo 16 (Continuação)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 42 / 61
Exemplos de uso de indução estrutural
Exemplo 16 (Continuação)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 44 / 61
Algoritmo recursivos: Introdução
Quando tal redução pode ser feita, a solução para o problema original pode
ser encontrada via uma sequência de reduções, até que o problema tenha sido
reduzido a algum caso inicial para o qual a solução é conhecida.
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 45 / 61
Exemplos de algoritmos recursivos
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 46 / 61
Exemplos de algoritmos recursivos
Exemplo 17 (Continuação)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 48 / 61
Exemplos de algoritmos recursivos
Exemplo 18 (Continuação)
L = 3, 1, 5, 5, 9, 7, 7
retorna a posição 3.
2 Procurando o elemento x = 5 na lista
L = 2, 4, 4, 8, 6, 0, 6
retorna a posição 0.
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 51 / 61
Exemplos de algoritmos recursivos
Exemplo 19 (Continuação)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 52 / 61
Exemplos de algoritmos recursivos
Exemplo 19 (Continuação)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 53 / 61
Exemplos de algoritmos recursivos
Exemplo 19 (Continuação)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 54 / 61
Exemplos de algoritmos recursivos
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 55 / 61
Exemplos de algoritmos recursivos
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 56 / 61
Exemplos de algoritmos recursivos
Exemplo 20 (Continuação)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 57 / 61
Exemplos de algoritmos recursivos
Exemplo 20 (Continuação)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 58 / 61
Exemplos de algoritmos recursivos
Exemplo 20 (Continuação)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 59 / 61
Demonstrando a correção de algoritmos recursivos
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 60 / 61
Demonstrando a correção de algoritmos recursivos
Exemplo 21 (Continuação)
Introdução à Lógica Computacional Definições Recursivas e Indução Estrutural Área de Teoria DCC/UFMG - 2022/1 61 / 61