Вы находитесь на странице: 1из 11

Algoritmos e Estrutura de Dados III

Tcnicas de Anlise de Complexidade de Algoritmos


Luciana Assis
1

lpassis@dcc.ufmg.br lpassis@dcc ufmg br www.dcc.ufmg.br/~lpassis

Algoritmos e Estrutura de Dados III

Medida do Tempo de Execuo


Aps definir um problema analis-lo e elaborado um projeto, um algoritmo deve ser implementado. Estudar as vrias opes de algoritmos , os aspectos de tempo de execuo e memria utilizados. Tipos de problemas:
Anlise de um algoritmo particular
Qual o custo de utilizar um dado algoritmo?

Anlise de um classe de algoritmos


Qual o algoritmo de menor custo para resolver um problema? Exemplo: Estimar o nmero mnimo de comparaes necessrias para ordenar n nmeros nmeros.
2 Algoritmos e Estrutura de Dados III

Medida do Tempo de Execuo


Em muitas situaes podem existir vrios algoritmos para resolver o mesmo problema Escolher o melhor Exemplo: Problema de ordenao p
Insero Seleo Shellsort Quicksort Heapsort

Mesma medida de custo M did d t implementao, ...)

compar-los ( l (memria, i

Algoritmos e Estrutura de Dados III

Medida do Tempo de Execuo


Definir o menor custo para resolver problemas de determinada classe Algoritmo timo Exemplo: Problema obter o maior elemento de um conjunto.
Menor custo: n-1 comparaes p
1 3 5 2 6 4

Menor: 1 3 5 6 1, 3, 5, Comparao: 1 e 3, 3e5 5e2 5e6 6e4


4 Algoritmos e Estrutura de Dados III

Medida do Tempo de Execuo


Como medir o custo de um algoritmo: Executar o programa e medir o tempo d execuo. E d de
Problemas:
Resultados dependem do compilador Resultados dependem do Hardware Resultados dependem da memria disponvel

Caso exista vrios algoritmos para resolver um problema com a mesma ordem de grandeza, este mtodo pode ajudar a d idi entre eles qual o melhor. d d d j d decidir l l lh
Ex: Heapsort e Quicksort Ambos so O(nlogn)

Modelo Matemtico M d l M t ti
Baseado em um computador idealizado Especifica-se o conjunto de operaes a serem executadas e o custo de cada uma delas
Usualmente ignora-se algumas operaes, considrando apenas aquelas mais significativas Ex: Algoritmo de Ordenao: considerar apenas o nmero de comparaes e ignorar operaes de atribuio, operaes aritmticas, ...

Algoritmos e Estrutura de Dados III

Medida do Tempo de Execuo


Funo de Complexidade:
Mede o custo de excuo de um algoritmo. f(n) a medida do tempo necessrio para executar um algoritmo para um problema de tamanho n n. Complexidade de tempo: f(n) mede a quantidade do tempo necessrio para executar um algoritmo de tamanho n. Complexidade de espao: f(n) mede a quantidade de memria necessria para executar um algoritmo de tamanho n.
Durante o curso iremos analisar complexidade de tempo, exceto que se faa uma referncia explcita que estamos analisando memria

Algoritmos e Estrutura de Dados III

Exemplo
Encontrar o maior elemento em um vetor de inteiros de tamanho n. int Max(int vetor[]){ int max = vetor[1]; for(int i=1; i<n; i++) if ( (max < vetor[i]) t [i]) max = vetor[i]; return max; } F(n) = n-1, para n > 0 F(n) indica o nmero de comparaes Se o nmero de comparaes for utilizado como medida de custo, ento a funo Max tima. Custo uniforme independente da ordem como os elementos esto dispostos no vetor. t A medida de execuo de um algoritmo depende principalmente do tamanho da entrada dos dados. Por isso, comum considerar-se o tempo de execuo de um p g programa como uma funo do tamanho da entrada de dados.
7 Algoritmos e Estrutura de Dados III

Medida do Tempo de Execuo


Problemas de ordenao, por exemplo, dependendo da d d ordem d elementos certos algoritmos podem dos l l d trabalhar menos. Nestes casos necessrio distinguir o pior caso o caso mdio e o melhor caso caso, caso.
Melhor Caso: menor tempo de execuo sobre todas as possveis entradas entradas. Pior Caso: maior tempo de execuo sobre todas as p possveis entradas. Caso Mdio: corresponde mdia dos tempo de execuo de todas as entradas caso esperado. Utiliza distribuio de di ib i d probabilidade sobre o conjunto d b bilid d b j de entradas de tamanho n e o custo mdio obtido com base nesta distribuio
8 Algoritmos e Estrutura de Dados III

Exemplo
Procurar um registro em um arquivo
Pesquisa sequencial: examinar os registros na ordem em que eles aparecem no arquivo, at o que o registro procurado seja encontrado. encontrado f(n) = 1 (melhor caso) f(n) = n (pior caso) f(n) = (n+1)/2
Se pi for a probabilidade do i-simo registro seja procurado, e p p g j p considerando que para recuperar o i-simo registro so necessrias i comparaes, ento: f(n) = 1 x p1 + 2 x p2

Algoritmos e Estrutura de Dados III

Exerccios
1.

2. 2

3. 4. 4

5. 5

Dado um vetor de n registros, faa um programa em C para pesquisar a ocorrncia de um certo registro Determine a registro. funo de complexidade de tempo do algoritmo implementado. Determinar a f d complexidade de tempo para definir D t i funo de l id d d t d fi i a menor ocorrncia dentro de um vetor. Considerar o nmero de comparaes. Qual a funo de complexidade de tempo para preencher uma matriz tridimensional de n elementos. Qual a funo de complexidade de tempo para localizar um elemento numa matriz tridimensional de n elementos. Considerar somente as comparaes. Fazer um programa que encontre o maior e o menor F t i elemento de um vetor. Definir a funo de complexidade.
Algoritmos e Estrutura de Dados III

10

Referncias
ZIVIANE, Nivio ZIVIANE Nivio. Projeto de Algoritmos com Implementaes em Pascal e C. 2 ed. So Paulo: Thomson Learning, 2004. Learning 2004 LEISERSON, Charles E.; STEIN, Clifford; RIVEST, Ronald l CORMEN Th R ld l.; CORMEN, Thomas H. Al H Algoritmos:Teoria it T i e Prtica. Rio de Janeiro: Campus, 2002.

11

Algoritmos e Estrutura de Dados III

Вам также может понравиться