• Nenhum resultado encontrado

Analise de algoritmos recursivos

N/A
N/A
Protected

Academic year: 2021

Share "Analise de algoritmos recursivos"

Copied!
28
0
0

Texto

(1)

E

STRUTURASDE

D

ADOS E

A

LGORITMOS

A

NÁLISEDE

A

LGORITMOS

R

ECURSIVOS

Adalberto Cajueiro

Departamento de Sistemas e Computação Universidade Federal de Campina Grande 1

P

ERGUNTAS PERTINENTES

 Quais são as características de um algoritmo

recursivo?

 Como encontrar o número de chamadas

recursivas?

 Como saber o tamanho da entrada de cada

chamada?

(2)

B

ACKGROUND

M

ATEMÁTICO  Somatórios  Linearidade

     n k k k a a a a 1 2 1 ...

    1 1 lim k n k k n k a a 3

B

ACKGROUND

M

ATEMÁTICO  Progressão aritmética  Progressão geométrica ) ,..., , , (a1 a2 a3 an r n a an  1( 1). ,...) 16 , 13 , 10 , 7 , 4 , 1 ( : Ex 2 ) ( 1 n n a a n S   ) ,..., , , (a1 a2 a3 an Ex:(2,4,8,16,32,64,...) 1 1.   n n a q a

(3)

B

ACKGROUND

M

ATEMÁTICO  Logarítmos

b

a

ab

c c c

(

)

log

log

log

a b

b

a

log a n a b n b .log log 

1

log

a

a

n

n

n

lg

log

2

log

a n b b

n

a

log

log a b b c c a log log log  5

R

ELAÇÕES DE RECORRÊNCIA

 Equacoes ou inequacoes que descrevem uma

funcao em termos de seus valores (recursão) considerando entradas menores (mais simples).

 Exemplo:

(4)

V

ISÃO

G

ERAL

: A

NÁLISE DE

A

LGORITMOS

R

ECURSIVOS 7 int XYZ(int n, …) { … XYZ(…) } T(n)=T(n-..)... Algoritmo Recursivo Relação de Recorrência Método Mestre T(n) = aT(n/b) + f(n) , onde ε>0 c<1 , onde ε>0 , então T = Θ(n2) n2 … Θ(1) n2 n2/2 … n2/4 n2/4 n2/16 n2/4 n2/2... altura=log2(n) Método Iterativo

M

ÉTODO

I

TERATIVO  Intuição MERGE-SORT(A) if n = 1 done. MERGE-SORT(A[1.. ⌈n/2⌉]) MERGE-SORT(A[⌈n/2⌉+1..n]) “Merge” the 2 sorted lists

merge: O(n) merge-sort(n/2) merge-sort(n/2)

(5)

M

ÉTODO

I

TERATIVO  Intuição MERGE-SORT(A) if n = 1 done. MERGE-SORT(A[1.. ⌈n/2⌉]) MERGE-SORT(A[⌈n/2⌉+1..n]) “Merge” the 2 sorted lists

merge: O(n) merge-sort(n/4) merge: O(n/2) merge-sort(n/4) merge-sort(n/4) merge: O(n/2) merge-sort(n/4) 9

M

ÉTODO

I

TERATIVO  Árvore de recorrência

 Visualizacao conveniente da expansao de uma relacao

de recorrencia

 Exemplo

combinar as respostas do processamento recursivo

(6)

M

ÉTODO

I

TERATIVO  Árvore de recorrência

Serie geométrica decrescente

) ( 2 )) 2 / 1 /( 1 ( )) 2 / 1 1 /( 1 ( )) 1 /( 1 ( ) 1 /( 1 2 2 2 2 2 n n n n q n q a Sn           ) 2 / 1 ... 4 / 1 2 / 1 1 ( 2 h n n S      n grande  PG infinita 11

E

NCONTRANDO

R

ELAÇÃO MERGE-SORT(A) if n = 1 done. MERGE-SORT(A[1.. ⌈n/2⌉]) MERGE-SORT(A[⌈n/2⌉+1..n])

“Merge” the 2 sorted lists

Θ(1) n é o tamanho de A T(⌊n/2⌋) T(⌈n/2⌉) Θ(n)

T(n) = T(

n/2

) + T(

n/2

) + Θ(n)

T(n) = 2T(n/2) + Θ(n)

(7)

E

XERCÍCIO

 Encontre a relação de recorrência do algoritmo a

seguir.

13

int fatorial (int n) { if (n == 0) return 1; else return n * fatorial(n-1); }

E

XERCÍCIO

 Encontre a relação de recorrência do algoritmo a

seguir.

int fatorial (int n) { if (n == 0)

return 1; else

(8)

E

XERCÍCIO

 Encontre a relação de recorrência do algoritmo a

seguir. 15 T (n) { if (n == 0) return 1; else return n * T(n-1); }

E

XERCÍCIO

 Encontre a relação de recorrência do algoritmo a

seguir. T (n) { if (n == 0) return 1; T(1) = 1 else return n * T(n-1); }

(9)

E

XERCÍCIO

 Encontre a relação de recorrência do algoritmo a

seguir. 17 T (n) { if (n == 0) return 1; (1) else return n * T(n-1); }

E

XERCÍCIO

 Encontre a relação de recorrência do algoritmo a

seguir.

T (n) =

(1) + T(n-1)

(10)

E

XERCÍCIO

 Encontre a relação de recorrência do algoritmo a

seguir. 19 T (n) = (1) + T(n-1) T (n) = T(n-1)+(1)

M

ÉTODO

I

TERATIVO

 Como resolver a recorrência do merge sort?

 Que tal usar no lugar de

2T(n/2) + (n)?

T(n) = 2T(n/2) + cn

T(n) = (1), se n=1 2T(n/2) + (n), se n>1

(11)

P

ROCEDIMENTO

: M

ÉTODO

I

TERATIVO 1. Desenhe a árvore de recursão com base na

relação de recorrência (T) (EXPANSÃO)

2. Encontre a maior altura (h) até o caso base 3. Some os custos de cada nível

4. Analise o relacionamento entre os custos de

cada nível (RESOLUÇÃO DE TERMOS)

5. Some o custo de todos os níveis com base na

relação encontrada em 4.1.

 PA, PG (q>1), PG (q<1)?

21

M

ÉTODO

I

TERATIVO

(E

XPANDINDO A

Á

RVORE

)

T(n) = 2T(n/2) + cn

T(n/2)

T(n/2)

Visualização: Árvore de Recursão

T(n)

(12)

23

T(n/2)

T(n/2)

T(n) = 2T(n/2) + cn

M

ÉTODO

I

TERATIVO

(E

XPANDINDO A

Á

RVORE

)

T(n)

M

ÉTODO

I

TERATIVO

(E

XPANDINDO A

Á

RVORE

)

T(n/2)

T(n/2)

T(n/2) = 2T(n/4) + cn/2

T(n)

T(n/2) = 2T(n/4) + cn/2

(13)

M

ÉTODO

I

TERATIVO

(E

XPANDINDO A

Á

RVORE

)

25

T(n/4)

T(n/4) T(n/4)

T(n/4)

T(n/2) = 2T(n/4) + cn/2 T(n/2) = 2T(n/4) + cn/2

T(n/2)

T(n/2)

T(n)

T(n) = 2T(n/2) + cn

M

ÉTODO

I

TERATIVO

(E

XPANDINDO A

Á

RVORE

)

T(n/4)

T(n/4) T(n/4)

T(n/4)

T(n/2) = 2T(n/4) + cn/2 T(n/2) = 2T(n/4) + cn/2

T(n/2)

T(n/2)

T(n)

T(n) = 2T(n/2) + cn T(n/4) = 2T(n/8) + cn/4

(14)

M

ÉTODO

I

TERATIVO

(E

XPANDINDO A

Á

RVORE

)

27

T(n/4)

T(n/4) T(n/4)

T(n/4)

T(n/2) = 2T(n/4) + cn/2 T(n/2) = 2T(n/4) + cn/2

T(n/2)

T(n/2)

T(n)

T(n) = 2T(n/2) + cn T(n/4) = 2T(n/8) + cn/4

T(n/8) T(n/8)

...

...

M

ÉTODO

I

TERATIVO

(E

XPANDINDO A

Á

RVORE

)

T(n/4)

T(n/4) T(n/4)

T(n/4)

T(n/2)

T(n/2)

T(n)

T(n/8) T(n/8)

...

h=0 h=1 h=2 h=3

(15)

M

ÉTODO

I

TERATIVO

(E

XPANDINDO A

Á

RVORE

)

29

T(n/4)

T(n/4) T(n/4)

T(n/4)

T(n/2)

T(n/2)

T(n)

T(n/8) T(n/8)

...

h=0 h=1 h=2 h=3 h=...

...

T(n/2

h

)

T(n) = (1), se n=1 2T(n/2) + (n), se n>1

M

ÉTODO

I

TERATIVO

(E

XPANDINDO A

Á

RVORE

)

T(n/4)

T(n/4) T(n/4)

T(n/4)

T(n/2)

T(n/2)

T(n)

h=0 h=1 h=2

(16)

M

ÉTODO

I

TERATIVO

(E

XPANDINDO A

Á

RVORE

)

31

T(n/4)

T(n/4) T(n/4)

T(n/4)

T(n/2)

T(n/2)

T(n)

T(n/8) T(n/8)

...

h=0 h=1 h=2 h=3 h=...

...

T(n/2

h

) = 1

n h n h n h 1 2 log 2      

M

ÉTODO

I

TERATIVO

(R

ESOLVENDO OS TERMOS

)

T(n/4)

T(n/4) T(n/4)

T(n/4)

T(n/2)

T(n/2)

T(

n

)

T(n/8) T(n/8)

...

T(n) = 2T(n/2) + cn

(17)

M

ÉTODO

I

TERATIVO

(R

ESOLVENDO OS TERMOS

)

33

T(n/4)

T(n/4) T(n/4)

T(n/4)

T(n/2)

T(n/2)

cn

T(n/8) T(n/8)

...

...

T(n/2

h

)

T(n) = 2T(n/2) + cn

M

ÉTODO

I

TERATIVO

(R

ESOLVENDO OS TERMOS

)

T(n/4)

T(n/4) T(n/4)

T(n/4)

T(

n/2

)

T(

n/2

)

cn

T(n) = 2T(n/2) + cn T(n/2) = 2T(n/4) + cn/2

(18)

M

ÉTODO

I

TERATIVO

(R

ESOLVENDO OS TERMOS

)

35

T(n/4)

T(n/4) T(n/4)

T(n/4)

cn/2

cn/2

cn

T(n/8) T(n/8)

...

...

T(n/2

h

)

T(n) = 2T(n/2) + cn T(n/2) = 2T(n/4) + cn/2

M

ÉTODO

I

TERATIVO

(R

ESOLVENDO OS TERMOS

)

T(

n/4

)

cn/2

cn/2

cn

T(n/8) T(n/8)

...

T(n) = 2T(n/2) + cn T(n/2) = 2T(n/4) + cn/2 T(n/4) = 2T(n/8) + cn/4

T(

n/4

) T(

n/4

)

T(

n/4

)

(19)

M

ÉTODO

I

TERATIVO

(R

ESOLVENDO OS TERMOS

)

37

cn/4

cn/2

cn/2

cn

T(n/8) T(n/8)

...

...

T(n/2

h

)

T(n) = 2T(n/2) + cn T(n/2) = 2T(n/4) + cn/2 T(n/4) = 2T(n/8) + cn/4

cn/4

cn/4

cn/4

M

ÉTODO

I

TERATIVO

(R

ESOLVENDO OS TERMOS

)

cn/4

cn/2

cn/2

cn

cn/4

cn/4

cn/4

h=0 h=1 h=2

(20)

M

ÉTODO

I

TERATIVO

(R

ESOLVENDO OS TERMOS

)

39

cn/2

1

cn

...

...

h=0 h=1 h=2 h=3 h=log n

cn/2

1

cn/2

2

cn/2

2

cn/2

2

cn/2

2

cn/2

3

cn/2

h

M

ÉTODO

I

TERATIVO

(

SOMANDO OS CUSTOS POR ALTURA

)

cn/2

1

cn

...

h=0 h=1 h=2 h=3

cn/2

1

cn/2

2

cn/2

2

cn/2

2

cn/2

2

cn/2

3

cn

cn

cn

+ + + + +

(21)

M

ÉTODO

I

TERATIVO

(

SOMANDO OS CUSTOS POR ALTURA

)

41

cn/2

1

cn

...

...

h=0 h=1 h=2 h=3 h=log n

cn/2

1

cn/2

2

cn/2

2

cn/2

2

cn/2

2

cn/2

3

cn/2

h

cn

cn

cn

cn

) log ( ) (log .cn n cn n n h   + + + + +

E

XERCÍCIO

1

 Utilize o método iterativo (utilizando a árvore de recursão para visualização) para resolver a recorrência a seguir:

T(n) = 2T(n/2) + n

2

(22)

E

XERCÍCIO

2

 Utilize o método iterativo (utilizando a árvore de recursão para visualização) para resolver a recorrência a seguir:

43

T(n) = 3T(n/2) + n

2

T = O(n

2

)

E

XERCÍCIO

3

 Faça um algoritmo recursivo que realize uma busca

sequencial em um elemento de um vetor. Qual a relação de recorrência?

 Utilize o método iterativo (árvore de recursão) para

resolver a recorrência.

(23)

M

ÉTODO

M

ESTRE

 Provê um livro de receitas para um bom número de

recorrências da forma:

Onde

a≥1

e

b>1

são constantes e f(n) é uma

função assintoticamente positiva.

Os a problemas sao resolvidos

recursivamente em T(n/b) e o tempo de

dividir e combinar os resultados dos

subproblemas é dado por f(n).

45

T(n) = aT(n/b) + f(n)

a=Número de

subproblemas b=Tamanho do subproblema

C

OMPARAÇÃO

B

ÁSICA DO

M

ÉTODO

f(n) < f(n) = Caso 1 Caso 2 Só a parte polinomial

T(n) = aT(n/b) + f(n)

) ( ) (n nlog ab T  ) log ). ( ( ) log ( ) ( log n n f n n n T b b a b    

(24)

T

EOREMA

M

ESTRE

(C

ASO

1)

47

T(n) = aT(n/b) + f(n)

Exemplo

:

8 log2

n

1000

n

2

n

log28

P

ROCEDIMENTO

: M

ÉTODO

M

ESTRE

1.

Identifique

a, b, f(n), log a

2.

Verifique

as condições sobre a≥1 e b>1 e f(n)

3.

Compare

f(n) com para identificar o

caso

4.

Confirme

a condição do caso

5.

Encontre

o Θ

(25)

T

EOREMA

M

ESTRE

(C

ASO

2)

49

T(n) = aT(n/b) + f(n)

Exemplo

:

2 log2

n

10

n

n

log22

T

EOREMA

M

ESTRE

(C

ASO

3)

T(n) = aT(n/b) + f(n)

Exemplo

:

(26)

E

XERCÍCIO

1

 O método mestre pode ser aplicado nas seguintes

recorrências? Justifique.

51

E

XERCÍCIO

1

 O método mestre pode ser aplicado nas seguintes

recorrências? Justifique.

a=2n não é constante

a=0.5<1

(27)

E

XERCÍCIO

2

 Indique o limite assintoticamente restrito da

recorrência T(n) = 2T(n/2) + n utilizando o método mestre

53

E

XERCÍCIO

3

 Uma busca binaria acontece em arrays ordenados.  Se o elemento a ser buscado é o do meio do array entao

a busca termina. Senao

 Se o elemento buscado é menor do que o elemento do meio

entao a busca se dá na primeira metade. Senao a busca se dá na segunda metade.

boolean search(int x, int v[], int l, int r) { int m = (l + r) / 2;

(28)

E

XERCÍCIO

4

 Considerando uma entrada ordenada. Qual dos

algoritmos você escolheria para uma busca:

seqüencial ou binária? Considere os algoritmos implementados anteriormente. 55

R

EFERÊNCIAS  Capítulos 1-4  1a edição  2a edição

Referências

Documentos relacionados

n.º 20.236, para responder como Encarregado (FG-S3), junto à Secretaria Municipal de Comunicação e Relações Sociais.. Registre-se, publique-se e

Ao abrirmos a freqüência do paciente, tenderemos a observar, em sua sintonia: interferências de encarnados e desencarnados; de forças não humanas;

Para tanto, como estratégia de pesquisa se utilizou do estudo de caso sobre o processo de introdução de um novo sistema de informações gerenciais, especificamente na implementação

The objective of the present study is to supply infor- mation on the seasonality, habitat preferences, diurnal activity, attack behavior, duration of blood feeding, host

Se tiver quaisquer efeitos secundários, incluindo possíveis efeitos secundários não indicados neste folheto, fale com o seu médico ou farmacêutico. Também poderá comunicar

3.2.3 Os candidatos que apresentarem todos os requisitos para a inscrição serão selecionados para a próxima etapa do processo seletivo, Dinâmica de Grupo ou Entrevista

alimentares: de crianças menores de seis meses: Aleitamento Materno Exclusivo (AME): nenhum outro alimento é oferecido à criança, além do leite materno; Aleitamento Materno

Então fica claro que em parte, o debate sobre Mudanças climá- ticas é um debate de escala, e com estreita ligação com o desen- volvimento industrial, ora Moçambique entra para