150 likes | 287 Views
Big - O. Monitoria de Matemática Discreta 2008-1. Por que estudar big-O???. Conceitos fundamentais: Algoritmo: passos para se executar uma tarefa. Ex: algoritmo de adição, subtração... Programa: uma forma de representação do algoritmo. Ex: Calculadora.
E N D
Big - O Monitoria de Matemática Discreta 2008-1
Por que estudar big-O??? • Conceitos fundamentais: • Algoritmo: passos para se executar uma tarefa. Ex: algoritmo de adição, subtração... • Programa: uma forma de representação do algoritmo. Ex: Calculadora
O que é importante para um programa rodar??? Será que um super – hiper – mega – power – computador executa um programa no mesmo intervalo de tempo que um micro computador??? • Tempo
Será que o programa 1 executa melhor ou pior que o programa 2? • Loop: N é um número inteiro for(int i = 0; i <= N; i = i + 1){ /*aqui tem uma soma*/ } 2. Iteração sem loop’s int x = 1; Int y = 2; y = y + 2; • Tamanho e eficiência do programa
Tudo bem, mas...O que isso tem a ver com big – O??? • Forma de verificar que programa é melhor • Verificando limite de funções • Dependente do tamanho do programa • Independente de tempo
Como vamos fazer... :s ??? • Duas formas: • Provas matemáticas • Leis matemáticas É melhor...
Leis Matemáticas !!!! • Retire todas as constantes (independente de tempo): Ex: f(x): 3x2 + 9 Fica assim: f(x): x2 O(x2)
2.Fica sendo o big-O aquele que possuir maior expoente (pior caso): Ex: g(x) = 3x2 + 70x5 Fica assim: g(x) = x2 + x5 (1ª lei) g(x) = x5 (2ª lei) O(x5 )
3. Se puder reduzir os expoentes, reduza (melhores comparações): Ex: h(x) = 3x2 + 70x5 + 10 x12/x4 Fica assim: h(x) = 3x2 + 70x5 + 10 x8 (3ª lei) h(x) = x2 + x5 + x8 (1ª lei) h(x) = x8 (2ª lei) O(x8)
4. Se puder ampliar os expoentes, amplie: Ex: r(x) = 3x2 + 70x5 + 5(x6 . x4) Fica assim: r(x) = 3x2 + 70x5 + 5(x10) (4ª lei) r(x) = x2 + x5 + x10 (1ª lei) r(x) = (x10)(2ª lei) O(x10)
E que Lei tem prioridade??? • As leis por ordem de prioridades: 4ª e 3ª < 1ª < 2ª Obs: a 4ª e 3ª leis estão no mesmo nível.
E quando não for com potencias??? n! 2n n2 n log n n log n 1 1 <= log n <= n <= n log n <= n2 <= 2n <= n! O resto é derivada deles...
Vamos agora analisar enunciados... • Quando for pedido “A melhor estimativa” ... • Quando for pedido “O menor inteiro n”…
Exercícios de provas anteriores: • Determine o menor inteiro n de forma que f(x) é O(xn) para cada uma das seguintes funções. Justifique: • f(x) = (x5 + x2 + 1) / (x4 + 1) • f(x) = 5x2 + x3logx + x • f(x) = 3xlogx + (x2 + 3)logx
2. Dê a melhor estimativa O grande possível para as seguintes funções: a)(n3 + n2logn)(logn + 1) + (15logn + 30)(n3 + 2) b)(nlogn + 1)2 + (logn + 1)(n2 + 1) ÓTIMA SORTE !!!