1 / 24

Aulas 9,10

Aulas 9,10. Fábio Nakano. Definições, teoremas e algoritmos. Definição é uma especificação precisa de um objeto. Um teorema é uma afirmação que pode ser provada. Podemos usar o resultado, ou,

Download Presentation

Aulas 9,10

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Aulas 9,10 Fábio Nakano

  2. Definições, teoremas e algoritmos • Definição é uma especificação precisa de um objeto. • Um teorema é uma afirmação que pode ser provada. • Podemos usar o resultado, ou, • Numa demonstração de um teorema, pode-se construir um objeto ou uma solução genérica com a finalidade de demonstrar o teorema. • Então a demonstração é um algoritmo para a construção do objeto ou da solução.

  3. Exemplos • Definição: n!=n*(n-1)! E 0!=1 • Construa um método (iterativo) que calcula n!

  4. Por que preciso saber demonstrar? • Demonstrar é a maneira de ter certeza que algo é verdadeiro ou falso; • Quando argumentamos com alguém, o que procuramos é uma demonstração de que o que defendemos é verdadeiro. • Não há argumento contra uma demonstração formal. • Uma demonstração apresenta um algoritmo para solução do problema.

  5. Técnicas de Demonstração • Prova Direta • Contradição • Indução

  6. Demonstrações Típicas • Prove por contradição que 2 não pertence a Q. • Prove que n<2npara n  N.

  7. 2 não pertence a Q • Suponha por absurdo que 2=m/n, com m e n pertencendo a Z e m/n irredutível. • Elevando ao quadrado temos 2=m2/n2. • Então m2=2*n2. Logo m2 é par, consequentemente, m é par. • Se m é par podemos escrever m como 2*k • Como m2=2*n2 , então, (2*k)2=2*n2. • Então 22*k2=2*n2 • Logo, 2*k2=n2 portanto n também é par • Se m e n são pares, m/n é redutível, o que é uma contradição. • Portanto 2 não pertence a Q.

  8. n<2n para n  N, Prova direta • Chamemos f(n)=n e g(n)=2n . • Note que as duas funções são crescentes. • Considere n=0: f(n)=0 e g(n)=1, logo g(0)>f(0). • A cada incremento de uma unidade sobre n (n é Natural, esse incremento faz n passar por todos os elementos do conjunto N), f(n) cresce de 1 e g(n) dobra. Logo g(n) cresce mais rápido que f(n). • Como inicialmente g(0) é maior que f(0) (note que na sequencia de incrementos, zero é o menor valor), então para todo nN, g(n)>f(n).

  9. Indução matemática • A técnica da indução apresenta uma maneira de resolver problemas através da resolução de problemas menores!! • Mecânica • Mostre que funciona para um n0 pequeno • Suponha por hipótese que vale para um n • Demonstre que se vale para n, vale para n+1 • Por que funciona?? • Base • Hipótese • Passo

  10. Prove por indução que n^2>2n+1 para n>2

  11. Como um teorema melhora nossa vida... • Construa um método que calcula a soma dos n primeiros inteiros (“pela definição”) • Teorema 1: A soma dos n primeiros inteiros, s(n), vale n(n+1)/2 • Construa um método que calcula a soma dos n primeiros inteiros usando o Teorema 1 • Compare as complexidades.

  12. Exemplo suplementarn<2n para n  N, Prova por indução • Base: para algum valor pequeno, mostrar que é verdade: Para n=0, a sentença é 0<1, que é verdadeira. • Hipótese: para algum k, k<2k • Passo: k+1<?2k+1 • Prova: k+1<? 2k+2k • Pela HI, 2k+1? 2k+2k Note que como substituí um valor por outro MAIOR que ele, então posso relaxar a desigualdade . Esta nova desigualdade “tem menos folga”. Se eu conseguir provar esta nova desigualdade, “vô tá bem na fita!” • Cancelando: 1 ? 2k . • Note que 2k é crescente e para k=0, a desigualdade é verdade, então para os k>0, ela vai continuar sendo verdade! Portanto n<2n para n  N.

  13. Pondo tudo em ordem • Base: 20>0 • Por hipótese, 2k>k • Some 1 a ambos os lados: 2k+1>k+1 • É claro que 2k+2k é maior que 2k+1, então podemos substituir 1 por 2k pois não alteramos as desigualdades. • Note que 2k+2k=2k+1 • Logo, 2k+1>k+1.

  14. Recursão • É um conceito em computação. • É relacionado ao conceito de indução pois • É uma forma indutiva de definir programas. • Nesta, um método chama a si mesmo com os parâmetros adequados.

  15. Exemplo • Definição: n!=n*(n-1)! E 0!=1 • Construa um método recursivo que calcula n!

  16. Como se implementa recursão em um computador? • TAD - Pilha • Prog - Pilha de execução • Prog – Chamada de função • Prog - Recursão

  17. Como o método recursivo calcula 4!

  18. Projeto coletivo Quantos grupos já concluiram o projeto?

  19. São aprox. 11 grupos • 1 roda problemas de tamanho até 2000 em intervalos de 10 • 2 rodam problemas de 2000 a 20000 em intervalos de 100 • 3 rodam problemas de 20000 até 40000 em intervalos de 200 • 5 rodam problemas de 40000 até 60000 em intervalos de 500 • Roda por algumas horas (6?), pode (deve) paralelizar

  20. Lista para 15.09 • Prove por indução que 2^n>n^2 defina n0, o valor mínimo para que sua demonstração seja válida. • Dê uma prova direta e uma por indução de que • Apresente os códigos (ou pseudo-códigos) dos métodos que calculam s(n) pela definição (iterativo e recursivo) e usando o resultado do teorema. Qual a complexidade de tempo de cada método? Apresente a simulação da pilha de execução para n=3.

  21. Diga se é verdadeiro e justifique usando a definição da notação O-grande

More Related