Introdução a Complexidade de...

29
Introdução a Complexidade de Algoritmos Estruturas de Dados Prof. Vilson Heck Junior

Transcript of Introdução a Complexidade de...

Page 1: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

Introdução aComplexidade de Algoritmos

Estruturas de DadosProf. Vilson Heck Junior

Page 2: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

Apresentação

• Revisão - O Algoritmo;

• A Complexidade;

• Exercício.

Page 3: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

REVISÃO - O ALGORITMOComplexidade de Algoritmos

Page 4: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

O Algoritmo

• Os algoritmos são o cerne dacomputação;

• Programas de computador são criados apartir de algoritmos;

• Mas o que são algoritmos?

– São sequências de passos bem definidos,detalhados e finitos, que quandoexecutados realizam uma tarefa específica.

Page 5: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

O Algoritmo

• Por ser finito, um algoritmo deve:

– Iniciar,

– Processar por um determinado tempo e

– Terminar;

• Em geral, tendemos a comparar doisalgoritmos distintos, que realizam umamesma tarefa, pelo tempo necessário àsua execução.

Page 6: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A COMPLEXIDADEComplexidade de Algoritmos

Page 7: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

• Diferentes computadores, muitas vezescom hardwares idênticos, podem levartempos diferentes para processar ummesmo algoritmo;– Quando trocamos algum, ou mais, itens de

hardware, esta diferença tende a aumentarainda mais;

• Por tanto, avaliar o desempenho de umalgoritmo com base apenas no tempo deexecução deste, é ineficiente.

Page 8: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

• Surge o conceito de Complexidade deAlgoritmos;

– Que é uma fração da ComplexidadeComputacional;

• A Complexidade de Algoritmos estuda edefine quanto eficiente é um algoritmoem relação ao número de operações(passos do algoritmo) necessárias parafinalizar a tarefa.

Page 9: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

• Apesar do hardware influenciar notempo de execução de um algoritmo,existe ainda um segundo parâmetro quepode também influenciar este tempo:

– O Conjunto de Dados!

Page 10: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

• Em geral, algoritmos servem paraprocessar conjuntos de dados comtamanho indeterminado:

– Listas;

– Filas;

– Pilhas;

– Tabelas;

– Imagens;

– Entre outros.

Page 11: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

• Exemplo:

– Para somar todos os elementos de uma lista:

• Quando a lista tiver apenas 1 elemento:– Uma operação de soma!

• Quanto a lista tiver 1.000.000 de elementos:– 1.000.000 de somas!

Page 12: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

• Por padrão, para denotar o tamanho doconjunto de dados a ser processado,chamamos este número de dados de:

n

Page 13: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

• Criamos, então, uma “função decomplexidade do algoritmo”, que irárelacionar o número de instruçõesutilizadas por um algoritmo – T(n) – como tamanho do conjunto de dados – n:

–T(n) = n

• Neste exemplo, para cada n dados,teremos n operações.

Page 14: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade• As Complexidades mais comuns são:

n

n

n

n

nn

n

n

3

2

log

log

3

2

2

2

Page 15: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

Page 16: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

Page 17: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

Page 18: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

Page 19: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

Page 20: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

Page 21: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

• Pergunta 01:

– Qual é o T(n) para a pesquisa de um elemento em uma lista?

• Pergunta 02:

– Qual é o T(n) para inserir um elemento em uma lista?

Page 22: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

• Temos respostas diferentes para asperguntas anteriores:– Pergunta 01 – 3 cenários existentes:

• O primeiro elemento ser o procurado (melhorcaso);

• O elemento central ser o procurado (casomédio);

• O último elemento ser o procurado (pior caso);

– Pergunta 02 – os 3 cenários são iguais:• Uma instrução para criar o próximo elemento;

• Encadear o elemento!

Page 23: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

• Cenários possíveis:

– Melhor Caso:

• Descreve o menor número de instruçõespossíveis de ocorrer para um determinadoalgoritmo (conforme os dados utilizados);

• No exemplo de pesquisa em uma lista, o melhorcenário existe quando o primeiro elemento é oprocurado:

• Neste caso, T(n) = 1, utiliza-se a notação:

1)( n

Page 24: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

• Cenários possíveis:

– Caso Médio:

• Descreve o cenário mais comum, o cenáriomédio, de número de instruções;

• No exemplo da lista, na média os valoresprocurados estarão no meio da lista. Algumasvezes estarão no inicio, porém outra vezesestarão no fim, isto torna nosso valor médiosendo T(n) = n / 2, utilizando a notação:

2)(

nn

Page 25: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

• Cenários possíveis:

– Pior Caso:

• Descreve o maior número de instruçõespossíveis de ocorrer para um determinadoalgoritmo (conforme os dados utilizados);

• No exemplo da lista, o valor pesquisado seencontraria no fim e, por tanto, precisaríamosde T(n) = n, com a notação:

nn )(

Page 26: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

• Representações comuns:

– O cenário utilizado para representar umalgoritmo é o de pior caso;

– Apesar de podermos quantificar asinstruções necessárias para cada algoritmo,para o pior caso, o mais comum éarredondarmos para uma das complexidademais comuns:

n

n

n

n

nn

n

n

3

2

log

log

3

2

2

2

Page 27: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

A Complexidade

• Ao medir o número de instruçõesnecessárias para cada algoritmo, devemser consideradas estruturas, tais comode decisão ou de repetição;

• Em geral, a estratégia de um algoritmo éresponsável pela sua eficiência, mas valelembrar que estruturas de repetiçãoaninhadas são as maiores responsáveispelo aumento de instruções;

Page 28: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

Complexidade Tempo para executar N = 100, em um Core i7 980-X Extreme Edition

A Complexidade

n2log

nnn 2log

2n3nn2n3

133 ns

2 µs

13 µs

200 µs

20 ms

815.104.552.615.888

331.389.866.725.830.000000.000.000.000.000 anos!

anos!

Page 29: Introdução a Complexidade de Algoritmosdocente.ifsc.edu.br/vilson.junior/ed/07_Complexidade_Algoritmos.pdf · algoritmos distintos, que realizam uma mesma tarefa, pelo tempo necessário

Exercício

• Identifique quais são as complexidadescomputacionais do seu algoritmo deordenação de dados. Lembre, vocêdeverá explicar estas complexidadesaplicadas em seu algoritmo:

– Cenário de pior caso;

– Cenário de caso médio;

– Cenário de melhor caso;