12.07.2015 Views

Induįão e Recursividade

Induįão e Recursividade

Induįão e Recursividade

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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!