Aulas 9,10 Fábio Nakano. Definições, teoremas e algoritmos Definição é uma especificação...
Transcript of Aulas 9,10 Fábio Nakano. Definições, teoremas e algoritmos Definição é uma especificação...
![Page 1: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/1.jpg)
Aulas 9,10
Fábio Nakano
![Page 2: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/2.jpg)
![Page 3: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/3.jpg)
![Page 4: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/4.jpg)
![Page 5: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/5.jpg)
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.
![Page 6: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/6.jpg)
Exemplos
• Definição: n!=n*(n-1)! E 0!=1• Construa um método (iterativo) que calcula n!
![Page 7: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/7.jpg)
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.
![Page 8: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/8.jpg)
Técnicas de Demonstração
• Prova Direta• Contradição• Indução
![Page 9: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/9.jpg)
Demonstrações Típicas
• Prove por contradição que 2 não pertence a Q.
• Prove que n<2n para n N.
![Page 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/10.jpg)
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.
![Page 11: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/11.jpg)
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 nN, g(n)>f(n).
![Page 12: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/12.jpg)
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
![Page 13: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/13.jpg)
Prove por indução que n^2>2n+1 para n>2
![Page 14: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/14.jpg)
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.
![Page 15: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/15.jpg)
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.
![Page 16: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/16.jpg)
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.
![Page 17: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/17.jpg)
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.
![Page 18: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/18.jpg)
Exemplo
• Definição: n!=n*(n-1)! E 0!=1• Construa um método recursivo que calcula n!
![Page 19: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/19.jpg)
Como se implementa recursão em um computador?
• TAD - Pilha• Prog - Pilha de execução• Prog – Chamada de função• Prog - Recursão
![Page 20: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/20.jpg)
Como o método recursivo calcula 4!
![Page 21: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/21.jpg)
Projeto coletivoQuantos grupos já concluiram o projeto?
Tempo de execução (ns)
Número de comparações
comprimento do vetor
8696279276 391986000 2800018627460753 840479500 41000
2888617408 199990000 2000013134217896 903103750 42500
3355019982 231114250 215001048894482 71994000 12000
6107759 499500 1000
![Page 22: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/22.jpg)
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
![Page 23: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/23.jpg)
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.
1,1
*)(1
1
1
rr
ararans
nn
i
i
1,1
*)(1
1
rr
ararans
nn
i
i
![Page 24: 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.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc13c497959413d8dbc09/html5/thumbnails/24.jpg)
Diga se é verdadeiro e justifique usando a definição da notação O-grande
)2(2
23
)()log(*
))log(*(
)(
)(2
22
)(
2
2
2
nn
O
nOnn
nnOn
nOn
nOn
nOn