Estruturas de dados - análise assintótica
A análise assintótica de um algoritmo refere-se à definição do limite / enquadramento matemático de seu desempenho em tempo de execução. Usando a análise assintótica, podemos muito bem concluir o melhor caso, o caso médio e o pior caso de um algoritmo.
A análise assintótica é limitada pela entrada, ou seja, se não houver entrada para o algoritmo, conclui-se que ele funciona em um tempo constante. Além da "entrada", todos os outros fatores são considerados constantes.
A análise assintótica refere-se ao cálculo do tempo de execução de qualquer operação em unidades matemáticas de computação. Por exemplo, o tempo de execução de uma operação é calculado como f (n) e pode ser para outra operação é calculado como g (n 2 ). Isso significa que o tempo de execução da primeira operação aumentará linearmente com o aumento den e o tempo de execução da segunda operação aumentará exponencialmente quando naumenta. Da mesma forma, o tempo de execução de ambas as operações será quase o mesmo sen é significativamente pequeno.
Normalmente, o tempo exigido por um algoritmo cai em três tipos -
Best Case - Tempo mínimo necessário para a execução do programa.
Average Case - Tempo médio necessário para a execução do programa.
Worst Case - Tempo máximo necessário para a execução do programa.
Notações assintóticas
A seguir estão as notações assintóticas comumente usadas para calcular a complexidade do tempo de execução de um algoritmo.
- Ο Notação
- Ω Notação
- Notação θ
Big Oh Notation, Ο
A notação Ο (n) é a maneira formal de expressar o limite superior do tempo de execução de um algoritmo. Ele mede o pior caso de complexidade de tempo ou a maior quantidade de tempo que um algoritmo pode levar para ser concluído.
Por exemplo, para uma função f(n)
Ο(f(n)) = { g(n) : there exists c > 0 and n0 such that f(n) ≤ c.g(n) for all n > n0. }
Notação Omega, Ω
A notação Ω (n) é a maneira formal de expressar o limite inferior do tempo de execução de um algoritmo. Ele mede o melhor caso de complexidade de tempo ou a melhor quantidade de tempo que um algoritmo pode levar para ser concluído.
Por exemplo, para uma função f(n)
Ω(f(n)) ≥ { g(n) : there exists c > 0 and n0 such that g(n) ≤ c.f(n) for all n > n0. }
Notação Theta, θ
A notação θ (n) é a maneira formal de expressar o limite inferior e o limite superior do tempo de execução de um algoritmo. É representado da seguinte forma -
θ(f(n)) = { g(n) if and only if g(n) = Ο(f(n)) and g(n) = Ω(f(n)) for all n > n0. }
Notações assintóticas comuns
A seguir está uma lista de algumas notações assintóticas comuns -
constante | - | Ο (1) |
logarítmico | - | Ο (log n) |
linear | - | Ο (n) |
n log n | - | Ο (n log n) |
quadrático | - | Ο (n 2 ) |
cúbico | - | Ο (n 3 ) |
polinomial | - | n Ο (1) |
exponencial | - | 2 Ο (n) |