16
Prof. Davi Morais N584

Aula 02 - Pana

Embed Size (px)

DESCRIPTION

Pana

Citation preview

Prof. Davi Morais

N584

Agenda Conceitos

Critérios de escolha do algoritmo

Medidas de complexidade

Análise de complexidade

Conceitos Algoritmo: é, em geral, uma descrição passo a passo

de como um problema é solucionável. A descrição deve ser finita, e os passos devem ser bem definidos, sem ambiguidades, e executáveis computacionalmente.(Terada)

Instância do problema: Um entrada que satisfaz a quaisquer restrições impostas no enunciado do problema, necessária para se calcular a solução

Correto: Para cada instância do problema, o algoritmo para com saída correta.

Conceitos Um problema pode ser resolvido por diversos

algoritmos

Por exemplo...

O que não quer dizer que ele seja aceitável na prática Entrada Algoritmo 01 Algoritmo 02

10 0.00001s 0.001s

20 0.00002s 1s

30 0.00003s 17.9 minutos

40 0.00004s 12.7 dias

50 0.00005s 35.7 anos

Conceitos Escolhemos um algoritmo para resolver algum problema,

considerando alguns critérios: Corretude Simplicidade do código Consumo de memória Tempo de processamento

Através da análise de algoritmo sabemos a medida de desempenho proporcional ao tempo de execução do algoritmo. Por exemplo, medida de desempenho n = 10s, então n2 = 100s

Questão Os computadores estão em constante evolução, estão

cada dia mais rápidos. Ainda assim, é necessário calcular a complexidade?

Questão Computador A: 1 bilhão de instruções por segundo Computador B: 10 milhões de instruções por segundo Algoritmo 1: 2n2

Algoritmo 2: 50nlogn

Computador A com o Algoritmo 1:

2.(106)2

109= 2000𝑠

Computador B com o Algoritmo 2:

50.106𝑙𝑜𝑔106

107= 30𝑠

Medidas de complexidade

Medidas de complexidade

Medidas de Complexidade Calcular a quantidade de operações elementares do algoritmo

Adição Subtração Comparação ...

A complexidade é calculada pelo número de vezes que a operação fundamental é realizada.

A medida de complexidade é o crescimento assintótico dessa

contagem de operações.

A complexidade de um algoritmo é inferida de acordo com o tamanho da instância do problema Ex.: Encontrar o elemento máximo de um vetor.

Análise de Complexidade Pior Caso: caracterizado por entradas que resultam

em maior crescimento do número de operações, conforme aumenta o valor de n;

Melhor Caso: caracterizado por entradas que resultam em menor crescimento do número de operações, conforme aumenta o valor de n;

Caso Médio: que retrata o comportamento médio do algoritmo, quando se consideram todas as entradas possíveis e as respectivas probabilidades de ocorrência

Análise de Complexidade A análise de Algoritmo busca:

Corretude: provar que o algoritmo é correto para qualquer instância

Tempo de execução: tempo necessário para executar um algoritmo de entrada n

Espaço da memória: quanto de espaço na memória é necessário para armazenar as estruturas do algoritmo

Questão Enumere cada item de acordo com a complexidade. De

modo, que a função de maior complexidade receberá o maior número.

a) n - ( ) b) n2 - ( )

c) 2n - ( )

d) n.logn - ( ) e) logn - ( ) f) n! - ( ) g) 1 - ( ) h) nn - ( ) i) loglogn - ( )

Questão Considere dois algoritmos A e B com tempo de

execução n2 e n3, respectivamente. Qual deles é o mais eficiente ?

Questão Considere dois algoritmos A e B com tempos de

execução 100n2 e 5n3, respectivamente, qual é o mais eficiente?

Se n < 20, então B é mais rápido. No entanto, para n grande, então A é mais rápido.

Questão Considere dois algoritmos A e B com complexidades

8n2 e n3, respectivamente, qual é o mais eficiente ? Qual é o maior valor de n, para o qual o algoritmo B é mais eficiente que o algoritmo A?

Os algoritmos têm igual desempenho quando n = 8.

Até n = 7, B é mais eficiente que A.