Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouEduardo Gama Aquino Alterado mais de 8 anos atrás
1
Complexidade de Computação Katia Guimarães
2
Avaliando a Qualidade de um Algoritmo É preciso ter bem definido –O que é dado de entrada e –O que é esperado na saída Dado que o algoritmo resolve CORRETAMENTE o problema, Quanto recurso ele gasta (espaço e tempo) ?
3
Como calcular o tempo de execução de um algoritmo? Métodos Empíricos - Obtemos o tempo de execução através da execução propriamente dita do algoritmo, considerando-se entradas diversas. Métodos Analíticos - Obtemos uma ordem de grandeza do tempo execução através de expressões matemáticas que traduzam o comportamento do algoritmo.
4
Métodos Empíricos Obtemos o tempo de execução através da execução propriamente dita do algoritmo, considerando entradas diversas. Problemas: 1. Não temos tempo suficiente para rodar todas as possíveis instâncias de todos os tamanhos. 2. Depende diretamente do equipamento sendo usado para avaliação.
5
Métodos Analíticos Obtemos uma ordem de grandeza do tempo execução através de expressões matemáticas que traduzam o comportamento do algoritmo. Problemas: 1. Definir que variáveis usar nas expressões matemáticas 2. Analisar o comportamento do algoritmo para possíveis cenários.
6
Que variáveis usamos nestas expressões matemáticas ? Resp.: Tamanho da entrada (depende do problema). Exemplos Ordenação: Número de itens da entrada (tamanho n do vetor para ordenar). Multiplicação de 2 inteiros: Número total de bits necessários para representar a entrada em notação binária. Comparação de cadeias de caracteres: Número de símbolos Nas duas cadeias ( n + m). Métodos Analíticos
7
Um exemplo simples prod = 0; cont = x; Repetir { prod = prod + y; cont = cont – 1} até que cont=0;
8
Tempo de execução = No. de passos efetuados pelo algoritmo EXEMPLO Algoritmo Inversão de sequência Entrada: sequência de elementos armazenados no vetor S[i], i = 1 até n. Saída: sequência invertida dos elementos de S[i]. Início Para i := 1,..., |_ n/2 _| faça temp := S[i] S[i] := S[n – i + 1] S[n – i + 1] := temp Fim Idéia Central
9
Notação: A - um algoritmo. E = {E 1,...,E m } – conjunto de entradas possíveis de A. t i = Número de passos efetuados por A com entrada E i. Definição: Complexidade de pior caso = Max (E i E) {t i }, Complexidade do caso médio = Σ (1 <= i <= m) (p i * t i ) onde p i é a probabilidade de ocorrência da entrada E i. Classificação – Complexidade de Tempo
10
Notações O, Ω e Θ Notação O Limite superior para o tempo de execução. O problema pode ser resolvido em tempo NO MÁXIMO x. Notação Ω Limite inferior para o tempo de execução. O problema requer tempo NO MÍNIMO x. Notação Θ Limite exato para o tempo de execução. O problema requer tempo NO MÍNIMO x e pode ser resolvido em tempo NO MÁXIMO x.
11
Intuitivamente, nas definições de complexidade usamos as notações O, Ω e θ para 1. Desprezar as constantes aditivas ou multiplicativas. Ex: número de passos = 3n + 25 aproximado n 2. Desprezar os termos de menor grau, mantendo apenas o termo DOMINANTE. Ex: número de passos = 3n 2 + 8n + 14 aproximado n 2 Notações O, Ω e Θ
12
Porque o interesse é assintótico. Notações O, Ω e Θ - POR QUÊ??
13
Definição (notação O): Sejam f,h funções positivas de variável inteira n. Diz-se que f é O(h) [f = O(h)] quando existirem (1) uma constante c > 0 e (2) um inteiro n 0, tais que: n > n 0 => f(n) c. h(n) Ex: f = n 2 + 1 f = O(n 2 ) (c=3, n 0 = 4) f = n 2 + 1 f = O(n 3 ) (c=3, n 0 = 4) f = 403 f = O(1) (c= ?, n 0 = ?) f = 3n + 5 log n + 2 f = O(n) f = 5 · 2 n + 12 · 5n 10 f = O(2 n )
14
Definição (notação ): Sejam f,h funções positivas de variável inteira n. Diz-se que f é (h), escrevendo-se f = (h), quando existir uma constante c > 0 e um valor inteiro n 0, tal que: n > n 0 => f(n) c. h(n) Ex: f = n 2 – 1 f = (n 2 ) f = (n) f = (1) Mas não vale: f = (n 3 )
15
Definição (notação ): Sejam f e h funções positivas de variável inteira. Diz-se que f é (h), escrevendo-se f = (h), quando ambas as condições acontecem: f = O(h) e f = (h).
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.