• Nenhum resultado encontrado

Projeto e Análise de Algoritmos

N/A
N/A
Protected

Academic year: 2019

Share "Projeto e Análise de Algoritmos"

Copied!
35
0
0

Texto

(1)

Universidade Federal Rural de Pernambuco

Projeto e Análise de Algoritmos

Introdução a Análise de Algoritmos

Prof. Tiago Buarque Assunção de Carvalho

Unidade Acadêmica de Garanhuns – UFRPE Bacharelado em Ciências da Computação

(2)

Roteiro

1 Introdução

2 Invariante de laço e Corretude de algoritmos iterativos

3 Análise de eficiência de algoritmos iterativos

4 Corretude do procedimento iterativo MERGE

5 Algoritmos de divisão e conquista

(3)

Análise de Algoritmos

• Para algoritmos recursivos e iterativos

• Eficiência

• Corretude

• Notação Assintótica

(4)

Eficiência

Tempo Algoritmo

c1n2 ordenação por inserção

c2nlgn ordenação por intercalação

• né o tamanho da entrada,lgn=log2n.

• mesmo comc1 <c2estas constantes tem pouca influência no tempo

de execução. • lg 1.0009,9.

• Exemplo,c1 =2,c2=50,n=107:

• Ord. por inserção em um computador rápido (1010instruções por

segundo),2(107)/1010 =20.000segundos (mais de 5,5 horas);

• Ord. por intercalação em um computador lento (107instruções por

segundo, 1.000 vezes mais lento que o primeiro),

(5)

Exercícios

1. Cite aplicações que exijam algoritmos rápidos.

2. Suponha que duas implementações de ordenação por inserção e por

intercalação tem tempo de execução de8n2 e64nlgn,

respectivamente. Se ambas as implementações vão ser executadas

na mesma máquina, diga quais valores denfazem a ordenação por

intercalação mais rápida.

3. Em quais casos você utilizaria ordenação por inserção ou por

intercalação?

4. Qual o menor valor denpara o qual um algoritmo com tempo de

(6)
(7)

Exercícios

5. Suponha que o tempo de execução para uma operação seja10−6

segundos. Para cada tamanho de entradan, calcule o tempo de

execução para cada função de tempo da tabela abaixo:

n lgn √n nlgn n2 n3 2n n!

(8)

Exercícios

6. Suponha que o tempo de execução para uma operação seja10−6

segundos. Calcule o maior valor denpara que o tempo de execução

esteja dentro do limite estabelecido na tabela.

1 segundo 1 minuto 1 hora 1 mês 1 ano 1século

lgn

n

(9)

Invariante de laço e Corretude de algoritmos iterativos

Corretude(ou correção): propriedade de um algoritmo estar correto.

Invariante de laço: propriedade que se mantém do começo ao final

de um laço. Útil para mostrar a corretude de um algoritmo algoritmo iterativo. 3 etapas:

Inicialização: ele é verdadeiro antes da primeira iteração do laço.

Manutenção: se ele é verdadeiro antes de uma iteração do laço, permanecerá verdadeiro antes da próxima iteração.

(10)

Invariante de laço na Ordenação por Inserção

Invariante: os elementos deA[1..j1]são os elementos que

estavam originalmente na posições 1 aj1, mas agora em

sequência ordenada.

(11)

Invariante de laço na Ordenação por Inserção

Manutenção: insereA[j]na posição adequada fazendo com que

A[1..j]fique ordenado; quandojfor incrementado na próxima

iteraçãoA[1..j1]estará ordenado. Obs.: assumindo que o laço

while está correto.

(12)

Exercícios

1. Utilizando o exemplo da figura acima, mostre as etapas de

ordenação por inserção paraA=h31,41,59,26,41,58i.

2. Prove o invariante de laço para owhilena ordenação por inserção.

3. Reescreva o pseudo-código da ordenação por inserção para ordenar

em ordem decrescente.

4. Prove que sua resposta da questão anterior está correta utilizando

(13)

Exercícios

5. Considere o problema de busca:

Entrada:uma sequência de númerosA=ha1,a2, . . . ,anie um valor v. Saída:um índiceital quev=A[i]ou o valor especial NIL, sev

não pertencer aA.

Escreva o pseudocódigo parabusca linear, que faça a varredura da

sequência, procurando porv. Usando um invariante de laço, prove

que seu algoritmo é correto. Certifique-se de que seu invariante de laço satisfaz as três propriedades necessárias.

6. Considere o problema da soma de dois inteiros binários denbits,

armazenados em dois arrays de elementosAeB. A soma dos dois

inteiros deve ser armazenada um array binárioCden+1elementos.

(14)

Análise de eficiência de algoritmos iterativos

Analisar um algoritmo: prever quando recurso ele necessita.

Recursos:tempo, memória, largura de banda, energia elétrica...

• Análise de tempo em função dotamanho da entrada, representado

porn.

• Análise domelhor casoé o tempo requerido para a situação na qual

o algoritmo vai demandar menos recursos.

• Análise dopior casoé o tempo requerido para a situação na qual o

algoritmo vai demandar mais recursos. É o LIMITE SUPERIOR.

• Análise domédio casopode ser quase tão custoso quanto o pior

(15)
(16)

Análise ordenação por inserção

(17)

-Análise ordenação por inserção, MELHOR CASO

Todos os elementos estão ordenados.

Não entra no while (linha 5) poisA[i]chave,tj =1paraj=2,3, . . . ,n.

(18)

Análise ordenação por inserção, PIOR CASO

Todos os elementos estão na ordem inversa.

O while (linha 5) executajvezes (o máximo possível),tj=j.

(19)

Ordem de crescimento

• Taxa de crescimento ou ordem de crescimento.

• Mantém o termo de maior ordem.

• Exemplo: emT(n)=an2+bn+c, mantéman2.

• Descarta as constantes, mantémn2.

• O tempo de execução da ordenação por inserção no pior caso é

Θ(n2),

(20)

Análise ordenação por inserção, CASO MÉDIO

Metade estão na ordem inversa.(Pode-se ter outras interpretações

de caso médio. Pode-se usar casos aleatórios.) • O while (linha 5) executaj/2vezes,tj=j/2.

• T(n)é umafunção quadrática,T(n)=an2+bn+c.

(21)

Exercícios

1. Expresse a funçãon3/1000+100n2100n+3em termos da notação

Θ.

2. Considere a ordenação dennúmeros armazenados no arrayA,

localizando primeiro o menor elemento deAe permutando esse

elemento com o elemento contido emA[1]. Em seguida, determine o

segundo menor elemento deAe permute-o comA[2]. Continue

dessa maneira para os primeirosn1elementos deA. Escreva o

pseudocódigo para esse algoritmo, conhecido comoordenação por

seleção. Qual invariante de laço esse algoritmo mantém? Por que

ele só precisa ser executado para os primeirosn1elementos, e

não para todos os elementos? Forneça os tempos de execução do

(22)

Exercícios

3. Considere novamente a busca linear. Quantos elementos da

sequência de entrada precisam ser verificados em média, considerando que o elemento que está sendo procurado tenha a mesma probabilidade de ser qualquer elemento no array? E no pior caso? Quais os tempo do caso médio e pior caso utilizando a

notaçãoΘ?

4. Como podemos modificar praticamente qualquer algoritmo para ter

(23)

MERGE

intercalação de duas sequências ordenadas

A[p..q]eA[q+1..r]estão ordenados (pq<r), MERGE(A,p,q,r)faz com queA[p..r]fique ordenado.

(24)

-Invariantes do MERGE

• No início de cada iteração do laçofor(linhas 12 a 17), o subarray

A[p..k1]contém oskpmenores elementos deL[1..n1+1]e

R[1..n2+1], em sequência ordenada.

• Além disso,L[i]eR[j]são os menores elementos se seus arranjos

(25)

Inicialização dos invariantes do MERGE

Inicialização 1:k=p,A[p..p1]é vazio.

Invariante 1: No início de cada iteração do laçofor(linhas 12 a 17), o subarrayA[p..k1]contém oskpmenores elementos deL[1..n1+1]

eR[1..n2+1], em sequência ordenada.

Inicialização 2:i=j=1, nada foi copiado paraA.

Invariante 2: Além disso,L[i]eR[j]são os menores elementos se

(26)

Manutenção dos invariantes do MERGE

Manuteção 1: Copia o menor valor entreL[i]eR[j]paraA[k]então

incrementak.

Invariante 1: No início de cada iteração do laçofor(linhas 12 a 17), o subarrayA[p..k1]contém oskpmenores elementos deL[1..n1+1]

eR[1..n2+1], em sequência ordenada.

Manutenção 2: incrementai(seL[i]foi copiado) ouj(seR[j]foi copiado).

Invariante 2: Além disso,L[i]eR[j]são os menores elementos se

(27)

Término dos invariantes do MERGE

Término 1: k=r+1,A[p..r]está ordenado.

Invariante 1: No início de cada iteração do laçofor(linhas 12 a 17), o subarrayA[p..k1]contém oskpmenores elementos deL[1..n1+1]

eR[1..n2+1], em sequência ordenada.

Término 2: todos os outros elementos que não as sentinelas ()

foram copiados paraA.

Invariante 2: Além disso,L[i]eR[j]são os menores elementos se

(28)

Algoritmos de divisão e conquista

• Algoritmosrecursivoscom três etapas:

Divideo problema em determinado número de subproblemas que são instâncias menores do problema original.

Conquistaos subproblemas, resolvendo-os recursivamente. Quando osubproblema é pequeno, resolve-se diretamente.

(29)

Ordenação por intercalação (MERGE-SORT)

Dividea sequência denelementos que deve ser ordenada em duas

subsequências den/2elementos cada uma.

Conquistaordena cada subsequência recursivamente.

Se a subsequência temapenas um elemento(caso base da

recursão) ela já está ordenada.

Combinaintercala as subsequências ordenadas para gerar a

(30)

Análise de algoritmos divisão e conquista

• O tempo de execução de algoritmos divisão e conquista pode ser

descrito por umaequação de recorrênciaT(n):

• Θ(1)é o tempo dos casos pequenos;

• D(n)é o tempo de divisão em subproblemas;

• aT(n/b)é o tempo de conquistar cada subproblema;

(31)

Análise do MERGE-SORT

• Divisão,D(n)= Θ(1) • Conquista=2T(n/2)

(32)
(33)
(34)

a

(35)

Referência

Livro:

T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein.Algoritmos: Teoria e

Prática. Elsevier, 2012.

Referências

Documentos relacionados

dos rins em pacientes idosos, se houver caracterização de insuficiência renal grave, recomenda-se avaliar a relação risco/benefício antes de administrar Sintezys ® (vide item 4.

 Caso tenha que alterar ou cancelar a reserva no dia da vacinação, ou não conseguir chegar ao local de vacinação no horário reservado, contate diretamente com a

 Um método de ordenação é estável se a ordem relativa dos itens com chaves iguais não se altera durante a ordenação..  Alguns dos métodos de ordenação

Slides adaptados dos slides do livro texto (Ziviani) e dos slides de aula dos professores Davi Menotti (DECOM/UFOP) e Antônio Alfredo Ferreira Loureiro (DCC/UFMG).... Ordenação

 Consiste em colocar no terceiro arquivo o menor elemento entre os menores dos dois arquivos iniciais, desconsiderando este mesmo elemento nos passos posteriores.  Este

Slides adaptados dos slides do livro texto (Ziviani) e dos slides de aula dos professores Davi Menotti (DECOM/UFOP) e Antônio Alfredo Ferreira Loureiro (DCC/UFMG)...

Perante todos os dados obtidos neste estudo, conclui-se que é de extrema importância para o controlo dos casos de TB a existência de rastreios nas faixas etárias jovens, sobre-

Dado os algoritmos a seguir, mostre que eles não en- contram a solução ótima do problema, ou seja, en- contre contraexemplos para cada um dos seguinte algoritmos para o problema..