Upload
thuyet
View
22
Download
0
Embed Size (px)
DESCRIPTION
Análise de Algoritmos. Disciplina: Informática Teórica Prof. Kátia Guimarães e Prof. Ruy Guerra Hugo Santana – [email protected]. A Notação O. f(n) = O(g(n)) se existem constantes c e N tal que, para n ≥ N , tem-se que f(n) ≤ c ·g (n) Intuitivamente, corresponde a noção de ≤. - PowerPoint PPT Presentation
Citation preview
Disciplina Informática Teórica
Análise de Algoritmos
Disciplina: Informática TeóricaProf. Kátia Guimarães e Prof. Ruy Guerra
Hugo Santana – [email protected]
Disciplina Informática Teórica
A Notação O
• f(n) = O(g(n)) se existem constantes c e N tal que, para n ≥ N, tem-se que f(n) ≤ c·g(n)– Intuitivamente,
corresponde a noção de ≤
Disciplina Informática Teórica
A Notação Ω e Θ
• Analogamente, tem-se a notação Ω (≥)– f(n) = Ω(g(n)) se existem constantes c e N tal que,
para n ≥ N, tem-se que f(n) ≥ c·g(n)– Note que se f(n) = Ω(g(n)) então g(n) = O(f(n))
• A notação Θ:– Se f(n) = Ω(g(n)) e f(n) = O(g(n)) então:
f(n) = Θ(g(n))
• Finalmente, a notação o (“<”) e ω (“>”)
Disciplina Informática Teórica
Propriedades importantes
• ( f(n) )c = o (af(n) ), se c > 0, a > 1 e f é crescente (Teorema 3.3 do Udi Manber)
• Em outras palavras, uma função exponencial cresce mais rapidamente que qualquer função polinomial
• Substituindo f(n) por loga(n), temos:
• (loga(n) )c = o (aloga n) = o (n)
• Ou seja, uma função linear cresce mais rapidamente que qualquer função logarítmica.
Disciplina Informática Teórica
Propriedades Importantes
• Se f(n) = O(s(n)) e g(n) = O(r(n)), então f(n) + g(n) = O(s(n) + r(n)) ef(n) · g(n) = O(s(n) · r(n))(Lemma 3.2 do Udi Manber)
Disciplina Informática Teórica
Exercícios (3.5 do Manber)
• Comparar as funções a seguir, e dizer se:– f(n) = O(g(n)),– f(n)=Ω(g(n)) e/ou– f(n) = Θ(g(n))
Disciplina Informática Teórica
Exercício a
f(n) = 100n + log n e g(n) = n + (log n)2
100n ≤100n + log n ≤100n + n ≤101n = O(n)
n ≤n + (log n)2 ≤n + n ≤2n = O(n)
f(n)=O(g(n)), f(n)=Ω(g(n)) e f(n) = Θ(g(n))
Lição: O termo maior em uma soma/subtraçãodefine a forma da função
Disciplina Informática Teórica
Exercício a – outra solução
f(n) = 100n + log n e g(n) = n + (log n)2
100n = O(n)log n = O(n) (3.3)f(n) = O(n + n) (3.2)f(n) = O(n)
n = O(n)(log n)2 = O(n) (3.3)g(n) = O(n + n) (3.2)g(n) = O(n)
Logo,f(n)=O(g(n)), f(n)=Ω(g(n)) e f(n) = Θ(g(n))
Disciplina Informática Teórica
Exercício b
f(n) = log n e g(n) = log (n2 )
log (n2) = log (n x n) = log (2log n x 2log n)= log (2log n + log n)= 2 · log n
Logo,f(n)=O(g(n)), f(n)=Ω(g(n)) e f(n) = Θ(g(n))
Disciplina Informática Teórica
Exercício c
f(n) = n2 / (log n) e g(n) = n (log n)2
f(n) = n·n·(1/ logn) g(n) = n·(log n)·(log n)
Multiplicando ambas por log n, temos:
f’(n) = n·n g’(n) = n·(log n)3
Substituindo “n” por 2log n em f’(n), temos:
Disciplina Informática Teórica
Exercício c (cont.)
f’(n) = n · 2log n e g’(n) = n · (log n)3
Por 3.3, temos f’ cresce muito mais rapidamente que g’.
Sendo assim, g’ = o(f’)
Disciplina Informática Teórica
Exercício d
f(n) = (log n)log n e g(n) = n / (log n)
Multiplicando ambas por log n, temos:
f’(n) = (log n)log n + 1 e g’(n) = n
f’(n) = (log n)log n + 1 e g’(n) = 2log n
Como log n > 2 e (log n) + 1 > log n, g’ = o(f’)
Disciplina Informática Teórica
Exercício e
f(n) = n1/2 e g(n) = (log n)5
f(n) = (2log n)1/2
= 2(log n)/2
Pelo Teorema 3.3, temos queg(n) = o(f(n))
Disciplina Informática Teórica
Exercício f
f(n) = n·2n e g(n) = 3n
g(n) = (1,5 · 2)n
g(n) = (1,5)n · 2nf(n) = n · 2n
Pelo Teorema 3.3, (1,5)n cresce mais rapidamente que n, logo:f(n) = o(g(n))