Você está na página 1de 54

Complexidade de 

Algoritmos
de Algoritmos

UFSC / CTC / INE 5609 – Estruturas de Dados


UFSC / CTC / INE 5609  de Dados

Professora: Patricia D M Plentz
Plano de Aula
Plano de Aula

• IIntrodução
t d ã
• Estrutura da Análise de Algoritmos
• Crescimento de Funções e Notação Assintótica
• C
Comparação de Funções
ã d F õ
• Resumo 

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 2


Introdução 
Introdução

•N
Nesta disciplina estamos interessados em utilizar 
t di i li t i t d tili
boas estruturas de dados e algoritmos.
 Estruturas de dados são formas sistemáticas de 
organizar e acessar dados;
organizar e acessar dados;
 Algoritmos são procedimentos para realizar alguma 
tarefa em um tempo finito.

Esses conceitos são centrais para a


computação

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 3


•P
Para sermos capazes de classificar estruturas de 
d l ifi t t d
dados e algoritmos como bons, devemos ter 
maneiras precisas de analisá‐los.
U
Uma ferramenta de análise pode, por exemplo, 
f t d áli d l
utilizar o tempo de execução de algoritmos e 
operações sobre estruturas de dados.

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 4


Introdução

Como avaliar um algoritmo?


Como avaliar um algoritmo?

• Dado um algoritmo, podemos perguntar:

 Ele fornece de fato uma solução para o problema 
em questão?
q
 Quão eficiente é este algoritmo?
 Qual o espaço em memória necessário para a 
execução do algoritmo?
 Existe uma maneira melhor de resolver o problema 
em questão?
q

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 5


Introdução 
Introdução

Problema 
P bl

Algoritmo A
Algoritmo A Algoritmo B
Algoritmo B ... Algoritmo C
Algoritmo C

Análise
Prever os recursos 
que um algoritmo irá 
precisar
precisar. Al i
Algoritmo  B é mais eficiente.
é i fi i
Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de  6
Introdução 
Introdução

Análise
Prever os recursos  Objetivos:
que um algoritmo irá  Prever o comportamento 
precisar. do algoritmo sem 
implementá‐lo em uma 
plataforma específica
Memória Hardware

Largura de banda de Especialmente o tempo 


comunicação de execução
de execução

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de  7


Avaliação de Algoritmos
Avaliação de Algoritmos

• Correção
• Eficiência Temporal
Eficiência Temporal
Critérios • Eficiência Espacial
• Oti lid d
Otimalidade

• Análise Empírica
Métodos • Análise Teórica
Análise Teórica

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 8


Avaliação de Algoritmos

Métodos • Análise Empírica
Análise Empírica

•C
Cria‐se um algoritmo e executa‐se testes 
i l i
usando um conjunto de dados (casos de 
teste).
• Entretanto:
 Não é possível testar todos os casos :
 Muito trabalhoso;
 Algum
Algum caso será esquecido –
caso será esquecido caso que o algoritmo falha, 
caso que o algoritmo falha
caso em que o desempenho do algoritmo é 
particularmente muito bom ou muito ruim.
p

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 9


Avaliação de Algoritmos

Métodos • Análise Teórica
Análise Teórica

•C
Cria‐se um algoritmo e, usando alguns 
i l it d l
critérios, realiza‐se uma análise para 
entender seu comportamento:
 Correção:
 Ele fornece uma solução válida para o problema em 
questão?
 Eficiência:
QQuanto tempo o algoritmo gasta para finalizar sua 
t t l it t fi li
execução?
 Quanto de memória o algoritmo utiliza durante sua 
Quanto de memória o algoritmo utiliza durante sua
execução?
Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 10
Avaliação de Algoritmos

• Eficiência
Eficiência Temporal
Temporal
X
Critérios
• Eficiência Espacial
Efi iê i E i l

Alguns anos atrás


Alguns anos atrás Atualmente

Recursos espaço Espaço não é tão 


e tempo eram 
e tempo eram importante.
valiosos. Tempo continua sendo
importante.
Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 11
Avaliação de Algoritmos

• Quase todos os algoritmos levam mais tempo 
p
para serem executados sobre entradas maiores.
 Torna‐se interessante investigar a eficiência de 
algoritmos como função do parâmetro  N
l it f ã d â t N

Por que não utilizar


unidade
id d dde ttempo? ?
Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 12
Avaliação de Algoritmos

Métricas

Dependência 

de hardware

Qualidade da  Fatores 
i l
implementação
t ã E
Externos

Por que não


Compilador 
utilizar unidade
de tempo?

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 13


Avaliação de Algoritmos - Métricas

•C
Como avaliar um algoritmo sem depender de 
li l it d d d
fatores externos?
 Contar o número de vezes que cada operação do 
algoritmo é realizada
algoritmo é realizada.
OU
 Identificar a operação que mais contribui para o
tempo de execução total do algoritmo, e contar o 
do algoritmo e contar o
número de vezes que esta operação é realizada.
Operação Básica
Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de  14
Avaliação de Algoritmos - Métricas

Eficiência Temporal
Eficiência Temporal

• A Eficiência Temporal
f ê l é analisada determinando 
é l d d d
o número de repetições de operações básicas
como uma função do tamanho da entrada (N).

Tamanho da entrada

T(N) ≈ CopC(N) Número de vezes


que a operação
Tempo
p de execução
ç básica é executada
Tempo
p de
execução da operação básica
Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 15
Modelo Computacional 
RAM (Random Access Machine)
RAM (Random Access Machine)

• Com este modelo é possível medir o tempo de 
p p
execução de um algoritmo contando o número 
de passos que ele gasta para uma dada instância
de passos que ele gasta para uma dada instância 
do problema.
 Não considera detalhes de hardware e de software.

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 16


Modelo Computacional 
RAM (Random Access Machine)
RAM (Random Access Machine)

• Modelo de Computação RAM
M d l d C t ã RAM

 Cada operação simples (+, *, ‐, =, se) gasta 
exatamente 1 passo de tempo;
p p
 Laços e subrotinas não são considerados operações 
simples.
São a composição de algumas operações de passo único;
 Cada
Cada acesso à memória gasta exatamente um passo 
acesso à memória gasta exatamente um passo
de tempo

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 17


Avaliação de Algoritmos - Métricas - Eficiência Temporal

Tamanho da Entrada e Operação Básica


Tamanho da Entrada e Operação Básica

Problema Tamanho   da Entrada Operação Básica


Pesquisa por uma  Número de itens na lista Comparação de 
chave em uma lista de 
h li d chaves
h
N itens
Multiplicação de duas 
Multiplicação de duas Dimensões das matrizes   
Dimensões das matrizes Multiplicação de 
Multiplicação de
matrizes de números  (L x C) (L x C) ponto flutuante
de pontos flutuantes
Calcular aN N Multiplicação de a N 
vezes
Grafos Número de vértices e /  Visitar um vértice ou 
ou arestas atravessar uma aresta

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 18


Exemplo:
Tempo de Operação de um Algoritmo
Tempo de Operação de um Algoritmo
• Pesquisa por K chaves em uma lista de N itens
P i K h li t d N it
 Tamanho da entrada: N;
 Número de itens: 10 N=10;
 Operação Básica: comparação da chave com os itens;
Operação Básica: comparação da chave com os itens;
 Cop: 1 unidade de tempo;
 C(N) N2 2 ;
C(N): N

T(N) ≈ CopC(N)

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 19


Exemplo:
Tempo de Operação de um Algoritmo
Tempo de Operação de um Algoritmo

T(N) ≈ CopC(N)
T(10) ≈ 1 . (10)2 = 100
/

Quanto tempo a mais levará a execução de 
um algoritmo se dobrarmos o tamanho de
um algoritmo se dobrarmos o tamanho de 
sua entrada? N = 20 ?

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de  20


Exemplo:
Tempo de Operação de um Algoritmo
Tempo de Operação de um Algoritmo

T(N) ≈ CopC(N)
T(20) ≈ 1 . (20)2 = 400

T(10) ≈ 100
Relação
T(20) ≈ 400 1/4

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 21


Análise da Complexidade de um Algoritmo
Análise da Complexidade de um Algoritmo

• Algoritmo de ordenação por inserção
Al it d d ã i ã
 Percorrer um vetor A (N = 10) desordenado 
buscando o maior elemento;
 Inserir o elemento em um vetor B (N = 10) , de forma 
( )
ordenada.
Vetor A
10 3 5 1 20 4 2 2 1 8
Vetor B
10 20
Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 22
Análise da Complexidade de um Algoritmo
Análise da Complexidade de um Algoritmo

• Qual o número mínimo de operações?
Q l ú í i d õ ?
 N op min = 1 + 1 + 1 + 1 + ... + 1 = 10

• Qual o número máximo de operações?
Qual o número máximo de operações?
 N op max = N + (N ‐1) + (N ‐2) + (N ‐3) + ... + 1
 N op max = 10 + 9 + 8 + 7 + ...+ 1 = 55
A soma de uma seqüência de N 
q
números de razão 1 é : 
N(N +1)   =   10(10+1) =   55
( ) ( )
2                    2
Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 23
Análise da Complexidade de um Algoritmo
Análise da Complexidade de um Algoritmo

A soma de uma seqüência de N 
números de razão 1 é : 
N(N +1)            N2  + N
2                      2

Elemento preponderante da
q ç
equação*

*p
para um valor de N
suficientemente grande
Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de  24
Análise da Complexidade de um Algoritmo
Análise da Complexidade de um Algoritmo

• Complexidade de Pior Caso
C l id d d Pi C d Al it
do Algoritmo
 É a função definida pelo número máximo de passos
gastos sobre qualquer instância de tamanho N.
• Complexidade de Melhor Caso
Complexidade de Melhor Caso do Algoritmo
do Algoritmo
 É a função definida pelo número mínimo de passos
gastos sobre qualquer instância de tamanho N
gastos sobre qualquer instância de tamanho N.
• Complexidade de Caso Médio do Algoritmo
 É a função definida pelo número médio de passos
gastos sobre qualquer instância de tamanho N.

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 25


Análise da Complexidade de um Algoritmo
Análise da Complexidade de um Algoritmo

•C
Complexidade do algoritmo no melhor 
l id d d l it lh
caso é igual a N.
• Complexidade do algoritmo no pior caso é 
N2 .
aproximada por N
i d

• O importante é estudar o pior caso...

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 26


Exemplo de Pseudocódigo
Exemplo de Pseudocódigo

Algoritmo: arrayMax(A, n)
Algoritmo arrayMax(A n)
Entrada: um arranjo A com n>= 1 elementos 
i i
inteiros.
Saída:     o maior elemento em A.

currentMax = A[0];
for   i=1   to   n‐1  do
iff currentMax < A[i] then
[]
currentMax = A[i];
return currentMax

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 27


Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 28
Contando operações primitivas
Contando operações primitivas

• No exemplo arrayMax:
N l M
 Inicializar a variável currentMax corresponde a duas 
operações primitivas (indexar um arranjo e atribuir 
um valor a uma variável) e é executada apenas uma 
vez, quando o algoritmo é iniciado.
Ela contribui em duas unidades para a contagem
 No início do laço FOR, o contador i é inicializado com 
o valor 1 – corresponde a uma operação primitiva.
p p ç p
 Antes de entrar no laço FOR, a condição i < n é 
verificado ‐ corresponde a uma operação primitiva 
verificado  corresponde a uma operação primitiva
(comparar dois números).
Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 29
 Como o contador i é inicializado em 0 e incrementado 
em 1 no final de cada iteração, a comparação i < n é 
f ld d é
executada n vezes
Colabora com n unidades para a contagem.
 O corpo do laço FOR é executado n‐1 vezes. A cada 
iteração, A[i] é comparado com currentMax (duas 
operações primitivas – indexação e comparação)
O valor de A[i] pode ser atribuído a currentMax (duas 
operações primitivas – indexação e atribuição);
O contador i é incrementado (duas operações – soma e 
atribuição).
A cada iteração do laço, quatro a seis operações primitivas 
são realizadas – o corpo do laço contribui para a contagem 
com um número de unidades que varia entre 4(n 1) e 6(n 1)
com um número de unidades que varia entre 4(n‐1) e 6(n‐1)

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 30


 Retornar
Retornar o valor da variável currentMax
o valor da variável currentMax corresponde 
corresponde
a uma operação primitiva e é executada apenas uma 
vez.
vez
• O número mínimo de operações primitivas T(n) 
executadas pelo algoritmo arrayMax:
2 + 1 
2  1 + n 
n + 4(n 
4(n ‐ 1) 
1) + 1 
1 =   5n
5n
• O número máximo de operações primitivas T(n) 
executadas pelo algoritmo arrayMax:
t d l l it M
2 + 1 + n + 6(n ‐ 1) + 1 =   7n ‐ 2

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 31


• Considere:
 “a” tempo da op. primitiva mais rápida
 “b” tempo da op. primitiva mais lenta
j ( ) o tempo real de execução do pior caso do 
• Seja T(n) p ç p
algoritmo
a(7n
(7n‐‐1) <= 
1) <= T(n) <= 
1) <= T(n) <= b(7n
<= b (7n‐‐1)
• Ou seja, o tempo T(n) está limitado pelas duas funções 
lineares.

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 32


Análise da Complexidade de um Algoritmo
Análise da Complexidade de um Algoritmo

•C
Cada uma das complexidades de tempo (melhor 
d d l id d d t ( lh
e pior caso) define uma função numérica, 
representando tempo  versus tamanho do 
problema.
p
Funções numéricas são
difíceis de serem Para simplificar a
trabalhadas. análise da
complexidade de um
algoritmo utiliza-se a
Notação O
Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 33
Notação O
Notação O

•A
A Notação O
Notação O permite fazer análise de 
permite fazer análise de
complexidade de algoritmos considerando 
li it
limites superiores e inferiores das funções 
i i f i d f õ
numéricas. • T(n) varia dentro da 
T(n) varia dentro da
área definida pelo
Melhor – Pior caso.
• Tempo cresce com o 
T
tamanho dos dados
• Não importa 
p
máquina nem 
implementação

1 2 3 4 ...
Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 34
Taxa de crescimento do tempo de execução
Taxa de crescimento do tempo de execução

• Alterar o ambiente de hardware/software
Alt bi t d h d / ft
 Afeta T(n) com um fator constante
 Mas não altera sua a taxa de crescimento

• Taxa de crescimento linear
 propriedade intrínseca daquele algoritmo

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 35


Funções de taxas de crescimento
ç

• Linear   ~  n Linear Quad Cúbica

Quadrática  ~  n2
• Q 30

• Cúbica   ~  n3 25

20
• Taxa de crescimento não 
15
é afetada por
é afetada por
10
 Fatores constantes
 Termos de menores 
Termos de menores 5
ordens 0
1 2 3

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 36


Classes Assintóticas
Classes Assintóticas

•P
Para fazer análise de complexidade de 
f áli d l id d d
algoritmos, utiliza‐se o comportamento 
assintótico da função do tempo “T” em relação 
ao tamanho da entrada do algoritmo “n”;
g ;
 O comportamento assintótico de uma função f(n) 
pode ser encontrado nos casos em que 
d t d
n →∞ e     n →‐ ∞

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 37


Classes Assintóticas
Classes Assintóticas

•O
Os tipos de comportamento assintóticos são 
ti d t t i tóti ã
também chamados de Classes Assintóticas.
 A definição do comportamento assintótico não 
define exatamente o número de operações mas qual
define exatamente o número de operações, mas qual 
o comportamento esperado quando varia‐se o 
tamanho da entrada
tamanho da entrada.
 Classes assintóticas são representadas pela     
notação O.

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 38


Notação Big‐O
Notação Big O

• Dadas
Dadas duas funções  f(n) e g(n)
duas funções f(n) e g(n)
• Diz‐se que 
f(n) é O(g(n))
• se
se 
f(n) <= k*g(n),  com n >= n0
• Ou seja
O j
 se f é “menor” que g multiplicado por uma constante 
K, para um valor de n maior que um limite n0

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 39


• Quais funções estamos comparando?
Q i f õ t d ?
 f(n) e g(n) são algoritmos

• Para nosso uso:
Para nosso uso:
 f(n) é o algoritmo que estamos estudando
 g(n) será uma função básica
linear
quadrática
cúbica, etc

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 40


Classes Assintóticas
Classes Assintóticas

• Classes assintóticas:
Cl i tóti
 Constante:  O(1)
 Logarítmica:  O(lg(n))     →  representada na 
base 2
 Linear:  O(n)
 Logarítmo
Logarítmo‐Linear: 
Linear: O(n lg(n))
O(n lg(n))
 Quadrática:  O(n2)
 Cúbica:  O(n3)
 Exponencial:  O(cn), onde c é uma constante

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 41


Notação Assintótica
Notação Assintótica

• Notação Θ (Theta);
• Notação O (O maiúsculo);
• Notação Ω
N ã Ω (Ômega maiúsculo);
(Ô iú l )

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 42


Taxa de Crescimento Assintótica

•A
A taxa de crescimento assintótica é um modo de 
t d i t i tóti é d d
comparar funções, que ignora fatores constantes 
e entradas de tamanho pequeno.
 O(g(n)):
O(g(n)): classes de funções f(n) que crescem menos 
classes de funções f(n) que crescem menos
rapidamente ou igual a g(n);
 Θ(g(n)): classes de funções f(n) que crescem na 
mesma taxa de g(n);
 Ω (g(n)): classes de funções f(n) que crescem pelo 
menos tão rapidamente quanto g(n)
menos tão rapidamente quanto g(n).
Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 43
Exemplo arrayMax
Exemplo arrayMax

•O
O tempo de execução do algoritmo arrayMax
t d ã d l it M
para determinar o maior elemento de um 
arranjo de n inteiros é O(n).
 O número de operações primitivas executadas pelo 
p ç p p
algoritmo é no máximo  7n‐2.
Portanto,
Portanto, existe uma constante positiva a
existe uma constante positiva a que depende da 
que depende da
unidade de tempo do hardware e do software em que o 
algoritmo é implementado, compilado e executado, de tal 
forma que o tempo de execução de arrayMax para uma 
entrada de tamanho n é no máximo a(7n – 2).

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 44


Exemplo arrayMax
Exemplo arrayMax

 Aplicamos
Aplicamos a definição de O com c = 7a e n
a definição de O com c 7a e n0 = 1 e 
1e
concluímos que o tempo de execução de arrayMax é 
O(n)

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 45


Notação Big‐O
Notação Big O

• f(n) é O(g(n)) significa que
f(n) é O(g(n)) significa que
 a taxa de crescimento de f(n) não é maior que a taxa 
de crescimento de g(n)
de crescimento de g(n)
• Então
 se f(n) é O(n), quero dizer que
a taxa de crescimento de f(n) é menor ou igual a uma taxa 
d
de crescimento linear
i li
 se f(n) é O(n2), quero dizer que
a taxa de crescimento de f(n) é no máximo igual a uma 
 f( ) é á l
taxa de crescimento quadrática

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 46


Regras do Big‐O
Regras do Big O

• Se f(n) é um polinômio de grau d
S f( ) é li ô i d d
 f(n) é O(nd)    ou seja
joga‐se fora termos de mais baixa ordem
despreza‐se os fatores constantes
• Use a menor classe de funções
 2n é O(n) em vez de 2n é O(n2)
2n é O(n) em vez de 2n é O(n
• Use a expressão de classe mais simples
 3n+5 é O(n) em vez de 3n+5 é O(3n)

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 47


Análise assintótica – como proceder
Análise assintótica  como proceder

• Define o tempo de execução de um algoritmo
Define o tempo de execução de um algoritmo
 usando a notação Big‐O
• Análise assintótica
 encontra‐se o pior caso com operações primitivas em 
função do tamanho da entrada
 expressa‐se esta função com notação Big‐O
• Algoritmo arrayMax
 pior caso: 7n
pior caso: 7n‐1
1 operações primitivas
operações primitivas
 arrayMax executa em tempo O(n)

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 48


Comparação entre algoritmos
Comparação entre algoritmos

• FFaz‐se a análise assintótica de cada algoritmo
áli i tóti d d l it
• Compara‐se diretamente os resultados
• Algumas funções típicas por ordem de 
crescimento:
 n < log n < n < n log n < nc < xn < n! < nn
• Quanto mais rápido o crescimento, pior o 
desempenho do algoritmo
desempenho do algoritmo

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 49


Eficiência Assintótica
Eficiência Assintótica

•M
Maneira como o tempo de execução de um 
i t d ã d
algoritmo aumenta com o tamanho da entrada, 
a medida que a entrada aumenta 
indefinidamente.

• Em geral:
Em geral:
 Um algoritmo que é assintoticamente mais eficiente 
será a melhor escolha para todas as entradas (exceto
será a melhor escolha para todas as entradas (exceto 
as muito pequenas).

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 50


Análise dos Algoritmos de  
Algumas Estruturas

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 51


• Pilha
 Criar  – O(1)
 Esvaziar  – O(1)
 Top  – O(1)
 Push – O(1)
 Pop
Pop  – O(1) • Fila
 Criar  – O(1)
 Entrar  – O(1)
 Sair 
Sair – O(1)

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 52


• Listas • Árvores
 Criar  – O(1)  Criar  – O(1)
 Inserir  – O(1)  Inserir
Inserir  – O(h)
 Excluir – O(n)  Percorrer  – O(n)
 Buscar – O(n)  Buscar  – O(h)
 Excluir  – O(h)
( )
Onde
n é o número de elementos
n é o número de elementos
h é a altura da árvore

* Válido para árvores balanceadas
Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 53
Referências Bibliográficas
Referências Bibliográficas

• EEstruturas de Dados e Algoritmos em Java
t t d D d Al it J – 2ª 

ed. Goodrich, Michael, T.; Tamassia, Roberto. Ed. 
Bookman.

Profa. Patricia D M Plentz              UFSC – CTC – INE 5609 ‐ Estruturas de Dados 54

Você também pode gostar