Escolar Documentos
Profissional Documentos
Cultura Documentos
Introducao
Introducao
Anlise de complexidade
Prof. Andr Lins
alla@ic.ufal.br
Instituto de Computao
Universidade Federal de Alagoas
Algoritmos
Os algoritmos fazem parte do dia-a-dia das pessoas.
Exemplos de algoritmos:
instrues para o uso de medicamentos;
indicaes de como montar um aparelho;
uma receita de culinria.
O papel de algoritmos em
computao
Definio: um algoritmo um conjunto finito de
instrues precisas para executar uma computao.
Um algoritmo pode ser visto como uma ferramenta para
resolver um problema computacional bem especificado.
Algoritmo: Etimologia
Do antropnimo (nome prprio de pessoa ou
de ser personificado) rabe al-Khuwarizmi
(matemtico rabe do sculo IX) formou-se o
rabe al-Khuwarizmi numerao decimal em
arbicos que passou ao latim medieval
algorismus com influncia do grego arithms
nmero; forma histrica 1871 algorithmo.
Referncia: Dicionrio Houaiss da Lngua Portuguesa, 2001, 1a edio.
PAA - Adaptado de Prof. Loureiro dcc/ufmg
Algoritmos: Definies
Dicionrio Houaiss da Lngua Portuguesa,
2001, 1a edio:
Conjunto das regras e procedimentos lgicos
perfeitamente definidos que levam soluo de
um problema em um nmero de etapas.
Algoritmos: Definies
Introduction to Algorithms, ClRS, 2001, 2nd
edition:
Informally, an algorithm is any well-defined
computational procedure that takes some value, or set
of values, as input and produces some value, or set of
values, as output. An algorithm is thus a sequence of
computational steps that transform the input onto the
output.
Consequncias
Deve-se definir um repertrio finito de regras
Linguagem de programao
Algoritmos: aspectos
Esttico
Texto contendo instrues que devem ser executadas
em uma ordem definida, independente do aspecto
temporal
Dinmico
Execuo de instrues a partir de um conjunto de
valores iniciais, que evolui no tempo
Dificuldade
Relacionamento entre o aspecto esttico e dinmico
PAA - Adaptado de Prof. Loureiro dcc/ufmg
10
Short questions!
1. Um programa pode ser visto como um algoritmo
codificado em uma linguagem de programao
que pode ser executado por um computador.
Qualquer computador pode executar qualquer
programa?
2. Todos os problemas ligados s cincias exatas
possuem algoritmos?
3. Todos os problemas computacionais tm a
mesma dificuldade de resoluo?
4. Como algoritmos diferentes para um mesmo
problema podem ser comparados/avaliados?
PAA - Adaptado de Prof. Loureiro dcc/ufmg
11
12
13
14
Custo de um algoritmo
Determinando o menor custo possvel para resolver
problemas de uma dada classe, temos a medida da
dificuldade inerente para resolver o problema.
Quando o custo de um algoritmo igual ao menor
custo possvel, o algoritmo timo para a medida de
custo considerada.
Podem existir vrios algoritmos para resolver o mesmo
problema.
Se a mesma medida de custo aplicada a diferentes
algoritmos, ento possvel compar-los e escolher o
mais adequado.
PAA - Adaptado de Prof. Loureiro dcc/ufmg
15
16
17
Funo de complexidade
Para medir o custo de execuo de um algoritmo comum definir
uma funo de custo ou funo de complexidade f.
f(n) a medida do tempo necessrio para executar um algoritmo
para um problema de tamanho n.
Funo de complexidade de tempo: f(n) mede o tempo necessrio
para executar um algoritmo para um problema de tamanho n.
Funo de complexidade de espao: f(n) mede a memria
necessria para executar um algoritmo para um problema de
tamanho n.
Utilizaremos f para denotar uma funo de complexidade de tempo
daqui para a frente.
Na realidade, a complexidade de tempo no representa tempo
diretamente, mas o nmero de vezes que determinada operao
considerada relevante executada.
18
20
21
Pior caso:
Maior tempo de execuo sobre todas as entradas de
tamanho n.
Se f uma funo de complexidade baseada na anlise de
pior caso, o custo de aplicar o algoritmo nunca maior do
que f(n).
22
23
24
Pior caso:
f(n) = n (registro procurado o ltimo consultado ou
no est presente no arquivo);
Caso mdio:
f(n) = (n+1)/2
25
26
27
28
Caso mdio:
A[i] maior do que Max a metade das vezes.
Logo, f(n) = n - 1 + (n - 1)/2 = 3n/2 - 3/2, para n > 0.
PAA - Adaptado de Prof. Loureiro dcc/ufmg
29
2.
3.
30
31
32
33
34