Python - Tipos de Algoritmo
A eficiência e a precisão dos algoritmos devem ser analisadas para compará-los e escolher um algoritmo específico para determinados cenários. O processo de fazer essa análise é chamado de 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 (n2). Isso significa que o tempo de execução da primeira operação aumentará linearmente com o aumento em n e o tempo de execução da segunda operação aumentará exponencialmente quando n aumentar. Da mesma forma, o tempo de execução de ambas as operações será quase o mesmo se n for significativamente pequeno.
Normalmente, o tempo exigido por um algoritmo cai em três tipos -
- Melhor caso - tempo mínimo necessário para a execução do programa.
- Caso Médio - Tempo médio necessário para a execução do programa.
- Pior caso - 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) |