Slides da aula 8

Propaganda
12/05/2015
Desafios de Programação
TCC-00.254 | Turma A-1
Conteúdo
Análise Combinatória
Professor Leandro Augusto Frata Fernandes
[email protected]
Material disponível em
http://www.ic.uff.br/~laffernandes/teaching/2015.1/tcc-00.254
Leitura Sugerida
•
Art of Programming Contest
AREFIN, A. S. 2nd ed. Gyankosh Prokashoni: 2006
Capítulo 7 (algumas partes)
•
Concrete Mathematics
GRAHAM, R.L. et al. Addison-Wesley: 1994
Capítulos 5, 6 e 7
•
Competitive Programming 2 / 3
HALIM, S.; HALIM, F. Lulu: 2012 / 2013
Capítulo 5 (algumas partes)
•
Programming Challenges
SKIENA, S.S.; REVILÇA, M.A. Springer: 2003
Capítulo 6
TCC-00.254 Desafios de Programação
2
1
12/05/2015
Bibliotecas Nativas
Sério!? Você quer uma biblioteca nativa?
Esqueça!
TCC-00.254 Desafios de Programação
3
TCC-00.254 Desafios de Programação
4
Análise Combinatória
Contagem
2
12/05/2015
Princípios
•
Princípio multiplicativo
Se um evento
pode acontecer de
maneiras
diferentes, então o número de maneiras em que os
eventos , , ⋯,
podem ocorrer de forma
sucessiva é
Demostre com árvore de possibilidade.
TCC-00.254 Desafios de Programação
5
Princípios
•
Princípio aditivo
Dados os conjuntos disjuntos , , ⋯, , então o
número de elementos da união
∪
∪ ⋯∪
é
∪
•
∪⋯∪
=
Princípio da inclusão e exclusão
Dados os conjuntos
∪
é
∪
=
e
+
o número de elementos em
−
∩
TCC-00.254 Desafios de Programação
Demostre com
diagramas de Venn.
6
3
12/05/2015
Arranjos e Permutações
•
Permutações (permutação simples)
Número de maneiras que podemos ordenar
de um conjunto de elementos
elementos
= !
•
-Permutações (arranjo simples)
Número de maneiras que podemos ordenar
de um conjunto de elementos
=
=
!
−
!
elementos
A ordem dos
elementos importa.
TCC-00.254 Desafios de Programação
7
Arranjos e Permutações
•
Arranjo com repetição
Número de grupos de tamanho que podemos formar
com repetição de elementos a partir de um
conjunto com elementos
=
A ordem dos elementos importa.
TCC-00.254 Desafios de Programação
8
4
12/05/2015
Combinações Simples
•
Número de subconjuntos de tamanho
podemos formar a partir de um
conjunto com elementos
!
=
=
! − !
que
Coeficiente Binomial
A ordem dos elementos não importa.
TCC-00.254 Desafios de Programação
Coeficiente Binomial
−
0
#define MAXN 100
9
=
=1
−1
+
−1
−1
=1
long binomial_coefficient(int n, int k) {
long bc[MAXN][MAXN]; // tabela de coeficientes binomiais
for (int i=0; i<=n; i++) {
bc[i][0] = 1;
bc[i][i] = 1;
}
for (int i=1; i<=n; i++)
for (int j=1; j<i; j++)
bc[i][j] = bc[i-1][j-1] + bc[i-1][j];
return bc[n][k];
}
TCC-00.254 Desafios de Programação
10
5
12/05/2015
Subconjuntos
Manipulação Algébrica vs. Intuição
•
O que representa a expressão abaixo e
qual o resultado?
=
TCC-00.254 Desafios de Programação
11
Combinações com Repetição
•
Número de subconjuntos de tamanho
podemos formar a partir de um
conjunto com elementos
=
+
−1
=
que
+ −1 !
! −1 !
A ordem dos elementos não importa.
TCC-00.254 Desafios de Programação
12
6
12/05/2015
Partições
•
Uma combinação pode ser vista como a partição
de um conjunto em dois subconjuntos
Um com
•
elementos e outro com
−
elementos
Partições generalizam combinações
para subconjuntos
−
−
−
⋯
−
− ⋯−
=
!
!
!⋯
TCC-00.254 Desafios de Programação
!
13
Análise Combinatória
Algumas Funções Enumerativas
TCC-00.254 Desafios de Programação
14
7
12/05/2015
Números de Fibonacci
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, . . .
•
Recorrência
•
Forma fechada
% =
% =%
% =1
% =0
1
5
+%
1+ 5
2
−
1− 5
2
TCC-00.254 Desafios de Programação
15
Números de Catalan
1, 1, 2, 5, 14, 42, 132, 429, 1430, . . .
•
Recorrência
=
=1
•
Forma fechada
=
1
2
+1
Problemas:
Maneiras de balancear parênteses.
Triangulações possíveis em um polígono convexo com vértices.
__ , que não passam sobre a diagonal principal.
Caminhos monótonos em uma grade de lado
TCC-00.254 Desafios de Programação
16
8
12/05/2015
Números Eulerianos
•
Recorrência
=
•
'
=1
0
Forma fechada
=
___
*
(
−
−1
+1
(
exatamente
−1
+
−1
+1
)
−1
−)+1
Problemas:
Permutações dos números 1 a nas quais
elementos são maiores que seu antecessor.
TCC-00.254 Desafios de Programação
17
Números de Stirling de Tipo 1
•
Recorrência
=
'
0
=
=0
0
'
0
=1
0
−1
+
−1
−1
Arranjos de
TCC-00.254 Desafios de Programação
−1
Problemas:
objetos em ciclos.
18
9
12/05/2015
Números de Stirling de Tipo 2
•
Recorrência
=
−1
'
0
=0
=
0
'
0
=1
0
Maneiras de particionar
+
−1
−1
objetos em
TCC-00.254 Desafios de Programação
Problemas:
subconjuntos não vazios.
19
10
Download