Sunteți pe pagina 1din 2

MAC 5710 - Estruturas de Dados e sua Manipulao ca

URL: http://www.ime.usp.br/song/mac5710.html

Ecincia ou complexidade de algoritmos e


Siang - 2005 (Daremos aqui um tratamento informal sobre o assunto. Maiores detalhes devem ser obtidos em cursos de Anlise de Algoritmos.) a Costuma-se analisar um algoritmo em termos de tempo e espao (ou memria). Para o tempo, c o diversas medidas so em princ a pio poss veis: 1. Tempo absoluto (em minutos, segundos, etc.) no interessante por depender da mquina. a e a 2. Nmero de operaoes consideradas relevantes (por exemplo comparaoes, operaoes aritmticas, u c c c e movimento de dados, etc.) Trs casos podem ser considerados: o melhor caso, o caso mdio e o pior caso. O estudo do e e caso mdio depende do conhecimento ou suposiao da distribuiao das entradas ao problema. Em e c c geral o pior caso o mais fcil de se analisar. e a Por exemplo, se temos 2 mtodos para resolver um mesmo problema, cuja entrada tem tamanho e n, podemos ter: Mtodo 1: T1 (n) = 2n2 + 5n operaoes e c Mtodo 2: T2 (n) = 500n + 4000 operaoes e c Dependendo do valor de n, mtodo 1 pode requerer mais ou menos operaoes que mtodo 2. e c e

Notao O ca
Para estudarmos o comportamento assinttico para n grande interessa-nos o termo de ordem o superior: Mtodo 1: T1 (n) = O(n2 ) e Mtodo 1: T2 (n) = O(n) e A notaao O pode ser formalizada como se segue: c Dizemos que T (n) = O(f (n)) se existirem inteiro m e constante c tais que T (n) cf (n) para n > m. Isto , para valores de n sucientemente grandes, T (n) no cresece mais rapidamente que f (n). e a A importncia da complexidade pode ser observada pelo seguinte exemplo, que mostra 5 ala goritmos A1 a A5 para resolver um mesmo problema, de complexidades diferentes. Supomos que uma operaao leva 1 ms para ser efetuada. A tabela seguinte d o tempo necessrio por cada um c a a dos algoritmos. (Sempre suporemos logaritmos na base 2.) n 16 32 512 A1 T1 (n) = n 0.016s 0.032s 0.512s A2 T2 (n) = n log n 0.064s 0.16s 9s A3 T3 (n) = n2 0.256s 1s 4m 22s A4 T4 (n) = n3 4s 33s 1 dia 13h A5 T5 (n) = 2n 1m 4s 46 dias 10137 sculos e

Podemos muitas vezes melhorar o tempo de execuao de um programa (que implementa um c algoritmo dado) fazendo otimizaoes locais (e.g. usar x + x ao invs de 2x, em mquinas em que c e a a multiplicaao mais demorada que a adiao). c e c Entretanto, melhorias substanciais so muitas vezes obtidas se usarmos um algoritmo diferente, a com outra complexidade de tempo, e.g. obter um algoritmo de O(n log n) ao invs de O(n 2 ). e 1

Cota superior ou limite superior (upper bound)


Seja dado um problema, por exemplo, multiplicaao de duas matrizes quadradas de ordem n. c Conhecemos um algoritmo para resolver este problema (pelo mtodo trivial) de complexidade e O(n3 ). Sabemos assim que a complexidade deste problema no deve superar O(n3 ), uma vez que a existe um algoritmo desta complexidade que o resolve. Uma cota superior (ou upper bound) deste problema O(n3 ). A cota superior de um problema pode mudar se algum descobrir um e e outro algoritmo melhor. Isso de fato aconteceu com o algoritmo de Strassen que de O(n log 7 ). e Assim a cota superior do problema de multiplicaao de matrizes passou a ser O(n log 7 ). Outros c pesquisadores melhoraram ainda este resultado. Atualmente o melhor resultado o de Coppersmith e e Winograd de O(n2.376 ). Notem que a cota superior de um problema depende do algoritmo. A cota superior de um problema parecida com o record mundial de uma modalidade de e atletismo. Ela estabelecida pelo melhor atleta (algoritmo) do momento. Assim como o record e mundial, a cota superior pode ser melhorada por um algoritmo (atleta) mais veloz. Cota Superior dos 100 metros rasos: Ano 1988 1993 1993 1994 1996 1999 2002 Atleta (Algoritmo) Carl Lewis Linford Christie Carl Lewis Leroy Burrell Donovan Bailey Maurice Greene Tim Montgomery Tempo 9s92 9s87 9s86 9s84 9s84 9s79 9s78

Cota inferior ou limite inferior (lower bound)


As vezes poss demonstrar que para um dado problema, qualquer que seja o algoritmo a ser e vel usado, o problema requer pelo menos um certo nmero de operaoes. Essa complexidade chamada u c e cota inferior ou lower bound do problema. Veja que a cota inferior depende do problema mas no do particular algoritmo. Usamos a letra em lugar de O para denotar uma cota inferior. a Para o problema de multiplicaao de matrizes de ordem n, apenas para ler os elementos das c duas matrizes de entrada leva tempo O(n2 ). Assim uma cota inferior trivial (n2 ). e Na analogia anterior, uma cota inferior de uma modalidade de atletismo no dependeria mais a do atleta. Seria algum tempo m nimo que a modalidade exige, qualquer que seja o atleta. Uma cota inferior trivial para os 100 metros rasos seria o tempo que a velocidade da luz leva para percorrer 100 metros no vcuo. a Se um algoritmo tem uma complexidade que igual a cota inferior do problema, ento ele e a e otimo. O algoritmo de Coppersmith e Winograd de O(n2.376 ) mas a cota inferior de (n2 ). e e Portanto no podemos dizer que ele otimo. Pode ser que esta cota superior possa ainda ser mea e lhorada. Pode tambm ser que a cota inferior de (n2 ) possa ser melhorada (isto aumentada). e e Muitos pesquisadores desta area dedicam seu tempo tentando encurtar este intervalo (gap) at e encostar uma da outra.

S-ar putea să vă placă și