Escolar Documentos
Profissional Documentos
Cultura Documentos
Complex I Dade
Complex I Dade
Fernando Silva
DCC-FCUP
Estruturas de Dados
O exemplo findMax()
mostrava T (n) limitado por 2 funções lineares em n, significando que
o tempo de execução varia na mesma proporção que n.
Logo, diz-se que o crescimento de T (n) é linear.
Interpretação gráfica:
10
2n + 10 ≤ cn ⇒ (c − 2)n ≥ 10 ⇒ n≥
(c − 2)
Se d(n) ∼ O(f (n)) e e(n) ∼ O(g(n)), então d(n) + e(n) ∼ O(f (n) + g(n))
n(n−1) n2 n
= 2 = 2 − 2 ⇒ O(n2 )
Fernando Silva (DCC-FCUP) 7. Introdução à Complexidade de Algoritmos Estruturas de Dados 12 / 1
Complexidade de funções recursivas
Considere-se a função factorial fact() e seja T (n) o tempo de execução
para fact(n), então:
c + T (n − 1), se n > 1
∴ T (n) =
d, se n ≤ 1
assumindo n ≥ 2: T (n − 1) = c + T (n − 2) ⇒ T (n) = 2c + T (n − 2)
em geral: T (n) = ic + T (n − i), n > i
se i = n − 1, então T (n) = c(n − 1) + T (1) = c(n − 1) + d
donde podemos concluir T (n) ≈ O(n), i.e. fact() tem complexidade n.
Fernando Silva (DCC-FCUP) 7. Introdução à Complexidade de Algoritmos Estruturas de Dados 13 / 1
Complexidade da pesquisa binária (1)
Considere-se o método pesqbin() (pesquisa binária não recursiva):
A questão a saber é
I se uma árvore binária em média estará próxima de uma árvore
completa ou de uma sequência?
I isto decide se o tempo médio é O(log2 n) ou O(n).
A demonstração deste resultado é complexa, envolvendo
probabilidades, basta-nos aqui saber que é possível mostrar por
indução que a complexidade será O(log2 n).