You are on page 1of 6

Agenda

Relao de Recorrncia Relao de Recorrncia Derivando recorrncia Derivando recorrncia Resolvendo recorrncia Resolvendo recorrncia Anlise de algoritmos recursivos Anlise de algoritmos recursivos

Anlise e Tcnicas de Algoritmos


Jorge Figueiredo

Anlise de Algoritmos Recursivos Anlise de Algoritmos Recursivos

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Introduo
A anlise de um algoritmo recursivo requer a resoluo de A anlise de um algoritmo recursivo requer a resoluo de uma recorrncia. uma recorrncia. Uma recorrncia um algoritmo recursivo que calcula o valor Uma recorrncia um algoritmo recursivo que calcula o valor de uma funo em um ponto dado. de uma funo em um ponto dado. Uma recorrncia define T(n) em termos de T(n-1), T(n-2), etc. Uma recorrncia define T(n) em termos de T(n-1), T(n-2), etc. Exemplo: Exemplo: T(1) = 1 T(1) = 1 T(n) = T(n 1) + 3n + 2 ,, para n2 T(n) = T(n 1) + 3n + 2 para n2

Introduo
Exemplo 2: Quantos pedaos com n cortes? Exemplo 2: Quantos pedaos com n cortes?

Cortes: 1 Pedaos: 2

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Introduo
Exemplo 2: Quantos pedaos com n cortes? Exemplo 2: Quantos pedaos com n cortes?

Introduo
Exemplo 2: Quantos pedaos com n cortes? Exemplo 2: Quantos pedaos com n cortes?

Cortes: 1 Pedaos: 2

Cortes: 2 Pedaos: 4

Cortes: 1 Pedaos: 2

Cortes: 2 Pedaos: 4

Cortes: 3 Pedaos: 7

Cortes: 4 Pedaos: 11

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Introduo
possvel observar que o n-simo corte cria n novos pedaos. possvel observar que o n-simo corte cria n novos pedaos. Logo, o nmero total de pedaos obtido com n cortes, Logo, o nmero total de pedaos obtido com n cortes, denotado por P(n), dado pela seguinte relao de denotado por P(n), dado pela seguinte relao de recorrncia: recorrncia: P(1) = 2 P(1) = 2 P(n) = P(n 1) + n, para n2 P(n) = P(n 1) + n, para n2

Derivando Relaes de Recorrncias


Como proceder para derivar uma relao de recorrncia para a Como proceder para derivar uma relao de recorrncia para a anlise do tempo de execuo de um algoritmo: anlise do tempo de execuo de um algoritmo: Determinar qual o tamanho n do problema. Determinar qual o tamanho n do problema. Verificar que valor de n usado como base da recurso. Em Verificar que valor de n usado como base da recurso. Em geral um valor nico (n=1, por exemplo), mas pode ser geral um valor nico (n=1, por exemplo), mas pode ser valores mltiplos. Vamos considerar esse valor como n00. valores mltiplos. Vamos considerar esse valor como n . Determinar T(n00). Pode-se usar uma constante c, mas, em Determinar T(n ). Pode-se usar uma constante c, mas, em muitos, casos um nmero especfico necessrio. muitos, casos um nmero especfico necessrio.

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Derivando Relaes de Recorrncias


T(n) definido como uma soma de vrias ocorrncias de T(m) T(n) definido como uma soma de vrias ocorrncias de T(m) (chamadas recursivas), mais a soma de outras instrues (chamadas recursivas), mais a soma de outras instrues efetuadas. Em geral, as chamadas recursivas esto efetuadas. Em geral, as chamadas recursivas esto relacionadas com a subproblemas do mesmo tamanho f(n), relacionadas com a subproblemas do mesmo tamanho f(n), definindo um termo a.T(f(n)) na relao de recorrncia. definindo um termo a.T(f(n)) na relao de recorrncia. A relao de recorrncia definida por: A relao de recorrncia definida por: T(n) = c, se n = n00 T(n) = c, se n = n T(n) = a.T(f(n)) + g(n), caso contrrio T(n) = a.T(f(n)) + g(n), caso contrrio

Derivando Relaes de Recorrncias


Exemplo: Torre de Hanoi Exemplo: Torre de Hanoi Objetivo: transferir os n discos de A para C Objetivo: transferir os n discos de A para C Regras: Regras: Mover um disco por vez. Mover um disco por vez. Nunca colocar um disco maior em cima de um menor. Nunca colocar um disco maior em cima de um menor. Soluo Recursiva: Soluo Recursiva: Transferir n-1 discos de A para B Transferir n-1 discos de A para B Mover o maior disco de A para C Mover o maior disco de A para C Transferir n-1 discos de B para C Transferir n-1 discos de B para C

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Derivando Relaes de Recorrncias

Derivando Relaes de Recorrncias


MergeSort(A, n) if n 1 return A return merge(MergeSort(A1, n/2), MergeSort(A2, n/2))

Hanoi(A, C, B, n) if n > 1 Hanoi(A, B, C, n-1) Move(A, C) if n > 1 Hanoi(B, C, A, n-1)

Relao de Recorrncia T(1) = 1 T(n) = 2.T(n-1) + 1

Relao de Recorrncia T(1) = c T(n) = 2.T(n/2) + d.n

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Resolvendo Relaes de Recorrncia


Resolver uma relao de recorrncia nem sempre fcil. Resolver uma relao de recorrncia nem sempre fcil. Resolvendo uma relao de recorrncia, determina-se o Resolvendo uma relao de recorrncia, determina-se o tempo de execuo do algoritmo recursivo correspondente. tempo de execuo do algoritmo recursivo correspondente. Relao de recorrncia: T(n) = T(n11) + T(n22) +...+ T(naa) + f(n) Relao de recorrncia: T(n) = T(n ) + T(n ) +...+ T(n ) + f(n) mais fcil quando temos a subproblemas de mesmo mais fcil quando temos a subproblemas de mesmo tamanho que uma frao de n (por exemplo, n/b): tamanho que uma frao de n (por exemplo, n/b): T(n) = a.T(n/b) + f(n) T(n) = a.T(n/b) + f(n) Como resolver: Como resolver: Mtodo do chute Mtodo do chute Mtodo da rvore de recurso Mtodo da rvore de recurso Mtodo do desdobramento Mtodo do desdobramento Mtodo master Mtodo master
Anlise e Tcnicas de Algoritmos 2005.1 Jorge Figueiredo, DSC/UFCG

Mtodo do Chute e Prova por Induo


Seja a seguinte relao de recorrncia: Seja a seguinte relao de recorrncia: T(1) = 1 T(1) = 1 T(n) = T(n 1) + 3n + 2 ,,para n2 T(n) = T(n 1) + 3n + 2 para n2 A relao de recorrncia resolvida em duas partes: A relao de recorrncia resolvida em duas partes: 1. Chute: T(n) = 3n22/2+ 7n/2 4 1. Chute: T(n) = 3n /2 + 7n/2 4 2. Prova: 2. Prova: 1. Caso base para n=1 1. Caso base para n=1 2. H.I.: assumir que vlido para n-1 2. H.I.: assumir que vlido para n-1 3. Provar T(n) 3. Provar T(n) Se a prova for confirmada, T(n) O(n22) Se a prova for confirmada, T(n) O(n )

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Mtodo do Chute e Prova por Induo


Seja a seguinte relao de recorrncia: Seja a seguinte relao de recorrncia: T(1) = 1 T(1) = 1 T(n) = 2.T(n/2) + n ,,para n2 T(n) = 2.T(n/2) + n para n2 A relao de recorrncia resolvida em duas partes: A relao de recorrncia resolvida em duas partes: 1. Chute: T(n) = n + n.logn 1. Chute: T(n) = n + n.logn 2. Prova: 2. Prova: 1. Caso base: 1 + 1.log 1 = 1 1. Caso base: 1 + 1.log 1 = 1 2. H.I.: assumir que vlido para valores at n-1 2. H.I.: assumir que vlido para valores at n-1 3. Provar T(n): 3. Provar T(n): =2.(n/2 + n/2.log n/2) + n =2.(n/2 + n/2.log n/2) + n =n + n.(logn -1) + n =n + n.(logn -1) + n =n + n.logn =n + n.logn Logo, T(n) O(n.logn) Logo, T(n) O(n.logn)
Jorge Figueiredo, DSC/UFCG

Mtodo da rvore de Recurso


Talvez o mtodo mais intuitivo. Talvez o mtodo mais intuitivo. Consiste em desenhar uma rvore cujos ns representam os Consiste em desenhar uma rvore cujos ns representam os tamanhos dos correspondentes problemas. tamanhos dos correspondentes problemas. Cada nvel ii contm todos os subproblemas de profundidade i. Cada nvel contm todos os subproblemas de profundidade i. Dois aspectos importantes: Dois aspectos importantes: A altura da rvore. A altura da rvore. O nmero de passos executados de cada nvel. O nmero de passos executados de cada nvel. A soluo da recorrncia (tempo de execuo do algoritmo) A soluo da recorrncia (tempo de execuo do algoritmo) a soma de todos os passos de todos os nveis. a soma de todos os passos de todos os nveis.

Anlise e Tcnicas de Algoritmos 2005.1

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Mtodo da rvore de Recurso


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

Mtodo da rvore de Recurso

n T(n/2) T(n/2)

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Mtodo da rvore de Recurso

Mtodo da rvore de Recurso

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

n n/2 n/4 n/4

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

T(1)

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Mtodo da rvore de Recurso

Mtodo da rvore de Recurso

n n/2 h = log n n/4 n/4 n/4 n/4 n/2 h = log n n/4 n/4 n/2

n n/2 n/4 n/4

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Mtodo da rvore de Recurso

Mtodo da rvore de Recurso

n n/2 h = log n n/4 n/4 n/4 n/4 n/2

n 2.n/2= n h = log n n/4 n/4 n/2

n n/2 n/4 n/4

n 2.n/2= n 4.n/4= n

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Mtodo da rvore de Recurso

Mtodo da rvore de Recurso

n n/2 h = log n n/4 n/4 n/4 n/4 n/2

n 2.n/2= n 4.n/4= n h = log n n/4 n/4 n/2

n n/2 n/4 n/4

n 2.n/2= n 4.n/4= n

n folhas

n.1= n

n folhas

n.1= n

(log n).n
Jorge Figueiredo, DSC/UFCG Jorge Figueiredo, DSC/UFCG

Anlise e Tcnicas de Algoritmos 2005.1

Anlise e Tcnicas de Algoritmos 2005.1

Mtodo do Desdobramento
Esse mtodo o da rvore de recurso, representado de Esse mtodo o da rvore de recurso, representado de forma algbrica. forma algbrica. Consiste em: Consiste em: Usar (algumas poucas) substituies repetidamente at Usar (algumas poucas) substituies repetidamente at encontrar um padro. encontrar um padro. Escrever uma frmula em termos de n e o nmero de Escrever uma frmula em termos de n e o nmero de substituies i. substituies i. Escolher ii de tal forma que todas as referncias a T() Escolher de tal forma que todas as referncias a T() sejam referncias ao caso base. sejam referncias ao caso base. Resolver a frmula. Resolver a frmula.

Mtodo do Desdobramento Exemplo 1


Soluo para o problema da pizza: Soluo para o problema da pizza: T(1) = 2 T(1) = 2 T(n) = T(n 1) + n ,,para n2 T(n) = T(n 1) + n para n2 Desdobrando a relao de recorrncia: Desdobrando a relao de recorrncia: T(n) = T(n-1) + n T(n) = T(n-1) + n T(n) = T(n-2) + (n-1) + n T(n) = T(n-2) + (n-1) + n T(n) = T(n-3) + (n-2) + (n-1) + n T(n) = T(n-3) + (n-2) + (n-1) + n ... ... T(n) = T(n-i) + (n-i+1) + ... + (n-1) + n T(n) = T(n-i) + (n-i+1) + ... + (n-1) + n Caso base alcanado quando i=n-1 Caso base alcanado quando i=n-1 T(n) = 2 + 2 + 3 + ... + (n 1) + n T(n) = 2 + 2 + 3 + ... + (n 1) + n T(n) = 1 + n.(n-1)/2 T(n) = 1 + n.(n-1)/2 Logo, T(n) = O(n22) Logo, T(n) = O(n )
Jorge Figueiredo, DSC/UFCG

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Anlise e Tcnicas de Algoritmos 2005.1

Mtodo do Desdobramento Exemplo 2


Soluo para o problema da Torre de Hanoi: Soluo para o problema da Torre de Hanoi: T(1) = 1 T(1) = 1 T(n) = 2.T(n 1) + 1 ,,para n2 T(n) = 2.T(n 1) + 1 para n2 Desdobrando a relao de recorrncia: Desdobrando a relao de recorrncia: T(n) = 2.T(n 1) + 1 T(n) = 2.T(n 1) + 1 T(n) = 2.(2.T(n-2) + 1) + 1 = 4.T(n-2) + 2 + 1 T(n) = 2.(2.T(n-2) + 1) + 1 = 4.T(n-2) + 2 + 1 T(n) = 4.(2.T(n-3) + 1) + 2 + 1 = 8.T(n-3) + 4 + 2 + 1 T(n) = 4.(2.T(n-3) + 1) + 2 + 1 = 8.T(n-3) + 4 + 2 + 1 ... ... T(n) = 2i.T(n-i) + 2i-1 + 2i-2 ... + 211+ 1 T(n) = 2i.T(n-i) + 2i-1 + 2i-2 ... + 2 + 1 Caso base alcanado quando i=n-1 Caso base alcanado quando i=n-1 T(n) = 2n-1 + 2n-2 + 2n-3 + ... + 211+ 1 T(n) = 2n-1 + 2n-2 + 2n-3 + ... + 2 + 1 Isso uma soma geomtrica Isso uma soma geomtrica Logo, T(n) = 2nn 1 = O(2nn) Logo, T(n) = 2 1 = O(2 )
Jorge Figueiredo, DSC/UFCG

Mtodo Master
Teorema que resolve quase todas as recorrncias. Teorema que resolve quase todas as recorrncias. T(n) da forma a.T(n/b) + f(n), a,b > 1 T(n) da forma a.T(n/b) + f(n), a,b > 1 Casos: Casos: ab1. Se f(n) O(nlog ab-), para algum > 0, temos que: 1. Se f(n) O(nlog ), para algum > 0, temos que: ab T(n) (nlog ab). T(n) (nlog ). logaab temos que: 2. Se f(n) O(n log b), temos que: 2. Se f(n) O(n ), ab T(n) (nlog ab.log n). T(n) (nlog .log n). ab 3. Se f(n) O(nlog ab++), para algum > 0 e se a.f(n/b)c.f(n) ), para algum > 0 e se a.f(n/b)c.f(n) 3. Se f(n) O(nlog para algum c > 0 e n suficientemente grande, temos que: para algum c > 0 e n suficientemente grande, temos que: T(n) (f(n)). T(n) (f(n)).

Anlise e Tcnicas de Algoritmos 2005.1

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Mtodo Master Exemplo 1


MergeSort: MergeSort: T(n) = 2.T(n/2) + n T(n) = 2.T(n/2) + n a=b=2 a=b=2 f(n) = n f(n) = n logaab = 1. Cai no caso 2. log b = 1. Cai no caso 2. Logo, T(n) = (n.log n) Logo, T(n) = (n.log n)

Mtodo Master Exemplo 1


T(n) = 9.T(n/3) + n T(n) = 9.T(n/3) + n a = 9, b = 3 a = 9, b = 3 f(n) = n f(n) = n logaab = 2. Se = 1, Cai no caso 1. log b = 2. Se = 1, Cai no caso 1. Logo, T(n) = (n22) Logo, T(n) = (n )

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

Anlise e Tcnicas de Algoritmos 2005.1

Jorge Figueiredo, DSC/UFCG

You might also like