Algoritmos e Grafos Doutorado em Ciência a da Comutação

Propaganda
25/3/2009
Algoritmos e Grafos
Doutorado em Ciência a da Comutação – DMCC
2009
Raimundo Macedo, LaSiD/DCC/UFBA
Noções de Complexidade de Algoritmos
d
l d d d l
1
25/3/2009
Computadores podem computar muitas coisas (para os quais existam algoritmos), mas
algumas coisas são incomputáveis (o problema da parada) !!!!
Mas será que todo problema para o qual existe um algoritmo existe de fato uma solução
prática?
Considere esse exemplo: calcule nm , onde n e m são números naturais qualquer
Existirão instâncias desses problema cujas soluções vão contra os princípios naturais:
Ex: a matéria no “universo” pode ser menor do que o espaço necessário para escrever
o resultado.
Outros problemas de maior interesse prático sofrem da mesma dificuldade.
Vejamos a seguir.
"Given the distances between any two points, what is the shortest route a salesman can make from point A, visiting all points, and returning to point A? This is the Travelling Salesman problem, an NP‐Hard problem in mathematics."
15
3
1
2
20
8
Dado um mapa genérico !!!!
Não existe uma solução eficiente para todas as instâncias desse problema.
É um problema de otimização combinatória: minimizar uma somatória.
2
25/3/2009
Suponhamos temos um computador muito veloz , capaz de fazer 1 bilhão de
adições por segundo
No caso de 20 cidades, o computador precisa apenas de 19
adições para dizer qual o comprimento de uma rota e então será capaz de
calcular 109 / 19 = 53 milhões de rotas por segundo. Contudo, essa imensa
velocidade é um nada frente à imensidão do número 19! de rotas que precisará
examinar. O valor de 19! é 121 645 100 408 832 000
( ou , aproximadamente, 1.2 x 1017 em notação científica ). Conseqüentemente,
ele precisará de 1.2 x 1017 / ( 53 milhões ) = 2.3 x 109 segundos para completar sua tarefa,
o que equivale a cerca de 73 anos ...
O problema é que a quantidade ( n - 1 )! cresce com uma velocidade
alarmante, sendo que muito rapidamente o computador torna-se incapaz
de executar o que lhe pedimos.
n
rotas por segundo
( n ‐ 1 )!
cálculo total
5
250 milhoes
24
insignific
g
10
110 milhoes
362 880
0.003 seg
15
71 milhoes
87 bilhoes
20 min
20
53 milhoes
1.2 x 1017
73 anos
25
42 milhoes
6.2 x 1023
470 milhoes de anos
Origem da tabela: http://www.mat.ufrgs.br/
A função de complexidade de tempo de um algoritmo expressa a maior quantidade de tempo necessária para o algoritmo resolver o problema para qualquer entrada possível de um dado tamanho.
Algoritmos distintos possuem funções distintas de complexidade de Algoritmos
distintos possuem funções distintas de complexidade de
tempo. Em geral, se distinguem em
algoritmos eficientes e não eficientes, que podem ser caracterizadas pelo seu aspecto polinomial ou exponencial, respectivamente.
Para a definição da função é necessário a definição do que seria o tamanho do problema. Ex: no caso do problema de ordenação de
tamanho do problema. Ex: no caso do problema de ordenação de
vetores ou tabelas, o numero de entradas do vetor ou tabela e utilizado.
3
25/3/2009
Uma definição mais formal
Notação Big‐O e Big‐Ω
Upper and Lower Boounds
f(n) = O(g(n)), se existes constante c e n0 t.q. |f(n)| ≤ c. |g(n)| para todo n ≥ n0
A complexidade é polinomial se definida como O(p(n)) para alguma função polinomial p, onde n e o tamanho do problema.
Se a função de complexidade não puder ser limitada por polinômio, diz‐se que a mesma possui complexidade exponencial.
Por exemplo, 3x2 + 2x + 5 é O(n2) , 2x + log x + 1 = O(x)
É simples verificar que
9O(h1 + h2) = O(h1) + O(h2)
9O(h1 . h2) = O(h1) . O(h2)
9Se h1 ≥ h2, então O(h1 + h2) = O(h1)
9Seja k uma constante, então O(k. h) = k . O(h) = O(h)
A complexidade assintótica de uma algoritmo não é única, varia com a entrada
Dentro da diversidade de entradas, é portanto importante aquela que corresponde ao pior caso
de seqüência de passos de execução. Ou seja, o fator máximo dentre todas as complexidades
para entradas suficientemente grandes.
Æ Complexidade do pior caso
Complexidade do pior caso
É uma medida útil e muito usada, mas deve‐se ter cuidado quando
1) O pior caso é pouco freqüente – deve‐se ver então o caso médio.
2) As constantes são valores muito grandes
Ex: h1 = 1000. x e h2 = x2 Por analogia, define‐se também a complexidade para o melhor caso
Lower bounds
É o valor mínimo dentre todas as complexidades do algoritmo para entradas suficientemente
grandes.
4
25/3/2009
A complexidade do melhor caso (lower bound) corresponde a um limite superior do número de passos necessários à computação da entrada mais favorável, de tammanho
suficientemente grande.
Usa‐se a notação Ω
F = Ω(h), Î existem constantes c. no > 0, t.q., f(n) ≥ c. h, para n ≥ no. Ex. 5n2 + 2n + 3 é Ω(n2) e 2n3 + 5n é Ω(n3)
Complexidade de problemas ....
Seja P um problema com entrada n > 0 e g uma função real positiva da variável n.
Ω(g) é um lower bound de P quando qualquer algoritmo α que resolva P requerer pelo
menos (g) passos. (g) p
Ex. Se Ω(n2) for o limite inferior para P (lower bound), não poderá existir algoritmo que resolva
P em O(n) passos.
Um algoritmo α0 que possua complexidade O(g) é dito ótimo ‐‐‐ g é o limite inferior máximo de P. Ou seja, α0 é o algoritmo de complexidade mais baixa entre todos que resolver P.
c. g(n)
f(n)
f(n)
c. g(n)
f(n) = Ω(g(n))
f(n) = O(g(n))
c2. g(n)
f(n)
c1. g(n)
f(n) = θ (g(n))
Tight bound ou limite assintótico exado
5
25/3/2009
Limite Inferior da ordenação
Ω (nlogn) é o lower bound para o problema de ordenação de uma seqüência S com n elementos
*resultado restrito aos algoritmos de ordenação em que as comparações sejam as operações
dominantes
6
Download