24
Aulas 9,10 Fábio Nakano

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

Embed Size (px)

Citation preview

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

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
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
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
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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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