Escolar Documentos
Profissional Documentos
Cultura Documentos
Aulas 1 e 2
Table
Algoritmos
• Um algoritmo: A essência de um
procedimento computacional composto por
instruções seqüenciais passo a passo
• Um programa: Implementação de um
algoritmo em uma dada linguagem de
programação
• Estrutura de dados: forma de organizar os
dados necessários à solução de um problema
PAA-ICOMP-UFAM
Solução Algoritmica
Instância de Algoritmo
Entrada Saída
relacionada
atendendo a
à Entrada
especificação
Examplo: Ordenação
ENTRADA SAÍDA
sequência de números uma permutação da
sequência de entradas
Problema Algoritmico
Especificação Especificação
da ? da Saída como
Entrada função da
Entrada
A 3 4 6 8 9 7 2 5 1
1 j n
i
“insira A[j] na sequência
ordenada A[1..j-1]”
Análise de Algoritmos
• Eficiência:
– Tempo de execução
– Espaço (memória) usado
• Eficiência como função do tamanho da
entrada
PAA-ICOMP-UFAM
Modelos de Computação
• O que deve ser contabilizado ?
• Modelo RAM
– Instruções (considerando tempo constante):
• Aritiméticas (+, -, *, etc.)
• Atribuição
• Comparação
• Controle (desvios, chamadas de procedimento, etc.)
PAA-ICOMP-UFAM
fim-enquanto
A[i+1] ← pivot;
PAA-ICOMP-UFAM
Melhor/Pior/Médio
• Melhor Caso
– elementos já ordenados
– todos os testes falham, o loop interno nunca é
executado
– neste caso, tj=1 e a operação é executada n vezes
n
∑t j = t 2 + t3 + … + t n = 1 + 1 + … + 1 = n − 1
– Portanto aj =complexidade
2
de tempo é dada por
f(n)=n-1
PAA-ICOMP-UFAM
Melhor/Pior/Médio
• Melhor Caso
– elementos já ordenados
– tj=1, T(n) =C1 n, ou seja, tempo linear.
• Pior caso: elementos em ordem inversa
– tj=j, T(n) = C2 n2, ou seja, tempo quadrático
• Tempo médio:
– tj=j/2, T(n) = C2 n2, ou seja, tempo quadrático
PAA-ICOMP-UFAM
Melhor/Pior/Médio (2)
– Determinar o tempo de execução para diferentes
instancias de tamanho n:
6n Pior Caso
Tempo de Execução
5n
Caso Médio
4n
3n Melhor Caso
2n
1n
Instâncias
PAA-ICOMP-UFAM
Melhor/Pior/Médio (3)
– Para instâncias de todos os tamanhos:
Pior Caso
worst-case
6n average-case
Caso Médio
de Execução
time
5n
Melhor Caso
best-case
Running
4n
Tempo
3n
2n
1n
1 2 3 4 5 6 7 8 9 10 11 12 …..
Input instance
Tamanho size
da Entrada
PAA-ICOMP-UFAM
Melhor/Pior/Médio (4)
• O pior caso é geralmente usado:
– Estabelece um limite superior na complexidade de
tempo do algoritmo
– Para alguns algoritmos o pior caso é bastante
freqüente
– Frequentemente o caso médio é tão ruim quando
o pior caso
– Encontrar o caso médio pode ser muito difícil
PAA-ICOMP-UFAM
1,00E+143
1,00E+131
1,00E+119 n
log n
1,00E+107
sqrt n
1,00E+95 n log n
100n
1,00E+83 n^2
T(n)
n^3
1,00E+71
2^n
1,00E+59
1,00E+47
1,00E+35
1,00E+23
1,00E+11
1,00E-01
2 4 8 16 32 64 128 256 512 1024
n
PAA-ICOMP-UFAM
função/
10 20 50 100 300
n
400
1/1000 1 35.7 Séculos de
2n trilhões de
Exponencial
Exemplo 2: Busca
ENTRADA SAÍDA
• sequência de números • índice do número or NIL
• um número (cosulta)
2 5 4 10 7; 5 2
2 5 4 10 7; 9 NIL
PAA-ICOMP-UFAM
Busca (2)
j=1
while j<=length(A) and A[j]!=q
do j++
if j<=length(A) then return j
else return NIL
Exemplo 2: Busca
ENTRADA SAÍDA
• sequência de números ordenada • o índice do número
não-descendente encontrado ou NIL
• um número (cosulta)
2 4 5 7 10; 5 2
2 4 5 7 10; 9 NIL
PAA-ICOMP-UFAM
Busca binária
n Idéia: Divisão e conquista, uma das técnicas
chaves para projeto de algoritmos
left=1
right=length(A)
do
j=(left+right)/2
if A[j]==q then return j
else if A[j]>q then right=j-1
else left=j+1
while left<=right
return NIL
PAA-ICOMP-UFAM
Análise Assintótica
• Objetivo: simplificar a análise de complexidade de
tempo eliminando “detalhes” que podem ser
afetados por fatores de implementação ou hardware
– 3n2 → n2
• Comportamento assintótico: como o tempo de
execução do algoritmo cresce com o tamanho da
entrada.
PAA-ICOMP-UFAM
Notação Assintótica
• Notação O (O - Notation)
– Limite assintótico superior
– f(n) = O(g(n)), se existem
constantes positivas c e n0, f(n) ≤
c g(n) para n ≥ n0
Tempo de execução
c ⋅ g ( n)
f (n )
– f(n) e g(n) são funções sobre
inteiros não negativos
• Usada para análise do pior caso
n0 Tamanho da Entrada
PAA-ICOMP-UFAM
Tempo de Execução
que c g(n) ≤ f(n) para n ≥ n0
f (n )
• Usada para descrever o melhor c ⋅ g ( n)
caso de tempos de execução ou
limites inferiores de problemas
algorítmicos n0 Tamanho da Entrada
– P.ex., o limite inferior para busca
em lista não ordenada é Ω(n).
PAA-ICOMP-UFAM
Tempo de Execução
c 2 ⋅ g (n )
g(n) ≤ f(n) ≤ c2 g(n) para n ≥ n0 f (n )
• f(n) = Θ(g(n)) se, e somente se, c 1 ⋅ g (n )
f(n) = Ο(g(n)) e f(n) = Ω(g(n))
• O(f(n)) é frequente confundido
com Θ(f(n)) n0 Tamanho da Entrada
PAA-ICOMP-UFAM
Exercícios