Buscar

Unidade 2 - Análise de algoritmos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 1/28
ANÁLISE DEANÁLISE DE
ALGORITMOS ALGORITMOS 
UNIDADE 2 –UNIDADE 2 –
COMPLEXIDADE DECOMPLEXIDADE DE
ALGORITMOS EALGORITMOS E
RECORRÊNCIAS RECORRÊNCIAS 
Autor: Thiago Nascimento Rodrigues Autor: Thiago Nascimento Rodrigues 
Revisor: Bruno Carreira Coutinho Silva Revisor: Bruno Carreira Coutinho Silva 
INICIAR
Introdução
Caro(a) estudante, 
Várias técnicas podem ser empregadas em uma análise de complexidade de algoritmo.
Um objetivo comum entre elas é a descrição de uma métrica, mais precisa possível, que
possibilite uma caracterização formal do desempenho de diferentes estratégias
empregadas na solução de um domínio de problema. A definição do comportamento
assintótico de um algoritmo é a mais explorada para esse fim na ciência da computação. 
Nesta unidade, vamos conhecer uma notação usada para retratar a eficiência de um
algoritmo tendo como base o número de operações executadas por ele e o quanto esse
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 2/28
2.1 Ordem assintótica: notação Theta
Os modelos de análise de eficiência se concentram em avaliar a ordem de crescimento
da contagem do número de operações elementares executadas por um algoritmo.
Conforme indicado por Skienka (2008), para fins de comparação e classificação dessas
ordens de crescimento, cientistas da computação propuseram três notações: O (grande
O ou apenas O), Ω (grande ômega ou apenas ômega) e Θ (grande theta ou apenas
theta). Conforme apresentado na unidade 1, duas funções f e g de limite assintótico
estão relacionadas pelas notações O e Ω #PraCegoVer : ó e ômega , se elas atendem
as seguintes definições: 
Se f(n) = O(gn) #PraCegoVer : éfe de êne é igual a ó de gê êne , então, c · g(n)
#PraCegoVer : cê vezes gê de êne é um limite superior para f(n) #PraCegoVer :
éfe de êne . Isso significa que existem constantes positivas c e n 0 #PraCegoVer :
cê e êne índice zero tal que f(n) ≤ cg(n) #PraCegoVer : éfe de êne é menor ou
igual ao produto de cê gê de êne para qualquer n ≥ n 0 #PraCegoVer : êne maior
ou igual a êne índice zero .
Se f(n) = Ω(gn) #PraCegoVer : éfe de êne é igual a ômega de gê êne , então, c ·
g(n) #PraCegoVer : cê vezes gê de êne é um limite inferior para f(n)
#PraCegoVer : éfe de êne . Isso significa que existem constantes positivas c e n 0
#PraCegoVer : cê e êne índice zero tal que f(n) ≥ cg(n) #PraCegoVer : éfe de
êne é maior ou igual ao produto de cê e gê de êne para qualquer n ≥ n 0
#PraCegoVer : êne maior ou igual a êne índice zero .
Considerando as duas primeiras notações, se for possível mostrar que o tempo de
execução de uma função f(n) #PraCegoVer : éfe de êne é tanto O (g(n)) #PraCegoVer :
ó de gê de êne como Ω( g(n)) #PraCegoVer : ômega de gê de êne , então, é natural
número é influenciado pelo tamanho do problema a ser resolvido. Exploraremos também
uma nova técnica de análise de complexidade fundamentada no conceito de
recursividade. Além disso, teremos a oportunidade de entender como essa técnica pode
ser aplicada para a obtenção da ordem assintótica de algoritmos. 
Bons estudos! 
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 3/28
concluir que #PraCegoVer g(n) : gê de êne seja um delimitador justo para f(n)
#PraCegoVer : éfe de êne . Nesse caso, f(n) #PraCegoVer : éfe de êne cresce na
mesma proporção que g(n) #PraCegoVer : gê de êne e dentro dos limites superiores e
inferiores definidos por fatores constantes. A título de exemplo, essa é a conclusão
extraída do fato de f(n) = pn² + qn + r #PraCegoVer : éfe de êne é igual a pê vezes êne
ao quadrado mais quê vezes êne mais érre ser tanto O (n²) como Ω( n² ) #PraCegoVer
: ó de êne ao quadrado como ômega de êne ao quadrado. 
VOCÊ SABIA?
O limite assintótico superior provido pela notação O pode ou não ser um limite
assintótico justo. O limite 2 n² = O (n²) #PraCegoVer : dois êne ao quadrado é
igual a ó de êne ao quadrado é assintoticamente justo, mas o limite 2 n = (n2)
#PraCegoVer : dois êne é igual a êne ao quadrado não é. Para essa situação,
pode-se usar a notação o (do inglês, little-oh , ou pequeno o , em português) para
denotar um limite superior que não é assintoticamente justo. Formalmente, o(g(n))
#PraCegoVer : é de gê de êne é definido como um conjunto : 
• o(g(n)) = { f(n) : para qualquer constante positiva c > 0, #PraCegoVer : ó de gê
de êne é igual a éfe de êne para qualquer constante positiva de cê maior que
zero existe uma constante n 0 > 0 #PraCegoVer : êne índice zero maior que
zero tal que 0 ≤ f(n) ≤ cg(n) para todo n ≥ n 0}. #PraCegoVer : éfe de êne é
maior ou igual a zero e menor ou igual ao produto de uma cê com gê de êne
para todo êne maior ou igual a êne índice zero . 
Por exemplo, 2 n = o( n ²), mas 2 n ² ≠ o( n ²) #PraCegoVer : dois êne é igual a
pequeno ó de êne ao quadrado , mas dois êne ao quadrado é diferente de pequeno
ó de êne ao quadrado. 
 
Para cenários como o exemplo acima, a notação Theta (Θ) é utilizada para expressar
que uma função f(n) #PraCegoVer : éfe de êne é tanto O(g(n)) #PraCegoVer : ó de gê
de êne quanto Ω ( g(n)) #PraCegoVer : ômega de gê de êne. De modo sucinto, f(n) =
Θ(g(n)) #PraCegoVer : theta de gê de êne e g(n) #PraCegoVer : gê de êne é dita ser
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 4/28
um limite assintótico firme ou justo para f(n) #PraCegoVer : éfe de êne. Considerando a
função f(n) = pn² + qn + r #PraCegoVer : éfe de êne é igual a pê vezes êne ao
quadrado mais quê vezes êne mais érre , pode-se afirmar que f(n) = Θ (n2)
#PraCegoVer : éfe de êne é igual a theta de êne ao quadrado. Mais formalmente: 
se f(n) = Θ(g(n)) #PraCegoVer: éfe de êne é igual a theta de gê de êne , então,
existem constantes positivas 
c , c e n #PraCegoVer: cê índice um, cê índice dois e êne índice zero tais
que c · g(n) ≤ f(n) ≤ c · g(n) #PraCegoVer: o produto de cê índice um por gê
de êne é menor ou igual a éfe de êne , que por sua vez é menor ou igual ao
produto de cê índice dois por gê de êne para todo n ≥ n 0 #PraCegoVer: êne
maior ou igual a êne índice zero , ou seja, g(n) #PraCegoVer: gê de êne é um
limite superior e inferior para f(n) #PraCegoVer: éfe de êne .
Gráfico 1 – Exemplos de gráficos das notações Θ, O e Ω #PraCegoVer: theta, ó e
ômega
Fonte: CORMEN et al., 2009, p. 45. (Adaptado). 
O Gráfico 1 apresenta uma descrição gráfica das notações assintóticas O, Ω e Θ
#PraCegoVer : ó, ômega e theta . Em cada gráfico, o valor de n #PraCegoVer : êne
índice zero apresentado corresponde ao menor valor possível, ou seja, qualquer valor
maior também manteria a relação entre as funções. No gráfico (a), a notação Θ
#PraCegoVer : theta limita a função f(n) #PraCegoVer : éfe de êne dentro de dois
fatores constantes. Por isso, é indicado que f(n) = Θ (g(n)) #PraCegoVer : éfe de êne é
igual a theta de gê de êne se existirem constantes positivas c , c e n #PraCegoVer
1 2 0 
1 2 
0 
1 2 0 
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 5/28
: cê índice um, cê índice dois e êne índice zero tais que, a partir do lado direito de n 
#PraCegoVer : êne índice zero , o valor de f(n) #PraCegoVer : éfe de êne sempre
estará entre c g(n) e c g(n) #PraCegoVer : cê índice um de gê de êne e cê índice
dois de gê de êne (incluindo os próprios limites). A notação O do gráfico (b) estabelece
um limite superior para a função f(n) #PraCegoVer : éfe de êne dentro de um fator
constante. Então, pode-se afirmar que f(n) = O (g(n)) #PraCegoVer : éfe de êne é iguala ó de gê de êne se existirem constantes positivas n0 #PraCegoVer : êne índice zero e
c tais que, para toda região à direita de n #PraCegoVer : êne índice zero , o valor de
f(n) #PraCegoVer : éfe de êne sempre será inferior a cg(n) #PraCegoVer : cê gê de êne
. E o gráfico (c) apresenta um limite inferior para f(n) #PraCegoVer : éfe de êne de
acordo com um fator constante. É possível afirmar que f(n) = Ω (g(n)) #PraCegoVer : éfe
de êne é igual a ômega de gê de êne se existirem constantes positivas n 
#PraCegoVer : êne índice zero e c tais que, para toda região à direita de n 
#PraCegoVer : êne índice zero , o valor de f(n) #PraCegoVer : éfe de êne sempre será
maior que cg(n) #PraCegoVer : cê gê de êne . 
VOCÊ SABIA?
A análise assintótica, em especial a notação Θ #PraCegoVer : theta , é uma
ferramenta fundamental para a escolha de um algoritmo para um dado problema.
No entanto, cabe considerar que essa análise “esconde” fatores assintoticamente
irrelevantes, mas que em alguns casos merecem ser considerados. Por exemplo,
um algoritmo com tempo de execução da ordem de 10¹ºº é Θ(n) #PraCegoVer :
dez elevado a cem é theta de êne , ou seja, é assintoticamente melhor que
outro com tempo 10 nlog(n) #PraCegoVer : dez êne log de êne . Contudo, 10¹ºº
#PraCegoVer : dez elevado a cem é o número estimado por alguns astrônomos
como limite superior para a quantidade de átomos existentes no universo
observável (HELMENSTINE, 2019). 
Muitas propriedades relacionais que podem ser observadas nos números reais podem
ser igualmente aplicadas nas comparações assintóticas. Considerando as funções f(n)
#PraCegoVer : éfe de êne e g(n) #PraCegoVer : gê de êne assintoticamente positivas,
as seguintes propriedades de transitividade, reflexividade e simetria são válidas.
0
1 2 
0 
0
0
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 6/28
Juntamente com essas, outra relações complementares também são válidas com a
notação Θ #PraCegoVer : theta conforme listado a seguir: 
f(n) = Θ(g(n)) e g(n) = Θ(h(n)) → f(n) = Θ(h(n)) ( Transitividade ) #PraCegoVer :
éfe de êne é igual a theta de gê de êne e gê de êne é igual a theta de agá de
êne resultando em éfe de êne igual a theta de agá de êne
f(n) = Θ(f(n)) (Reflexividade) #PraCegoVer: éfe de êne é igual a theta de éfe de
êne
f(n) = Θ(g(n)) ↔ g(n) = Θ(f(n)) (Simetria) #PraCegoVer: éfe de êne é igual theta
de gê de êne que é que corresponde a gê de êne igual a theta de éfe de êne
Θ(f(n)) + Θ(g(n)) = Θ(max(f(n), g(n))) #PraCegoVer: theta de éfe de êne mais
tenta de gê de êne igual a theta máximo de éfe de êne, gê de êne
Θ(c · f(n)) = Θ(f(n)) #PraCegoVer: theta de cê vezes éfe de êne é igual a theta de
éfe de êne
Θ(f(n)) · Θ(g(n)) = Θ(f(n) · g(n)) #PraCegoVer: theta de éfe de êne vezes theta de
gê de êne é igual a theta de éfe de êne vezes gê de êne
Para exemplificar o uso da notação Theta, considere a afirmação de que 4 n + 1 = Θ(n)
#PraCegoVer: quatro êne mais um é igual a theta de êne. Por definição, para validar
essa igualdade é necessário demonstrar que existem duas constantes positivas c e c 
#PraCegoVer: cê índice um e cê índice dois e um valor inicial positivo n 
#PraCegoVer : êne índice zero de modo que para todos os valores n ≥ n0 #PraCegoVer
: êne maior ou igual a êne de zero , é verdadeira a desigualdade c n ≤ 4 n + 1 ≤ c n
#PraCegoVer : o produto de cê índice um por êne é menor ou igual a quatro êne
mais um, que por sua vez é menor ou igual ao produto de cê índice dois por êne .
Para isso, o primeiro passo é escolher valores para as constantes c e c #PraCegoVer
: cê índice um e cê índice dois . Nesse caso, vamos considerar c = 4 e c = 5
#PraCegoVer : o produto de cê índice um por êne é igual a quatro e o produto de cê
índice dois por êne é igual a cinco . Observe os resultados dessas desigualdades para
alguns valores iniciais de n , conforme apresentado a seguir: 
n = 1: 4n = 4 < 5 = 4n + 1 = 5n = 5 #PraCegoVer: n é igual a um, sendo que
quatro n é igual a quatro menor que cinco igual a quatro n mais um igual a
cinco n igual a cinco.
1 2
0
1 2 
1 2 
1 2 
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 7/28
n = 2: 4n = 8 < 9 = 4n + 1 < 5n = 10 #PraCegoVer: n é igual a dois, sendo que
quatro n é igual a doze menor que treze igual a quatro n mais um menor que
cinco n igual a quinze.
n = 3: 4n = 12 < 13 = 4n + 1 < 5n = 15 #PraCegoVer: n é igual a três, sendo que
quatro n é igual a doze menor que treze igual a quaro n mais um menor cinco
n igual a quinze.
n = 4: 4n = 16 < 17 = 4n + 1 < 5n = 20 #PraCegoVer: n é igual a quatro, sendo
que quatro n é igual a dezesseis menor que 17 igual a quatro n mais um menor
que cinco n igual a vinte.
n = 5: 4n = 20 < 21 = 4n + 1 < 5n = 25 #PraCegoVer: n é igual a cinco, sendo que
quatro n é igual a vinte menor que vinte e um igual a quatro n mais um menor
que cinco n igual a vinte e cinco.
VAMOS PRATICAR? 
Para consolidar o entendimento da notação theta (Θ), vamos avaliar se a
relação f(n) = 2 = Θ(2 ) #PraCegoVer: éfe de êne é igual a dois
elevado a êne mais um , que por sua vez é igual a theta de dois elevado a
êne é verdadeira. Boa parte das relações envolvendo a notação Theta podem
ser verificadas fazendo uso de sua definição. Nesse caso, vamos conferir se
f(n) = O(2 ) e f(n) = Ω(2 ) #PraCegoVer: éfe de êne é igual a ó de dois
elevado a êne e éfe de êne é igual a ômega de dois elevado a êne . 
f(n) = 2 = Θ(2 ) #PraCegoVer : éfe de êne é igual a dois elevado a
êne mais um, que por sua vez é igual a theta de dois elevado a êne é
verdadeira. Boa parte das relações envolvendo a notação Theta podem
ser verificadas fazendo uso de sua definição. Nesse caso, vamos conferir
se f(n) = O(2 ) e f(n) = Ω(2 ) #PraCegoVer : éfe de êne é igual a ó de
dois elevado a êne e éfe de êne é igual a ômega de dois elevado a
êne .
n + 1 n 
n n 
n+1 n 
n n 
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 8/28
f(n) = O(2 ) #PraCegoVer : éfe de êne é igual a ó de dois elevado a
êne ? Essa igualdade é verdadeira se existir uma constante c tal que,
para todo n suficientemente grande, f(n) ≤ cg(n) #PraCegoVer : éfe de
êne é menor ou igual a cê gê de êne . Observando que 2 = 2 · 2 
#PraCegoVer : dois elevado a êne mais um é igual ao produto de dois
vezes dois elevado a êne , temos que 2 · 2 ≤ c · 2 #PraCegoVer : o
produto de dois vezes dois elevado a êne é menor ou igual ao
produto de uma constante positiva cê com dois elevado a êne para
qualquer c ≥ 2 #PraCegoVer : cê maior ou igual a dois.
f(n) = Ω(2 ) #PraCegoVer : éfe de êne é igual a ômega de dois
elevado a êne ? Essa igualdade é verdadeira se existir uma constante c >
0 #PraCegoVer : cê é maior que zero tal que, para n suficientemente
grande temos f(n) ≥ cg(n) #PraCegoVer : éfe de êne é maior ou igual ao
produto de uma constante positiva cê com gê de êne . Essa
desigualdade pode ser satisfeita para qualquer 0 < c ≤ 2 #PraCegoVer :
cê é maior que zero e menor ou igual a dois . Logo, considerando as
duas notações O e Ω #PraCegoVer : ó e ômega juntas, temos que 2 =
Θ(2 ) #PraCegoVer : dois elevado a êne mais um é igual a theta de
dois elevado a êne .
Gráfico 2 – Gráfico das funções 5n, 4n + 1 e 4n 
 #PraCegoVer : cinco êne, quatro êne mais um e quatro êne
n 
n +1 n
n n 
n 
n+1 
n 
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 9/28
Fonte: Elaborado pelo autor, 2020. 
Importante observar que para todos os valores de n ≥ 1 #PraCegoVer : êne é maior ou
igual a um expressos na tabela, a função 4n + 1 #PraCegoVer : quatro êne mais um é
sempre maior que 4n #PraCegoVer : quatro êne e menor ou igual a 5n #PraCegoVer:
cinco êne . Quando o gráfico de ambas as funções é plotado, é possível ver mais
claramente como a função 4n + 1 #PraCegoVer : quatro êne mais um é limitada
superiormente pela função 5 n #PraCegoVer : cinco êne e, inferiormente, pela função
4n #PraCegoVer : quatro êne , conforme apresentado no Gráfico 2. Isso significa que a
função 4n + 1 #PraCegoVer : quatro êne mais um nunca crescerá abaixo de 4 n
#PraCegoVer : quatro êne e não crescerá mais do que 5n #PraCegoVer : cinco êne .
Por esta razão dizemos que Θ (n) #PraCegoVer : theta de êne representa um limite
assintótico razoável para a função 4n + 1 #PraCegoVer : quatro êne mais um , já que
ela é limitada superiormente e inferiormente por duas outras funções da mesma classe
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 10/28
assintótica, isso é, a classe linear . Desse modo, é possível afirmar que existem duas
constantes positivas c = 4 e c = 5 e uma n = 1 #PraCegoVer : cê índice um é igual
a quatro e cê índice dois é igual a cinco e uma êne índice zero é igual a um , de
modo que c n ≤ 4n + 1 ≤ c n #PraCegoVer : o produto de cê índice um por êne é
menor ou igual a quatro êne mais um, que por sua vez é menor ou igual ao produto
de cê índice dois por êne para todos os valores de n maiores ou iguais a n 
#PraCegoVer : êne índice zero . Em outras palavras, 4n + 1 = Θ(n) #PraCegoVer :
quatro êne mais um é igual a theta de êne . 
Teste seus conhecimentos
Atividade não pontuada.
2.2 Análise de recorrências
O conceito de recorrência ou recursividade é fundamentado na definição de um objeto ou
de um processo a partir de si próprio, ou seja, a definição recursiva de alguma coisa é
feita em termos da própria coisa. Na matemática, vários objetos são definidos por meio
da apresentação do processo que os produz. Um exemplo tradicional de recursão
envolvendo figuras geométricas são os fractais. A Figura 1 apresenta um exemplo de
fractal nomeado de tetra-círculo que é formado por circunferências “quatro pontos
equidistantes que a divide em quatro arcos congruentes, os quais são centros das novas
circunferências” (MELO; LEIVAS, 2015). 
Figura 1 – Representação dos três primeiros níveis de recorrência para a construção do fractal tetra-círculo. 
Fonte: MELO; LEIVAS, 2015, p. 3. (Adaptada). 
1 2 0 
1 2 
0
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 11/28
Outro exemplo amplamente utilizado de definição de objeto ou processo que é construído
a partir de si próprio é a função fatorial, que desempenha um papel importante na
matemática e na estatística (TENEMBAUN; LANGSAM; AUGENSTEIN, 1998). Dado um
número inteiro positivo n , o fatorial de n (representado como n! ) é definido como o
produto de todos os inteiros entre n e 1. Por exemplo, o fatorial de 5 corresponde a 5 ∙ 4
∙3 ∙ 2 ∙1 = 120 (o fatorial de 0 é definido como 1) #PraCegoVer : o fatorial de cinco é
igual a cinco vezes quatro vezes três vezes dois vezes um que é igual a cento e
vinte . Logo, a função fatorial pode ser escrita como o seguinte sistema de equações,
onde os três pontos representam uma abreviatura para o produto de todos os números
compreendidos entre n – 3 e 2 #PraCegoVer : êne menos três e dois : 
Analisando mais detalhadamente essa função, é possível observar que o fatorial de um
número n pode ser escrito como n! = n * (n – 1)! #PraCegoVer : êne fatorial é igual a
êne vezes o fatorial de êne menos um . Em outras palavras, o fatorial de um número n
corresponde ao produto de todos os inteiros a partir de n até 1. Logo, são verdadeiras as
seguintes igualdades: 
E assim por diante. Fazendo uso de uma notação matemática, a função fatorial de um
número pode ser definida em termos de um caso mais simples de si mesma, o que é
chamado de definição recursiva . O seguinte sistema de equações descreve a definição
recursiva da função fatorial. 
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 12/28
VOCÊ SABIA?
Um clássico exemplo de aplicação do conceito de recursão pode ser
encontrado no nome de um tradicional sistema operacional de software
livre conhecido como GNU. O próprio site do projeto explica que o
nome GNU é um acrônimo recursivo para GNU’s Not Unix! , cuja
tradução em português seria GNU não é Unix! (GNU, 2020).
O exemplo a seguir descreve como a definição recursiva da função fatorial pode ser
usada para avaliar 5! #PraCegoVer : cinco fatorial . A definição indica que 5!
#PraCegoVer : cinco fatorial corresponde a 5 · 4! #PraCegoVer : cinco vezes quatro
fatorial . Logo, antes de se proceder com a avaliação de 5! #PraCegoVer : cinco
fatorial , é preciso calcular o valor de 4! #PraCegoVer : quatro fatorial . Aplicando a
definição da função fatorial mais uma vez, obtém-se que 4! = 4 · 3! #PraCegoVer :
quatro fatorial é igual a quatro vezes três fatorial êne . Então, é preciso avaliar 3!
#PraCegoVer : três fatorial antes de avançar com o cálculo de 4! #PraCegoVer :
quatro fatorial . O processo deve ser repetido até que a função alcance o caso base 0!
#PraCegoVer : zero fatorial . Nesse ponto, um valor definitivo é obtido, ou seja, 1 (0! =
1) #PraCegoVer : um de zero fatorial igual a um e, na sequência, todas as demais
avaliações anteriores que ficaram pendentes (1!, 2!, 3!, 4! e 5!) #PraCegoVer : um
fatorial, dois fatorial, três fatorial e cinco fatorial são calculadas. O valor final
corresponde ao resultado da avaliação de 5! #PraCegoVer : cinco fatorial. 
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 13/28
No âmbito computacional, muitos algoritmos apresentam uma definição recursiva em sua
estrutura: para resolver um dado problema, eles chamam a si mesmos recursivamente
uma ou mais vezes a fim de lidar com subproblemas de menor complexidade. Esses
algoritmos seguem uma estratégia tipicamente conhecida como de divisão-e-conquista
: eles quebram o problema a ser resolvido em vários subproblemas similares ao original,
mas de tamanho menor, resolvem os subproblemas recursivamente e, por fim, combinam
as soluções de modo a criar a solução para o problema original. Portanto o paradigma de
divisão-e-conquista envolve a execução de três passos em cada nível de recursão
(DASGUPTA; PAPADMITROU; VAZIRANI, 2010): 
Dividir o problema em subproblemas que correspondam a instâncias menores
do mesmo problema;
Conquistar os subproblemas por resolvê-los recursivamente. Se o tamanho
dos subproblemas for suficientemente pequeno, basta apresentar a solução
de maneira direta;
Combinar as soluções dos subproblemas em uma solução para o problema
original.
Para uma recursão funcionar, dois elementos precisam existir, conforme descrito nas
abas a seguir. 
Elementos de uma recursão
» Clique nas abas para saber mais sobre o assunto
 Caso base Chamada recursiva
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 14/28
O Diagrama 1 apresenta uma visão esquemática da estratégia de divisão-e-conquista.
Nesse caso, o tamanho do problema original é reduzido pela mesma constante em cada
iteração do algoritmo. Embora qualquer valor de constante possa ser utilizado, o valor
tipicamente empregado é igual a um. Além da função fatorial, outro exemplo concreto de
aplicação dessa estratégia é na solução de um problema de exponenciação do tipo a 
#PraCegoVer : á elevado a êne , onde a ≠ 0 #PraCegoVer : á é diferente de zero e n é
um número inteiro não negativo. A relação entre a solução de uma instância de tamanho
n e uma instância de tamanho n – 1 #PraCegoVer : êne menos um pode ser obtida pela
fórmula a = a *a #PraCegoVer : á elevado a êne é igual ao produto de á elevado
a êne menos um com á . Então, a função f(n) = a #PraCegoVer : éfe de êne é igual a
á elevado a êne pode ser computada por meio de sua definição recursiva: 
Diagrama 1 – Técnica de dividir e conquistar
Fonte: LEVITIN, 2012, p. 132. (Adaptado). 
n
n n-1 
n 
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 15/28
A seguir, o pseudocódigo apresenta como o cálculo de uma função exponencial pode ser
implementado por meio de um algoritmo recursivo. O subproblema, ou chamada
recursiva, está relacionado ao cálculo de a (linha 4) #PraCegoVer : á elevado a êne
menos um (linha quatro) . O caso base corresponde à solução direta da menor
instância do problema (linha 2). 
Algoritmo exponencial
» Clique nas abas para saber mais sobre o assunto
Conforme já descrito, uma recorrência corresponde a uma equação (ou inequação) que
descreve uma função em termos de seu próprio valor aplicado a entradas de menor
tamanho. Recorrências são particularmente utilizadas como ferramentas básicas para a
análise de algoritmos recursivos. Em função disso, elas precisam ser resolvidas a fim de
possibilitarem que o comportamento assintótico de algoritmos dessa classe seja
avaliado. Três principais métodos para a solução de recorrências são (CORMEN et al.,
2009): 
Método da substituição;
Árvores de recursão;
Teorema mestre.
Iterações de uma recursão do tipo T(n) = n + T(n/3) 
 #PraCegoVer : tê de êne é igual a êne mais tê de êne por três
» Clique nas abas para saber mais sobre o assunto
n – 1 
 Entrada Saída
 Iteração 1 – T(n) Iteração 2 – T(n/3) Iteração 3 – T(n/3/3)
Iteração n – T(n/3/3 … /3 )
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 16/28
O método de substituição é um modo objetivo de provar o limite assintótico de uma
recorrência por indução. No método de substituição, em lugar de se tentar encontrar uma
fórmula fechada como solução exata para a recorrência, o objetivo é o de apenas tentar
encontrar uma fórmula fechada que delimite a recorrência. Essa abordagem é, em geral,
mais simples, uma vez que faz uso de constantes durante a resolução da recorrência, o
que, por sua vez, oferece uma margem mais ampla para manipulação (CORMEN et al.,
2009). De modo sucinto, o método da substituição compreende dois passos: 
Sugerir uma fórmula para a solução;
Usar indução matemática para encontrar as constantes e demonstrar que a solução
funciona.
No primeiro passo do método, a solução proposta deve ser substituída pela função ao
aplicar a hipótese indutiva a valores menores; daí o nome método de substituição .
Embora o método seja considerado eficaz, ele depende da sugestão de uma fórmula
para a recorrência. De posse da proposta de solução, o uso do método de substituição
permite que sejam estabelecidos limites superiores ou inferiores em uma recorrência.
Como primeiro exemplo, o método será utilizado para se determinar um limite superior
para a recorrência: 
Classificação das recursões
» Clique nas abas para saber mais sobre o assunto
Cada termo depende exclusivamente dos anteriores. Exemplo: F(n + 2)
= 2F(n + 1) + F(n) #PraCegoVer : éfe de êne mais dois é igual a dois
éfe de êne mais um somado a éfe de êne.
NÃO HOMOGÊNEAS
Além de depender dos termos anteriores, cada elemento também está
em função de um termo independente. Exemplo: F(n) = F(n – 1) + 1
#PraCegoVer : éfe de êne é igual a éfe de êne menos um somado a
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 17/28
Uma proposta inicial de solução a ser testada é T(n) = O(n log n) #PraCegoVer : tê de
êne é igual a ó de êne com logaritmo na base dois com êne . O método da
substituição exige que a desigualdade T(n) ≤ cnlog (n) #PraCegoVer : tê de êne menor
ou igual a cê êne logaritmo na base dois de êne seja provada para uma escolha
apropriada de valor da constante c > 0 #PraCegoVer : cê maior que zero . A aplicação
do método poderia começar assumindo que esse limite é válido para todos os valores
positivos m < n #PraCegoVer : ême menor que êne , em particular para m = n/2
#PraCegoVer : ême é igual a êne sobre dois , o que geraria a seguinte desigualdade
T(n/2) ≤ c(n/2)log (n/2) #PraCegoVer : tê de êne sobre dois é igual a cê vezes êne
sobre dois e isso vezes o logaritmo de êne sobre dois na base dois . O próximo
passo é substituir essa última desigualdade na recorrência a ser resolvida conforme
desenvolvido a seguir. Importante observar que a simplificação do passo (4) para o passo
(5) é verdadeira, assumindo-se c ≥ 1 #PraCegoVer : cê maior ou igual a um . 
Apesar da primeira parte da indução matemática ter sido mostrada, ainda é preciso
provar o caso base da indução, ou seja, é preciso demonstrar que T(1) = 1 #PraCegoVer
: tê de um é igual a um . Fazendo a substituição na solução proposta, verifica-se que o
caso base não é válido: T(1) = c * 1 * log (1) = 0 ≠ 1 #PraCegoVer : tê de um é igual
ao produto de cê com um e com o logaritmo de um na base dois, e isso é igual a
zero, que por sua vez é diferente de um (pois, log (1) = 0) #PraCegoVer : logaritmo
de um na base dois é igual a zero . Contudo, como o objetivo é definir o
comportamento assintótico da recorrência, esse tipo de análise exige apenas que T(n) ≤
cnlog (n) #PraCegoVer : tê de êne é menor ou igual ao produto de cê com êne e
com o logaritmo de êne na base dois para algum c escolhido adequadamente. Logo,
2 
2 
2 
2 
2 
2 
um.
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 18/28
tomando c = 2 #PraCegoVer : cê é igual a dois e aplicando na solução proposta se
obtém T(2) ≤ c * 2 * log (2) #PraCegoVer : tê de dois é menor ou igual ao produto de
cê com dois e com o logaritmo de dois na base dois , o que prova o caso base da
indução e válida a solução proposta para a recorrência. 
Somatórios úteis em recorrências
» Clique nas abas para saber mais sobre o assunto
Para algumas funções de recorrência de menor complexidade, o método de substituição
pode ser eficaz ao ser aplicado para a definição de uma solução exata. Ainda assim, o
método permanece dependente da proposição de uma solução adequada, cuja validação
também precisa ser feita via indução matemática. Um exemplo de recorrências deste tipo
é a função F(n) = F(n – 1) + 3n + 2 #PraCegoVer : éfe de êne é igual a éfe de êne
menos um somado a três êne mais dois com caso base F(1) = 1 #PraCegoVer : éfe de
um é igual a um . Uma solução a ser testada para essa recorrência é dada por F(n) = 3n
/2 + 7n/2 – 4 #PraCegoVer : éfe de êne é igual a três vezes êne elevado a dois
sobre dois e isso somado a sete êne sobre dois e subtraído de quatro . A avaliação
do caso base é direta, ou seja, F(1) = 3/2 + 7/2 – 4 = 1 #PraCegoVer : éfe de um é igual
a três sobre dois mais sete sobre dois menos quatro é igual a um . Para o passo de
indução, a substituição precisa ser feita na recorrência original como segue: 
2 
2 
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 19/28
Em alguns casos, uma manipulação algébrica de substituição de variáveis pode tornar
uma recorrência desconhecida em outra cuja solução seja menos complexa. Um
exemplo de aplicação desta estratégia pode ser observado com a função F(n) = 2F(n/2) +
7n + 2 #PraCegoVer : éfe de êne é igual a dois éfe de êne sobre dois e isso somado
a sete êne mais dois . Importante notar que para essa recorrência os valores de êne
que fazem sentido são elementos do conjunto {2 , 2 , 2 , …} #PraCegoVer : dois
elevado a um, dois elevado a dois,dois elevado a três etc. Um modo útil para
começar a resolver a recorrência é calculando o valor de F(n) #PraCegoVer : éfe de êne
para valores pequenos de n , do seguinte modo: 
Para encontrar uma fórmula fechada, uma técnica possível de ser aplicada é desenvolver
ou “desenrolar” a recorrência e escrever 2 #PraCegoVer : dois elevado a cá no lugar
de n (substituição de variável): 
1 2 3 
k 
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 20/28
Classificação das recursões
» Clique nas abas para saber mais sobre o assunto
Como k = log (n) #PraCegoVer : cá é igual a logaritmo de êne na base dois , a
fórmula fechada pode ser reescrita como F(n) = 7n log (n) + 3n – 2 #PraCegoVer : éfe
de êne é igual a sete êne vezes o logaritmo de êne na base dois mais três êne
menos dois . Para fins de verificação, o mecanismo de indução matemática pode ser
utilizado. De fato, tomando n = 1 #PraCegoVer : êne é igual a um como case base
temos: 
Para o passo de indução, temos que: 
Portanto, a função é uma solução fechada para a recorrência. 
 Substituição para trás Substituição para frente
2 
2 
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 21/28
VAMOS PRATICAR? 
Para praticar a análise de recorrências e a obtenção de expressões fechadas
para elas, vamos tomar a seguinte função: F(n) = F(n/2) + 3 #PraCegoVer: éfe
de êne é igual a éfe de êne sobre dois somado a três . Tente obter uma
fórmula fechada para essa recorrência considerando os seguintes passos:
Defina valores iniciais de F(n) #PraCegoVer: éfe de êne levando em conta que
os valores de n pertencem ao conjunto {2 , 2 , 2 , 2 , …} #PraCegoVer:
dois elevado a um, dois elevado a dois, dois elevado a três, dois elevado
a quatro etc. ;
Faça a substituição da variável n por 2 #PraCegoVer: êne por dois elevado
a cá ;
Aplique a técnica de expansão da recorrência (desenrole a recorrência);
Retorne a recorrência para a variável n fazendo uma nova substituição, k = log
(n) #PraCegoVer: cá igual a logaritmo de êne na base dois , ao término da
expansão.
1 2 3 4 
k 
2 
2.3 Árvores de recursão
Embora o método da substituição seja uma técnica muito objetiva de provar se uma
solução proposta para uma recorrência está correta ou não, esse método apresenta uma
grande limitação: a sua dependência por uma boa sugestão ou um bom “chute” de
solução. Uma classe comum de recorrências é aquela que envolve a geração de
subproblemas como reduções a um fator do problema original – essas costumam ser
recorrências complexas de se propor uma solução. Por exemplo, não é trivial de se
“chutar” que a solução de uma recorrência T(n) #PraCegoVer : tê de êne que envolva
um termo T(n/4) #PraCegoVer : tê de êne sobre quatro somado a Θ( n 2)
#PraCegoVer : theta de êne ao quadrado é limitada superiormente por n . Esse é o
caso de várias outras recorrências. 
2 
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 22/28
Diagrama 2 – Ordenação recursiva de um vetor de inteiros
Fonte: LEVITIN, 2012, p. 173. (Adaptado).
Uma estratégia para se encontrar boas possíveis soluções para recorrências é a
construção de árvores de recorrências. A construção de uma árvore começa por se
colocar o termo não recursivo como nó raiz da árvore. Na sequência, o termo recursivo é
representado por meio de nós-filhos no próximo nível da árvore. Um modo prático de
visualizar o uso dessa técnica é por meio de um exemplo computacional conhecido. Esse
é o caso do problema de se ordenar um vetor de números. Uma estratégia muito
eficiente utilizada para esse caso é a dividir-e-conquistar. O vetor é dividido em duas
metades sucessivamente, até que a comparação aconteça apenas entre dois números.
Na etapa de conquista, todos os subvetores ordenados são combinados de forma a gerar
o vetor original ordenado. O Diagrama 3 ilustra como esse processo recursivo de
ordenação é feito sobre um vetor de inteiros. Como a cada iteração o vetor é dividido em
duas metades, o termo recursivo pode ser dado por 2T(n/2) #PraCegoVer : dois tê de
êne sobre dois . Logo, a recorrência será expressa pela função T(n) = 2T(n/2) + O(n)
#PraCegoVer : tê de êne é igual a dois tê de êne sobre dois somado a ó de êne . 
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 23/28
Diagrama 3 – Árvore de recursão para T(n) = 2T(n/2) + n 
#PraCegoVer : tê de êne igual a dois tê de êne sobre dois mais êne
Fonte: CORMEN, 2009, p. 89. (Adaptado).
Para esse problema de ordenação, o termo não recursivo n é representado na raiz da
árvore. Como a recorrência T(n/2) #PraCegoVer : tê de êne sobre dois aparece
multiplicada por 2 na função, então dois nós-filhos T(n/2) #PraCegoVer : tê de êne
sobre dois são representados no primeiro nível da árvore. O Diagrama 3 (b) apresenta a
montagem inicial da árvore. Na sequência, o Diagrama 3 (c) mostra como cada termo
T(n/2) #PraCegoVer : tê de êne sobre dois é expandido, representando mais uma
iteração recursiva da função. Nesse caso, mais um nível é criado na árvore. E assim,
esse processo de expansão ou chamadas recursivas da função pode ser representado
quantas vezes for necessário para se entender o comportamento da recorrência. 
Com essa representação do problema de ordenação do vetor, é possível ver que cada
expansão da recorrência acrescenta n termos ao resultado final. Consequentemente,
para resolver a recorrência, é preciso achar a altura da árvore. O Diagrama 3 (d) oferece
uma visão gráfica desse processo e mostra que a altura é dada por log n #PraCegoVer
: logaritmo de êne na base dois . Logo, a soma de todos os termos da árvore resulta
em nlog (n) #PraCegoVer : êne logaritmo de êne na base dois que é uma solução
fechada para a recorrência, ou seja, T(n) = O(nlog n) #PraCegoVer : tê é igual a ó de
2 
2 
2 
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 24/28
Síntese
êne logaritmo de êne na base dois . 
Embora uma solução fechada para recorrências possa ser obtida a partir de árvores de
recursão, a solução constitui, na realidade, apenas uma possibilidade ou um “bom chute”
de resolução da recorrência. Isso quer dizer que a solução gerada a partir dessa técnica
precisa ser validada. Um modo de realizar essa verificação é por meio do método de
substituição apresentado previamente. Logo, no caso do problema de ordenação
recursiva de um vetor de inteiros, o caso base a ser verificado é T(1) = 0 #PraCegoVer :
tê de um é igual a zero , o que é confirmado de forma direta – T(1) = 1 • log 1 = 1 • 0 =
0 #PraCegoVer : tê de um é igual ao produto de um com o logaritmo de um na base
dois, que por sua vez é igual ao produto de um com zero que é igual a zero . Já a
hipótese de indução é: 
Fazendo a substituição na função de recorrência, temos: 
Portanto, a solução encontrada pela árvore de recorrência é válida e satisfaz a função.
Teste seus conhecimentos
Atividade não pontuada.
2 
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 25/28
Nesta unidade, aprofundamos o estudo da complexidade de algoritmos por conhecer
mais uma notação para a descrição do comportamento assintótico de funções. A notação
Theta é amplamente utilizada nesse contexto e, por isso, tivemos a oportunidade de
conhecer melhor suas propriedades. Outro tipo de ferramenta matemática presente no
projeto e análise de algoritmos são as funções de recorrência. Por estarem
intrinsecamente associadas às recursões dentro da ciênciada computação, a obtenção
de expressões fechadas para essas funções também foi explorada nesta unidade. Em
particular, o método da substituição foi apresentado como estratégia para a validação de
soluções propostas para recorrências. Além disso, a técnica de expansão de termos foi
abordada dando mais subsídio para a manipulação dessas relações.
SAIBA MAIS
Título : Algoritmos 
Autores : Sanjoy Dasgupta, Christos Papadimitriou e Umesh
VaziraniEditora: Bookman 
Ano : 2010 
Comentário : Concentre-se no Capítulo 2 onde a estratégia de divisão-e-
conquista é bem detalhada. Ainda neste capítulo, as relações de
recorrência são apresentadas com vários exemplos práticos, dando uma
visão ainda mais ampla de como essas funções são empregadas. 
Onde encontrar : Biblioteca Virtual da 
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 26/28
Título : Algoritmos 
Autores : Sanjoy Dasgupta, Christos Papadimitriou e Umesh
VaziraniEditora: Bookman 
Ano : 2010 
Comentário : Concentre-se no Capítulo 2 onde a estratégia de divisão-e-
conquista é bem detalhada. Ainda neste capítulo, as relações de
recorrência são apresentadas com vários exemplos práticos, dando uma
visão ainda mais ampla de como essas funções são empregadas. 
Onde encontrar : Biblioteca Virtual da 
Título : Algoritmos 
Autores : Sanjoy Dasgupta, Christos Papadimitriou e Umesh
VaziraniEditora: Bookman 
Ano : 2010 
Comentário : Concentre-se no Capítulo 2 onde a estratégia de divisão-e-
conquista é bem detalhada. Ainda neste capítulo, as relações de
recorrência são apresentadas com vários exemplos práticos, dando uma
visão ainda mais ampla de como essas funções são empregadas. 
Onde encontrar : Biblioteca Virtual da 
Referências bibliográficas 
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 27/28
ASCÊNCIO, A. F. G.; ARAÚJO, G. S. Estruturas de dados : algoritmos, análise de
complexidade e implementações em Java e C/C++. São Paulo: Pearson Prentice Hall,
2010. 
 
CORMEN, T. H. et al. Introduction to Algorithms . 3. ed. Massachusetts Institute of
Technology, 2009. 
 
DASGUPTA, S.; PAPADIMITROU, C.; VAZIRANI, U. Algoritmos . Porto Alegre:
Bookman, 2010. 
 
DOBRUSHKIN, V. Métodos para análise de algoritmos . Rio de Janeiro: LTC, 2012. 
 
GNU. O sistema operacional GNU . Disponível em < https://www.gnu.org/ >. Acesso
em: 17 dez. 2020. 
 
HELMENSTINE, A. M. How Many Athoms Exist in the Universe . ThoughtCo, 2019.
Disponível em < https://www.thoughtco.com/number-of-atoms-in-the-universe-603795 >.
Acesso em: 02 nov. 2021. 
 
LEVITIN, A. Introduction to the design and analysis of algorithms . 3. ed. Boston:
Addison-Wesley, 2012. 
 
MELO, C. B. S., LEIVAS, J. C. P. Explorando o fractal Tetra-Círculo: possibilidade
para a introdução de Progressões Geométricas . CIAEM – Conferência
Interamericana de Educação Matemática, 2015. Disponível em < http://xiv.ciaem-
redumate.org/index.php/xiv_ciaem/xiv_ciaem/paper/viewFile/147/103 >. Acesso em: 02
nov. 2021. 
 
SKIENKA, S. S. The Algorithm Design Manual . Nova York: Springer, 2008. 
 
TENEMBAUN, A. A.; LANGSAM, Y.; AUGENSTEIN, M. J. Data Structures Using C .
Nova York: McGraw-Hill, 1998. 
https://www.gnu.org/
https://www.thoughtco.com/number-of-atoms-in-the-universe-603795
http://xiv.ciaem-redumate.org/index.php/xiv_ciaem/xiv_ciaem/paper/viewFile/147/103
08/09/2022 22:02 Unidade 2 - Análise de algoritmos
https://codely-fmu-content.s3.amazonaws.com/Moodle/EAD/Conteudo/CTI_ANLALG_21/unidade_2/ebook/index.html?redirect=1 28/28

Outros materiais