You are on page 1of 16

Complexidade de Algoritmos PARTE I Introduo

Professora: Cristiane Mendes Netto Curso de Cincia da Computao

Complexidade de Algoritmos
A anlise de algoritmos pode ser vista como uma disciplina de engenharia. Um engenheiro civil, por exemplo, possui mtodos e tcnicas para prever o comportamento de uma estrutura antes mesmo de constru-la. Da mesma forma, um projetista de algoritmos deve ser capaz de prever o comportamento de um algoritmo antes de implement-lo." 08/03/2012 2

Complexidade de Algoritmos

Observe a situao a seguir:

Ao verificar que um determinado programa est muito lento, uma pessoa prtica geralmente pede uma mquina mais rpida ao seu chefe...

08/03/2012

Complexidade de Algoritmos

... No entanto, o ganho potencial que uma mquina mais rpida pode proporcionar tipicamente limitado, por razes tcnicas ou econmicas. Em muitos casos, para obter um ganho maior, preciso buscar melhores algoritmos. Um bom algoritmo, mesmo rodando em uma mquina lenta, sempre acaba derrotando (para instncias grandes do problema) um algoritmo pior rodando em uma mquina rpida. Sempre.
08/03/2012 4

Complexidade de Algoritmos

O fato de um algoritmo resolver (teoricamente) um problema no significa que seja aceitvel na prtica. Os recursos de espao e tempo requeridos tm grande importncia em casos prticos. s vezes o algoritmo mais imediato est longe de ser razovel em termos de eficincia.
08/03/2012

Complexidade de Algoritmos

Exemplo: Soluo de sistemas de equaes lineares utilizando mtodo de Cramer e de Gauss.

Mtodo de Cramer requer dezenas de milhes de anos para resolver um sistema 20 X 20 enquanto o mtodo de Gauss o resolve em poucos segundos.

08/03/2012

Complexidade de Algoritmos

O crescente avano tecnolgico, permitindo a criao de mquinas cada vez mais rpidas, pode, ingenuamente, parecer ofuscar a importncia da complexidade de tempo de um algoritmo. Entretanto, acontece exatamente o inverso...
08/03/2012 7

Complexidade de Algoritmos

As mquinas tornando-se mais rpidas, passam a poder resolver problemas maiores, e a complexidade do algoritmo que determina o novo tamanho mximo de problema resolvvel.

08/03/2012

Complexidade de Algoritmos

Para um algoritmo rpido, qualquer melhoria na velocidade de execuo das operaes bsicas sentida e o conjunto de problemas resolvveis aumenta sensivelmente. Esse impacto menor no caso de algoritmos ineficientes.

08/03/2012

Problemas distintos da Anlise de Algoritmos

Anlise de um algoritmo particular: Qual o custo de usar um dado algoritmo para resolver um problema especfico? Obtido da anlise do nmero de vezes que cada parte do algoritmo deve ser executada, seguida da quantidade de memria necessria.

08/03/2012

10

Problemas distintos da Anlise de Algoritmos

Anlise de uma classe de algoritmos: Qual o algoritmo de menor custo possvel para resolver um problema especfico? Toda uma famlia de algoritmos para resolver um problema especfico investigada com o objetivo de identificar um que seja o melhor possvel.

08/03/2012

11

Medida de Tempo de Execuo de um Programa

O projeto de algoritmos fortemente influenciado pelo estudo de seus comportamentos. Consideraes importantes sobre a eficincia de um algoritmo:

Tempo de execuo Espao Ocupado (uso de memria)

08/03/2012

12

Como medir o custo de utilizao de um algoritmo?


Computador Real Modelo Matemtico

08/03/2012

13

Computador Real

Pode ser vlida quando existem vrios algoritmos distintos para resolver um mesmo tipo de problema, todos com um custo de execuo dentro de uma mesma ordem de grandeza.

08/03/2012

14

Computador Real

Porm, algumas vezes pode ser inadequado, pois:


Os resultados dependem do hardware; Os resultados so dependentes do compilador; Os resultados dependem da quantidade de memria.

08/03/2012

15

Modelo Matemtico

O conjunto de operaes a serem executadas deve ser especificado, assim como o custo associado com a execuo de cada operao. Geralmente, ignora-se o custo de algumas operaes envolvidas e considera-se apenas as operaes mais significativas.
16

08/03/2012

You might also like