Complexidade
Quantidade de trabalho depende da entrada/”estados” da aplicação e da estrutura de dados.
Se a complexidade é tomada como máxima para qualquer caso a complexidade é chamada de complexidade no pior caso
Se, acaso, a ocorrência for média, chama-se de complexidade média
tipos de complexidade
melhor caso
pior caso
caso médio
função assintótica
buscamos uma $f(n)$ que representa o custo tanto de eficiência de acesso, eficiência energética e/ou tempo de execução.
Complexidade de tempo
A medida empírica, sendo dependente de hardware, tende a ser completamente diferente da função que descreve a complexidade de tempo. Não depende de linguagem ou hardware.
Complexidade de espaço
Cálculo para requisitos de memória, representação do espaço requerido.
Modelo RAM
Devemos considerar a arquitetura disponível, mas nesse caso, idealizaremos uma máquina modelo baseada em acesso aleatório de memória.
Teremos que cada instrução leva a mesma quantidade de tempo que qualquer outra instrução e que cada acesso a dados leva a mesma quantidade de tempo que qualquer outro acesso.
instruções definidas →
- instruções aritméticas
- mov de dados
- controle
- desvios
tipos de dados →
- inteiros, float, strings…
Somatórios
$\sum_{k=1}^{n} ak$, se n = 0, o somatório vale 0 e seus termos podem ser somados em qualquer ordem.
se o $\lim_{n=0} \sum_{k=1}^{\infty}ak$
pode-se remover uma constante de um somatório
$\sum_{k=1}^{\infty}ak = a\sum_{k=1}^{\infty}k$
[…]
Reindexação de somatórios
serve só pra simplificar a análise, alterando os valores do índice anterior por um simplificado
$\sum_{k=0}^{\infty}a_{n-k} = a\sum_{j = 0}^{\infty}a_j$
indução
- provar a base pra um valor especificado, talvez 0
- assumir que k é válido
- testar para k + 1

