Resumo das aulas de Matemática discreta

Jair Donadelli

dezembro de 2009

Sumário

Aula 1
Aula 2
Aula 3
Aula 4
Aula 5
Aula 6
Aula 7
Aula 8
Aula 9
Aula 10
Aula 11
Aula 12
Aula 13
Aula 14
Aula 15
Aula 16
Aula 17
Aula 18
Aula 19
Aula 20
Aula 21
Aula 22
Aula 23
Últimas aulas

Aula 1

página da disciplina

Aula 2

Definição 1. Uma proposição é uma sentença que pode assumir exatamente um de dois valores: VERDADEIRO (V) ou FALSO (F). O valor é chamado de VALOR-VERDADE da proposição.

Definição 2. Seja A uma proposição. A negação de A é a proposição não(A) cujo valor-verdade é

Anão(A)
V F
F V

Definição 3. Sejam A e B proposições, então a disjunção é a proposição A ou B cujo valor-verdade é

ABA ou B
V V V
V F V
F V V
F F F
a conjunção é a proposição A e B cujo valor-verdade é
ABA e B
V V V
V F F
F V F
F F F

Definição 4. Sejam A e B proposições. A condicional é a proposição A B cujo valor-verdade é

ABA B
V V V
V F F
F V V
F F V

Definição 5. Sejam A e B proposições. A bicondicional é a proposição A B cujo valor-verdade é

ABA B
V V V
V F F
F V F
F F V

Definição 6. Duas proposições A e B são logicamente equivalentes se assumem o mesmo valor-verdade. A notação é A B.

Obs A B é o mesmo que dizer que A B é verdadeiro

Teorema 1. A ou  não(A).

Teorema 2 (identidade).

A e V ≡  A
(1)

A ou  F ≡ A
(2)

Teorema 3 (dominação).

A ou  V ≡ V
(3)

A e F ≡  F
(4)

Teorema 4 (idempotência).

A e A ≡  A
(5)

A  ou A ≡ A
(6)

Teorema 5 (dupla negação).

n˜ao(n˜ao(A )) ≡ A
(7)

Teorema 6 (distributiva).

A e (B  ou C ) ≡ (A  e B ) ou (A e C)
(8)

A  ou (B e C ) ≡ (A ou B ) e (A ou C )
(9)

Teorema 7 (comutativa).

A  ou B ≡  (B ou A )
(10)

A e B ≡  (B e A )
(11)

Teorema 8 (associativa).

A ou (B  ou C ) ≡ (A  ou B ) ou C
(12)

A  e (B e C ) ≡ (A  e B ) e C
(13)

Teorema 9 (De Morgan).

n˜ao(A  ou B ) ≡ n ˜ao(A ) e n ˜ao(B )
(14)

n˜ao(A  e B ) ≡ n˜ao (A ) ou n ˜ao(B )
(15)

Aula 3

Teorema 10. A B não(A) ou B.

Um argumento com premissas P1,P2,,Pn e conclusão Q é válido quando

Q é verdadeiro sempre que P1 e P2 e ⋅⋅⋅ e Pn é verdadeiro,

ou seja

(P1 e P2 e ⋅⋅⋅ e Pn ⇒  Q) ≡ V
(16)

Teorema 11 (Modus Ponens). A e (A B) B é um argumento válido.

Teorema 12. A A ou B é um argumento valido.

Teorema 13. A e B A é um argumento válido.

Teorema 14. não(A B) A e  não(B).

Teorema 15. F A.

Teorema 16. ((A B) e (A C)) (A (B e C)) é um argumento válido.

Teorema 17. (A B) e (A não(B)) (A = F).

Aula 4

Uma sentença aberta é uma sentença parametrizada por uma ou mais variáveis. Uma sentença aberta não tem valor lógico. O domínio da(s) variável(is) é chamado universo do discurso .

O conjunto verdade de uma sentença aberta P(x) sobre o universo U é o conjunto

{a ∈ U : P (a )},
(17)

ou seja, o conjunto formado pelos elementos de U que tornam P(x) verdadeira.

Quantificador Universal é a proposição

para todo x, P (x)
(18)

significa que P(x) é verdadeiro para todos os valores de x no universo do discurso.

Quantificador Existencial é a proposição

existe x, P (x)
(19)

significa que P(x) é verdadeiro para algum valor de x no universo do discurso.

proposição verdadeira falsa
para todo x, P(x) P(x) = V para todo x no universo do discurso existe um x no universo do discurso para o qual P(x) é falso
existe x, P(x) existe um x no universo do discurso para o qual P(x) é verdadeiro P(x) = F para todo x

Podemos caracterizar os quantificadores com proposições a cerca do conjunto-verdade,

Definição 7. Usaremos como definição as senguintes equivalências.

Teorema 18. para todo x, P(x) ({x U : P(x)} = U).

Teorema 19. existe x, P(x) ({x U : P(x)}).

Com isso é fácil deduzir a negação das proposições quantificadas

Teorema 20. não (para todo x, P(x)) existe x,  não(P(x)).

Teorema 21. não (existe x, P(x)) para todo x,  não(P(x)).

Em proposições com mais de uma variável a ordem em que os quantificadores aparece é importante. Por exemplo, se x e y são inteiros

para todo x,  existe y, (x + y = 0)
(20)

não é logicamente equivalente a

existe y, para todo  x, (x + y = 0)
(21)

pois (20) é verdadeiro enquanto que (21) é falso. Entretanto, em alguns casos vale a equivalência. Por exemplo, se x e y são números naturais

para todo  x, existe y,(x divide y)
(22)

é verdadeira, assim como

existe y, para todo x, (x divide y)
(23)

pois todo x divide o 0.

Se X U ou para explicitar o universo, escrevemos para todo x X, P(x) que significa

para todo x ∈ X,  P (x) ≡ para todo x, (x ∈ X  ⇒  P(x )).
(24)

Teorema 22. São argumento válidos:

instanciação universal:
Se para todo x, P(x) então P(c) sempre que c U;
generalização universal:
Se P(c) para c U arbitrário, então para todo x, P(x);
instanciação existencial:
Se existe x, P(x) então P(c) para algum elemento c U;
generalização existencial:
Se P(c) para algum c U específico, então existe x, P(x).

Aula 5

Aula de exercícios

Aula 6

A e B agora denotam conjuntos.

x A denota a proposição x é elemento de A.

x ⁄∈ A denota a proposição não(x A).

denota o conjunto vazio.

|A| denota a cardinalidade de A, isto é, o número de elementos quando A é finito.

Definição 8.

A ⊆  B ≡ para  todo  a(a ∈ A ⇒  a ∈ B ).
(25)

A =  B ≡  A ⊆ B  e B ⊆  A.
(26)

x ∈ A ∪ B ≡  (x ∈ A) ou (x ∈ B ).
(27)

x ∈ A  ∩ B ≡ (x ∈ A ) e (x ∈  B).
(28)

x ∈ A -  B ≡  (x ∈  A) e (x ⁄∈ B).
(29)

Teorema 23. A A B.

Teorema 24. A B A.

Teorema 25.

A ∩ (B  ∩ C) = (A ∩ B ) ∩ C.
(30)

A ∪ (B  ∪ C) = (A ∪ B ) ∪ C.
(31)

Definição 9. A e B são disjuntos se A B = .

Definição 10. Sejam A1,A2,,An conjuntos e n um natural positivo

    ⋃n
x ∈    Ai ≡ existe i, x ∈ Ai.
    i=1
(32)

Definição 11. Sejam A1,A2,,An conjuntos e n um natural positivo

     n
x ∈ ⋂  A  ≡ para todo  i, x ∈ A  .
         i                     i
    i=1
(33)

Definição 12. Sejam A1,A2,,An conjuntos e n um natural positivo

 n
∏
    Ai = {(a1,a2,...,an ): para todo i, ai ∈ Ai}.
 i=1
(34)

Convenções Se n = 0

n                n
⋃  A  = ∅   e   ⋂  A  =  ∅.
    i                i
i=1              i=1
(35)

Se Ai = A para todo i

∏n         n
    Ai = A
i=1
(36)

Definição 13. {A1,A2,,An}é uma partição de A se

  1. para todo i, Ai A
  2. para todo i, para todo j, (ji Ai Aj = )
  3. i=1nA i = A.

Aula 7

Exercício 1. Seja C um conjunto. Prove o teorema: ∅⊆ C.

Demonstração. Seja C um conjunto. Vamos provar que ∅⊆ C é verdadeiro. Pela definição (25) ∅⊆ C é equivalente a para todo a, a ∈∅⇒ a C.

a ∈ ∅ é falso e pelo teorema 15 F A é uma proposição verdadeira, então a ∈∅⇒ a C é sempre uma proposição verdadeira, portanto também é ∅⊆ C.

Notação [a..b] = {z : a z b}.

Somatórios

Seja X um conjunto finito. Denotamos por

∑
   a
a∈X
(37)

a soma de todos os elementos de X. Como X é um conjunto finito os seus elementos podem ser enumerados

a1,a2,...,an
(38)

e também escrevemos

∑n                  ∑
    ai para denotar     a.
 i=1                 a∈X
(39)

Teorema 26. Sejam c,a1,a2,,an números reais e X um conjunto finito. Prove

  1. xXc = c|X|.
  2. i=1n(a i + bi) = i=1na i + i=1nb i.
  3. i=1nca i = c i=1na i.

Um tipo particular de soma será bastante utilizado mais tarde, a soma dos elementos de uma progressão aritmética e a soma dos elementos de uma progressão geométrica. Seja

A = {a : i ∈ [0..n - 1]}
       i
onde ai0 é um número real para todo i [0..n - 1].

A é uma progressão aritmética de razão r se

ai - ai-1 = r
para todo i [1..n - 1].

A é uma progressão geométrica de razão r se

ai = rai-1
(40)

para todo i [1..n - 1].

Teorema 27. Seja A = {ai: i [0..n- 1]} uma progressão aritmética de razão r. Então

∑
    a = a0n + n---1-rn = (a0-+-an-1)n-.
a∈A             2              2
(41)

Teorema 28. Seja A = {ai: i [0..n - 1]} uma progressão geométrica de razão r1. Então

∑         rn - 1
   a = a0 ------.
a∈A        r - 1
(42)

Demonstração. Seja A = {ai: i [0..n - 1]} uma progressão geométrica de razão r1. Vamos provar que aAa = a0 n
rr--11.

Da equação (40) temos que ai = a0ri portanto

                       n-1            n-1
        ∑              ∑              ∑      i
(r - 1)    a = (r - 1)    ai = (r - 1)    a0r
        a∈A             i=0             i=0

e usando o item 3 do teorema 26

       n∑- 1       n∑-1             ∑n-1
(r - 1)    a0ri =    (r - 1)a0ri =    (a0ri+1 - a0ri)
       i=0        i=0              i=0

e essa soma é telescópica, portanto

       ∑
(r - 1)    a = a0rn - a0
       a∈A

fatorando o a0 no lado direito e dividindo tudo por r - 1 (o que podemos fazer pois r1), resulta em

∑          rn --1-
    a = a0 r - 1 .
 a∈A

Aula 8

Um teorema é uma sentença que pode ser demonstrado ser verdadeira. Demonstramos que um teorema é verdadeiro exibindo uma sequência de proposições, que chamamos de prova de modo que em cada passo usamos um argumento válido para ter um conclusão verdadeira a partir de uma premissa verdadeira.

Vejamos algumas técnicas para construir provas de teoremas da forma A B.

Prova direta. Pela definição de implicação A = V é o único caso que precisamos considerar para mostrar que a implicação A B é verdadeira. Assumimos A verdadeiro e usamos argumentos válidos para concluir que B é verdadeiro, usualmente, com várias concicionais intermediarias e uma conclusão obtida por silogismo hipotético (veja a lista 1).

Por exemplo, se n é um número natural então a implicação

3 divide n ⇒  9 divide n2
(43)

é verdadeira:

Pelo silogismo hipotético: se 3 divide n então 9 divide n2.

Como a variável n acima pode assumir qualquer valor natural, ou seja, n é um elemento genérico de , o que provamos de fato foi, pelo teorema 22 (generalização universal), que

para todo n (3 divide n ⇒  9 divide n2).

Mais um exemplo:
Teorema A. Para todo n , se n é ímpar, então n2 é ímpar.

Demonstração. Seja n um número natural (/*com isso podemos usar generalização universal*/). Vamos provar que a implicação n ímpar n2 ímpar é verdadeira.

Suponha que n é ímpar (/*se fosse par, a premissa da implicação seria falsa, portanto a implicação verdadeira*/). Se n é ímpar então n = 2k + 1 para algum k pela definição de número ímpar.

Se n = 2k + 1 então n2 = (2k + 1)2. Se (2k + 1)2 = 2(2k2 + 2k) + 1 então n2 = 2(2k2 + 2k) + 1, finalmente, se n2 = 2(2k2 + 2k) + 1 então n2 é ímpar.

Prova indireta. Nesse tipo de prova, demonstramos que uma proposição logicamente equivalente a A B é verdadeira.

prova da contrapositiva:
Provamos que
n˜ao(B ) ⇒ n ˜ao(A)

é verdadeira e concluímos que A B é verdadeira pela equivalência lógica

A ⇒  B ≡  n˜ao(B ) ⇒ n˜ao (A).
(44)

Por exemplo, a implicação

 2
n  par ⇒  n par
(45)

é verdadeira para todo número natural (tente uma prova direta).

Vamos provar a contrapositiva de (45)

            2
n impar  ⇒  n  impar

Por (44) temos (45) verdadeira.

prova por vacuidade:
A proposição A B é verdadeira porque conseguimos provar que A é falso. Veja o exercício 1 na aula 7.
prova por contradição:
Na prova por contradição assumimos que a negação da proposição a ser provada é verdadeira e derivamos disso uma contradição , ou seja, uma proposição falsa. De fato, se soubermos provar que não(C) F é verdadeiro, então concluiremos a partir de definição de condicional que C é verdadeiro.

No caso de provar que A B por contradição, provamos que não(A B) F e verdadeiro, que equivale a A e  não(B) F ser uma proposição verdadeira.

O exercício 2 mostra algumas equivalências usadas nessa técnica.

Vamos provar por contradição:
Teorema B. Se a e b são números naturais coprimos, então não são ambos par.

Demonstração. Vamos provar que

para todo a, para todo b, (mdc (a,b) = 1 ⇒ n˜ao (a par e b par))
por contradição.

Sejam a e b números naturais, vamos provar que é verdade a proposição

mdc (a,b) = 1 e n˜ao (n˜ao (a par e b par)) ⇒ F.
Suponha que mdc(a,b) = 1 e (a par e b par) é verdadeiro.

Se mdc(a,b) = 1 e (a par e b par) então (a par e b par).

Se (a par e b par) então mdc(a,b) 2. Se mdc(a,b) 2 então mdc(a,b)1 portanto, por silogismos hipotético

mdc (a,b) = 1 e (a par e b par) ⇒ mdc (a,b) ⁄= 1

cuja conclusão é uma contradição, ou seja, mdc(a, b)≠1 é falso.

Essa demonstração não foi feita em aula. Vamos provar por contradição:
Teorema B’. Se d e e são números naturais, então
     (     d         e     )
mdc    ---------,----------  = 1.
       mdc (d,e) mdc (d,e)

Demonstração. Sejam d e e números naturais, vamos provar que é verdade a proposição

    (     d          e    )
mdc   ----------,---------- >  1 ⇒ F.
      mdc (d,e ) mdc (d,e)
Suponha que mdc(d∕mdc(d,e),e∕mdc(d,e)) = k e k > 1 é verdadeiro.

Se mdc(d∕mdc(d,e),e∕mdc(d,e)) = k então k divide d∕mdc(d,e) e k divide e∕mdc(d,e), portanto kmdc(d,e) divide d e kmdc(d,e) divide e.

Se k > 1 então kmdc(d,e) > mdc(d,e), uma contradição.

Vamos provar por contradição:
Teorema C. √--
 2 é irracional.

Demonstração. Vamos provar que

√ --
  2 ⁄∈ ℚ

por contradição, ou seja, vamos provar que

√ --
  2 ∈ ℚ ⇒  F.

Suponha que √ --
  2 .

Se √ --
  2 então, por definição de , existem naturais positivos d e e tais que √ --
  2 = d
e.

Façamos

        d               e
a = ----------e b = ----------
    mdc (d,e)       mdc (d,e)
e temos mdc(a,b) = 1 pelo teorema B’, portanto, até aqui provamos
√ --                        ( √ --  a                )
  2 ∈ ℚ ⇒  existe a, existe b,  2 = --e mdc (a,b) = 1  .
                                    b

Se √ --
  2 = a
b então 2 = a2∕b2.
Se 2 = a2∕b2 então a2 = 2b2.
Se a2 = 2b2 então a2 é par.
Se a2 é par então a é par, pelo teorema A acima.
Se a é par então existe k , a = 2k.
Se a = 2k então 2b2 = 4k2.
Se 2b2 = 4k2 então b2 = 2k2.
Se b2 = 2k2 então b2 é par.
Se b2 então b é par.

Se a é par e b é par, então mdc(a,b) 2, que é uma contradição.

Exercício 2. Prove as equivalências lógicas, onde P,Q,R são proposições quaisquer.

  1. (P Q) ((P e  não Q) (R e  não R)).
  2. (P Q) ((P e  não Q) não P).
  3. (P Q) ((P e  não Q) Q).

Mais exemplos

Outra prova do teorema C . Seja x = √2--. Vamos provar que

    √ --
x =   2 ⇒  x ⁄∈ ℚ

por contradição. De fato, provaremos que existem naturais positivos a e b tais que

    √ --               a
x =   2 e x ∈ ℚ ⇒  x = b- e mdc (a,b) = 1
(46)

    √ --               a-
x =   2 e x ∈ ℚ ⇒  x = b  e mdc (a,b) ⁄= 1
(47)

e derivaremos daí uma contradição.

Vamos provar (46). Suponha que x . Então existem naturais positivos d e e tais que x = d
e. Tomemos a = ---d---
mdc(d,e) e b = ---e---
mdc(d,e), logo mdc(a,b) = 1.

Agora, vamos provar (47). Se x = ab então x2 = a2∕b2, ou seja, 2 = a2∕b2. Multiplicando ambos os lados por b2 temos 2b2 = a2, logo a2 é par. Se a2 é par então a é par, pelo teorema A acima. Se a é par então a = 2k e substituindo em 2b2 = a2 deduzimos 2b2 = 4k2, logo b2 = 2k2, ou seja b2 é par. Pelo mesmo argumento dado anteriormente, b é par. Portanto, mdc(a,b) 2.

Usamos o teorema 16 e a partir de (46) e (47) obtemos

x = √2--e x ∈ ℚ ⇒  (x =  a-e mdc (a, b) = 1 e mdc (a,b) ⁄= 1)
                         b
(48)

e simplificando o lado direito (teorema 13)

      a-
(x =  b e mdc (a, b) = 1 e mdc (a,b) ⁄= 1) ⇒

(mdc (a,b) = 1 e mdc (a,b) ⁄= 1)
(49)

finalmente, pelo silogismo hipotético (veja (16) na lista 1) de (48) e (49)

     √--
x =   2 e x ∈ ℚ  ⇒ (mdc (a, b) = 1 e mdc (a,b) ⁄= 1)
e a conclusão é uma contradição.

Outra prova do teorema B . Sejam a e b números naturais. Vamos provar que

mdc (a, b) = 1 ⇒  n˜ao (a par e b par).
Por (44) basta provarmos a contrapositiva
(a par e b par) ⇒ n˜ao(mdc (a,b) = 1).

Suponha a par e b par. Então 2 divide a e 2 divide b, por definição de par, portanto, mdc(a,b) 2, ou seja, não(mdc(a,b) = 1) é verdadeiro.

Aula 9

Demonstrações de proposições quantificadas existencialmente: Para demonstrar uma proposição da forma existe x, P(x), usualmente, ou

Exemplos:

Teorema D. Existe um inteiro positivo que pode ser escrito como a soma de dois cubos de duas maneiras diferentes.

Prova construtiva. É suficiente verificar que 1729 = 103 + 93 = 123 + 13.

Teorema E. Existem x, y irracionais tais que xy .

Prova não-construtiva. Vimos na aula anterior que √ --
  2 é irracional. Se √ --
  2√ -
  2 é racional então tomamos x = y = √2--, senão tomamos x = √2-- -
√2 e y = √2- e temos xy = √ --
  2√2√2 = √ --
  22 = 2 que é racional.

Teorema F. Existe uma partição {A,B} de com A e B infinitos.

Prova construtiva. Defina A = {2k: k } e B = {2k+1: k }. Nenhum desses conjuntos é finito (dê uma prova por contradição) e definem uma partição dos inteiros (prove).

Teorema G. Se p
q então existe n , p
q < n.

Prova construtiva. Se p = 0 então tomamos n = 1, senão tomamos n = |p| + 1. No segundo caso p
q ≤|p
q| < |p| + 1 pois |q|≥ 1.

Teorema H. O poninômio p(x) = x3 + x - 1 tem exatamente uma raiz real.

Prova não-construtiva, precisa de cáculo 1. Pelo Teorema do Valor Intermediário para todo b [p(0),p(1)], existe a [0, 1] tal que p(a) = b.

Mas p(0) = -1 e p(1) = 1 então podemos tomar b = 0 e concluir que existe a [0, 1] tal que p(a) = 0.

Resta provar que a raiz é única. (Exercício. Dica: use o Teorema do Valor Médio e prove por contradição.)

Aula de EXERCÍCIOS E DÚVIDAS

Aula 10

Prova

questão 1 - 10 pts Sejam a,b,c naturais. Dê uma prova direta para: se a divide b e a divide c então a divide b + c.

Sejam a,b,c naturais.
Se a divide b então existe q, aq = b.
Se a divide c então existe r, ar = c.
Se aq = b e ar = c então aq + ar = b + c.
Se aq + ar = b + c então a(q + r) = b + c.
Se a(q + r) = b + c então a divide b + c.
Portanto, se a divide b e a divide c então a divide b + c.

questão 2 - 10 pts Prove pela contrapositiva: se x B - A então x ⁄∈ A B.

Sejam A,B conjuntos, vamos provar a contrapositiva
n˜ao(x ⁄∈ A ∩ B ) ⇒ n ˜ao(x ∈ B - A ).

n ˜ao(x ⁄∈ A ∩ B ) ⇒ n ˜ao(x ∈ B - A )  ≡   n˜aon ˜ao(x ⁄∈ A ∩ B ) ou n˜ao(x ∈ B  - A )

               (usando  De  Morgan )  ≡   n˜ao( n˜ao(x ⁄∈ A ∩ B ) e (x ∈ B - A ))
        (definicao  de nao pertence)  ≡   n˜ao((x ∈ A ∩ B ) e (x ∈  B - A ))

(definicao de intersecao e diferenca) ≡   n˜ao((x ∈ A  e x ∈ B ) e (x ∈ B e x ⁄∈ A ))
 (associatividade e comutatividade )  ≡   n˜ao((x ∈ A  e x ⁄∈ A ) e x ∈ B)

                       (teorema  1)  ≡   n˜ao(F  e x ∈ B)
                       (dominacao )  ≡   n˜ao(F )

                 (de finicao de nao)  ≡   V

questão 3 - 10 pts Prove por contradição: (A - B) B = .

Vamos provar (A - B) B∅⇒ F.
Suponha (A - B) B.
Se (A - B) Bentão existe x, x (A - B) B.
Se x (A - B) B então x A - B e x B.
Se x A - B e x B então (x A e x ⁄∈ B) e x B.
Se (x A e x ⁄∈ B) e x B, então x A e (x ⁄∈ B e x B).
Se x A e (x ⁄∈ B e x B), então x A e F,
mas x A e F F.
Portanto, (A - B) B∅⇒ F.

questão 4 - 10 pts Prove: Se A B = então ∅⊆ A.

Como ∅⊆ A é verdadeiro (provamos em sala), a implicaçãoé verdadeira.

questão 5 - 20 pts Leia com atenção o seguinte teorema e uma suposta demonstração.

Teorema Sejam a, b, c, d números naturais. Se c divide a e c divide b e d divide a e d divide b e c não divide d, então dc divide a e dc divide b._________________________________________________________________________

Demonstração. Se d divide a e b, então existem x e y tais que a = xd e b = yd.

Se c divide a então c divide xd.
Se c divide xd e não divide d, então c divide x.

Analogamente, se c divide b então c divide yd.
Se c divide yd e não divide d, então c divide y.

Se c divide x e y, então existem z e w tais que x = cz e y = cw.

Das conclusões acima temos a = xd = (cz)d = (dc)z e b = yd = (cw)d = (dc)w, portanto, dc divide a e dc divide b.

_________________________________________

(10 pts)
Dê um contraexemplo para a afirmação feita no teorema.
a = 6, b = 12, c = 6, d = 3.
(10 pts)
Indique o(s) erro(s) na demonstração.
Estão erradas as implicações:

Se c divide xd e não divide d, então c divide x.
Se c divide yd e não divide d, então c divide y.

No contraexemplo acima 6 divide 2 3 mas não divide 2 e não divide 3.

Um natural n pode dividir um produto de naturais pq mesmo que n não divida p e n não divida q.

questão 6 - 30 pts Determine uma fórmula em função de r e n, com r1, para

n∑-1
   iri-1.
i=1

(Dica: use o truque da derivada explicado na lista. Pode usar que i=0nri = rn+1--1
 r-1.)

Considere a soma dos n primeiros termos de uma PG que começa em 1 e tem razão r, onde n e r \{1}. Então
                          n
1 + r + r2 + ⋅⋅⋅ + rn-1 = r---1-.
                          r - 1

Podemos olhar para as duas expressões em cada lado da igualdade acima como uma função em r e derivá-las com respeito a r. No lado esquerdo temos

                      n∑- 1                      n∑- 1
f: ℝ →  ℝ,     f(x) =     xi    e     -d-f(x) =     ixi- 1
                                      dx
                       i=0                        i=1
(50)

e no lado direito

                             n                           n     n     n-1
g: ℝ \ {1} →  ℝ,     g(x) = x----1-    e     d-g (x) = nx----x-----nx----+-1.
                             x - 1           dx               (x -  1)2
Se f(r) = g(r), então -d
drf(r) = -d
drg(r), ou seja,
n-1           n   n      n-1
∑  iri-1 = nr----r----nr----+--1.
                  (r - 1)2
i=1
(51)

questão 7 - 30 pts Provamos em aula que o polinômio p(x) = x3 + x- 1 tem uma raiz real usando o Teorema do Valor Intermediário. Agora, usando contradição e o Teorema do Valor Médio prove que essa raiz é única.

Suponha que p(x) tem duas raízes e vamos deduzir uma contradição. Sejam r1 e r2 raízes distintas de p(x), de modo que r1 < r2. Como p(x) é contínua em [r1,r2] e derivável em (r1,r2) então podemos usar o teorema do valor médio para concluir que existe um ponto c [r1,r2] tal que
 ′     p(r2) - p(r1)
p(c) = -------------
          r2 - r1

mas p(r2) - p(r1) = 0, portanto p(c) = 0 que é uma contradição pois o p(x) = 3x2 + 1 > 0 qualquer que seja x.

Teorema do Valor Médio. Se f é contínua em [a,b] e derivável em (a,b) então existe c (a,b) tal que

f ′(c) = f-(b)---f(a)-
          (b - a)
onde fé a derivada de f.

Aula 11

correção da prova

Aula 12

A prova de invariantes ficará pra depois de indução.

Um programa está correto se a saída está correta para toda entrada. A prova da correção do programa tem duas partes: provar que a resposta está correta se o programa terminar ( correção parcial ), provar que o programa termina.

A seguir, p e q são proposições.

Definição 14. Um programa, ou trecho de programa, S está parcialmente correto com respeito a pré-condição p e a pós-condição q se sempre que p for verdadeiro para os valores de entrada de S e S terminar, então q é verdadeiro para os valores de saída de S.

Notação p{S}q significa S está parcialmente correto com respeito a pré-condição p e a pós-condição q.

Exemplo Por exemplo, se p é x = 1 e q é z = 3 e S é o trecho de programa

    y:=2;  
    z:= x + y;

então, p{S}q. De fato, suponha p. Após a execução de S, y = 2 e z = 1 + 2 pois de p temos x = 1. Portanto, z = 3.

Argumentos válidos para correção parcial de programas:

1. Composição

p{S1 }q e q{S2}r ⇒  p{S1;S2 }r

2. Condicional

2.1. No caso

    Se (condição) então S;

o argumento é

((p e condi¸c˜ao){S }q e (p e n ˜ao(condi¸c˜ao)) ⇒  q)

                     = ⇒
        p {Se (condi ¸c~ao ) ent~ao S}q

2.2. No caso

    Se (condição) então S_1;  
       senão S_2;

o argumento é

((p e condi¸c˜ao){S  }q e (p e n ˜ao(condi¸c˜ao)){S }q )
                 1                          2
                      = ⇒
   p{Se  (condi ¸c~ao)  ent~ao  S ; sen~ao S  }q
                              1           2

3. Laços

No caso

    Enquanto (condição)  
           S;

o argumento é

               (p e condi¸c˜ao ){S }p

                      = ⇒
p {Enquanto  (condi ¸c~ao) S} (n ˜ao(condi¸c˜ao) e p)

A proposição (p e condição){S}p é o invariante do laço que por enquanto vamos assumir que é dado e é verdadeiro. Provar que uma proposição é invariante de laço precisa de indução, que veremos mais tarde.

Exemplo. Seja S o programa

multiplica(m,n:inteiros)  
   /* Dados  : m e n inteiros */  
   /* Devolve: m n */  
 
/* p:  m e n inteiros */  
 
   se (n<0) então a:=-n;  
     senão a:=n;  
 
/* q:  p e a=|n| */  
 
   k:=0;  
   x:=0;  
 
/* r:  q e k=0 e x=0 */  
 
   enquanto (k<a)  
 
       /* (invariante do laço)  x=mk e k <= a */  
 
     {  x:=x+m;  
        k:=k+1; }  
 
/* s:  x=ma e a=|n| */  
 
   se (n<0) então produto:=-x;  
     senão produto:=x.  
 
/* t:  produto=mn */  

Sejam p: m  e n e q: p e a = |n| as proposições dadas no algoritmo, seja R o trecho de programa

R : se (n<0 ) ent~ao a:= -n; sen~ao a:=n.

Vamos provar

p{R }(a = |n|).
(52)

Assuma m e n .

Se m e n e n < 0 então após R terminar temos a = -n. Se n < 0 então |n| = -n portanto a = |n|, portanto

(m  ∈ ℤ e n ∈ ℤ e n < 0 ){R }(a =  |n |).
(53)

Agora, se m e n e não(n < 0) então após R terminar temos a = n. Se não(n < 0) então |n| = n portanto a = |n|. Portanto,

(m  ∈ ℤ e n ∈ ℤ  e n˜ao(n < 0 )){R }(a = |n|).
(54)

Portanto, de (53), (54) e do argumento 2.2 temos (52), e, portanto, p{R}q.

Agora, considere o trecho

T : k:=0;x:=0

e vamos provar (p e a = |n|){T}(q e k = 0 e x = 0).

Se V então após {k:=0;x:=0} vale k = 0 e x = 0, portanto

q{k:=0;x:=0  }(q e k = 0 e x = 0)
(55)

para qualquer proposição verdadeira q, em particular quando

q: m ∈ ℤ  e n ∈ ℤ e a = |n |

é verdadeira.

Assuma r: q e k = 0 e x = 0. Se k < a (a condição do laço) então o invariante

x =  mk  e k ≤ a

é verdadeiro antes da primeira rodada do laço pois 0 = m0 e 0 ≤|n|. Assuma

x =  mk  e k ≤ a e k < a

antes de uma execução do trecho

U  : x:=x+m; k:=k+1;

Considere uma execução de U e denote por xe kos valores das variáveis x e k antes dessa execução. Então, por hipótese

  ′      ′   ′
x  = mk   e k ≤ a

e (condição) k< a; após a execução de U teremos x = x+ m e k = k+ 1.

Se x = x+ m e x= mk, então x = (mk) + m = m(k+ 1).
Se k = k+ 1 x = m(k+ 1) então x = mk.
Se k< a então k+ 1 a.
Portanto, após a execução de U o invariante é verdadeiro, ou seja, “provamos”

(x = mk  e k ≤ a e k < a){U }(x = mk  e k ≤ a)

e do argumento para laços, temos

(x = mk  e k ≤ a){enquanto   (k<a)  U }(x = mk )

ainda, (não(k < a) e x = mk e k a) (x = ma). Portanto,

r{enquanto   (k <a) U} (x =  ma )

logo r{enquanto (k<a) U}s, onde s: x = ma e a = |n|.

Finalmente, assuma s, denote por Q o trecho de programa

se  (n<0)  ent~ao  produto:= - x; sen~ao produto:=x
e vamos provar t: produto = mn.

Se s, então x = m|n|.
Se x = m|n| e n < 0 então após Q, produto = -x.
Se produto = -x e x = m|n| e n < 0 então produto = -m|n| = -m(-n) = mn. Portanto t.

Agora, se x = ma e a = |n|, então x = m|n|.
Se x = m|n| e não(n < 0) então após Q, produto = x.
Se produto = x e x = m|n| e não(n < 0) então produto = m|n| = mn. Portanto, pelo argumento 2.2 para condicionais

(x = ma  e a = |n |){Q }(produto =  mn ).

Resumindo, provamos

  1. p{se (n<0) então a:=-n; senão a:=n}q;
  2. q{k:=0; x:=0}r;
  3. r{enquanto (k<a){ c:=x+m; k:=k+1; }}s;
  4. s{se (n<0) então produto:=-x;senão produto:=x}t;

De 1 e 2 temos

p{se  (n<0)  ent~ao  a:=-n;  sen~ao  a:=n;  k:=0;  x:=0 }r.
(56)

pela regra da composição. De 3 e 4 temos, por composição novamente

r{enquanto   (k<a){c:=x+m;   k:=k+1 };
   se  (n<0)  ent~ao  produto:= - x;

        sen~ao produto:=x  }t.
que junto com (56), mais a regra da composição resulta que
(m ∈  ℤ e n ∈ ℤ){S }(produto = mn  ).

Aula 13

Um dos axiomas de Peano para os números naturais diz que para X

0 ∈ X  e (para todo n, (n ∈ X  ⇒  n + 1 ∈ X )) =⇒ X  = ℕ.
(57)

Com isso temos o seguintes argumentos válidos: seja P(n) uma sentença aberta.

Teorema 29. Se

P (0) e para todo n ∈ ℕ, (P (n) ⇒ P (n + 1))

então

para  todo  n ∈ ℕ, P (n).

Provaremos:

Teorema 30. Seja a . Se

P (a) e para todo  n ≥ a, (P (n) ⇒ P (n + 1))

então

para  todo n ≥ a, P (n).

Demonstração. Para

X  = {m  ∈ ℕ : P(m  + a)}.

se P(a) então 0 X. Seja n a e defina m = n - a. Se P(n) P(n + 1) então m X m + 1 X. Por (57) X = , portanto, P(n) para todo n a.

Indução matemática é uma técnica de prova para proposições da forma para todo n a, P(n). Numa prova por indução provamos P(a) que é dito a base da indução, e provamos para todo n a, (P(n) P(n + 1)) que é dito o passo da indução.

Exemplo Para todo n , i=0ni = n(n + 1)2.

Exemplo Para todo n 5, 2n > n2.

A base é importante, sem ela poderíamos pensar que sabemos provar

n(n + 1) é ímpar para todo n 1

que obviamente não vale, pois conseguimos provar a implicação do passo da indução para essa sentença. Vamos provar que

para todo n 1, n(n + 1) ímpar (n + 1)(n + 2) ímpar.

Seja n > 1 um natural e suponha que n(n + 1) é ímpar. Então

(t + 1)(t + 2) = (t + 1)t + (t + 1)2
que é da forma ímpar + par, portanto ímpar.

A passo é importante, uma prova descuidada pode por tudo a perder. Por exemplo, seja P(t) a sentença

para todo a ∈ ℕ, para todo  b ∈ ℕ, (max {a,b} = t ⇒ a = b).

Se max{a,b} = 0 então a = b = 0, portanto a base é verdadeira.

Seja t , suponha que

para  todo  a, para todo b,(max {a,b} = t - 1 ⇒  a = b)

e vamos provar que para todo a, para todo b, (max{a,b} = t a = b). Se max{a,b} = t então max{a - 1,b - 1} = t - 1, portanto pela hipótese acima a - 1 = b - 1, logo a = b.

Claramente, P(t) é falso (determine um contraexemplo). O problema com o passo é que P(0) ⁄⇒ P(1) quando a ou b vale 0.

Aula 14

Exemplo. Todo natural n 2 pode ser escrito como produto de primos.

Numa tentativa de prova usando o teorema 30 temos:

-a base é fácil, n = 2 é primo;
-no passo temos que provar que se n é produto de primos então n + 1 é produto de primos. Se n + 1 é primo a implicação é verdadeira (vacuidade), se n + 1 é composto então, por definição de número composto n + 1 = ab onde 1 a,b n são números naturais.

Se soubéssemos que a e b são produtos de primos então n + 1 seria produto de primos, mas só o que sabemos é que n é produto de primos.

Teorema 31. Sejam a e P(n) uma sentença aberta. Se

P (a)   e   para todo  n ≥ a, ((para todo k ∈ [a..n ], P (k)) ⇒ P (n + 1))

então

para  todo n ≥ a, P (n).

Ou seja, para todo n a, P(n) é verdadeiro sempre que P(a) é verdadeiro e para todo n a é verdadeiro que

(P (a) e P (a + 1) e ⋅⋅⋅ e P (n)) ⇒ P (n + 1).

Demonstração. Exercício.

Exemplo. Todo natural n 2 é primo ou pode ser escrito como produto de primos.

Exemplo. Todo inteiro n 7 poder ser escrito como múltiplo de 2 mais múltiplo de 5.

Exemplo. Seja P(n) a sentença: para todo n , 6n = 0.

Vamos provar P(n) por indução.

P(0) é verdadeiro. Seja n um natural arbitrário e vamos provar que para todo n, P(0) e P(1) e ⋅⋅⋅ e P(n) P(n + 1). Suponhamos P(0) e P(1) e ⋅⋅⋅ e P(n). Então

6(n + 1) = 6 ⋅ n + 6 ⋅ 1 = 0 + 0 = 0
pois de P(n) temos 6n = 0 e de P(1) temos 6 1 = 0; qual é o erro ?

Aula 15

Boa-Ordenação

Seja A . O menor elemento de A, quando existe, é o elemento m A tal que para todo a A, m a.

Notação. min A denota o menor elemento de A, se ele existe.

Exemplo. A = (0, 1) não tem menor elemento. (prove)

Exemplo. A = [0, 1) tem menor elemento, min A = 0. (prove)

Teorema 32. Se A e

(para todo x ∈ [0..n ], x ⁄∈ A ) e (existe y ∈ [0..n + 1 ], y ∈ A ).

então n + 1 é o menor elemento de A.

Demonstração. Se para todo x [0..n], x ⁄∈ A e existe x [0..n + 1], x A então n + 1 A.

Agora, precisamos provar que para todo a A, n + 1 a.

Por contradição. Suponha que não(para todo a A, n+1 a), ou seja,

existe a ∈ A, a < n + 1.

Seja c A tal que c < n + 1 (instanciação existencial, teorema 22). Se c < n + 1 então c [0..n] portanto c ⁄∈ A, portanto

existe a ∈ A, a < n + 1 ⇒  c ∈ A e c ⁄∈ A

essa última proposição é uma contradição.

Teorema 33. Seja A . Se Aentão A tem um menor elemento.

Demonstração. Seja A um subconjunto não-vazio dos naturais. Vamos provar que A tem menor elemento em dois casos: 0 A e 0 ⁄∈ A.

No caso 0 A, o 0 é o menor elemento de A.

Assumimos que 0 ⁄∈ A e definimos

X  = {n ∈  ℕ: [0..n] ⊂ ℕ - A }.

0 X, pois se 0 ⁄∈ A então 0 - A, logo {0} ⊂ - A. Notemos que {0} = [0..0].

Se Aentão X.

Se 0 X e Xentão pela a contrapositiva do axioma de Peano (57)

X  ⁄= ℕ = ⇒  0 ⁄∈ X ou  n˜ao (para  todo  n, (n ∈ X ⇒  n + 1 ∈ X ))

concluímos que

n˜ao (para todo  n, (n ∈ X  ⇒ n +  1 ∈ X ))

≡   existe n, n˜ao(n ∈ X ⇒  n + 1 ∈ X )
≡   existe n, n˜ao( n˜ao(n ∈ X ) ou (n + 1 ∈ X ))

≡   existe n, ((n ∈ X ) e n ˜ao(n + 1 ∈ X ))

Seja m tal que m X e m + 1 ⁄∈ X.
Agora, usando a definição de X,
se m X então [0..m] - A.
[0..m] - A para todo x [0..m], x ⁄∈ A;
se m + 1 ⁄∈ X então [0..m + 1] ⁄⊂ - A;
[0..m + 1] ⁄⊂ - A existe y [0..m + 1], y A;
portanto

(para todo x ∈ [0..m ], x ⁄∈ A ) e (existe y ∈ [0..m + 1], y ∈ A)

e pelo teorema 32, m + 1 é o menor elemento de A.

Exemplo. para todo inteiro n 5, existem naturais a e b tais que n = 2a + 5b.

Demonstração. Vamos provar por contradição. Suponha que a afirmação seja falsa e seja A o conjunto de todos os naturais maiores ou iguais a 5 que não podem ser escritos na forma 2a + 5b. Como Apodemos tomar m o menor elemento de A. De m A temos m 5, portanto m - 1 4. Da minimalidade de m temos que m - 1 = 2a + 5b.

Se a 1 e b 0 então m - 1 = 2a + 5b 2 + 0 = 2, portanto, a > 1 ou b > 0.

Se a > 1 então m = 2a + 5b + 1 = 2(a - 2) + 5(b + 1).
Se b > 0 então m = 2a + 5b + 1 = 2(a + 3) + 5(b - 1).

Em ambos os casos, temos uma contradição.

Observação importante : os teoremas 29, 30, 31 e 33 são equivalentes. Prove esse fato.

Aula 16

Invariante de laço.

Consideremos o seguinte algoritmo:

fat(n)  
/* Dados  : n natural */  
/* Devolve: n !*/  
 
   i:=1;  
   f:=1;  
   enquanto (i < n)  
    {  
      f := f*(i+1);  
      i := i + 1;  
    }  
   devolva f.

Vamos provar que a seguinte proposição é um invariante do laço na terceira linha do algoritmo

i ≥ 1 e i ≤ n e f = i!
(58)

Antes, porém, notemos que o invariante e a negação da condição do laço resulta que quando o laço termina temos i 1 e i n e f = i! e não(i < n), ou seja, i = n e f = n!, provando a correção parcial do algoritmo.

Vamos provar que a proposição (58) é verdadeira independente do número de vezes que o laço é executado. A prova é por indução no número de iterações do enquanto.

Suponhamos que a condição do laço vale, ou seja, i < n. Antes da primeira iteração (58) é verdadeiro pois i = f = 1! = 1.

Suponhamos que i < n e que i 1 e i n e f = i!. Após a execução de { f := f*(i+1); e após a execução de { i := i+1;} temos que para o novo valor de i, i 1 e i n e f = i!.

Voltemos ao exemplo da aula 12.

/* m e n inteiros e a=|n| e k=0 e x=0 */  
 
   enquanto (k<a)  
 
       /* invariante:  x=mk e k <= a */  
 
     {  x:=x+m;  
        k:=k+1; }

Suponha que a condição do laço, k < a, é verdadeira. Antes da primeira iteração o invariante é verdadeiro.

Suponha que a condição do laço, k < a, é verdadeira e que vale o invariante. Considere uma execução de { x:=x+m; k:=k+1; } e denote por xe kos valores das variáveis x e k antes dessa execução. Então, por hipótese

  ′      ′   ′
x  = mk   e k ≤ a

e (condição) k< a; após a execução temos x = x+ m e k = k+ 1.

Se x = x+ m e x= mk, então x = (mk) + m = m(k+ 1).
Se k = k+ 1 x = m(k+ 1) então x = mk.
Se k< a então k+ 1 a.
Portanto, após a execução o invariante é verdadeiro

Algoritmos recursivos.

Exemplo 1.

fat(n)  
 
   /* Dados  : n natural */  
   /* Devolve: n !*/  
 
1.   se (n=0) devolva 1;  
2.   devolva n*fat(n-1).

A prova da correção é fácil usando indução.

Demonstração. Vamos provar que fat(n) = n! usando indução em n . Se n = 0 então o algoritmo devolve 1 na linha 1, ou seja, então fat(n) = 1

Seja n . Assuma que fat(n) = n! e vamos provar que fat(n + 1) = (n + 1)!. Como n + 1 1, pelo algoritmo fat(n + 1) = (n + 1)*fat(n) e por hipótese fat(n) = n!, portanto, fat(n + 1) = (n + 1) * n! = (n + 1)!. Pelo teorema 29 temos fat(n) = n! para todo n .

Exemplo 2.

pot(a,n)  
 
   /* Dados  : a real positivo e n natural */  
   /* Devolve: a^n */  
 
1.   se (n=0) devolva 1;  
2.   devolva a*pot(a,n-1).

Demonstração. Se n = 0 então o algoritmo devolve 1, ou seja pot(a,n) = 1 = an.

Seja n um natural arbitrário e suponha que pot(a,n) = an. Então n + 1 1 portanto, pelo algoritmo, pot(n + 1) = a*pot(a,n) = a * an = an+1.

Aula 17

semana academica

Aula 18

aula de exercícios

Duas resoluções propostas pelo Leandro.

Exercício 18. Prove que o seguinte programa está parcialmente correto.

Divisão_inteira(a,d)  
 
  /* Dados  : a natural  e  d natural positivo */  
  /* Devove : inteiros q  e r tais que a=dq+r e 0 <= r < d */  
 
1.  r := a;  
2.  q := 0;  
3.  enquanto (r >=  d)  
4.  { r := r-d;  
5.    q := q+1; }  
6.  devolva q,r.

Demonstração. Sejam R o trecho de programa definido pelas linhas 1 e 2, S o trecho de programa definido pelas linhas 3 – 5, T todo o programa, e p e t as proposições:

p   :  a ∈ ℕ e d ∈ ℕ \ {0};

 t  :  q ∈ ℤ e r ∈ ℤ e a = dq + r e 0 ≤ r < d.
É imediato que
p{R }(q ∈ ℤ e r ∈ ℤ e r = a e q = 0).
(59)

Portanto,

p {R} (q ∈ ℤ  e r ∈ ℤ e a = dq + r e 0 ≤ r).

Assumindo

u: q ∈ ℤ e r ∈ ℤ e r ≥ 0 e a = dq + r

como invariante do laço de S, temos, já que (r ⁄≥ d) é a condição de parada do laço, que

(q ∈ ℤ er ∈ ℤ e a = dq+r e 0 ≤ r){S} (q ∈ ℤ e r ∈ ℤ er ≥ 0 ea =  dq+r e r ⁄≥ d).

Logo,

p{R; S }(q ∈ ℤ e r ∈ ℤ e a = dq + r e 0 ≤ r < d).

e, dessarte, p{T}t.

Resta-nos ainda mostrar u serve como invariante do laço definido por S. Como r 0 e a = dq + r se r = a e q = 0, temos, da asserção 59, que p{R}u. Analisemos agora o que acontece quando executamos {r := r-d; q := q + 1} assumindo as linhas 4 e 5: sendo re qos novos valores de, respectivamente, r e q, verificamos que q= q + 1 e r= r - d. Consequentemente, já que r d, r′≥ 0,

   ′   ′
dq  + r = d (q + 1) + (r - d) = dq + r = a,

e, finalmente,

p{R }(u e r ≥ d){r :=  r - d;q :=  q + 1 }(q ∈ ℤ e r ∈ ℤ e r ≥ 0 e a = dq+ r).

o que prova que u é de fato um invariante para o laço definido por S.

Antes do próximo exercício, vamos provar que: Para quaisquer naturais não nulos a e b,

(  )    (     )    (      )
  a      a - 1       a - 1
  b  =     b     +   b - 1 .
(60)

Demonstração. Como a e b são diferentes de 0,

b!((a - 1) - b)! = b!(a---b)! e (b - 1)!((a - 1) - (b - 1))! = b!(a --b)!.
                    a - b                                       b

Logo,

(      )    (     )
  a - 1      a - 1        ---(a---1)!----   ---------(a --1)!---------
    b    +   b - 1    =   b!((a - 1) - b)! + (b - 1)!((a - 1) - (b - 1))!

                      =   b(a --1)! +-(a---b)(a --1)!
                                  b!(a - b)!
                          (a)
                      =       ,
                           b
como queríamos mostrar.

Exercício 6.h Prove usando indução que para todo n 0, j=0n( )
 n
 j = 2n.

Demonstração. Sabemos que

∑ 0 (  )   (  )
      0  =   0   = 1 = 20.
 j=0   j      0

Seja k um número natural qualquer. Por indução, suponhamos então que, para todo t [1..k], valha que

∑ t (t )
         = 2t.
j=0   j

Como, de (60),

   (      )    (     )        ((  )    (     ) )   (      )
k∑+1  k + 1      k + 1     ∑k     k        k          k + 1
            =           +           +            +          ,
j=0     j          0       j=1    j      j - 1        k + 1

e, como

           (         )                            (         )
∑k  (k )     ∑k  (k )     (k )     ∑k  (  k  )      ∑k  (k)      (k )
         =              -       e               =             -      ,
j=1   j      j=0   j        0      j=1  j - 1       j=0  j        k

temos, da hipótese da indução, que

k∑+1 (      )
      k + 1  = 1 + 2k - 1 + 2k - 1 + 1 = 2k+1,
        j
 j=0

como queríamos mostrar.

Aula 19

Funções

f : A → B

denota uma relação f A×B que associada a todo a A um único b B, esse denotado por f(a), ou seja, b = f(a).

A é o domínio da função, B é o contradomínio da função, b é a imagem de a por f. A imagem de f é o conjunto

       ⋃
Imf  =     {f(x)}.
       x∈A

Definição 15. Sejam f : A B uma fução com A , B , e X A. Então

  1. f é crescente em X se
    para todo x,  para todo y, (x < y ⇒  f(x) < f(y ))

  2. f é decrescente em X se
    para todo x,  para todo y, (x < y ⇒  f(y) < f(x ))

  3. f é não-crescente em X se
    para todo x,  para todo y, (x < y ⇒  f(x) ≥ f(y ))

  4. f é não-decrescente em X se
    para todo x, para todo  y, (x <  y ⇒ f (y) ≥ f(x)).

Funções chão e teto

Função teto : dada por

⌈x ⌉ = min{z ∈ ℤ : z ≥ x}.

Função chão : dada por

⌊x ⌋ = min{z ∈ ℤ : z ≤ x}.

Teorema 34. Sejam x e t .
: satisfaz

  1. x= x x .
  2. x= t t - 1 < x t,
  3. x= t x t < x + 1,
  4. é não-decrescente em ,
  5. x + t= x+ t.

Demonstração.

Aula 20

Teorema 35. Se f : é contínua, crescente e tal que

f (x ) ∈ ℤ ⇒ x ∈ ℤ

então

⌈f(⌈x⌉)⌉ = ⌈f (x)⌉.

Demonstração. Seja f : contínua, crescente e tal que f(x) x , vamos provar que ⌈f(x)⌉ = f(x)em dois casos. Sabemos por (61) que x ≤⌈x.

Se x = xentão ⌈f(x)⌉ = f(x). Resta provar o caso x < x.

Seja x um real tal que x < x. Se f é crescente, então f(x) < f(x). Tomemos o intervalo [f(x),f(x)]. Como f é contínua, para todo y [f(x),f(x)] existe a [x,x] tal que f(a) = y.

Se f(x) < f(x) então f(x)⌉≤⌈f(x)pelo item 4 do teorema 34.

Suponhamos que f(x)< f(x). Se f(x)> f(x) então f(x) é um inteiro entre f(x) e f(x).

Então f(x)⌉ ∈ [f(x),f(x)), portanto, existe a [x,x) tal que f(a) = f(x). Logo f(a) e, por hipótese, a , portanto a ⁄∈ [x,x), uma contradição.

Com isso temos f(x)⌉≤⌈f(x)e não(f(x)< f(x)), ou seja, f(x)= f(x).

Exemplo.
A função definida nos reais f(x) = x
k, com k é contínua (pois é uma função linear) crescente e tal que f(x) x (pois f(x) = t implica x = kt), portanto

⌈ ⌈x∕k⌉ ⌉   ⌈ x ⌉
  ------  =  --2 .
    k        k

Exercício. Prove que

⌈         ⌉   ⌈       ⌉
 ⌈x-⌉ +-m-  =   x +-m-  .
     n            n

Teorema 36. Sejam x e t .
: satisfaz

  1. x= x x .
  2. x= t t x < t + 1,
  3. x= t x - 1 < t x,
  4. é não-decrescente em ,
  5. x + t= x+ t.
  6. Se f : é contínua, crescente e tal que
    f(x) ∈ ℤ ⇒  x ∈ ℤ

    então

    ⌊f (⌊x⌋)⌋ = ⌊f(x)⌋.

Exemplo.
A função definida nos reais f(x) = x
k, com k é contínua (pois é uma função linear) crescente e tal que f(x) x (pois f(x) = t implica x = kt), portanto

⌊       ⌋
  ⌊x∕k⌋     ⌊ x ⌋
  --k---  =  k2- .

Teorema 37. Se x então

⌊- x⌋  =   - ⌈x ⌉ e
⌈- x⌉  =   - ⌊x ⌋.

Demonstração. Seja x e vamos provar que ⌊-x= -⌈x. Sabemos do teorema 34 item 3 que

x ≤ ⌈x ⌉ < x + 1

portanto

- x ≥  - ⌈x ⌉ > - x - 1

e do teorema 36 item 3 temos que

- ⌈x⌉ = ⌊- x⌋.

A prova de ⌈-x= -⌊xé exercício.

Aula 21

Definição indutiva . Seja n0 e A = {n : n n0}. Podemos definir uma função com domínio A usando indução da seguinte maneira:

Se X A é o conjunto dos pontos para os quais f está definida então pelo Princípio da Indução, teorema 31, X = A.

Exemplos

(1)
f(0) = 3 e para todo n 0, f(n + 1) = 2f(n) + 3.
(2)
F(0) = 1 e para todo n 0, F(n + 1) = (n + 1)F(n).
(3)
S(0) = 0 e para todo n 0, S(n + 1) = S(n) + g(n + 1), em que g é uma função
(4)
p(0) = 1 e para todo n 0, p(n + 1) = ap(n), em que a \{0}.
(5)
b(1) = 1 e para todo n 1, b(n + 1) = b(⌊    ⌋)
   n+21- + 1.
(6)
H(1) = 1 e para todo n 1, H(n + 1) = H(n) + -1--
n+1.

Notemos que nos exemplos acima a função F é F(n) = n!, a função S é S(n) = i=1ng(i) e a função p é a função p(n) = an. O que podemos dizer a respeito das outras funções? Vamos provar que f(n) = 3(2n+1 - 1) e que b(n) = log 2(n)+ 1.

Seja g: definida por g(n) = 3(2n+1 - 1). Vamos provar por indução que para f definida indutivamente no exemplo 1 acima vale para todo n, f(n) = g(n).

Se n = 0 então f(0) = 3 e g(0) = 3(2 - 1) = 3, portanto f(0) = g(0).

Agora, vamos provar que para todo n , se f(n) = g(n) então f(n + 1) = g(n + 1). Seja n um natural e assuma que f(n) = g(n). Então

f(n + 1)  =  2f (n) + 3 por defini¸c˜ao

          =  2g (n) + 3 por hip´otese
          =  2(3(2n+1 - 1 )) + 3 por defini¸c˜ao
                n+2
          =  3(2    - 1 )
          =  g (n + 1 ).
a primeira igualdade é a definição de f, na segunda foi usada a hipótese da indução, nas terceira e na última a definição de g.

Portanto, pelo teorema 29 para todo n, f(n) = g(n).

No caso do exemplo 5, seja : definida por (n) = log 2(n)+ 1. Vamos provar por indução que para b definida indutivamente no exemplo acima vale para todo n, b(n) = (n).

Se n = 1 então b(1) = 1 e (1) = log 2(1)+ 1 = 1, portanto b(1) = (1).

Agora, vamos provar que para todo n , se para todo k [1..n], b(k) = (k) então b(n+1) = (n+1). Seja n um natural e assuma que para todo k [1..n], b(k) = (k). Então

               (⌊      ⌋ )
b(n + 1)  =  b    n-+-1-   + 1  por defini¸c˜ao
                    2
               ⌊      ⌋
                 n-+-1-
          =  ℓ(    2    ) + 1 por hip´otese
                   ⌊      ⌋
          =  ⌊log (  n-+-1-)⌋ + 2  por defini¸c˜ao
                 2     2
                   n + 1
          =  ⌊log2(------)⌋ + 2 pelo teorema 36 item 6
                     2
          =  ⌊log2(n + 1) - 1⌋ + 2
          =  ⌊log2(n + 1)⌋ - 1 + 2 pelo teorema  36 item  5

          =  ⌊log2(n + 1)⌋ + 1
          =  ℓ(n + 1).
a primeira igualdade é a definição de b, a segunda hipótese de indução,a terceira definição de , a quarta teorema 36 item 6, a sexta teorema 36 item 5, e na última a definição de .

Portanto, pelo teorema 29 para todo n 1, b(n) = (n).

Agora, o que podemos dizer da função H do exemplo 6? Podemos dizer muita coisa, menos uma fórmula aritmética simples para computar H(n), que é conhecido como n-ésimo número harmônico.

Aula 22

Relembrando dois conceitos do cálculo: seja f :

lim n→∞f(n) = 0 se e somente se

para todo ε > 0, existe n0, (n ≥ n0 ⇒  |f (n )| < ε)

lim n→∞f(n) = se e somente se

para todo m,  existe n0,(n ≥ n0 ⇒  f (n ) > m )

Exercício. Suponha f(x) > 0 para todo n . Prove que se lim n→∞f(n) = 0 então lim n→∞--1-
f(n) = .

Nessa aula f e g são funções de em .

Definição 16. Dizemos que f é muito menor que g se

 lim  f(n)-= 0.
n→ ∞ g(n)

Denotamos esse fato por f g.

Exemplos.
(1) 1 log(log(n)).
(2) log(log(n)) log(n).
(3) log(log(n)) log(n).
(4) log(n) nε para todo ε > 0.
(5) nε nc para quaisquer 0 < ε < 1 c.
(6) nc nlog n para todo 1 c.
(7) nlog n exp(n).
(8) exp(n) nn.
(9) nn exp(exp(n)).

Definição 17.

f (n) = O (g(n))

se existe n0 0 e existe c > 0 tais que

n ≥  n0 ⇒  |f (n )| ≤ c|g(n)|

e nesse caso dizemos que g é um limitante superior assintótico para f.

Exemplos
(1) n2 + 2n + 1 = O(n2).
(2) 5 sin(n) = O(1)

Atenção o símbolo de = na definição não é a igualdade no sentido usual. Notemos que

                     2
          n  =   O(n )
n2 + 2n + 1  =   O(n2)
entretanto nn2 + 2n + 1. O(g(n)) é um conjunto de funções, a saber, aquelas que são “iguais” a O(g(n)).

Teorema 38. f(n) g(n) f(n) = O(g(n)).

Observação. A recíproca não vale.

Teorema 39. Se lim n→∞f(n)
g(n) = c, em que g > 0 e c > 0, então f(n) = O(g(n)).

Teorema 40. f1(n) = O(g1(n)) e f2 = O(g2(n)) f1(n) + g2(n) = O(max{|g1(n)|,|g2(n)|}).

Aula 23

Exemplos.
(3) an2 + bn + c = O(n2).

De

     bn +  c        b        c
lnim→∞  ---2--=  lni→m∞  --+ lni→m∞ -2-= 0
      n            n        n

temos bn + c n2 e pelo teorema 38, bn + c = O(n2). Certamente, an2 = O(n2). Portanto, pelo teorema 40  an2 + bn + c = O(n2).

De uma maneira geral podemos provar que

(4) para k constante, i=0ka ini = O(nk).

De fato, i=0ka ini = a knk + i=0k-1a ini e para o somatório temos

    ∑
       k-1aini        k∑-1  ai
lim  ---i=0k---- =  lim      -k-i-= 0
n→∞     n        n→ ∞ i=0 n

pois k -i > 0. Portanto, i=0k-1a ini nk e pelo teorema 38 i=0k-1a ini = O(nk). Como aknK = O(nk), pelo teorema 40 a knk + i=0k-1a ini = O(nk)

Teorema 41. Se f(n) = O(g(n)) e g(n) = O(h(n)) então f(n) = O(h(n)).

Teorema 42. Se f(n) = O(g(n)) e h(n) = O((n)) então f(n)g(n) = O(g(n)(n)).

Exemplos.
(5) n log(n!) = O(n2 log n).
Primeiro, temos n = O(n). Depois, n! = i = 1ni < i = 1nn = nn. Como log é crescente log(n!) < log(nn) = n log(n), portanto log(n!) = O(n log(n)). Pelo teorema 42, n log(n!) = O(n2 log n).

(6) para todo a > 0, log a(n) = O(log 2(n)).
De fato,

log (n) = --1---log n
   a      log2 a   2

porém --1--
log2a = O(1) e log 2n = O(log 2n) e pelo teorema 42, log a(n) = O(log 2(n)).

Não é verdade

  1. se f1(n) = O(g(n)) e f2(n) = O(g(n)), então f1(n) = f2(n);
  2. se f(n) = O(g(n)) então g(n) = O-1(f(n));
  3. se f1(n) = O(g1(n)) e f2(n) = O(g2(n)) e para todo n, g1(n) < g2(n), então para todo n, f1(n) < f2(n);
  4. para quaisquer f e g, f(n) = O(g(n)) ou g(n) = O(f(n)).

Convenções.

Definição 18.

f (n ) = Ω(g(n)) ⇔  g(n) = O (f(n))

e nesse caso dizemos que f é assintoticamente limitada inferiormente por g.

Teorema 43. f(n) = Ω(g(n)) se e somente se

existe n0 ≥ 0, existe C > 0, |f(n)| ≥ C |g(n )|.

Definição 19.

f(n) = Θ (g(n)) ⇔  f(n) = O (g(n)) e g (n ) = O(f (n)).

Teorema 44.

f(n ) = Θ (g(n)) ⇔ f(n) = O (g(n)) e f (n) = Ω (g (n )).

Teorema 45. f(n) = Θ(g(n)) se e somente se

existe n0 > 0, existe c > 0, existe C  > 0, c|g(n)| ≤ |f(n )| ≤ C |g(n)|.

Últimas aulas

Teorema 46. Se f(n) = Θ(g(n)) e g(n) = Θ(h(n)) então f(n) = Θ(h(n)).

Exemplos.
(7) log 2⌈n⌉
 2 = Θ(log 2(n)).

    ⌈  ⌉    ⌈    ⌈  ⌉⌉   ⌈       ⌉       (  )
log   n- ≤   log   n-   =   log  n- <  log    n- + 1 = log  n
   2  2         2  2         2 2        2  2           2

em que a igualdade segue do teorema 35 e a última desigualdade do teorema 34, item 3. Logo log 2n= O(log 2n). Agora,

⌈  ⌉             ⌈  ⌉       (  )
 n-  ≥ n-⇒  log2  n- ≥  log2   n- =  log2(n ) - 1 ≥ 1log2(n)
 2     2          2           2                   2

para todo n 4, portanto log 2n = Ω(log 2(n)). Pelo teorema 44 log 2n= Θ(log 2(n)).

(8) ⌈    (  )⌉
 log2  n
       2 = Θ(log n).

(9) se ak0 então i=0ka ini = Θ(nk).
Vimos que i=0ka ini = O(nk). Vamos provar que i=0ka ini = Ω(nk).

|        |   |               |   |                   |
|∑k      |   |       k∑-1     |   |         ∑k- 1      |
||    aini||≥  ||aknk -     |ai|ni|| ≥ |||aknk| - |   |ai|ni|||
| i=0     |   |       i=0      |   |          i=0       |

porém

|                   |   |                  |   |                   |
||    k    ∑k- 1     i||   ||    k    k∑-1     i||   ||     k   ∑k- 1     k||
|||akn | - |   |ai|n ||| = |||ak|n  - |    |ai|n ||| ≥ |||ak|n  - |    |ai||n ||
           i=0                     i=0                     i=0

ainda

|                   |   |(               )    |  |(                )|
||     k   ∑k- 1     k||   ||         k∑-1        k||  ||         k∑- 1     ||  k
||ak|n  - |    |ai||n | = |  |ak| - |   |ai|| n  |= |  |ak| - |   |ai|| | n
|          i=0       |   |         i=0         |  |          i=0      |

portanto

∑k
   aini = Ω (nk).
i=0

Definição 20. f(n) = o(g(n)) se e somente se f(n) g(n).

Definição 21. f(n) = ω(g(n)) se e somente se g(n) = o(f(n)).

Notação assintótica em equações

expressão 1 = expressão 2

onde expressão são expressões algébricas que envolvem notação assintótica.

Nesses casos, os termos assintóticos em expressão 1 são quantificados universalmente, enquanto que os termos assintóticos em expressão 2 são quantificados existencialmente.

Exemplos.
(1)  n3 + O(n2) = O(n3) + n2 + n entende-se como

para todo f (n ) = O(n2 ), existe g(n) = O (n3 ), n3 + f (n ) = g(n) + n2 + n

para todo n.

Dado f(n) = O(n2), tome g(n) = n3 + f(n) - n2 - n, então g(n) = O(n3) e n3 + f(n) = g(n) + n2 + n.

(2) O número de comparações do Merge-Sort pode ser escrito como

         {
T (n) =   Θ ((1⌈),⌉s)e    (⌊ ⌋ )              n =  1
          T    n2   + T   n2   + Θ (n),  se  n >  1
(62)

que significa que existe f(n) = Θ(n) tal que T(n) = T(⌈ ⌉)
  n2 + T(⌊  ⌋)
  n2 + f(n), para todo n. É sabido que T(n) = Θ(n log n).

Veremos técnicas para solução assintótica de recorrências. Quando procuramos por soluções assintóticas não há motivo para especificar exatamente as condições iniciais, no caso (62), por exemplo, basta escrever T(n) = T(⌈  ⌉)
  n2 + T(⌊  ⌋)
   n2 + Θ(n)

Vimos que f dada por f(0) = 3 e f(n + 1) = 2f(n) + 3, se n 0, é dada por f(n) = 3(2n+1 - 1). Isso pode ser descoberto iterando a definição indutiva. Assuma que n é grande

f(n)  =   2f(n - 1) + 3
      =   2(2f(n - 2) + 3) + 3 = 22f(n - 2) + 2 ⋅ 3 + 3
           2                              3            2
      =   2 (2f(n - 3) + 3) + 2 ⋅ 3 + 3 = 2 f (n - 3) + 2 ⋅ 3 + 2 ⋅ 3 + 3 =
      =   23(2f(n - 4) + 3) + 22 ⋅ 3 + 2 ⋅ 3 + 324f(n - 4 ) + 23 ⋅ 3 + 22 ⋅ 3 + 2 ⋅ 3 + 3
       .
       ..  ⋅⋅⋅
      =   2if(n - i) + 2i-1 ⋅ 3 + ⋅⋅⋅ + 23 ⋅ 3 + 22 ⋅ 3 + 2 ⋅ 3 + 3
a iteração termina quando i = n e temos f(n) = 2nf(0)+2n-13+⋅⋅⋅++233+223+23+3, ou seja
       ∑n
f(n) =     2i ⋅ 3 = 3(2n+1 - 1).
        i=0

Resta provar por indução que f(n) = 3(2n+1 - 1).

Da mesma forma, iterando b(1) = 1, b(n + 1) = b((n + 1)2) + 1, temos (usaremos o exerc. 3 da lista 3)

           ( ⌊n-⌋)
b(n ) =   b   2    + 1
          (  ( ⌊ ⌊n⌋⌋ )     )         (⌊   ⌋)
                 -2--                   -n-
      =     b     2     + 1   + 1 = b   22    + 2
          (  ( ⌊ ⌊  ⌋⌋)     )
                  n22                  ( ⌊ n ⌋)
      =     b    -----   + 1  +  2 = b   -3-  +  3
          (  ( ⌊  2  ⌋)     )            2
                 ⌊ n-⌋                ( ⌊  ⌋)
      =     b    -23--   + 1  +  3 = b   n--  +  4
                  2                      24
       .
       ..  ⋅⋅(⋅⌊  ⌋)
              n-
      =   b   2i   + i
e pelo teorema 36
⌊-n⌋             n-
 2i  =  1 ⇔ 1 ≤  2i < 2 ⇔ i ≤ log2n <  i + 1 ⇔ i = ⌊log2 n⌋
portanto, após log 2niterações b(n) = b(1) + log 2n= 1 + log 2n. Resta provar por indução que b(n) = 1 + log 2n.

Nem sempre funciona, ou as vezes é muito difícil chegar em algum lugar, por exemplo, tente o mesmo com

F (1) = F (2) = 1 e F (n + 1) = F (n) + F(n - 1), se n > 1.

Por outro lado, em análise de algoritmos muitas vezes é suficiente uma solução assintótica, isto é, basta saber a ordem de grandeza da solução. Por exemplo, no caso da função F definida acima, podemos provar que F(n) = Θ(φn), onde φ =   √-
1+25- por indução em n.

De fato, defina c = 12, C = 1, e temos que verificar a base da indução n = 1 e n = 2 (exercício) que nesses casos

para todo k ∈ {1, 2}, cφk ≤ F (k) ≤ C φk

Seja n > 1 um natural e assuma que

para todo  k ∈ [1..n], cφk ≤ F(k ) ≤ Cφk

Então

F (n + 1)  =   F (n ) + F (n - 1)
           ≥   cφn + cφn- 1 = cφn-1(φ + 1) = cφn -1(φ2) = cφn+1
e
F (n + 1)  =   F (n ) + F (n - 1)
           ≤   C φn + C φn-1 = C φn- 1(φ +  1) = Cφn -1(φ2) = C φn+1

Considere a seguinte função definida indutivamente (recorrência)

T(1)  =   0,

T(2)  =   1,(⌈  ⌉)     ( ⌊  ⌋)
T(n)  =   T    n-  + T    n-   + 2n - 1  se n >  2.
               2          2
Vamos provar a seguinte solução assintótica T(n) = O(n2). Para tal, vamos provar por indução em n que existe c,n0 > 0 tais que
T (n) ≤ cn2 para todo n ≥  n0.

Tomemos c = 1 e n0 = 6.

Para n [2..6] temos

                    2
 T (1) = 0   e    c1 =  1
 T (2) = 2   e    c22 = 4
                    2
 T (3) = 6   e    c3 =  9
T (4) = 11   e    c42 = 16
                    2
T (5) = 17   e    c5 =  25
T (6) = 25   e    c62 = 36
portanto, T(n) cn2 para todo n [2..6]. Esses são o caso base. Seja n > 6 um inteiro e assuma que para todo k [n0..n - 1], T(k) ck2. Vamos provar que T(n) cn2. Por definição T(n) = T(⌈ ⌉ )
  n2 + T(⌊  ⌋)
   n2 + 2n- 1 e usando a hipótese da indução
            ⌈n ⌉2    ⌊n ⌋2
T (n)  ≤   c --  +  c --   + 2n - 1
            (2     )2  2 (  )2
       ≤   c n- + 1   + c  n-  + 2n -  1
              2            2
       =   cn2 + (c + 2)n
           2
portanto, T(n) cn2 para todo n 6.

Essa solução está superestimada, de fato é possível provar uma solução justa ou seja, uma solução que limita assintoticamente superiormente e inferiormente a função T(n).

Vamos provar que T(n) = Θ(n log 2n).

Primeiro vamos provar que T(n) = O(nlog 2(n)). Para tal, tomemos c = 2 e n0 = 1 e vamos provar que

T (n) ≤ cn⌈log2(n)⌉ para todo n ≥  n0.

Para n = 1 temos T(1) = 0 e c1log 2(1)= 0 e para n = 2 temos T(2) = 1 e c2log 2(2)= 2, portanto, T(n) cnlog 2(n)nesses casos.

Seja n > 2 inteiro e assumamos que

T(k ) ≤ ck ⌈log2 (k )⌉ para todo k ∈ [n0..n - 1].

Por definição

          (⌈ n⌉ )     (⌊n ⌋)
T (n) = T    --  +  T   --   + 2n -  1
             2           2

e por hipótese

         ⌈n ⌉⌈     (⌈ n⌉) ⌉    ⌊n ⌋ ⌈    (⌊ n⌊ )⌉
T(n ) ≤ c --   log2    --   +  c --   log2    --    + 2n - 1
          2           2          2          2

ainda, pelo teorema 35

⌈     (⌈  ⌉) ⌉   ⌈    (  ) ⌉
 log    n-    =   log   n-
    2   2            2  2

e como x⌋≤ x e log 2 é crescente

⌈     (⌊n-⌊)⌉    ⌈    ( n) ⌉
 log2   2     ≤   log2  2

portanto

            ⌈  ⌉⌈    (   )⌉    ⌊  ⌋ ⌈    (  ) ⌉
T (n ) ≤   c  n-  log2  n-   + c  n-  log2  n-   + 2n - 1
            (2⌈  ⌉   ⌊  2⌋) ⌈    ( 2) ⌉      2
       =  c   n-  +  n-    log   n-  +  2n - 1
              2      2        2  2
       =  cn ⌈log2 ((n) - 1)⌉ + 2n - 1

       =  cn ⌈log2 n⌉ - (c - 2)n - 1
      ≤   cn ⌈log2 n⌉ .

Com isso provamos que T(n) = O(nlog 2(n)). Ainda temos que n = O(n) e log 2(n)= O(log 2(n)), portanto, pelo teorema 42, nlog 2(n)= O(n log 2(n)), e pelo teorema 41 temos, finalmente, que T(n) = O(n log 2(n)).

Agora, vamos provar que T(n) = Ω(n log 2(n)) e com isso teremos que T(n) = Θ(n log 2n). Para tal, tomemos c = 12 e n0 = 1 e vamos provar que

T (n) ≥ cn⌊log2(n)⌋ para todo n ≥  n0.

Para n = 1 temos T(1) = 0 e c1log 2(1)= 0 e para n = 2 temos T(2) = 1 e c2log 2(2)= 1, portanto, T(n) cnlog 2(n)nesses casos.

Seja n > 2 inteiro e assumamos que

T(k ) ≥ ck ⌊log  (k )⌋ para todo k ∈ [n0..n - 1].
              2

Por definição

          (⌈  ⌉ )     (⌊  ⌋)
T (n) = T    n-  +  T   n-   + 2n -  1
             2           2

e por hipótese

         ⌈  ⌉⌊     (⌈  ⌉) ⌋    ⌊  ⌋ ⌊    (⌊  ⌋ )⌋
          n-          n-        n-          n-
T(n ) ≥ c 2    log2    2    +  c  2   log2    2     + 2n - 1

ainda, pelo teorema 36

⌊     (⌊n ⌋) ⌋   ⌊    ( n) ⌋
 log2   --    =   log2  --
        2               2

e como x⌉≥ x e log 2 é crescente

⌊     (⌈n-⌈)⌋    ⌊    ( n) ⌋
 log2   2     ≥   log2  2

portanto

            ⌈  ⌉⌊    (   )⌋    ⌊  ⌋ ⌊    (  ) ⌋
T (n ) ≥   c  n-  log   n-   + c  n-  log   n-   + 2n - 1
            (2⌈  ⌉   2⌊  2⌋) ⌊    ( 2) ⌋   2  2
       =  c   n-  +  n-    log   n-  +  2n - 1
              2      2        2  2
       =  cn ⌊log2 (n) - 1⌋ + 2n - 1

       =  cn ⌊log2 n⌋ - (c - 2)n - 1
      ≥   cn ⌊log2 n⌋ .

Com isso provamos que T(n) = Ω(nlog 2(n)). Ainda temos que n = Ω(n) e log 2(n)= O(log 2(n)) (prove), portanto, nlog 2(n)= Ω(n log 2(n)) (prove), finalmente, temos que T(n) = Ω(n log 2(n)) (prove).

Notemos que de T(n) = Ω(n log 2(n)) não vale que T(n) = O(n). Onde está o erro da seguinte prova.

Vamos provar que existem c,n0 > 0 tais que T(n) cn para todo n n0. Tomemos c = 12 e n0 = 1.

Para n = 1, 2 a desigualdade vale (verifique). Seja n > 2 inteiro e assumamos que para todo k [n0..n - 1], T(k) ck. Vamos mostrar que T(n) cn.

            ( ⌈n ⌉)     (⌊ n⌋ )
T (n )  =  T    --   + T    --  +  2n - 1
            ⌈n 2⌉    ⌊n ⌋   2
       ≤  c  -- +  c --  + 2n - 1
             2       2
       =  cn + 2n -  1
       =  (c + 2)n - 1
e como c é constante, também c + 2 é constante, portanto T(n) = O(n).

Vamos usar a mesma técnica para mostrar que b(1) = 1, b(n+1) = b((n+1)2)+1 tem solução assintótica b(n) = Θ(log 2n) (claramente, essa prova é desnecessária pois sabemos que b(n) = log 2n+ 1 e é fácil provar que log 2n+ 1 = Θ(log 2n), a idéia é dar mais um exemplo de demonstração de solução assintótica).

Primeiro, vamos mostrar que b(n) = O(log 2n).

Vamos mostrar que para c = 3 e n0 = 2, b(n) clog 2npara todo n n0.

Para n = 2, 3 temos b(2) = b(3) = 2 e clog 22= clog 23= c, portanto, b(n) clog 2nnesses casos. Seja n > 3 e assuma que para todo k [n0..n - 1], b(k) clog 2k. Então

b(n )  =  b(⌊n∕2 ⌋) + 1
      ≤  c⌊log ⌊n∕2 ⌋⌋ + 1
              2
      =  c⌊log2(n∕2)⌋ + 1
      =  c⌊log2(n) - log2 (2)⌋ + 1

      =  c⌊log2(n)⌋ - 1 + 1
      =  c⌊log2(n)⌋
portanto b(n) clog 2npara todo n n0, logo, por definição b(n) = O(log 2n). Como log 2n= O(log 2n), usando o teorema 41 temos b(n) = O(log 2n).

Agora, vamos mostrar que b(n) = Ω(log 2n).

Vamos mostrar que para c = 1 e n0 = 2, b(n) clog 2npara todo n n0.

Para n = 2, 3 temos b(2) = b(3) = 2 e clog 22= clog 23= c, portanto, b(n) clog 2nnesses casos. Seja n > 3 e assuma que para todo k [n0..n - 1], b(k) clog 2k. Então

b(n )  =  b(⌊n∕2 ⌋) + 1
      ≥  c⌊log ⌊n∕2 ⌋⌋ + 1
              2
      =  c⌊log2(n∕2)⌋ + 1
      =  c⌊log (n) - log  (2)⌋ + 1
              2         2
      =  c⌊log2(n)⌋ - 1 + 1
      =  c⌊log (n)⌋
              2
portanto b(n) clog 2npara todo n n0, logo, por definição b(n) = Ω(log 2n). Como log 2n= Ω(log 2n), concluímos que b(n) = Ω(log 2n).

Vimos que f dada por f(0) = 3 e f(n + 1) = 2f(n) + 3, se n 0, é dada por f(n) = 3(2n+1 - 1). Vamos usar a mesma técnica dos exemplos anteriores para provar que f(n) = O(2n+1).

Vamos mostrar que existem constantes positivas c,n0 tais que

         n+1
f(n) ≤ c2    - 3 para todo n ≥  n0.

Tomemos c = 3 e n0 = 0.

Para n = 0 temos f(0) = 3 e c2n+1 - 3 = 3, portanto f(0)  c20+1 - 3.

Seja n > 0 natural e assuma que f(n - 1) c2n - 3. Vamos provar que f(n) c2n+1 - 3.

f(n ) =   2f (n -  1) + 3
      ≤   2(c2n - 3) + 3
            n+1
      =   c2    - 3
Logo f(n) = O(2n+1 - 3) e como 2n+1 - 3 = O(2n+1) temos pelo teorema 41 que f(n) = O(2n+1).

Exercício. Prove que f(n) = Ω(2n+1) (não vale usar quef(n) = 3(2n+1 - 1)).

Exemplo. Considere a recorrência T(1) = T(2) = 1 e T(n) = 3T(⌊ ⌋ )
  n
  3 + n se n > 1.

Iterando a recorrência e usando o teorema 35 para f(x) = x∕3, donde ⌊         ⌋
 ⌊n∕3k⌋∕3 = n∕3k+1temos

                     (⌊ n⌋)
T(n ) =   T (n) = 3T    3   +  n
           2  (⌊ n ⌋)     ⌊n ⌋
      =   3 T    -2-  + 3  --  + n
              (⌊ 3n ⌋)      ⌊3n ⌋    ⌊n ⌋
      =   33T    -3-  + 32  -2- +  3 --  + n
                 3          3         3
       ...
           k  ( ⌊ n ⌋ )   k-1⌊  n  ⌋          ⌊n ⌋
      =   3 T    3k-  +  3     3k-1- + ⋅⋅⋅ + 3 3-  + n
tomando k = log 3ntemos
                      ⌊log3n⌋-1
         ⌊log3n⌋         ∑      i⌊ n-⌋
T (n) = 3      T(1) +         3   3i .
                        i=0

Sabemos que log 3n - 1 ≤⌊log 3n⌋≤ log 3n, como exponencial é função crescente 3log 3n-1 3log 3n 3log 3n, protanto,

1
-n ≤ 3 ⌊log3n⌋ ≤ n
3
logo 3log 3n = Θ(n).

Para todo i [0..log 3n⌋- 1], 3in-
3i⌋≤ n, portanto

⌊log3n⌋-1         ⌊log3n⌋-1
  ∑      i n-      ∑
        3 ⌊3i⌋ ≤         n =  n⌊log3n⌋ = O (n log n).
   i=0               i=0
Por outro lado, para todo i [0..log 3n⌋- 1], 3ini
3⌋≥ n - 3i, portanto
⌊log∑3n⌋- 1   n     ⌊log∑3n⌋-1                   1 - (1∕3)⌊log3n⌋              1 - (1∕n )
        3i⌊--⌋ ≥         n- 3i = n⌊log3n ⌋- ---------------=  n⌊log3n ⌋- ----------
  i=0      3i      i=0                         1 - (1 ∕3)                    2∕3
              2-   2--
= n ⌊log3 n⌋ - 3 +  3n = Ω (n log n)
Portanto o somatório é Θ(n log n) e com isso temos a hipótese de que
T (n ) = Θ(n logn ).

Vamos provar que T(n) = Θ(n log n).

Primeiro, vamos provar que existem cosntantes c,n0 tais que T(n) cnlog 3n para todo n n0.

Tome c = 2 e n0 = 3. Usando indução

Base:

 T (3) = 6  ≤  c ⋅ 3 ⋅ log3 3
 T (4) = 7  ≤  c ⋅ 4 ⋅ log3 4

 T (5) = 8  ≤  c ⋅ 5 ⋅ log3 5
 T (6) = 9  ≤  c ⋅ 6 ⋅ log3 6

T (7) = 10  ≤  c ⋅ 7 ⋅ log3 7
T (8) = 11  ≤  c ⋅ 8 ⋅ log3 8

Passo:
Seja n 9 inteiro e assuma que para todo k [n0..n - 1], T(k) cklog 3k.

             (⌊ n⌋ )
T(n ) =   3T    --   + n
                3
      ≤   3c⌈n ∕3⌉log3 ⌈n∕3⌉ + n
      ≤   3c(n∕3 )log3 (n ∕3) + n

      =   cnlog3n -  cn + n
      <   cnlog3n.
Logo T(n) = O(n log n).

Agora, vamos provar que existem constantes c,n0 tais que T(n) cnlog 3n para todo n n0.

Tome c = 1 e n0 = 3. Usando indução

Base:

 T (3 ) = 6 ≥   c ⋅ 3 ⋅ ⌊log 3⌋
                        3
 T (4 ) = 7 ≥   c ⋅ 4 ⋅ ⌊log3 4⌋
 T (5 ) = 8 ≥   c ⋅ 5 ⋅ ⌊log 5⌋
                        3
 T (6 ) = 9 ≥   c ⋅ 6 ⋅ ⌊log3 6⌋
T(7) = 10  ≥   c ⋅ 7 ⋅ ⌊log3 7⌋

T(8) = 11  ≥   c ⋅ 8 ⋅ ⌊log3 8⌋

Passo:
Seja n 9 inteiro e assuma que para todo k [n0..n - 1], T(k) ck⌊log3 k⌋.

              (⌊ n⌋)
T (n)  =   3T    --  + n
                 3
       ≥   3c⌊n∕3 ⌋⌊log3⌊n ∕3⌋⌋ + n
       >   3c(n∕3 + 1)⌊log (n∕3 )⌋ + n
                          3
       =   cn⌊log3(n∕3 )⌋ + 3c ⌊log3(n ∕3)⌋ + n
       =   cn⌊log  n⌋ - cn + 3c⌊log n ⌋ - 3c + n
                 3                 3
       >   cn⌊log3 n⌋.
Logo T(n) = Ω(n log n).