12.07.2015 Views

Induįão e Recursividade

Induįão e Recursividade

Induįão e Recursividade

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosIndução e <strong>Recursividade</strong>Prof. Dr. Leandro Balby MarinhoMatemática DiscretaProf. Dr. Leandro Balby Marinho 1 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosIndução Matemática◮ É usada para mostrar que uma dada afirmação é verdadeirapara todos os naturais.◮ Por exemplo, para todo n ∈ N:◮ n! ≤ n n ,Prof. Dr. Leandro Balby Marinho 2 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosIndução Matemática◮ É usada para mostrar que uma dada afirmação é verdadeirapara todos os naturais.◮ Por exemplo, para todo n ∈ N:◮ n! ≤ n n ,◮ n 3 − n é divisível por 3,Prof. Dr. Leandro Balby Marinho 2 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosIndução Matemática◮ É usada para mostrar que uma dada afirmação é verdadeirapara todos os naturais.◮ Por exemplo, para todo n ∈ N:◮ n! ≤ n n ,◮ n 3 − n é divisível por 3,◮ a soma dos primeiros n inteiros positivos é n(n + 1)/2.Prof. Dr. Leandro Balby Marinho 2 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosIntuiçãoDada uma fileira infinita de dominós, podemos afirmar que umdominó arbitrário irá cair?Prof. Dr. Leandro Balby Marinho 3 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosRoteiro1. Indução Matemática2. Indução Fraca3. Indução Forte4. <strong>Recursividade</strong>5. Relações de Recorrência6. Algoritmos RecursivosProf. Dr. Leandro Balby Marinho 4 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosPrimeiro Princípio de InduçãoPrimeiro Princípio de InduçãoPara provar que P(n) é verdade para todo n ∈ N, precisamos provar oseguinte:1. P(1) (passo básico ou base da indução )2. (∀k ∈ N) (P(k) → P(k + 1)) (passo indutivo)Demonstração usando o primeiro princípio da induçãoPasso 1 Prove a base da induçãoPasso 2 Suponha P(k)Passo 3 Prove P(k + 1) (passo de indução)Prof. Dr. Leandro Balby Marinho 4 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 1Mostre que a equação 1 + 3 + 5 + . . . + (2n − 1) = n 2 é verdadeira paratodo n ∈ N.Prof. Dr. Leandro Balby Marinho 5 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 1Mostre que a equação 1 + 3 + 5 + . . . + (2n − 1) = n 2 é verdadeira paratodo n ∈ N.Para n = 1, 1 = 1 2 é verdadeiro.Prof. Dr. Leandro Balby Marinho 5 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 1Mostre que a equação 1 + 3 + 5 + . . . + (2n − 1) = n 2 é verdadeira paratodo n ∈ N.Para n = 1, 1 = 1 2 é verdadeiro. Agora supomos P(k) verdadeiro1 + 3 + 5 + . . . + (2k − 1) = k 2 (1)Prof. Dr. Leandro Balby Marinho 5 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 1Mostre que a equação 1 + 3 + 5 + . . . + (2n − 1) = n 2 é verdadeira paratodo n ∈ N.Para n = 1, 1 = 1 2 é verdadeiro. Agora supomos P(k) verdadeiro1 + 3 + 5 + . . . + (2k − 1) = k 2 (1)Usando a hipótese de indução, queremos mostrar P(k + 1), ou seja1 + 3 + 5 + . . . + (2k − 1) + [(2(k + 1) − 1] = (k + 1) 2 (2)Prof. Dr. Leandro Balby Marinho 5 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 1Mostre que a equação 1 + 3 + 5 + . . . + (2n − 1) = n 2 é verdadeira paratodo n ∈ N.Para n = 1, 1 = 1 2 é verdadeiro. Agora supomos P(k) verdadeiro1 + 3 + 5 + . . . + (2k − 1) = k 2 (1)Usando a hipótese de indução, queremos mostrar P(k + 1), ou seja1 + 3 + 5 + . . . + (2k − 1) + [(2(k + 1) − 1] = (k + 1) 2 (2)Mostrando-se a penúltima parcela, procedemos como segue:1 + 3 + 5 + . . . + (2k − 1) + [(2(k + 1) − 1]=k 2 + [2(k + 1) − 1]=k 2 + 2k + 1=(k + 1) 2Prof. Dr. Leandro Balby Marinho 5 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 2Mostre que o número de linhas em uma tabela verdade, para qualquern ∈ N proposições, é dado por 2 n .Prof. Dr. Leandro Balby Marinho 6 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 2Mostre que o número de linhas em uma tabela verdade, para qualquern ∈ N proposições, é dado por 2 n .Prof. Dr. Leandro Balby Marinho 6 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 2Mostre que o número de linhas em uma tabela verdade, para qualquern ∈ N proposições, é dado por 2 n .P(1) = 2 1 = 2 é verdade, pois uma proposição tem dois valores possíveis.Agora supomos que P(k) = 2 k e tentamos mostrar queP(k + 1) = 2 k+1Como P(k + 1) = 2P(k), chegamos aP(k + 1) = 2(2 k ) = 2 k+1Prof. Dr. Leandro Balby Marinho 6 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 3Mostre que para qualquer n ∈ N, se 1 + x > 0, então(1 + x) n ≥ 1 + nxProf. Dr. Leandro Balby Marinho 7 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 3Mostre que para qualquer n ∈ N, se 1 + x > 0, então(1 + x) n ≥ 1 + nxBase: Para n = 1 temos 1 + x ≥ 1 + x.Hipótese Indutiva: (1 + x) k ≥ 1 + kxMostrar: (1 + x) k+1 ≥ 1 + (k + 1)xProf. Dr. Leandro Balby Marinho 7 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 3Mostre que para qualquer n ∈ N, se 1 + x > 0, então(1 + x) n ≥ 1 + nxBase: Para n = 1 temos 1 + x ≥ 1 + x.Hipótese Indutiva: (1 + x) k ≥ 1 + kxMostrar: (1 + x) k+1 ≥ 1 + (k + 1)x(1 + x) k+1=(1 + x)(1 + x) k≥(1 + x)(1 + kx) (pela hip. indutiva)=1 + (k + 1)x + kx 2≥1 + (k + 1)x (pois kx 2 ≥ 0)Prof. Dr. Leandro Balby Marinho 7 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 4Mostre que, para qualquer inteiro positivo n, 2 2n − 1 é divisível por 3.Prof. Dr. Leandro Balby Marinho 8 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 4Mostre que, para qualquer inteiro positivo n, 2 2n − 1 é divisível por 3.◮ Base: P(1) é verdade, pois 2 2(1) − 1 = 3 é divisível por 3.◮ Hip. Indutiva: Assumimos quepara algum inteiro m.P(k) = 2 2k − 1 = 3m ⇒ 2 2k = 3m + 1◮ Mostrar: 2 2(k+1) − 1 é divisível por 3.2 2(k+1) − 1 =2 2k+2 − 1=2 2 · 2 2k − 1=2 2 (3m + 1) − 1 (pela hipótese de indução)=12m + 3=3(4m + 1)Prof. Dr. Leandro Balby Marinho 8 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExercíciosExercício 1: Mostre que, para todo inteiro positivo n,1 + 2 + . . . + n =n(n + 1)2Exercício 2: Mostre que, para todo inteiro positivo n,1 + 2 + 2 2 + . . . + 2 n = 2 n+1 − 1Exercício 3: Mostre que, para qualquer inteiro positivo n,1 + 4 + 9 + 16 + . . . + n 2 =n(n + 1)(2n + 1)6Exercício 4: Mostre que uma árvore binária completa de k níveis possui2 k − 1 vértices.Prof. Dr. Leandro Balby Marinho 9 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosRoteiro1. Indução Matemática2. Indução Fraca3. Indução Forte4. <strong>Recursividade</strong>5. Relações de Recorrência6. Algoritmos RecursivosProf. Dr. Leandro Balby Marinho 10 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosSegundo Princípio de Indução MatemáticaSegundo Princípio de Indução ou Indução FortePara provar que P(n) é verdade para todo n ∈ N, precisamos provar oseguinte:1. P(1) (passo básico ou base da indução )2. (∀k ∈ N) (P(1) ∧ P(2) ∧ . . . ∧ P(k) → P(k + 1) (passo indutivo)Princípio da Boa OrdenaçãoToda coleção de inteiros positivos que contém algum elemento tem ummenor elemento.Prof. Dr. Leandro Balby Marinho 10 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 5Prove que, para todo n ≥ 2, n é um número primo ou pode ser decompostoem um produto de números primos, sendo essa decomposição única.Prof. Dr. Leandro Balby Marinho 11 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 5Prove que, para todo n ≥ 2, n é um número primo ou pode ser decompostoem um produto de números primos, sendo essa decomposição única.Base: Como 2 é é primo, então o caso base é verificado.Hipótese Indutiva: Assumimos queé verdadeiro.P(2) ∧ P(3) ∧ . . . ∧ P(k)Mostrar: Para provar que P(k + 1) temos que considerar dois casos:1. Se k + 1 é primo então P(k + 1) é verificado e terminamos.2. Se não, k + 1 é um composto e então ele tem fatores u, v tal que2 ≤ u, v < k + 1 tal queu · v = k + 1Prof. Dr. Leandro Balby Marinho 11 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 5 Cont.Agora aplicamos o passo indutivo; ambos u e v são menores que k + 1 eportanto podem ambos ser decompostos em um produto único de primos;u := ∏ ip i ,v := ∏ jp jPortanto,k + 1 :=(u := ∏ ip i) ⎛ ⎝v := ∏ jp j⎞⎠e verificamos P(k + 1) por indução forte.Prof. Dr. Leandro Balby Marinho 12 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosRoteiro1. Indução Matemática2. Indução Fraca3. Indução Forte4. <strong>Recursividade</strong>5. Relações de Recorrência6. Algoritmos RecursivosProf. Dr. Leandro Balby Marinho 13 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos Recursivos<strong>Recursividade</strong>: RevisãoUma definição onde um item é definido em termos de si mesmo échamada de uma definição recursiva ou definição por recorrência.Uma definição recursiva tem duas partes:Prof. Dr. Leandro Balby Marinho 13 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos Recursivos<strong>Recursividade</strong>: RevisãoUma definição onde um item é definido em termos de si mesmo échamada de uma definição recursiva ou definição por recorrência.Uma definição recursiva tem duas partes:1. Um caso base, onde casos mais simples do item sendodefinido são especificados.Prof. Dr. Leandro Balby Marinho 13 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos Recursivos<strong>Recursividade</strong>: RevisãoUma definição onde um item é definido em termos de si mesmo échamada de uma definição recursiva ou definição por recorrência.Uma definição recursiva tem duas partes:1. Um caso base, onde casos mais simples do item sendodefinido são especificados.2. Um passo recursivo, onde novos casos são construídos emfunção de casos anteriores.Prof. Dr. Leandro Balby Marinho 13 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosSequênciasSequênciaUma sequência S é uma lista de objetos numerados em determinadaordem. S(n) denota o n-ésimo elemento da sequencia.Por exemplo a seqência S(n) = 2n − 1, onde n ∈ N, é definida por:S(1) = 2(1) − 1 = 1S(2) = 2(2) − 1 = 3S(3) = 2(3) − 1 = 5.Prof. Dr. Leandro Balby Marinho 14 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosSequências Definidas RecursivamenteConsidere a sequência S abaixo.1. S(1) = 1 (condição básica)2. S(n) = S(n − 1) + 2 para n ≥ 2 (passo recursivo)Prof. Dr. Leandro Balby Marinho 15 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosSequências Definidas RecursivamenteConsidere a sequência S abaixo.1. S(1) = 1 (condição básica)2. S(n) = S(n − 1) + 2 para n ≥ 2 (passo recursivo)O primeiro elemento é S(1) = 2 pela condição básica. A partir disso,aplicando o passo recursivo temos:S(2) = S(1) + 2 = 1 + 2 = 3S(3) = S(2) + 2 = 3 + 2 = 5S(4) = S(3) + 2 = 5 + 2 + 7.Também são chamadas de relações de recorrência.Prof. Dr. Leandro Balby Marinho 15 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosSequências Definidas RecursivamenteSequência de FibonacciA sequência de Fibonacci f é definida por:1. f (0) = 0 (condição básica)2. f (1) = 1 (condição básica)3. f (n) = f (n − 1) + f (n − 2) para n ≥ 2 (passo recursivo)Prof. Dr. Leandro Balby Marinho 16 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosSequências Definidas RecursivamenteSequência de FibonacciA sequência de Fibonacci f é definida por:1. f (0) = 0 (condição básica)2. f (1) = 1 (condição básica)3. f (n) = f (n − 1) + f (n − 2) para n ≥ 2 (passo recursivo)Exemplo 6: A sequência de Fibonacci para 2 ≤ n ≤ 6 segue abaixo:f (2) = f (1) + f (0) = 1 + 0 = 1f (3) = f (2) + f (1) = 1 + 1 = 2f (4) = f (3) + f (2) = 2 + 1 = 3f (5) = f (4) + f (3) = 3 + 2 = 5f (6) = f (5) + f (4) = 5 + 3 = 8Prof. Dr. Leandro Balby Marinho 16 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 7Mostre que o n-ésimo número Fibonacci é definido por f (n) = f (n − 1) +f (n − 2) para todo n ≥ 2.Prof. Dr. Leandro Balby Marinho 17 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 7Mostre que o n-ésimo número Fibonacci é definido por f (n) = f (n − 1) +f (n − 2) para todo n ≥ 2.Como f (n) depende de dois valores anteriores, vamos provar por induçãoforte. Primeiro verificamos o passo básicoque é verdadeiro.f (2) = f (1) + f (0) = 1Prof. Dr. Leandro Balby Marinho 17 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 7Mostre que o n-ésimo número Fibonacci é definido por f (n) = f (n − 1) +f (n − 2) para todo n ≥ 2.Como f (n) depende de dois valores anteriores, vamos provar por induçãoforte. Primeiro verificamos o passo básicoque é verdadeiro.f (2) = f (1) + f (0) = 1Para a hipótese indutiva assumimos que para todo 2 ≤ r ≤ k:f (r) = f (r − 2) + f (r − 1) (3)Prof. Dr. Leandro Balby Marinho 17 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 7Mostre que o n-ésimo número Fibonacci é definido por f (n) = f (n − 1) +f (n − 2) para todo n ≥ 2.Como f (n) depende de dois valores anteriores, vamos provar por induçãoforte. Primeiro verificamos o passo básicoque é verdadeiro.f (2) = f (1) + f (0) = 1Para a hipótese indutiva assumimos que para todo 2 ≤ r ≤ k:e tentamos provar quef (r) = f (r − 2) + f (r − 1) (3)f (k + 1) := f ([k + 1] − 1) + f ([k + 1] − 2) = f (k − 1) + f (k) (4)Prof. Dr. Leandro Balby Marinho 17 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 7 cont.Lembre-se quef (k − 1) = f (k − 3) + f (k − 2)f (k) = f (k − 2) + f (k − 1)Prof. Dr. Leandro Balby Marinho 18 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 7 cont.Lembre-se quef (k − 1) = f (k − 3) + f (k − 2)f (k) = f (k − 2) + f (k − 1)Substituindo na Eq. (4) temosf (k + 1) = [f (k − 3) + f (k − 2)] + [f (k − 2) + f (k − 1)]Prof. Dr. Leandro Balby Marinho 18 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 7 cont.Lembre-se queSubstituindo na Eq. (4) temosf (k − 1) = f (k − 3) + f (k − 2) ef (k) = f (k − 2) + f (k − 1)f (k + 1) = [f (k − 3) + f (k − 2)] + [f (k − 2) + f (k − 1)]} {{ } } {{ }f (k−1)f (k)E portanto fica provado o passo indutivo.Prof. Dr. Leandro Balby Marinho 19 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosConjuntos Definidos por RecorrênciaUm conjunto é uma coleção desordenada de objetos.Prof. Dr. Leandro Balby Marinho 20 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosConjuntos Definidos por RecorrênciaUm conjunto é uma coleção desordenada de objetos.Exemplo 8: O subconjunto S dos inteiros definido por1. 3 ∈ S (condição básica)2. Se x ∈ S e y ∈ S, então x + y ∈ S (passo recursivo).Prof. Dr. Leandro Balby Marinho 20 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosConjuntos Definidos por RecorrênciaUm conjunto é uma coleção desordenada de objetos.Exemplo 8: O subconjunto S dos inteiros definido por1. 3 ∈ S (condição básica)2. Se x ∈ S e y ∈ S, então x + y ∈ S (passo recursivo).Alguns elementos de S são 3 + 3 = 6, 3 + 6 = 6 + 3 = 9, 6 + 6 = 12 eassim por diante. S se trata dos múltiplos positivos de 3 (verifique isso).Prof. Dr. Leandro Balby Marinho 20 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExercício 7Dê uma definição recursiva para o conjunto de pessoas que sãoancestrais de João. A condição básica é dada abaixo:1. Os pais de João são seus ancestrais (condição básica)2. Passo recursivo ?Prof. Dr. Leandro Balby Marinho 21 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosCadeias Definidas por RecorrênciaCadeiaO conjunto Σ ∗ de cadeias sob o alfabeto Σ pode ser definido por:1. λ ∈ Σ ∗ (no qual λ é a cadeia vazia) (condição básica)2. Se w ∈ Σ ∗ e x ∈ Σ, então wx ∈ Σ ∗ (passo recursivo).Prof. Dr. Leandro Balby Marinho 22 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosCadeias Definidas por RecorrênciaCadeiaO conjunto Σ ∗ de cadeias sob o alfabeto Σ pode ser definido por:1. λ ∈ Σ ∗ (no qual λ é a cadeia vazia) (condição básica)2. Se w ∈ Σ ∗ e x ∈ Σ, então wx ∈ Σ ∗ (passo recursivo).Exemplo 9: Seja Σ = {0, 1}. O conjunto Σ ∗ de todas as cadeias em Σpode ser dado usando-se a definição recursiva acima.Prof. Dr. Leandro Balby Marinho 22 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosCadeias Definidas por RecorrênciaCadeiaO conjunto Σ ∗ de cadeias sob o alfabeto Σ pode ser definido por:1. λ ∈ Σ ∗ (no qual λ é a cadeia vazia) (condição básica)2. Se w ∈ Σ ∗ e x ∈ Σ, então wx ∈ Σ ∗ (passo recursivo).Exemplo 9: Seja Σ = {0, 1}. O conjunto Σ ∗ de todas as cadeias em Σpode ser dado usando-se a definição recursiva acima.A condição básica forma a cadeia vazia λ. Na primeira aplicação do passorecursivo, as cadeias 0 e 1 são formadas. Na segunda aplicação do passorecursivo, as cadeias 00, 01, 10 e 11 são formadas e assim por diante.Prof. Dr. Leandro Balby Marinho 22 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosOperações Definidas por RecorrênciaCertas operações em objetos podem ser definidas por recorrência.Prof. Dr. Leandro Balby Marinho 23 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosOperações Definidas por RecorrênciaCertas operações em objetos podem ser definidas por recorrência.Exemplo 10: Uma definição recursiva para a exponenciação a n de umnúmero real não nulo a, no qual n é um inteiro positivo é1. a 0 = 1 (condição básica)2. a n = a(a n−1 ) para n ≥ 1 (passo recursivo)Prof. Dr. Leandro Balby Marinho 23 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosOperações Definidas por RecorrênciaCertas operações em objetos podem ser definidas por recorrência.Exemplo 10: Uma definição recursiva para a exponenciação a n de umnúmero real não nulo a, no qual n é um inteiro positivo é1. a 0 = 1 (condição básica)2. a n = a(a n−1 ) para n ≥ 1 (passo recursivo)Exemplo 11: Uma definição recursiva para a multiplicação dos inteirospositivos a e b é1. a(1) = a (condição básica)2. a(b) = a(b − 1) + a para b ≥ 2 (passo recursivo)Prof. Dr. Leandro Balby Marinho 23 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosRoteiro1. Indução Matemática2. Indução Fraca3. Indução Forte4. <strong>Recursividade</strong>5. Relações de Recorrência6. Algoritmos RecursivosProf. Dr. Leandro Balby Marinho 24 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosRelações de RecorrênciaAs vezes é conveniente expressar uma relação de recorrência como umasolução fechada. Por exemplo, expandindo a recorrênciaS(1) = 2S(n) = 2S(n − 1) para n ≥ 2S(1) = 2 = 2 1S(2) = 4 = 2 2S(3) = 8 = 2 3S(4) = 16 = 2 4.vemos que S(n) = 2 n . Prove!Prof. Dr. Leandro Balby Marinho 24 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExpandir, Conjecturar e Verificar◮ Expandir: usa repetidamente a recorrência para expandir aexpressão a partir do n-ésimo termo até o caso base.◮ Conjecturar: a expansão nos ajuda a conjecturar a solução darecorrência.◮ Verificar: a conjectura é finalmente verificada por indução.Prof. Dr. Leandro Balby Marinho 25 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 12Resolva a seguinte relação de recorrência:S(1) = 2S(n) = 2S(n − 1) para n ≥ 2Prof. Dr. Leandro Balby Marinho 26 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 12 cont.Expandindo aplicando a definição para n, n − 1, n − 2, etc.:S(n) = 2S(n − 1).= 2[2S(n − 2)] = 2 2 S(n − 2)= 2 2 [2S(n − 3)] = 2 3 S(n − 3)= 2 3 [2S(n − 4)] = 2 4 S(n − 4)Analisando o padrão, conjecturamos que, após k expansões, a equaçãotem a formaS(n) = 2 k S(n − k)Prof. Dr. Leandro Balby Marinho 27 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 12 cont.A expansão tem que parar quando n − k = 1, ou seja, quando k = n − 1.Nesse ponto temos:S(n) = 2 n−1 S[n − (n − 1)]= 2 n−1 S(1) = 2 n−1 (2) = 2 nAinda falta provar que 2 n é a solução da recorrência.Prof. Dr. Leandro Balby Marinho 28 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 12 cont.Podemos verificar isso por indução. A base da indução é S(1) = 2 1que é verdade pelo caso base da definição recursiva. Agora supondoque S(k) = 2 k , temosS(k + 1) = 2S(k)S(k + 1) = 2(2 k )S(k + 1) = 2 k+1E portanto fica provada a relação de recorrência.Prof. Dr. Leandro Balby Marinho 29 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosRoteiro1. Indução Matemática2. Indução Fraca3. Indução Forte4. <strong>Recursividade</strong>5. Relações de Recorrência6. Algoritmos RecursivosProf. Dr. Leandro Balby Marinho 30 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosAlgoritmos RecursivosAlgoritmo RecursivoUm algoritmo é recursivo quando ele resolve um problema reduzindo-o ainstâncias menores do mesmo problema.Prof. Dr. Leandro Balby Marinho 30 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosAlgoritmos RecursivosAlgoritmo RecursivoUm algoritmo é recursivo quando ele resolve um problema reduzindo-o ainstâncias menores do mesmo problema.Exemplo 13: Algoritmo recursivo para calcular n!Fat(n)1 if n == 02 return 13 else4 return Fat(n − 1) · n para n > 0Prof. Dr. Leandro Balby Marinho 30 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosAlgoritmos RecursivosExemplo 14: Algoritmo recursivo para calcular a nPot(a, n)1 if n == 02 return 13 else4 return a · Pot(a, n − 1)Prof. Dr. Leandro Balby Marinho 31 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosCorretude de Algoritmos Recursivos◮ Indução matemática pode ser usada para provar quealgoritmos recursivos estão corretos.Prof. Dr. Leandro Balby Marinho 32 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosCorretude de Algoritmos Recursivos◮ Indução matemática pode ser usada para provar quealgoritmos recursivos estão corretos.◮ Defina a conjectura a provar.Prof. Dr. Leandro Balby Marinho 32 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosCorretude de Algoritmos Recursivos◮ Indução matemática pode ser usada para provar quealgoritmos recursivos estão corretos.◮ Defina a conjectura a provar.◮ Caso Base: condição de parada do algoritmo.Prof. Dr. Leandro Balby Marinho 32 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosCorretude de Algoritmos Recursivos◮ Indução matemática pode ser usada para provar quealgoritmos recursivos estão corretos.◮ Defina a conjectura a provar.◮ Caso Base: condição de parada do algoritmo.◮ Assuma que as chamadas recursivas anteriores estão corretas(hipótese indutiva).Prof. Dr. Leandro Balby Marinho 32 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosCorretude de Algoritmos Recursivos◮ Indução matemática pode ser usada para provar quealgoritmos recursivos estão corretos.◮ Defina a conjectura a provar.◮ Caso Base: condição de parada do algoritmo.◮ Assuma que as chamadas recursivas anteriores estão corretas(hipótese indutiva).◮ Use a hip. indutiva para provar que a execução atual é correta(passo indutivo).Prof. Dr. Leandro Balby Marinho 32 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 15Prove que o algoritmo do fatorial recursivo é correto.◮ Conjectura: Fat(n) = n!, para n ≥ 0Prof. Dr. Leandro Balby Marinho 33 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 15Prove que o algoritmo do fatorial recursivo é correto.◮ Conjectura: Fat(n) = n!, para n ≥ 0◮ Caso Base: Se n = 0, então Fat(n) = 1. Isso é correto jáque 0! = 1.Prof. Dr. Leandro Balby Marinho 33 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 15Prove que o algoritmo do fatorial recursivo é correto.◮ Conjectura: Fat(n) = n!, para n ≥ 0◮ Caso Base: Se n = 0, então Fat(n) = 1. Isso é correto jáque 0! = 1.◮ Hip. indutiva: Agora assumimos que Fat(k) = k!Prof. Dr. Leandro Balby Marinho 33 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 15Prove que o algoritmo do fatorial recursivo é correto.◮ Conjectura: Fat(n) = n!, para n ≥ 0◮ Caso Base: Se n = 0, então Fat(n) = 1. Isso é correto jáque 0! = 1.◮ Hip. indutiva: Agora assumimos que Fat(k) = k!◮ Mostrar: Fat(k + 1) = (k + 1)!Prof. Dr. Leandro Balby Marinho 33 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExemplo 15Prove que o algoritmo do fatorial recursivo é correto.◮ Conjectura: Fat(n) = n!, para n ≥ 0◮ Caso Base: Se n = 0, então Fat(n) = 1. Isso é correto jáque 0! = 1.◮ Hip. indutiva: Agora assumimos que Fat(k) = k!◮ Mostrar: Fat(k + 1) = (k + 1)!◮ Passo Indutivo: ComoFat(k + 1) = Fat(k) · (k + 1)e pela hipótese indutiva Fat(k) = k!, segue queFat(k + 1) = (k + 1) · k! = (k + 1)!Prof. Dr. Leandro Balby Marinho 33 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosExercício 8Mostre que o algoritmo Pot é correto.Prof. Dr. Leandro Balby Marinho 34 / 35 UFCG CEEI


Indução Indução Fraca Indução Forte <strong>Recursividade</strong> Relações de Recorrência Algoritmos RecursivosReferênciasKeneth H. Rosen. Discrete Mathematics and Its Applications.Sexta Edição. McGRAW-HILL International Edition, 2007.Judith L. Gersting. Fundamentos Matemáticos para a Ciênciada Computação. Quinta Edição. LTC, 2004.Prof. Dr. Leandro Balby Marinho 35 / 35 UFCG CEEI

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!