A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Disciplina Informática Teórica Análise de Algoritmos Disciplina: Informática Teórica Prof. Kátia Guimarães e Prof. Ruy Guerra Hugo Santana –

Apresentações semelhantes


Apresentação em tema: "Disciplina Informática Teórica Análise de Algoritmos Disciplina: Informática Teórica Prof. Kátia Guimarães e Prof. Ruy Guerra Hugo Santana –"— Transcrição da apresentação:

1 Disciplina Informática Teórica Análise de Algoritmos Disciplina: Informática Teórica Prof. Kátia Guimarães e Prof. Ruy Guerra Hugo Santana – hps@cin.ufpe.br

2 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 ≤

3 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 (“ ”)

4 Disciplina Informática Teórica Propriedades importantes ( f(n) ) c = o (a f(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 log a (n), temos: (log a (n) ) c = o (a log a n ) = o (n) Ou seja, uma função linear cresce mais rapidamente que qualquer função logarítmica.

5 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)) e f(n) · g(n) = O(s(n) · r(n)) (Lemma 3.2 do Udi Manber)

6 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))

7 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ção define a forma da função

8 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))

9 Disciplina Informática Teórica Exercício b f(n) = log n e g(n) = log (n 2 ) log (n 2 ) = log (n x n) = log (2 log n x 2 log n ) = log (2 log n + log n ) = 2 · log n Logo, f(n)=O(g(n)), f(n)=Ω(g(n)) e f(n) = Θ(g(n))

10 Disciplina Informática Teórica Exercício c f(n) = n 2 / (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·ng’(n) = n·(log n) 3 Substituindo “n” por 2 log n em f’(n), temos:

11 Disciplina Informática Teórica Exercício c (cont.) f’(n) = n · 2 log n e g’(n) = n · (log n) 3 Por 3.3, temos f’ cresce muito mais rapidamente que g’. Sendo assim, g’ = o(f’)

12 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) = 2 log n Como log n > 2 e (log n) + 1 > log n, g’ = o(f’)

13 Disciplina Informática Teórica Exercício e f(n) = n 1/2 e g(n) = (log n) 5 f(n) = (2 log n ) 1/2 = 2 (log n)/2 Pelo Teorema 3.3, temos que g(n) = o(f(n))

14 Disciplina Informática Teórica Exercício f f(n) = n·2 n e g(n) = 3 n g(n) = (1,5 · 2) n g(n) = (1,5) n · 2 n f(n) = n · 2 n Pelo Teorema 3.3, (1,5) n cresce mais rapidamente que n, logo: f(n) = o(g(n))


Carregar ppt "Disciplina Informática Teórica Análise de Algoritmos Disciplina: Informática Teórica Prof. Kátia Guimarães e Prof. Ruy Guerra Hugo Santana –"

Apresentações semelhantes


Anúncios Google