Tópicos Especiais em Programação —  2019/2

Main page

Página principal

Informações

Conteúdo das aulas

07/08


Conversa inicial sobre o curso. Google Interview Preparation Tips.
Complexidade assintótica: por que é imporante? por que as constantes são desprezíveis?

Brain teaser: o problema dos condenados encapuzados (paridade).  
 

12/08


Parâmetros da entrada que podem ser usados na expressão da complexidade para entender melhor a performance de um algoritmo. Ele é sensível a quê?

Algoritmos diferentes, com complexidades diferentes, para um mesmo problema, sem que um domine o outro. É preciso saber, dependendo do caso (entradas típicas, ou parâmetros da entrada obtidos via pré-processamento), qual o melhor caminho a seguir.

Exemplos: o problema do histograma (em que ano havia mais pessoas vivas?); o problema das estradas ligando metrópoles.  
 

14/08


Problemas de precisão: raiz quadrada ao quadrado pode não dar seu número.
Performance: evite cálculos caros, quando você pode fazer o simples.
O problema dos números mágicos: liste os números naturais que são ao mesmo tempo quadrados perfeitos e números triangulares (a soma dos k primeiros naturais, para algum k).  
 

19/08


Memoização. Memoização podendo exaurir toda a memória. Memoização podendo piorara execução (se mal feita). Memoização com políticas de cache. Memoização com hashing vs memoização via endereçamento direto.
O problema da Conjectura de Collatz.

Usando um AND bitwise ao invés de módulo.  
 

21/08


Brain teaser: Dada uma lista de tamanho n-1 sem repetição com elementos inteiros em [1, n], qual o elemento que está faltando? E se forem dois elementos faltando? E se a memória auxiliar disponível for logarítmica em n?

O problema do array ordenado e "rodado". Como encontrar de forma eficiente o menor elemento no array?

Voltar ao topo