PCC104 - Projeto e Análise de Algoritmos

Documentos relacionados
Indução Matemática. George Darmiton da Cunha Cavalcanti CIn - UFPE

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Matemática Discreta - 05

Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Matemática Discreta - 04

Busca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência

Referências e materiais complementares desse tópico

Indução Matemática. Matemática Discreta. Indução Matemática. Mayara Midori Omai e Sheila Morais de Almeida UTFPR-PG. Abril

Indução Matemática. Profa. Sheila Morais de Almeida. junho DAINF-UTFPR-PG

Técnicas de Demonstração. Raquel de Souza Francisco Bravo 17 de novembro de 2016

Lista de Exercícios 6: Soluções Funções

Solução de Recorrências

19 AULA. Princípio da Boa Ordem LIVRO. META Introduzir o princípio da boa ordem nos números naturais e algumas de suas conseqüências.

Análise de algoritmos

Algoritmos e Estrutura de Dados. Aula 04 Recorrência Prof. Tiago A. E. Ferreira

PARADIGMAS DE PROJETO DE ALGORITMOS

11º ano - Indução matemática

Indução Matemática Fraca. Raquel de Souza Francisco Bravo 24 de novembro de 2016

Análise de Algoritmos

ANÁLISE DE ALGORITMOS: PARTE 3

BCC202 - Estrutura de Dados I

Introdução à Teoria dos Números - Notas 1 Os Princípios da Boa Ordem e de Indução Finita

Estruturas de Dados 2

Aula 1: Introdução ao curso

PCC104 - Projeto e Análise de Algoritmos

PCC104 - Projeto e Análise de Algoritmos

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Complexidade de Algoritmos I

Tarefa 06 Todos Subconjuntos

1 Conjuntos, Números e Demonstrações

Introdução ao Curso. Área de Teoria DCC/UFMG 2019/01. Introdução à Lógica Computacional Introdução ao Curso Área de Teoria DCC/UFMG /01 1 / 22

BCC202 - Estrutura de Dados I

Bases Matemáticas. Juliana Pimentel. 15 de junho de 2016

Relações de recorrência

Matemática Discreta Bacharelado em Sistemas de Informação Resolução - 4ª Lista de Exercícios. Indução e Recursão

PARADIGMAS DE PROJETO DE ALGORITMOS

n. 20 INDUÇÃO MATEMÁTICA

Lógica Matemática - Indução

Sequências e Séries Infinitas. Copyright Cengage Learning. Todos os direitos reservados.

No. Try not. Do... or do not. There is no try. - Master Yoda, The Empire Strikes Back (1980)

Complexidade de Algoritmos

Matemática para Ciência de Computadores

Técnicas de projeto de algoritmos: Indução

Os números inteiros. Álgebra (Curso de CC) Ano lectivo 2005/ / 51

Relações de Recorrência

Bases Matemáticas. Como o Conhecimento Matemático é Construído. Aula 2 Métodos de Demonstração. Rodrigo Hausen. Definições Axiomas.

Roteiro da segunda aula presencial - ME

Princípio da boa ordenação. Aula 03. Princípio da boa ordenação. Princípio da boa ordenação. Indução Finita e Somatórios

É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser

n. 18 ALGUNS TERMOS...

Números Naturais. MA12 - Unidade 1. Os Axiomas de Peano. O Axioma da Indução. Exemplo: uma demonstração por indução

ANÁLISE DE ALGORITMOS

Estruturas de Dados 2

1 Números Reais (Soluções)

Conjuntos Numéricos Aula 6. Conjuntos Numéricos. Armando Caputi

Relações de recorrência

Os números naturais. Capítulo Operações em N

Matemática para Ciência de Computadores

Universidade Federal de Santa Maria Departamento de Matemática Curso de Verão Lista 1. Números Naturais

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016

Indução Matemática Forte. Raquel de Souza Francisco Bravo de novembro de 2016

RESOLUÇÕES ALTERNATIVAS PARA ALGUNS PROBLEMAS DE INDUÇÃO FINITA

Indução. Método de Prova por Indução. Jon Barwise e John Etchemendy, Capítulo: 16

U.C Matemática Finita. 6 de junho de Questões de escolha múltipla

4 Princípios de Indução Finita e demonstrações por indução

PCC173 - Otimização em Redes

Uma curiosa propriedade com inteiros positivos

Semântica Operacional

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Teoria da Computação. Aula 4 Técnicas de Análise 5COP096. Aula 4 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Errata da lista 1: Na página 4 (respostas), a resposta da letra e da questão 13 é {2, 3, 5, 7, 11, 13, 17} (faltou o número 17)

RESOLUÇÃO DCC-UFRJ MATEMÁTICA COMBINATÓRIA 2006/2 PROVA Considere a soma. S n = n 2 n 1

Matemática Discreta - 06

Projeto e Análise de Algoritmos

Lista 1 - Bases Matemáticas

Teoremas de uma, duas e três séries de Kolmogorov

Análise na Reta - Verão UFPA 1a lista - Números naturais; Corpos ordenados

Cálculo Diferencial e Integral I

Algoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas

André Vignatti DINF- UFPR

Programação Estruturada

O verbo induzir significa gerar. Nesta aula, começaremos a ver o assunto Indução Matemática

Comportamento Assintótico. Algoritmos e Estruturas de Dados Flavio Figueiredo (

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Classes, Herança e Interfaces

Técnicas de análise de algoritmos

Introdução à Análise Algoritmos

Demonstrações. Terminologia Métodos

Lista 2 - Bases Matemáticas

Aula 1. Teoria da Computação III

Projeto e Análise de Algoritmos

Paradigmas de projeto de algoritmos PARADIGMAS DE PROJETO DE ALGORITMOS. Princípio da indução matemática. Princípio da indução matemática (fraca)

Soluções dos Exercícios do Capítulo 2

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

Medida do Tempo de Execução de um Programa

Lista de Exercícios 6 Funções

UMA PROVA DE CONSISTÊNCIA

Notas sobre minorantes de complexidade

28. Prove ou apresente um contra-exemplo: O produto de quaisquer três inteiros consecutivos é par.

Transcrição:

PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 7 de outubro de 2016 Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 1 / 40

Avisos Site da disciplina: http://www.decom.ufop.br/marco/ Lista de e-mails: pcc104@googlegroups.com Para solicitar acesso: http://groups.google.com/group/pcc104 Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 2 / 40

Na aula de hoje 1 Indução Matemática Exemplos 2 Indução Matemática e Algoritmos Indução Matemática e Algoritmos Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 3 / 40

Avisos Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 4 / 40

Ian Parberry e William Gasarch, Problems on Algorithms At first sight, this may seem out of place because it doesn t seem to be about algorithms at all. Although the problems are mainly mathematical in nature and have little to do with algorithms, they are good practice in a technique that is fundamental to algorithm design, verification and analysis. If you ignored the material on mathematical induction in your discrete mathematics class, thinking that it is useless to a programmer, then think again. If you can master induction, you have mastered recursion they are two sides of the same coin. Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 5 / 40

Definição A indução matemática é um método de prova matemática usado para demonstrar a verdade de um número infinito de proposições. Aplicação A indução matemática pode ser aplicada na prova de resultados em uma grande variedade de objetos discretos: Complexidade de algoritmos; Corretude de algoritmos; Teoremas sobre grafos e árvores; E uma grande quantidade de inequações. Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 6 / 40

Definição Indução matemática é o raciocínio segundo o qual se estende uma propriedade a todos os elementos de um conjunto; Este raciocínio consiste em provar que um enunciado é valido para um conjunto todo; Basta provar que um enunciado vale para o primeiro número do conjunto, e supor que, portanto, valeria para qualquer elemento n do mesmo conjunto; A indução se concretiza por conseguir provar determinada propriedade para um elemento n+1 genérico, assim independente do ponto de partida, o enunciado valeria para todo o conjunto. Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 7 / 40

Definição Há duas formas, ou princípios da indução matemática: Princípio da Indução Matemática Fraca ; e Princípio da Indução Matemática Forte (ou Princípio da Indução Matemática Completa ). Note que as duas formas de indução matemática são equivalentes entre si; O fato de que a validade da indução matemática segue do axioma do bom ordenamento garante esta equivalência. Axioma do Bom Ordenamento Todo subconjunto não-vazio formado por números naturais possui um menor elemento". Em outras palavras, isto quer dizer que o conjunto dos números positivos inteiros é bem ordenado. Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 8 / 40

Princípio da Indução Matemática (fraca) Uma proposição P (X) pode ser provada por indução matemática (ou indução finita) da seguinte maneira: Base: Comprovamos que P é verdadeira para o caso básico (por exemplo, X=0 ou X=1); Hipótese Indutiva: Supomos que P seja verdadeira para o caso genérico X = n; Passo Indutivo: Demonstramos que P também é verdadeira para o caso X = n + 1. Idéia Como a proposição vale para o caso inicial o passo é correto, então essa proposição também será válida para todos os casos subsequentes. Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 9 / 40

Princípio da Indução Matemática (fraca) Em uma sequência de peças de dominó que estejam em pé, suficientemente próximas entre si, se a primeira peça caiu, então todas caíram. Prova por indução: Base: A primeira peça caiu (por definição); Hipótese Indutiva: Supomos que a n-ésima peça tenha caído; Passo Indutivo: Como a n-ésima peça caiu e está suficientemente próxima da peça seguinte, então a (n + 1)-ésima peça também terá caído. Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 10 / 40

Princípio da Indução Matemática (fraca) Seja P (n) uma proposição definida para os inteiros n e seja n 0 um inteiro fixo. Suponha que as duas afirmações a seguir são verdadeiras: P (n 0 ) é verdadeira; Para todos os inteiros k n 0, se P (k) é verdadeira, então P (k + 1) é verdadeira. Logo, a afirmação para todos inteiros n n 0, P (n) é verdadeira. Observação É importante salientar que em uma prova por indução matemática não é assumido que P (k) é verdadeiro. É mostrado que, se for assumido que P (k) é verdadeiro, então P (k + 1) também é verdadeiro. Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 11 / 40

Exemplo 1 Demonstre que, para todos os números naturais x e n 1, x n 1 é divisível por x 1. Prova por indução em n: Base: Para n = 1, x 1 1 é divisível por x 1; Hipótese Indutiva: Para um valor qualquer n > 1, supomos que x n 1 seja divisível por x 1, para todo x > 0 natural; Passo Indutivo: Sabemos que x n+1 1 = x n+1 x + x 1 = x(x n 1) + (x 1); Pela hipótese de indução, a primeira parcela é divisível por x 1; Como sabemos que a segunda também é, o passo está provado. Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 12 / 40

Exemplo 1 Demonstre que, para todos os números naturais x e n 1, x n 1 é divisível por x 1. Prova por indução em n: Base: Para n = 1, x 1 1 é divisível por x 1; Hipótese Indutiva: Para um valor qualquer n > 1, supomos que x n 1 seja divisível por x 1, para todo x > 0 natural; Passo Indutivo: Sabemos que x n+1 1 = x n+1 x + x 1 = x(x n 1) + (x 1); Pela hipótese de indução, a primeira parcela é divisível por x 1; Como sabemos que a segunda também é, o passo está provado. Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 12 / 40

Exemplo 2 Prove por indução matemática que 1 + 2 +... + n = n(n+1) 2, para todos inteiros n 1. Base: P (1), para n = 1 temos 1 = 1(1+1) 2 = 1; Passo Indutivo: Se a fórmula é verdadeira para n = k, então deve ser verdadeira para n = k + 1, ou seja, P (k) P (k + 1). Supondo que a fórmula é verdadeira para n = k, P (k) : 1 + 2 +... + k = k(k+1) 2, para algum inteiro k 1 Deve-se mostrar que: P (k + 1) : 1 + 2 +... + (k + 1) = (k+1)(k+2) 2 Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 13 / 40

Exemplo 2 Prove por indução matemática que 1 + 2 +... + n = n(n+1) 2, para todos inteiros n 1. Base: P (1), para n = 1 temos 1 = 1(1+1) 2 = 1; Passo Indutivo: Se a fórmula é verdadeira para n = k, então deve ser verdadeira para n = k + 1, ou seja, P (k) P (k + 1). Supondo que a fórmula é verdadeira para n = k, P (k) : 1 + 2 +... + k = k(k+1) 2, para algum inteiro k 1 Deve-se mostrar que: P (k + 1) : 1 + 2 +... + (k + 1) = (k+1)(k+2) 2 Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 13 / 40

Exemplo 2 k(k + 1) 1 + 2 +... + k + (k + 1) = + (k + 1) 2 k(k + 1) 2(k + 1) = + 2 2 = k2 + 3k + 2 2 (k + 1)(k + 2) = 2 Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 14 / 40

Exemplo 3 Prove que para dos os inteiros n 0 0 + 1 + 2 +... + n = n(n+2) 2 ERRADO! Base: P (0), para n = 0, temos 0 = 0(0 + 2)/2 = 0; Passo Indutivo: Se a fórmula é verdadeira para n = k, então deve ser verdadeira para n = k + 1, ou seja, P (k) P (k + 1). Supondo que a fórmula é verdadeira para n = k, Deve-se mostrar que: P (k) : 0 + 1 + 2 +... + k = k(k+2) 2 = k2 +2k 2 P (k + 1) : 0 + 1 + 2 +... + (k + 1) = (k+1)(k+3) 2 = k2 +4k+3 2 Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 15 / 40

Exemplo 3 Prove que para dos os inteiros n 0 0 + 1 + 2 +... + n = n(n+2) 2 ERRADO! Base: P (0), para n = 0, temos 0 = 0(0 + 2)/2 = 0; Passo Indutivo: Se a fórmula é verdadeira para n = k, então deve ser verdadeira para n = k + 1, ou seja, P (k) P (k + 1). Supondo que a fórmula é verdadeira para n = k, Deve-se mostrar que: P (k) : 0 + 1 + 2 +... + k = k(k+2) 2 = k2 +2k 2 P (k + 1) : 0 + 1 + 2 +... + (k + 1) = (k+1)(k+3) 2 = k2 +4k+3 2 Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 15 / 40

Exemplo 3 Observação 0 + 1 + 2 +... + k + (k + 1) = k2 + 2k 2 + (k + 1) = k2 + 2k + 2(k + 1) 2 = k2 + 4k + 2 2 Não foi possível derivar a conclusão a partir da hipótese. Isto significa que a proposição original é falsa. Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 16 / 40

Exemplo 4 Prove que P (n) : n i=0 ri = rn+1 1 r 1 para todos os números inteiros n 0 e para todos os números reais r, r 1. Base: P (0), para n = 0, temos r 0 = 1 = (r0+1 1) r 1 = r 1 r 1 = 1; Passo Indutivo: Se a fórmula é verdadeira para n = k, então deve ser verdadeira para n = k + 1, ou seja, P (k) P (k + 1). Supondo que a fórmula é verdadeira para n = k, para k 0 Deve-se mostrar que: P (k) : k i=0 ri = rk+1 1 r 1 P (k + 1) : k+1 i=0 ri = rk+2 1 r 1 Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 17 / 40

Exemplo 4 Prove que P (n) : n i=0 ri = rn+1 1 r 1 para todos os números inteiros n 0 e para todos os números reais r, r 1. Base: P (0), para n = 0, temos r 0 = 1 = (r0+1 1) r 1 = r 1 r 1 = 1; Passo Indutivo: Se a fórmula é verdadeira para n = k, então deve ser verdadeira para n = k + 1, ou seja, P (k) P (k + 1). Supondo que a fórmula é verdadeira para n = k, para k 0 Deve-se mostrar que: P (k) : k i=0 ri = rk+1 1 r 1 P (k + 1) : k+1 i=0 ri = rk+2 1 r 1 Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 17 / 40

Exemplo 4 k+1 r i = i=0 k r i + r k+1 i=0 = rk+1 1 r 1 = rk+1 1 r 1 + r k+1 + rk+1 (r 1) r 1 = rk+1 1 + r k+2 r k+1 r 1 = rk+2 1 r 1 Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 18 / 40

Exemplo 5 Prove que P (n) : 2 2n 1 é divisível por 3, para n 1 Base: P (1), para n = 1, temos 2 2 1 1 = 2 2 1 = 4 1 = 3, que é divisível por 3; Passo Indutivo: Se a fórmula é verdadeira para n = k, então deve ser verdadeira para n = k + 1, ou seja, P (k) P (k + 1). Supondo que a fórmula é verdadeira para n = k, Deve-se mostrar que: P (k) : 2 2k 1 é divisível por 3 P (k + 1) : 2 2(k+1) 1 é divisível por 3 Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 19 / 40

Exemplo 5 Prove que P (n) : 2 2n 1 é divisível por 3, para n 1 Base: P (1), para n = 1, temos 2 2 1 1 = 2 2 1 = 4 1 = 3, que é divisível por 3; Passo Indutivo: Se a fórmula é verdadeira para n = k, então deve ser verdadeira para n = k + 1, ou seja, P (k) P (k + 1). Supondo que a fórmula é verdadeira para n = k, Deve-se mostrar que: P (k) : 2 2k 1 é divisível por 3 P (k + 1) : 2 2(k+1) 1 é divisível por 3 Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 19 / 40

Exemplo 5 2 2(k+1) 1 = 2 2k+2 1 = 2 2k 2 2 1 = 2 2k 4 1 = 2 2k (3 + 1) 1 = 2 2k 3 + (2 2k 1) Observação O primeiro termo da soma é divisível por 3, pela multiplicação realizada, e o segundo também, pela hipótese indutiva. Temos que a soma de dois números divisíveis por 3 é um número também divisível por 3, portanto, a prova é válida. Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 20 / 40

Exemplo 6 Prove que P (n) : 2 0 + 2 1 + 2 2 + + 2 n = 2 n+1 1 para n 0 Base: P (0), temos que 2 0 = 1, 2 0+1 1 = 2 1 1 = 2 1 = 1; Passo Indutivo: Se a fórmula é verdadeira para n = k, então deve ser verdadeira para n = k + 1, ou seja, P (k) P (k + 1). Supondo que a fórmula é verdadeira para n = k, Deve-se mostrar que: P (k) : 2 0 + 2 1 + 2 2 + + 2 k = 2 k+1 1 P (k + 1) : 2 0 + 2 1 + 2 2 + + 2 k+1 = 2 k+2 1 Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 21 / 40

Exemplo 6 Prove que P (n) : 2 0 + 2 1 + 2 2 + + 2 n = 2 n+1 1 para n 0 Base: P (0), temos que 2 0 = 1, 2 0+1 1 = 2 1 1 = 2 1 = 1; Passo Indutivo: Se a fórmula é verdadeira para n = k, então deve ser verdadeira para n = k + 1, ou seja, P (k) P (k + 1). Supondo que a fórmula é verdadeira para n = k, Deve-se mostrar que: P (k) : 2 0 + 2 1 + 2 2 + + 2 k = 2 k+1 1 P (k + 1) : 2 0 + 2 1 + 2 2 + + 2 k+1 = 2 k+2 1 Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 21 / 40

Exemplo 6 2 0 + 2 1 + 2 2 + + 2 k + 2 k+1 = (2 k+1 1) + 2 k+1 = 2 2 k+1 1 = 2 k+2 1 Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 22 / 40

Exemplo 7 Dada a sequência a 1, a 2, a 3,... definida como a 1 = 2 e a n = 5 a n 1, n 2, prove que a n = 2 5 n 1 para n 1 Base: P (1), para n = 1, temos que a 1 = 2 e 2 5 1 1 = 2 1 = 2; Passo Indutivo: Se a fórmula é verdadeira para n = k, então deve ser verdadeira para n = k + 1, ou seja, P (k) P (k + 1). Supondo que a fórmula é verdadeira para n = k, Deve-se mostrar que: P (k) : a k = 2 5 k 1 P (k + 1) : a k+1 = 2 5 (k+1) 1 = 2 5 k Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 23 / 40

Exemplo 7 Dada a sequência a 1, a 2, a 3,... definida como a 1 = 2 e a n = 5 a n 1, n 2, prove que a n = 2 5 n 1 para n 1 Base: P (1), para n = 1, temos que a 1 = 2 e 2 5 1 1 = 2 1 = 2; Passo Indutivo: Se a fórmula é verdadeira para n = k, então deve ser verdadeira para n = k + 1, ou seja, P (k) P (k + 1). Supondo que a fórmula é verdadeira para n = k, Deve-se mostrar que: P (k) : a k = 2 5 k 1 P (k + 1) : a k+1 = 2 5 (k+1) 1 = 2 5 k Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 23 / 40

Exemplo 7 a k+1 = 5 a (k+1) 1 = 5 a k = 5 (2 5 k 1 ) = 2 (5 5 k 1 ) = 2 5 k Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 24 / 40

Exemplo 8 Prove que P (n) : n 3 n é divisível por 3 para n 1. Base: P (1), para n = 1, temos que 1 3 1 = 1 1 = 0, que é divisível por 3; Passo Indutivo: Se a fórmula é verdadeira para n = k, então deve ser verdadeira para n = k + 1, ou seja, P (k) P (k + 1). Supondo que a fórmula é verdadeira para n = k, Deve-se mostrar que: P (k) : k 3 k é divisível por 3 P (k + 1) : (k + 1) 3 (k + 1) é divisível por 3 Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 25 / 40

Exemplo 8 Prove que P (n) : n 3 n é divisível por 3 para n 1. Base: P (1), para n = 1, temos que 1 3 1 = 1 1 = 0, que é divisível por 3; Passo Indutivo: Se a fórmula é verdadeira para n = k, então deve ser verdadeira para n = k + 1, ou seja, P (k) P (k + 1). Supondo que a fórmula é verdadeira para n = k, Deve-se mostrar que: P (k) : k 3 k é divisível por 3 P (k + 1) : (k + 1) 3 (k + 1) é divisível por 3 Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 25 / 40

Exemplo 8 (k + 1) 3 (k + 1) = (k 3 + 3k 2 + 3k + 1) (k + 1) = (k 3 k) + 3(k 2 + k) Observação O primeiro termo da soma é divisível por 3, pela hipótese indutiva, e o segundo também, pela multiplicação realizada. Temos que a soma de dois números divisíveis por 3 é um número também divisível por 3, portanto, a prova é válida. Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 26 / 40

Exercícios Demonstre por Indução Matemática 1 n 3 + 2n é divisível por 3, para n 0; 2 2 0 + 2 1 + 2 2 +... + 2 n = 2 n+1 1 para n 0; 3 1 2 + 2 2 +... + n 2 = n(n+1)(2n+1) 6, para n 1. Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 27 / 40

e Algoritmos Aplicação A indução matemática é útil para provar asserções sobre a corretude e a eficiência de algoritmos, pois podemos inferir uma lei geral a partir de instâncias particulares; Seja T um teorema que possua como parâmetro um número natural n. Para provarmos que T é verdadeiro para todos os possíveis valores de n, provamos que: Base: T é válido para n = 1; Passo Indutivo: Para todo n > 1, se T é válido para n, então T é válido para n + 1. Provar a segunda condição é geralmente mais fácil do que provar o teorema diretamente, uma vez que podemos usar a asserção de que T é válido para n; As duas condições implicam em T válido para n = 2, n = 3 e assim por diante. Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 28 / 40

e Algoritmos Aplicação Obter a solução de uma equação de recorrência pode ser difícil, porém, obter um limite superior para a ordem de complexidade pode ser mais fácil; Nestes casos, não estamos interessados em obter uma solução exata, porém, apenas um limite superior. Exemplo Considere a recorrência abaixo, definida para valores de n que são potências de 2: T (2) = 1, T (2n) 2T (n) + 2n 1. O objetivo é encontrar um limite superior na notação assintótica, onde o lado direito da desigualdade representa o pior caso. Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 29 / 40

e Algoritmos Exemplo Para encontrar tal limite, procuramos f(n) tal que T (n) = O(f(n)), tentando que f(n) seja o mais preciso possível da solução real para T (n), ou seja, um limite assintótico firme. Vamos considerar, por palpite, f(n) = n 2. Queremos provar que utilizando indução matemática em n. T (n) f(n) = O(f(n)) Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 30 / 40

e Algoritmos Exemplo Prove que T (n) f(n) = O(f(n)), para f(n) = n 2, sendo T (2) = 1, T (2n) 2T (n) + 2n 1, definida para valores de n que são potências de 2. Base: T (n) para n = 2, temos que T (2) = 1 f(2) = 4; Passo Indutivo: Se a recorrência é verdadeira para n, então deve ser verdadeira para 2n, ou seja, T (n) T (2n). Deve-se mostrar que: Observação T (2n) f(2n) Note que por definição, n deve ser uma potência de 2, portanto, o próximo elemento após n é 2n, e não n + 1. Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 31 / 40

e Algoritmos Exemplo T (2n) 2T (n) + 2n 1 [Definição da recorrência] 2n 2 + 2n 1 [Pela hipótese indutiva, podemos substituir T (n)] 2n 2 + 2n 1 < (2n) 2 [A conclusão é verdadeira?] 2n 2 + 2n 1 < 4n 2 [Sim] A última inequação é o que queremos provar, logo, T (n) = O(n 2 ). Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 32 / 40

e Algoritmos Exemplo T (2n) 2T (n) + 2n 1 [Definição da recorrência] 2n 2 + 2n 1 [Pela hipótese indutiva, podemos substituir T (n)] 2n 2 + 2n 1 < (2n) 2 [A conclusão é verdadeira?] 2n 2 + 2n 1 < 4n 2 [Sim] A última inequação é o que queremos provar, logo, T (n) = O(n 2 ). Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 32 / 40

e Algoritmos Exemplo T (2n) 2T (n) + 2n 1 [Definição da recorrência] 2n 2 + 2n 1 [Pela hipótese indutiva, podemos substituir T (n)] 2n 2 + 2n 1 < (2n) 2 [A conclusão é verdadeira?] 2n 2 + 2n 1 < 4n 2 [Sim] A última inequação é o que queremos provar, logo, T (n) = O(n 2 ). Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 32 / 40

e Algoritmos Exemplo T (2n) 2T (n) + 2n 1 [Definição da recorrência] 2n 2 + 2n 1 [Pela hipótese indutiva, podemos substituir T (n)] 2n 2 + 2n 1 < (2n) 2 [A conclusão é verdadeira?] 2n 2 + 2n 1 < 4n 2 [Sim] A última inequação é o que queremos provar, logo, T (n) = O(n 2 ). Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 32 / 40

e Algoritmos Exemplo T (2n) 2T (n) + 2n 1 [Definição da recorrência] 2n 2 + 2n 1 [Pela hipótese indutiva, podemos substituir T (n)] 2n 2 + 2n 1 < (2n) 2 [A conclusão é verdadeira?] 2n 2 + 2n 1 < 4n 2 [Sim] A última inequação é o que queremos provar, logo, T (n) = O(n 2 ). Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 32 / 40

e Algoritmos Segundo Palpite Vamos tentar um segundo palpite, menor desta vez: f(n) = cn, para alguma constante c. Queremos provar que utilizando indução matemática em n. T (n) f(n) = cn = O(f(n)) Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 33 / 40

e Algoritmos Segundo Palpite Prove que T (n) f(n) = O(f(n)), para f(n) = cn, sendo T (2) = 1, T (2n) 2T (n) + 2n 1, definida para valores de n que são potências de 2. Base: T (n), para n = 2, T (2) = 1 f(2) = 2c; Passo Indutivo: Se a fórmula é verdadeira para n, então deve ser verdadeira para 2n, ou seja, T (n) T (2n). Deve-se mostrar que: T (2n) f(2n) Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 34 / 40

e Algoritmos Segundo Palpite T (2n) 2T (n) + 2n 1 [Definição da recorrência] 2cn + 2n 1 [Pela hipótese indutiva, podemos substituir T (n)] 2cn + 2n 1 > 2cn [A conclusão T (2n) 2cn não é válida] Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 35 / 40

e Algoritmos Segundo Palpite T (2n) 2T (n) + 2n 1 [Definição da recorrência] 2cn + 2n 1 [Pela hipótese indutiva, podemos substituir T (n)] 2cn + 2n 1 > 2cn [A conclusão T (2n) 2cn não é válida] Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 35 / 40

e Algoritmos Observação A função f(n) = cn cresce mais lentamente do que T (n); Mais especificamente, T (n) está entre cn e n 2. Terceiro Palpite Vamos tentar um terceiro palpite, entre cn e n 2 : f(n) = n log n. Queremos provar que utilizando indução matemática em n. T (n) f(n) = n log n = O(f(n)) Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 36 / 40

e Algoritmos Terceiro Palpite Prove que T (n) f(n) = O(f(n)), para f(n) = n log n, sendo T (2) = 1, T (2n) 2T (n) + 2n 1, definida para valores de n que são potências de 2. Base: T (n), para n = 2, T (2) = 1 f(2) = 2log2 = 2; Passo Indutivo: Se a fórmula é verdadeira para n, então deve ser verdadeira para 2n, ou seja, T (n) T (2n). Deve-se mostrar que: T (2n) f(2n) Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 37 / 40

e Algoritmos Terceiro Palpite T (2n) 2T (n) + 2n 1 [Definição da recorrência] 2n log n + 2n 1 [Pela hipótese indutiva, podemos substituir T (n)] 2n log n + 2n 1 < 2n log 2n [A conclusão é verdadeira?] 2n log n + 2n 1 < 2n log n + 2n [Sim] Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 38 / 40

e Algoritmos Comentário Final No último palpite, a diferença entre os dois lados da segunda desigualdade é apenas 1, foi um bom palpite! Com efeito, T (n) = n log n n + 1 é a solução exata para T (1) = 0, T (n) 2T ( n 2 ) + n 1 que descreve o comportamento do algoritmo Mergesort. Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 39 / 40

Dúvidas? Marco Antonio M. Carvalho (UFOP) PCC104 7 de outubro de 2016 40 / 40