Click here to load reader

INE5403 FUNDAMENTOS DE MATEMÁTICA mauro/ine5403/slides_novos/pdfs_texs/p33recursao.pdf · PDF fileine5403 fundamentos de matemÁtica discreta para a computaÇÃo prof. daniel s

  • View
    213

  • Download
    0

Embed Size (px)

Text of INE5403 FUNDAMENTOS DE MATEMÁTICA...

  • INE5403

    FUNDAMENTOS DEMATEMTICA DISCRETA

    PARA A COMPUTAO

    PROF. DANIEL S. FREITAS

    UFSC - CTC - INE

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.1/30

  • 3 - INDUO E RECURSO

    3.1) Induo Matemtica

    3.2) Induo Forte

    3.3) Definies Recursivas

    3.4) Induo Estrutural

    3.5) Algoritmos Recursivos

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.2/30

  • DEFINIES RECURSIVAS

    Algumas vezes pode ser difcil definir um objeto explicitamente, maspode ser fcil defini-lo recursivamente.

    Incluindo o item que est sendo definido como parte da definio.

    A recurso pode ser usada para definir sequncias, funes econjuntos.

    Exemplo: uma sequncia de potncias de 2 dada por:

    an = 2n, para n = 0, 1, 2

    mas ela tambm pode ser definida a partir do 1o termo e de umaregra para encontrar um termo da sequncia a partir do anterior,ou seja:

    a0 = 1

    an+1 = 2.an, para n = 0, 1, 2, ...

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.3/30

  • DEFINIES RECURSIVAS DE FUNES

    Quando definimos uma sequncia recursivamente, podemos usarinduo para provar resultados sobre a sequncia.

    Quando definimos um conjunto recursivamente:

    especificamos alguns elementos iniciais em um passo bsico e

    fornecemos uma regra para construir novos elementos a partirque j temos no passo recursivo.

    Para provar resultados sobre conjuntos definidos recursivamente,utilizamos um mtodo chamado de induo estrutural.

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.4/30

  • DEFINIES RECURSIVAS DE FUNES

    A definio recursiva de uma funo cujo domnio o conjunto dosinteiros no-negativos consiste em duas etapas:

    Passo bsico: especificar o valor da funo em zero.

    Passo recursivo: fornecer uma regra para encontrar o valor dafuno em um inteiro a partir dos seus valores em inteirosmenores.

    Esta definio chamada de recursiva ou ainda de indutiva.

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.5/30

  • DEFINIES RECURSIVAS DE FUNES

    Exemplo: Suponha que f definida recursivamente por:

    f(0) = 3

    f(n + 1) = 2.f(n) + 3

    Encontre f(1), f(2), f(3) e f(4).

    Soluo:

    f(1) = 2f(0) + 3 = 2.3 + 3 = 9

    f(2) = 2f(1) + 3 = 2.9 + 3 = 21

    f(3) = 2f(2) + 3 = 2.21 + 3 = 45

    f(4) = 2f(3) + 3 = 2.45 + 3 = 93

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.6/30

  • DEFINIES RECURSIVAS DE FUNES

    Muitas funes podem ser estudadas recursivamente.

    Um bom exemplo a funo fatorial.

    Exemplo: Fornea uma definio recursiva para a funo fatorialF (n) = n! e use-a para avaliar 5!

    Soluo:

    Definio recursiva:F (0) = 1

    F (n + 1) = (n + 1)F (n)

    Avaliando F (5) = 5!:F (5) = 5.F (4) = 5.4.F (3) = 5.4.3.F (2) =

    = 5.4.3.2.F (1) =

    = 5.4.3.2.1.F (0) = 5.4.3.2.1.1 = 120

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.7/30

  • DEFINIES RECURSIVAS DE FUNES

    O Princpio da induo matemtica garante que funes definidasrecursivamente ficam bem definidas:

    para todo inteiro positivo, o valor da funo neste inteiro determinado de forma no ambgua

    ou seja, obtemos o mesmo valor qualquer que seja o modo deaplicar as duas partes da definio

    Em algumas definies de funes, os valores da funo nosprimeiros k inteiros positivos so especificados.

    E ento fornecida uma regra para determinar o valor da funoem inteiros maiores a partir dos seus valores em alguns ou todosos inteiros que o precedem.

    O princpio da induo forte garante que tais definiesproduzem funes bem definidas.

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.8/30

  • DEFINIES RECURSIVAS DE FUNES

    Os nmeros de Fibonacci, f0, f1, f2, . . ., so definidos pelasequaes:

    f0 = 0, f1 = 1

    fn = fn1 + fn2, para n = 2, 3, 4, . . .

    Exemplo: encontre os nmeros de Fibonacci f2, f3, f4, f5 e f6.

    Soluo: segue da segunda parte da definio que:

    f2 = f1 + f0 = 1 + 0 = 1

    f3 = f2 + f1 = 1 + 1 = 2

    f4 = f3 + f2 = 2 + 1 = 3

    f5 = f4 + f3 = 3 + 2 = 5

    f6 = f5 + f4 = 5 + 3 = 8

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.9/30

  • INDUO & RECURSO

    Existe uma conexo natural entre recurso e induo:

    comum ser usada uma sequncia natural em definiesrecursivas de objetos.

    comum a induo ser o melhor (talvez o nico) modo de provarresultados sobre objetos definidos recursivamente.

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.10/30

  • DEFINIES RECURSIVAS DE FUNES

    Pode-se usar a definio recursiva dos nmeros de Fibonacci paraprovar muitas propriedades destes nmeros.

    Exemplo: Mostre que, sempre que n 3, temos que fn > n2,onde = (1 +

    5)/2.

    Soluo: podemos provar esta desigualdade usando induo forte:

    Seja P (n): fn > n2

    Queremos provar que P (n) V sempre que n 3.Passo bsico:

    2 = f3 >

    3 = f4 > 2 = (3 +

    5)/2

    de modo que P (3) e P (4) so ambas V.

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.11/30

  • DEFINIES RECURSIVAS DE FUNES

    Exemplo (cont.): fn > n2, para n 3Soluo:

    Passo indutivo:vamos assumir que P (j) V, ou seja:fj >

    j2, j, com 3 j k, onde k 4(Temos que mostrar que P (k + 1) V, ou seja: fk+1 > k1)Como uma soluo de x2 x 1 = 0, temos 2 = + 1Portanto:

    k1 = 2.k3

    = ( + 1)k3

    = k3 + 1 k3= k2 + k3

    Pela hiptese indutiva, se k 4, segue que:fk+1 = fk + fk1 >

    k2 + k3 = k1 2

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.12/30

  • DEFINIES RECURSIVAS DE FUNES

    Exemplo: Considere a seguinte definio recursiva da funofatorial:

    1! = 1

    n! = n(n 1)!, n > 1Queremos provar que: n 1, n! 2n1

    Soluo: podemos provar esta desigualdade usando induo forte.

    Seja P (n): n! 2n1Passo bsico:

    P (1) a proposio 1! 20o que V, j que 1! = 1

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.13/30

  • DEFINIES RECURSIVAS DE FUNES

    Exemplo (cont.): Provar que: n 1, n! 2n1

    Soluo:

    Passo indutivo:

    Queremos provar que P (k) P (k + 1) uma tautologia.Suponha que k! 2k1, para algum k 1Da, pela definio recursiva, o lado esquerdo de P (k + 1) :

    (k + 1)! = (k + 1)k!

    (k + 1)2k1 usando P (k) 2 2k1 k + 1 2, pois k 1= 2k lado direito de P (k + 1)

    Portanto, P (k + 1) V 2

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.14/30

  • DEFINIES RECURSIVAS DE FUNES

    Vamos agora mostrar que o algoritmo de Euclides usa O(log b)divises para obter o mdc dos inteiros positivos a e b (onde a b).

    Nota (princpio do algoritmo): mdc(a, b) = mdc(b, a mod b)

    Para isto, vamos precisar do resultado a seguir.

    Teorema de Lam: Se a e b so inteiros positivos com a b, onmero de divises usado pelo algoritmo de Euclides para encontrarmdc(a, b) a 5 vezes o nmero de dgitos decimais em b.

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.15/30

  • DEFINIES RECURSIVAS DE FUNES

    Teorema de Lam: nro de divises no algoritmo de Euclides paramdc(a, b) a 5 X nro de dgitos decimais em b.

    Prova (1/3):

    uma aplicao do algoritmo (a = r0 e b = r1):

    r0 = r1q1 + r2 0 r2 < r1r1 = r2q2 + r3 0 r3 < r2 rn2 = rn1qn1 + rn 0 rn < rn1rn1 = rnqn

    note que:n divises foram usadas para chegar a rn = mdc(a, b)q1, q2, . . . , qn1 so todos 1qn 2, pois rn < rn1

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.16/30

  • DEFINIES RECURSIVAS DE FUNES

    Teorema de Lam: nro de divises no algoritmo de Euclides paramdc(a, b) a 5 X nro de dgitos decimais em b.

    Prova (2/3):

    em uma aplicao do algoritmon divises usadas para chegar a rn = mdc(a, b)todos os qi 1, mas qn 2 (pois rn < rn1)

    o que permite escrever:

    rn 1 = f2,rn1 2rn 2f2 = f3,rn2 rn1 + rn f3 + f2 = f4,

    ...

    r2 r3 + r4 fn1 + fn2 = fn,b = r1 r2 + r3 fn + fn1 = fn+1.

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.17/30

  • DEFINIES RECURSIVAS DE FUNES

    Teorema de Lam: nro de divises no algoritmo de Euclides paramdc(a, b) a 5 X nro de dgitos decimais em b.

    Prova (3/3):

    logo, se n divises so usadas pelo algoritmo:temos que: b fn+1mas j sabemos que: fn+1 > n1 (para n > 2)logo: b > n1

    log10 b > (n 1)/5 n 1 < 5 log10 b

    agora suponha que b tem k dgitos decimais:ento: b < 10k k = blog10 bc + 1de modo que: log10 b < k log10 b + 1

    segue que: n 1 < 5k n 5k 2

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.18/30

  • DEFINIES RECURSIVAS DE FUNES

    Voltando demonstrao de que o algoritmo de Euclides utilizaO(log b) divises para encontrar o mdc(a, b):

    Pelo teorema de Lam, sabemos que:nro de divises para obter mdc(a, b) 5(log10 b + 1)

    Ou seja:O(log b) divises so necessrias para encontrar mdc(a, b)pelo algoritmo de Euclides (com a > b). 2

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.19/30

  • CONJS. E ESTRUTURAS DEFINIDOS RECURSIVAMENTE

    Definies recursivas de conjuntos tambm tm duas partes:

    Passo bsico: uma coleo inicial de elementos especificada.

    Passo recursivo: regras para formar novos elementos a partirdaqueles que j se sabe que esto no conjunto.

    Definies recursivas tambm podem incluir uma regra deextenso:

    estipula que um conjunto definido recursivamente no contmnada mais do que:

    os elementos especificados no passo bsicoou gerados por aplicaes do passo indutivo

    assumiremos que esta regra sempre vale.

    Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.20/30

  • CONJS. E ESTRUTURAS DEFINIDOS RECURSIVAMENTE

    Exemplo: Considere o subconjunto S dos inteiros definido por:

    Passo bsico: 3 SPasso indutivo: se x S e y S, ento x + y S

    E

Search related