Vous êtes sur la page 1sur 26

Recurso

Fabiano C. Botelho
fabiano@decom.cefetmg.br
http://www.dcc.ufmg.br/~fbotelho
Transp. cedidas pelo Prof. Antonio Alfredo Ferreira Loureiro
loureiro@dcc.ufmg.br
http://www.dcc.ufmg.br/~loureiro
UFMG/ICEx/DCC MD

Conceitos 1
Seqncias denidas recursivamente
Uma seqncia dita ser denida recursivamente se certos termos iniciais
so especicados e os demais termos da seqncia so denidos fazendo-
se referncia a um nmero xo de termos anteriores.
Trs possveis formas de denir uma seqncia:
1. Escrever os primeiros termos da seqncia na expectativa que o leitor
identique o padro da seqncia:
Exemplo: 3, 5, 7, ?, . . .
9 se for a seqncia dos inteiros mpares, ou
11 se for a seqncia dos primos mpares.
2. Denir uma frmula explcita para o n-simo termo.
a
n
=
(1)
n
n +1
, n 0
3. Denir uma seqncia usando recurso. Requer:
(a) uma equao chamada de relao de recorrncia, e
(b) condies iniciais, que so os valores dos primeiros termos da
seqncia.
UFMG/ICEx/DCC MD

Conceitos 2
Seqncias denidas recursivamente
Exemplo 1
(a) b
k
= b
k1
+b
k2
[relao de recorrncia]
(b) b
0
= 1, b
1
= 3 [termos iniciais]
b
2
= 4, b
3
= 7, b
4
= 11, b
5
= 18, . . .
Algumas vezes difcil ou impossvel achar uma frmula explcita para uma
seqncia, mas possvel denir a seqncia usando recurso.
Note que denir seqncias recursivamente similar a provar teoremas por
induo matemtica:
Equao de recorrncia seria o passo indutivo, e
Termos iniciais seriam o passo base.
Denio: Uma equao de recorrncia para uma seqncia a
0
, a
1
, a
2
, . . .
uma frmula que relaciona cada termo a
k
a certos termos predecessores
a
k1
, a
k2
, . . . , a
ki
, onde i um inteiro xo e k qualquer inteiro, tal que
k i. Os termos iniciais para uma recorrncia so especicados pelos valo-
res a
0
, a
1
, a
2
, . . . , a
i1
.
UFMG/ICEx/DCC MD

Conceitos 3
Seqncias denidas recursivamente
Exemplo 2
(a) c
k
= c
k1
+kc
k2
+1 [relao de recorrncia]
(b) c
0
= 1, c
1
= 2 [termos iniciais]
c
2
= 5, c
3
= 12, c
4
= 33, . . .
Exemplo 3 Seqncias que tm a mesma relao de recorrncia:
(a) a
k
= 3a
k1
, k > 1
(b) a
1
= 2
a
2
= 6, a
3
= 18, a
4
= 54, . . .
(a) b
k
= 3b
k1
, k > 1
(b) b
1
= 1
b
2
= 3, b
3
= 9, b
4
= 27, . . .
UFMG/ICEx/DCC MD

Conceitos 4
Seqncias denidas recursivamente
Exemplo 4 Mostre que a seqncia
1, 1!, 2!, 3!, 4!, . . . , (1)
n
n! . . . , n 0
satisfaz a relao de recorrncia
s
k
= k s
k1
, k > 1
UFMG/ICEx/DCC MD

Conceitos 5
Seqncias denidas recursivamente
Exemplo 4 Pela denio da seqncia,
s
n
= (1)
n
n!, n 0
Substitua n por k e k 1 para obter
s
k
= (1)
k
k!
s
k1
= (1)
k1
(k 1)!
Atravs de manipulao algbrica temos:
k s
k1
= k[(1)
k1
(k 1)!]
= (1) k (1)
k1
(k 1)!]
= (1) (1)
k1
k (k 1)!]
= (1)
k
k!
= s
k
UFMG/ICEx/DCC MD

Conceitos 6
Usando recursividade na modelagem de problemas
Strings com certa propriedade
Seja = {0, 1}. Determine quantos strings em
0
. . .
3
que no contm o
padro 11. (
i
o conjunto de todos os strings de tamanho i sobre .)
Tamanho: Strings
0:
1: 0, 1
2: 00, 01, 10
3: 000, 001, 010, 100, 101
Logo, temos que:
Tamanho # Strings
0 1
1 2
2 3
3 5
UFMG/ICEx/DCC MD

Conceitos 7
Usando recursividade na modelagem de problemas
Strings com certa propriedade
Quantos elementos existem em
k
?
Idia:
Suponha que o nmero de strings k que no contm o padro 11 seja
conhecido.
Use esse fato para determinar o nmero de strings de tamanho k que no
contm 11 em funo de strings menores que no contm 11.
UFMG/ICEx/DCC MD

Conceitos 8
Usando recursividade na modelagem de problemas
Strings com certa propriedade
Dois casos a considerar em funo do smbolo mais esquerda no string:
0: os k 1 smbolos podem ser qualquer seqncia sobre onde 11 no
aparece;
1: os dois smbolos mais esquerda no podem ser 11 e sim 10.
Logo, os k2 smbolos podem ser qualquer seqncia sobre onde 11 no
aparece.
Os dois casos geram dois subconjuntos mutuamente disjuntos, representa-
dos pela primeira equao de recorrncia abaixo:
(1) s
k
= s
k1
+s
k2
Equao de recorrncia
(2)
s
0
s
1
=
=
1
2
_
Condies iniciais
UFMG/ICEx/DCC MD

Conceitos 9
Seqncias e recursividade: Seqncia aritmtica
Denio (seqncia aritmtica): Uma seqncia a
0
, a
1
, a
2
, . . . uma
seqncia aritmtica sse existe uma constante d tal que
a
k
= a
k1
+d, para todos inteiros k 1
Exemplo:
(1) a
k
= a
k1
+2, k 1
(2) a
0
= 1
Expanso:
a
0
= 1
a
1
= a
0
+2 = 1 +2
a
2
= a
1
+2 = (1 +2) +2
a
3
= a
2
+2 = (1 +2 +2) +2
.
.
.
a
n
= 1 +n 2 = 1 +2n
UFMG/ICEx/DCC MD

Conceitos 10
Seqncias e recursividade: Seqncia aritmtica
Exemplo:
(1) a
k
= 3a
k1
+1, k 2
(2) a
1
= 1
a
1
= 1
a
2
= 3a
1
+1 = 3 1 +1 = 3 +1
a
3
= 3a
2
+1 = 3 (3 +1) +1 = 3
2
+3 +1
a
4
= 3a
3
+1 = 3 (3
2
+3 +1) +1 = 3
3
+3
2
+3 +1
.
.
.
a
n
= 3
n1
+3
n2
+ +3
2
+3 +1 =
3
n
1
3 1
=
3
n
1
2
UFMG/ICEx/DCC MD

Conceitos 11
Seqncias e recursividade: Seqncia aritmtica
Exemplo:
(1) a
k
= a
k1
+2k, k 1
(2) a
0
= 3
a
0
= 3
a
1
= a
0
+2 1 = 3 +2 1
a
2
= a
1
+2 2 = (3 +2 1) +2 2 = 3 +2 (1 +2)
a
3
= a
2
+2 3 = [(3 +2 (1 +2)] +2 3 = 3 +2 (1 +2 +3)
.
.
.
a
n
= 3 +2 (1 +2 +. . . +(n 1) +n)
= 3 +2
n(n +1)
2
= 3 +n(n +1)
UFMG/ICEx/DCC MD

Conceitos 12
Seqncias e recursividade: Seqncia geomtrica
Denio (seqncia geomtrica): Uma seqncia a
0
, a
1
, a
2
, . . . uma
seqncia geomtrica sse existe uma constante r tal que
a
k
= r a
k1
, para todos inteiros k 1
Exemplo:
(1) a
k
= r a
k1
, k 1
(2) a
0
= a
Expanso:
a
0
= a
a
1
= r a
0
= r a
a
2
= r a
1
= r (r a) = r
2
a
a
3
= r a
2
= r (r
2
a) = r
3
a
.
.
.
a
n
= r
n
a
UFMG/ICEx/DCC MD

Conceitos 13
Vericando a validade de uma frmula fechada
Prove a seguinte armao:
Se h
1
, h
2
, h
3
, . . . a seqncia denida por
h
i
= 2h
i1
+1, para todos inteiros i 2
h
1
= 1
ento
h
n
= 2
n
1, para todos inteiros i 1
Prova (induo matemtica):
(a) h
1
= 2
1
1 = 1. [Passo base V.]
(b) Se h
i
= 2
i
1, para algum inteiro i 1
ento h
i+1
= 2
i+1
1
h
i+1
= 2 h
i
+1
= 2 (2
i
1) +1
= 2
i+1
2 +1
= 2
i+1
1
UFMG/ICEx/DCC MD

Conceitos 14
Vericando a validade de uma frmula fechada
Prove a seguinte armao:
Se c
1
, c
2
, c
3
, . . . a seqncia denida por
c
i
= 2c
i1
+i, para todos inteiros i 1
c
0
= 1
ento c
n
= 2
n
+n, para todos inteiros n 0
UFMG/ICEx/DCC MD

Conceitos 15
Vericando a validade de uma frmula fechada
Prova (induo matemtica):
(a) c
0
= 2
0
+0 = 1. [Passo base V.]
(b) Se c
i
= 2
i
+i, para algum inteiro i 0
ento c
i+1
= 2
i+1
+(i +1)
c
i+1
= 2 c
i
+(i +1)
= 2 (2
i
+i) +(i +1)
= 2
i+1
+2i +i +1
= 2
i+1
+3i +1
A questo passa a ser ento
2
i+1
+3i +1
?
= 2
i+1
+(i +1)
de onde se conclui que 2i = 0 e i = 0, que no uma condio vlida
para a equao de recorrncia.
UFMG/ICEx/DCC MD

Conceitos 16
Denio recursiva
Existem vrios outros objetos que podem ser denidos recursivamente alm
de seqncias de nmeros.
Exemplo: conjuntos.
A denio recursiva de conjuntos consiste dos seguintes elementos:
(i) BASE: uma armao que certos objetos pertencem ao conjunto.
(ii) RECURSO: regras que indicam como formar novos conjuntos a partir de
elementos que so conhecidos estarem em conjuntos.
(iii) RESTRIO: uma armao que somente os objetos obtidos atravs dos
passos (i) e (ii) pertencem ao conjunto.
Essas mesmas regras podemser usadas para denir outros objetos de forma
recursiva.
UFMG/ICEx/DCC MD

Conceitos 17
Denio recursiva: Expresses booleanas
Denio:
(i) BASE: cada smbolo do alfabeto (por exemplo, latino) uma expresso
booleana.
(ii) RECURSO: se P e Q so expresses booleanas ento tambm so
(a) (P Q) e (b) (P Q) e (c) P
(iii) RESTRIO: no existem expresses booleanas sobre o alfabeto alm
das denidas em (i) e (ii).
Exemplo:
Alfabeto = {a, b, c, . . . , x, y, z}
uma expresso booleana vlida?
( (p q) (r p))
1. Por (i): p, q e r so expresses booleanas.
2. Por (1), (iia), (iic): (p q) e r so expresses booleanas.
3. Por (2), (iic), (iia): (p q) e ( r p) so expresses booleanas.
4. Por (3), (iib): ( (p q) (r p)) uma expresso booleana.
UFMG/ICEx/DCC MD

Conceitos 18
Denio recursiva: Strings sobre um alfabeto
Considere o alfabeto = {a, b}. O conjunto de todos strings de tamanho
nito sobre representado por

e pode ser denido recursivamente


como:
(i) BASE: pertence a

, onde o string nulo.


(ii) RECURSO: se s

, ento
(a) sa

e (b) sb

(iii) RESTRIO: nenhum outro string pertence a

alm dos denidos em


(i) e (ii).
Exemplo:
Alfabeto: = {a, b}
A expresso ab pertence a

?
1. Por (i):

.
2. Por (1), (iia): a

. Mas a a concatenao do string nulo com a,


que equivalente a a. Logo, a

.
3. Por (2), (iib): ab

.
UFMG/ICEx/DCC MD

Conceitos 19
Denio recursiva: Soma e Produto
Denio (Soma):
Dados os nmeros a
1
, a
2
, . . . , a
n
, onde n um inteiro positivo, o somatrio
desses n nmeros, que representado por

n
i=1
a
i
, denido como
1

i=1
a
i
= a
1
e
n

i=1
a
i
= (
n1

i=1
a
i
) +a
n
, se n > 1.
Denio (Produto):
Dados os nmeros a
1
, a
2
, . . . , a
n
, onde n um inteiro positivo, o produtrio
desses n nmeros, que representado por

n
i=1
a
i
, denido como
1

i=1
a
i
= a
1
e
n

i=1
a
i
= (
n1

i=1
a
i
) a
n
, se n > 1.
UFMG/ICEx/DCC MD

Conceitos 20
Denio recursiva: Unio e Interseco
Denio (Unio):
Dados os conjuntos A
1
, A
2
, . . . , A
n
, onde n um inteiro positivo, a unio
desses n conjuntos, que representada por

n
i=1
A
i
, denido como
1
_
i=1
A
i
= A
1
e
n
_
i=1
A
i
= (
n1
_
i=1
A
i
)
_
A
n
.
Denio (Interseco):
Dados os conjuntos A
1
, A
2
, . . . , A
n
, onde n um inteiro positivo, a intersec-
o desses n conjuntos, que representada por

n
i=1
A
i
, denido como
1

i=1
A
i
= A
1
e
n

i=1
A
i
= (
n1

i=1
A
i
)

A
n
.
UFMG/ICEx/DCC MD

Conceitos 21
Denio recursiva: Funo
Uma funo dita ser denida recursivamente se ela refere-se a si mesma.
Funes recursivas tm um papel fundamental em teoria da computao.
Exemplo: Funo 91 de McCarthy.
M(n) =
_
n 10 se n > 100
M(M(n +11)) se n 100
M(99) = M(M(110))
= M(100)
= M(M(111))
= M(101)
= 91
UFMG/ICEx/DCC MD

Conceitos 22
Denio recursiva: Funo
Exemplo: Funo de Ackermann
A(0, n) = n +1
A(m, 0) = A(m1, 1)
A(m, n) = A(m1, A(m, n 1))
A(1, 2) = A(0, A(1, 1))
= A(0, A(0, A(1, 0)))
= A(0, A(0, A(0, 1)))
= A(0, A(0, 2))
= A(0, 3)
= 4
UFMG/ICEx/DCC MD

Conceitos 23
Denio recursiva: Funo
Essa funo possui uma taxa de crescimento impressionante:
A(4, 4)

= 2
2
2
65536
Funo importante em Engenharia da Computao que est relacionada com
computabilidade.
UFMG/ICEx/DCC MD

Conceitos 24
Funo recursiva que no bem denida
Seja a funo G : Z
+
Z. Para todos inteiros n 1:
G(n) =
_

_
1 se n = 1
1 +G(
n
2
) se n par
G(3n 1) se n mpar e n > 1
A funo G bem denida?
No.
G(1) = 1
G(2) = 1 +G(1) = 1 +1 = 2
G(3) = G(8) = 1 +G(4) = 1 +(1 +G(2))
= 1 +(1 +2) = 4
G(4) = 1 +G(2) = 1 +2 = 3
G(5) = G(14) = 1 +G(7) = 1 +G(20)
= 1 +(1 +G(10))
= 1 +(1 +(1 +G(5))) = 3 +G(5)
UFMG/ICEx/DCC MD

Conceitos 25
Funo recursiva que no sabe se bem denida
Seja a funo H : Z
+
Z. Para todos inteiros n 1:
H(n) =
_

_
1 se n = 1
1 +H(
n
2
) se n par
H(3n +1) se n mpar e n > 1
A funo H bem denida?
No se sabe.
A funo computvel para todos inteiros n,
1 n < 10
9
.
UFMG/ICEx/DCC MD

Conceitos 26

Vous aimerez peut-être aussi