Escolar Documentos
Profissional Documentos
Cultura Documentos
Matemtica Concreta
Fundamentos para
Cincia da Computao
2 Edio
Ronald L. Graham, Donald E.
Knuth, and Oren Patashnik
(Reading, Massachusetts:
Addison-Wesley, 1994)
Recurso
Aplicaes:
Lingstica
regras de gramtica por Panini Sec. 5 AC
Chomsky
Gramtica formais
Parsers de linguagens de programao
Matemtica:
Lgica:
Axiomatizao
Aritmtica de Peano
Provas Recursivas
Computao
Programao Recursiva
Em linguagens imperativas
Em linguagens funcionais
Estrutura de dados recursivas
Listas, rvores, grafos
Complexidade de Algoritmos
Computabilidade
Recurso
T(n) =
Recurso
T(n) = T(n-1) +
Recurso
T(n) = T(n-1) + 1 +
Recurso
Recurso
T(1) = 1
T(n) = 2 T(n-1) + 1
T(1) + 1 = 2
T(n) + 1 = 2 T(n-1) + 2
Seja U(n) = T(n)+1
U(1) = 2
U(n) = 2 U(n-1)
U(n) = 2n
T(n) = 2n - 1
Recurso
Nova regra: no pode mover direto entre A e C
Recurso
A
T(n) =
Recurso
A
T(n) = T(n-1) +
Recurso
A
T(n) = T(n-1) + 1 +
Recurso
A
Recurso
A
Recurso
A
Recurso
T(1) = 2
T(n) = 3 T(n-1) + 2
T(1) + 1 = 3
T(n) + 1 = 3 T(n-1) + 3
Seja U(n) = T(n)+1
U(1) = 3
U(n) = 3 U(n-1)
U(n) = 3n
T(n) = 3n - 1
Recurso
Em quantas regies (no mximo), pode-se dividir uma pizza (ou
o plano)com n retas?
L(0)=1
L(1)=2
L(2)=4
L(3)=7
L(4)=11
Recurso
L(0) = 1
L(n) = L(n-1) + n
Substituindo temos:
L(n) = 1 + 1 + 2 + 3 + 4 + ... + n
L(n) = 1 + n (n + 1)/2
Recurso
Em quantas regies fechadas, pode-se dividir o plano com n
retas?
Recurso
Durante a guerra entre judeus e romanos, 11 rebeldes judeus
foram encurralados em uma caverna. Preferindo se matar a
serem capturados. Decidiram formar um crculo e matar cada
terceira pessoa at no sobrar ningum. Mas Flavius Josefus no
queria saber do pacto suicida, ento calculou rapidamente onde
deveriar ficar.
Recurso
Recurso
Nova regra: eliminamos cada segunda pessoa.
Recurso
1
11
2
3
10
9
4
5
8
7
Recurso
Alguma idia para calcular o problema recursivamente?
Recurso
1
11
2
3
10
9
4
5
8
7
Recurso
3
Portanto:
J(2n+1) = 2 J(n) + 1
Isto :
J(2n+1) =
novoNumero( J(n) )
novoNumero(k) = 2k+1
11
Recurso
J(1) = 1
J(2n) = 2 J(n) -1, n1
J(2n+1) = 2 J(n) + 1 , n1
10 11 12 13 14 15
J(n)
11 13 15
Recurso
n
10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111
J(n)
J(n)
11
11 101 111
11
10 11 12 13 14 15
11 13 15
Combinatria
2n pessoas esto na fila de um circo, cujo ingresso custa R$5,00.
Sabe-se que n pessoas possuem apenas uma nota de R$5,00 e n
pessoas possuem apenas uma nota de R$10,00. De quantas
maneiras a fila pode ser organizada de forma que a bilheteria
sempre tenha troco?
Combinatria
De quantas formas ao todo as 2n pessoas (sendo n com notas de 5)
podem estar na fila?
Combinatria
As formas que no servem so as que tocam a reta y=1 (nessa
interpretao diagonal.
Fazendo um reflexo do lado
esquerdo em relao a reta y=1
chegamos aos caminhos que
partem de (2,0), isto , que tm
n+1 pessoas com notas de 5 e n-1
com notas de 10 portanto
2
1
Comportamento assinttico
de funes
Sejam g(n):
(*). Definimos:
( )
( )
=0}
(g) = { f | g O(f) }
(g) = { f | g o(f) }
f g | lim
( )
=
( )
Quicksort
Na linguagem Haskell o algoritmo quicksort implementado como:
qsort s = case s of{[]->[];(x:xs)->qsort [y | y<-xs, y<x] ++ x : qsort [y | y<-xs, y>=x]}
= 1+
Quicksort
=1+
=2 +2
=2 +
+1
Multiplicando por n
+2
1 +
Substituindo n por n 1
1
+2
subtraindo
Quicksort
=0
=2 +
+1
=2
Substituindo:
Obtemos:
+ 1 2
=0
1
= +