Indução Matemática Recursão Estruturas Discretas e Lógica Matemática Dep. de Informática – UFMA Prof. Anselmo Paiva
Indução O princípio da indução matemática é uma ferramenta muito útil para provar certas propriedades dos números naturais. Não pode ser usada para descobrir teoremas, mas somente para prová-los. Prof. Anselmo Paiva
Indução Seja P(n) uma função proposicioinal, e queremos provar que P(n) é verdadeiro para qualquer n natural : Mostre que P(0) é true. (passo básico) Mostre que se P(n) então P(n + 1) para qualquer nN. (passo indutivo) Então P(n) deve ser true para qualquer nN. (conclusão) Prof. Anselmo Paiva
Mostre que n < 2n para todo inteiro positivo n. Indução Exemplo: Mostre que n < 2n para todo inteiro positivo n. Seja P(n) a proposição “n < 2n.” Mostre que P(1) é true. (passo básico) P(1) é true, porque 1 < 21 = 2. Prof. Anselmo Paiva
Mostre que se P(n) é true, então P(n + 1) é true. ( passo indutivo) Indução Mostre que se P(n) é true, então P(n + 1) é true. ( passo indutivo) Assuma que n < 2n é true. Precisamos mostrar que P(n + 1) é true, n + 1 < 2n+1 Começamos com n < 2n: n + 1 < 2n + 1 2n + 2n = 2n+1 Assim, se n < 2n então n + 1 < 2n+1 Prof. Anselmo Paiva
Então P(n) deve ser true para qualquer inteiro possitivo. (conclusão) Indução Então P(n) deve ser true para qualquer inteiro possitivo. (conclusão) n < 2n é true para todo inteiro positivo. C.Q.D Prof. Anselmo Paiva
Outro exemplo (“Gauss”): Mostre que P(0) é true.(passo base) Indução Outro exemplo (“Gauss”): 1 + 2 + … + n = n (n + 1)/2 Mostre que P(0) é true.(passo base) Para n = 0 temos 0 = 0. True. Prof. Anselmo Paiva
Mostre que se P(n) então P(n + 1) para qualquer nN. (passo indutivo) Indução Mostre que se P(n) então P(n + 1) para qualquer nN. (passo indutivo) 1 + 2 + … + n = n (n + 1)/2 1 + 2 + … + n + (n + 1) = n (n + 1)/2 + (n + 1) = (2n + 2 + n (n + 1))/2 = (2n + 2 + n2 + n)/2 = (2 + 3n + n2 )/2 = (n + 1) (n + 2)/2 = (n + 1) ((n + 1) + 1)/2 Prof. Anselmo Paiva
Então P(n) deve ser true para todo nN. (conclusão) Indução Então P(n) deve ser true para todo nN. (conclusão) 1 + 2 + … + n = n (n + 1)/2 é true para todo nN. C.Q.D. Prof. Anselmo Paiva
É chamado de segundo princípio da indução matemática. Existe outra técnica de prova similar ao princípio da indução matemática. É chamado de segundo princípio da indução matemática. Pode ser usado para provar que uma função proposicional P(n) é true para todo número natural. Prof. Anselmo Paiva
O segundo princípio da indução matemática: Mostre que P(0)é true. (passo básico) Mostre que se P(0) e P(1) e … e P(n), então P(n + 1) para todo nN. (passo indutivo) Então P(n) deve ser true para todo nN. (conclusão) Prof. Anselmo Paiva
Mostre que P(2) é true. (passo básico) Indução Exemplo: Mostre que todo inteiro maior que 1 pode ser escrito como um produto de número primos. Mostre que P(2) é true. (passo básico) 2 é o produto de um primo: ele mesmo. Prof. Anselmo Paiva
indução mostre que se P(2) e P(3) e … e P(n), então P(n + 1) para qualquer nN. (passo indutivo) Dois casos possíveis: Se (n + 1) é primo, então P(n + 1) é true. Se (n + 1) não é primo, ele pode se escrito como produto de dois inteiros a e b tal que 2 a b < n + 1. Pwla hipótese de indução, a e b podems er escritos como produtos de primos. Então, n + 1 = ab pode ser escrito como um produto de primor. Prof. Anselmo Paiva
Assim, P(n) deve ser true para qualquer nN. (conclusão) Indução Assim, P(n) deve ser true para qualquer nN. (conclusão) C.Q.D. Provamos que todo inteiro maior que 1 pode ser escrito como um produto de números primos. Prof. Anselmo Paiva
Definições Recursivas recursão é um princípio relacionado à indução matemática. Numa definição recursiva um objeto é descrito em função de sim mesmo. Podemos definir recursivamente sequências, funções e conjuntos. Prof. Anselmo Paiva
Sequências Recursivamente Definidas Exemplo: A sequência {an} de pontências de 2 é dada por an = 2n para n = 0, 1, 2, … . A mesma sequência pode ser definida recursivamente: a0 = 1 an+1 = 2an para n = 0, 1, 2, … Obviamente indução e recursão são similares. Prof. Anselmo Paiva
Funções Definidas Recursivamente Podemos usar o seguinte método para definir uma função com domínio nos números naturais: Especifique o valor da função para zero. Dê uma regra para encontraro valor da função para um inteiro qualquer, a partir dos inteiros menores que ele. Um definição assim é denominada recursiva. Prof. Anselmo Paiva
Funções Definidas Recursivamente Exemplo: f(0) = 3 f(n + 1) = 2f(n) + 3 f(1) = 2f(0) + 3 = 23 + 3 = 9 f(2) = 2f(1) + 3 = 29 + 3 = 21 f(3) = 2f(2) + 3 = 221 + 3 = 45 f(4) = 2f(3) + 3 = 245 + 3 = 93 Prof. Anselmo Paiva
Funções Definidas Recursivamente Como definir a função fatorial (f(n) = n!) recursivamente ? f(0) = 1 f(n + 1) = (n + 1)f(n) f(1) = 1f(0) = 11 = 1 f(2) = 2f(1) = 21 = 2 f(3) = 3f(2) = 32 = 6 f(4) = 4f(3) = 46 = 24 Prof. Anselmo Paiva
Funções Definidas Recursivamente Exemplo: Números de Fibonacci f(0) = 0, f(1) = 1 f(n) = f(n – 1) + f(n - 2) f(0) = 0 f(1) = 1 f(2) = f(1) + f(0) = 1 + 0 = 1 f(3) = f(2) + f(1) = 1 + 1 = 2 f(4) = f(3) + f(2) = 2 + 1 = 3 f(5) = f(4) + f(3) = 3 + 2 = 5 f(6) = f(5) + f(4) = 5 + 3 = 8 Prof. Anselmo Paiva
Conjuntos Definidos Recursivamente Se queremos definir um conjunt recursivamente: Um conjunto inicial de elementos, Regras para construção des demais elementos a apartir do conjunto incial. Exemplo: Seja S definido recursivamente por: 3 S (x + y) S if (x S) e (y S) S é o conjunto dos inteiros positivos divisíveis por 3. Prof. Anselmo Paiva
Conjuntos Definidos Recursivamente Prova: Seja A o conjunto de todos os inteiros positivos divisíveis por 3. Para mostrar que A = S,(A S e S A). Parte I: Prove que A S Mostrar que todo inteiro positivo divisível por 3 está em S. Indução matemática. Prof. Anselmo Paiva
Conjuntos Definidos Recursivamente Seja P(n) a afirmativa “3n pertence a S”. Passo básico: P(1) é true, porque 3 está em S. Passo Indutivo: Se P(n) é true, então P(n + 1) é true. Assuma que 3n está em S. Como 3n está em S e 3 está em S Da definição recursiva de S temos que 3n + 3 = 3(n + 1) também está em S. Conclusãon da Parte I: A S. Prof. Anselmo Paiva
Conjuntos Definidos Recursivamente Part II: Mostrar que : S A. Passo básico: Todos os elementos iniciais de S estão em A 3 está em A. True. Passo Indutivo: (x + y) está em A se x e y estão em S. Se x e y estão em A, Então 3 | x e 3 | y. Do Teorema Isegue que 3 | (x + y). Conclusão da Parte II: S A. Logo: A = S. Prof. Anselmo Paiva
Conjuntos Definidos Recursivamente Exemplo: Fórmulas bem formadas de variáveis, numeria s e operadores de {+, -, *, /, ^} são definidas por: x é uma fórmula bem formada se x é um numeral ou uma variável. (f + g), (f – g), (f * g), (f / g), (f ^ g) são fórmulas bem formadas. Prof. Anselmo Paiva
Conjuntos Definidos Recursivamente Com esta definição, podemos construir fórmulas como:: (x – y) ((z / 3) – y) ((z / 3) – (6 + 5)) ((z / (2 * 4)) – (6 + 5)) Prof. Anselmo Paiva
Algoritmos Recursivos Um algoritmo é denominado recursivo se resolve um problema reduzindo-o a uma instância do mesmo problema com tamanho menor. Exemplo I: Algoritmo Recursivo de Fibonacci procedure fibo(n: nonnegative integer) if n = 0 then fibo(0) := 0 else if n = 1 then fibo(1) := 1 else fibo(n) := fibo(n – 1) + fibo(n – 2) Prof. Anselmo Paiva
Algoritmos Recursivos Avaliação Recursiva de Fibonacci: f(4) f(3) f(2) f(2) f(1) f(1) f(0) f(1) f(0) Prof. Anselmo Paiva
Algoritmos Recursivos procedure iterative_fibo(n: nonnegative integer) if n = 0 then y := 0 else x := 0 y := 1 for i := 1 to n-1 z := x + y x : = y y := z end end {y is the n-th Fibonacci number} Prof. Anselmo Paiva
Algoritmos Recursivos Para cada algoritmo recursivo, existe um equivalente iterativo. Algoritmos recursivos são menores, mais elegantes e fáceis de entender Algoritmos iterativos são em geral mais eficientes em tempo e memória. Prof. Anselmo Paiva