Combinatoria, Probabilidad y Teoría de Juegos
Pablo Zimmermann
Universidad Nacional de Rosario
Training Camp Argentina 2018
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 1 / 62
Contenidos
1 Nociones básicas de Aritmética Modular
2 Combinatoria
Introducción
Numeros Combinatorios y Propiedades
Formas de calcular los números combinatorios
Inclusión - Exclusión
3 Conceptos Básicos de Probabilidad
4 Teoría de Juegos
Nociones básicas
Algunos ejemplos e ideas interesantes
El Nim y su importancia
Algunas variantes
Problemas de tarea
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 2 / 62
Nociones básicas de Aritmética Modular
Contenidos
1 Nociones básicas de Aritmética Modular
2 Combinatoria
Introducción
Numeros Combinatorios y Propiedades
Formas de calcular los números combinatorios
Inclusión - Exclusión
3 Conceptos Básicos de Probabilidad
4 Teoría de Juegos
Nociones básicas
Algunos ejemplos e ideas interesantes
El Nim y su importancia
Algunas variantes
Problemas de tarea
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 3 / 62
Nociones básicas de Aritmética Modular
Aritmética modular
Aritmética módulo M(ZM )
La aritmética módulo M consiste en una modificación de la aritmética
usual de números enteros, en la cual trabajamos únicamente con el
resto de los números al ser divididos por un cierto entero fijo M > 0,
ignorando “todo lo demás” de los números involucrados.
Así, 11 = 18 si estamos trabajando módulo 7, pues ambos dejan
un resto de 4 en la división por 7. Esto se suele notar 11 ≡ 18
(mod 7) o 11 ≡7 18
Una forma operacional de ver esta aritmética es suponer que todo
el tiempo tenemos los números reducidos al rango de enteros en
[0, M), y tomamos el resto de la división por M para devolverlos a
ese rango luego de cada operación.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 4 / 62
Nociones básicas de Aritmética Modular
Aritmética modular
De esta forma, las operaciones de suma, resta y multiplicación se
extienden trivialmente y mantienen sus propiedades conocidas
a±b =c =⇒ a ± b ≡m c
a.b = c =⇒ a.b ≡m c
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 5 / 62
Nociones básicas de Aritmética Modular
Aritmética modular
De esta forma, las operaciones de suma, resta y multiplicación se
extienden trivialmente y mantienen sus propiedades conocidas
a±b =c =⇒ a ± b ≡m c
a.b = c =⇒ a.b ≡m c
La división no es tan simple y se define como la multiplicación por el
inverso, de modo que
a/b =⇒ a.b−1 con b.b−1 = 1
¿Siempre existe un inverso módulo m? ¿Cómo lo calculamos?
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 5 / 62
Nociones básicas de Aritmética Modular
Pequeño teorema de Fermat
Teorema
Si p es primo y a 6≡ 0 (mod p), entonces ap−1 ≡ 1 (mod p)
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 6 / 62
Nociones básicas de Aritmética Modular
Pequeño teorema de Fermat
Teorema
Si p es primo y a 6≡ 0 (mod p), entonces ap−1 ≡ 1 (mod p)
Para cada a 6≡ 0 (mod p) su inverso será ap−2 .
Pues a · ap−2 ≡ ap−1 ≡ 1 (mod p)
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 6 / 62
Nociones básicas de Aritmética Modular
Pequeño teorema de Fermat
Teorema
Si p es primo y a 6≡ 0 (mod p), entonces ap−1 ≡ 1 (mod p)
Para cada a 6≡ 0 (mod p) su inverso será ap−2 .
Pues a · ap−2 ≡ ap−1 ≡ 1 (mod p)
Entonces para calcular un inverso (y poder dividir) necesitamos
calcular ap−2
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 6 / 62
Nociones básicas de Aritmética Modular
Elevar modulo p
Queremos calcular an .
El algoritmo obvio es hacer a · a · a · . . . · a, n veces. El tiempo de
ejecución es O(n).
Queremos algo mejor. Notemos que si n es par, n = 2k tenemos:
an = a2k = (ak )2 = ak ∗ ak
Y si n es impar, con n = 2k + 1.
an = a2k +1 = a ∗ (ak )2 = a ∗ ak ∗ ak
En ambos casos reducimos el problema a la mitad con O(1)
multiplicaciones, por lo que podemos elevar en O(log(n)).
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 7 / 62
Nociones básicas de Aritmética Modular
Expmod
Agregandole lo aprendido sobre modulo, nos queda:
1 typedef long long l l ;
2 l l expmod ( l l b , l l e , l l m) { / / O( l o g e )
3 i f ( ! e ) return 1;
4 l l q= expmod ( b , e / 2 ,m) ; q =( q∗q ) %
m;
5 r e t u r n e %2? ( b ∗ q ) %m : q;
6 }
Expmod de Caloventor en Dos
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 8 / 62
Combinatoria
Contenidos
1 Nociones básicas de Aritmética Modular
2 Combinatoria
Introducción
Numeros Combinatorios y Propiedades
Formas de calcular los números combinatorios
Inclusión - Exclusión
3 Conceptos Básicos de Probabilidad
4 Teoría de Juegos
Nociones básicas
Algunos ejemplos e ideas interesantes
El Nim y su importancia
Algunas variantes
Problemas de tarea
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 9 / 62
Combinatoria Introducción
Definición
Combinatoria
La combinatoria es la rama que estudia métodos para contar
combinaciones de objetos. Generalmente, el objetivo es encontrar una
manera de contar las combinaciones de manera eficiente sin tener
que generar cada combinación por separado.
Como un ejemplo tenemos que contar la cantidad de formas de
representar N como suma de naturales. Para N = 4 sería:
1+1+1+1 2+1+1
1+1+2 2+2
1+2+1 3+1
1+3 4
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 10 / 62
Combinatoria Introducción
Ejemplo
Para este ejemplo se puede ver que si la respuesta la llamamos f (n)
podemos calcularla como:
f (0) = 1
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 11 / 62
Combinatoria Introducción
Ejemplo
Para este ejemplo se puede ver que si la respuesta la llamamos f (n)
podemos calcularla como:
f (0) = 1
N > 0 =⇒ f (N) = f (0) + f (1) + · · · + f (N − 1)
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 11 / 62
Combinatoria Introducción
Ejemplo
Para este ejemplo se puede ver que si la respuesta la llamamos f (n)
podemos calcularla como:
f (0) = 1
N > 0 =⇒ f (N) = f (0) + f (1) + · · · + f (N − 1)
f (1) = 1
f (2) = 1 + 1 = 2
f (3) = 1 + 1 + 2 = 4
f (4) = 1 + 1 + 2 + 4 = 8
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 11 / 62
Combinatoria Introducción
Ejemplo
Para este ejemplo se puede ver que si la respuesta la llamamos f (n)
podemos calcularla como:
f (0) = 1
N > 0 =⇒ f (N) = f (0) + f (1) + · · · + f (N − 1)
f (1) = 1
f (2) = 1 + 1 = 2
f (3) = 1 + 1 + 2 = 4
f (4) = 1 + 1 + 2 + 4 = 8
Luego, por inducción podemos demostrar que
N > 0 =⇒ f (N) = 2N−1
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 11 / 62
Combinatoria Numeros Combinatorios y Propiedades
Números Combinatorios
Números Combinatorios
Se define Nk como el número de formas que podemos elegir de un
subconjunto de N elementos, exactamente k.
Si tenemos el conjunto del 1 al 5: {1, 2, 3, 4, 5} y queremos elegir
subconjuntos de tamaño 3, tenemos:
1, 2, 3 1, 4, 5
1, 2, 4 2, 3, 4
1, 2, 5 2, 3, 5
1, 3, 4 2, 4, 5
1, 3, 5 3, 4, 5
5
Por lo tanto 3 = 10
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 12 / 62
Combinatoria Numeros Combinatorios y Propiedades
Números Combinatorios
N N!
Se puede demostrar que k = k !∗(N−k )!
Por ejemplo 53 = 3!∗2!
5! 120
= 12 = 10
Como en general son muy grandes, en general nos los piden
modulo un primo p
Vamos a ver que se pueden calcular de tres formas:
En O(1) con un precálculo O(n2 )
En O(n ∗ lg(p)), que se puede bajar a O(k ∗ lg(p))
En O(lg(p)) con un precálculo de O(n)
Pero antes, para que los necesitamos?
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 13 / 62
Combinatoria Numeros Combinatorios y Propiedades
Motivación
Veamos ejemplos de problemas:
Formas de poner k bolitas en N cajas sin repetir.
Formas de poner k bolitas en N cajas pudiendo repetir.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 14 / 62
Combinatoria Numeros Combinatorios y Propiedades
Motivación
Veamos ejemplos de problemas:
Formas de poner k bolitas en N cajas sin repetir.
Formas de poner k bolitas en N cajas pudiendo repetir.
N
=⇒ ej1(5, 2) = 52
ej1(N, k ) = k = 10
N+(k −1)
= 62 = 15
ej2(N, k ) = k =⇒ ej1(5, 2)
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 14 / 62
Combinatoria Numeros Combinatorios y Propiedades
Motivación (2)
Veamos ejemplos de problemas:
Formas de poner k bolitas en N cajas sin repetir ni tener bolitas en
cajas adyacentes.
Cuántas permutaciones existen de la palabra “ABRACADABRA”?
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 15 / 62
Combinatoria Numeros Combinatorios y Propiedades
Motivación (2)
Veamos ejemplos de problemas:
Formas de poner k bolitas en N cajas sin repetir ni tener bolitas en
cajas adyacentes.
Cuántas permutaciones existen de la palabra “ABRACADABRA”?
ej3(N, k ) = N−kk +1 =⇒ ej1(5, 2) = 42 = 6
ej4(N, k1 , k2 , . . . , kn ) = k1 ,k2N,...,kn = k1 !k2N!
!...kn ! =⇒
N 11!
=⇒ ej4(11, 5, 2, 1, 1, 2) = 5,2,1,1,2 = 5!2!1!1!2! = 83160
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 15 / 62
Combinatoria Numeros Combinatorios y Propiedades
Propiedades
Los Números combinatorios son muy útiles, analizemos algunas
propiedades:
n n
k = n−k
Podemos elegir calcular el que requiera menos operaciones.
n n−1
+ kn−1
k = k −1
Nos va a servir para calcularlo recursivamente
Pn n n
i=0 i = 2
Ambos lados cuentan la cantidad de subconjuntos de un conjunto
de n elementos.
Pn n
n−1
i=0 i i = n · 2
Ambos lados cuentan la suma de la cantidad de elementos de
todos los subconjuntos de un conjunto de n elementos.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 16 / 62
Combinatoria Formas de calcular los números combinatorios
Triángulo de Pascal
Veamos 3 formas para calcular los números combinatorios:
Este es el triángulo de Pascal:
1
11
121
1331
14641
1 5 10 10 5 1
...
n
El k -ésimo número de la fila n representa el número k .
Con esto podemos precalcular todos los combinatorios en tiempo
lineal.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 17 / 62
Combinatoria Formas de calcular los números combinatorios
Triángulo de Pascal
1 const i n t MOD = 1000000007;
2 f o r n ( i , MAXN+1) { / / comb [ i ] [ k ] = i tomados de a k
3 comb [ i ] [ 0 ] = comb [ i ] [ i ] = 1 ;
4 f o r r ( k , 1 , i ) comb [ i ] [ k ] = ( comb [ i −1][ k ] + comb [ i −1][ k −1]) %
MOD;
5 }
Combinatorios
O(n2 ) en memoria de precálculo y O(1) por número pedido
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 18 / 62
Combinatoria Formas de calcular los números combinatorios
Cálculo bruto
Método 2: Cálculo Bruto
Recordamos: kn = k !(n−kn!
)!
Calculamos n!, k !, (n − k )! modulo p
Calculamos los inversos de k !−1 y (n − k )!−1 con aritmética
modular.
Calculamos finalmente n!, k !−1 , (n − k )!−1
Devolvemos n! ∗ k !−1 ∗ (n − k )!−1
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 19 / 62
Combinatoria Formas de calcular los números combinatorios
Cálculo bruto
Método 2: Cálculo Bruto
Recordamos: kn = k !(n−kn!
)!
Calculamos n!, k !, (n − k )! modulo p
Calculamos los inversos de k !−1 y (n − k )!−1 con aritmética
modular.
Calculamos finalmente n!, k !−1 , (n − k )!−1
Devolvemos n! ∗ k !−1 ∗ (n − k )!−1
Costo O(n ∗ lg(p)), optimizable a O(k ∗ lg(p)), como?
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 19 / 62
Combinatoria Formas de calcular los números combinatorios
Cálculo bruto
Método 2: Cálculo Bruto
Recordamos: kn = k !(n−kn!
)!
Calculamos n!, k !, (n − k )! modulo p
Calculamos los inversos de k !−1 y (n − k )!−1 con aritmética
modular.
Calculamos finalmente n!, k !−1 , (n − k )!−1
Devolvemos n! ∗ k !−1 ∗ (n − k )!−1
Costo O(n ∗ lg(p)), optimizable a O(k ∗ lg(p)), como?
n! n! 1
k !(n−k )! = (n−k )! ∗ k !
n!
(n−k )! son k multiplicaciones
−1
k! lo calculo en O(k ∗ lg(p))
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 19 / 62
Combinatoria Formas de calcular los números combinatorios
Cálculo bruto
Método 3: Optimizando el Bruto
Recordamos: kn = k !(n−k
n!
)!
Podemos precalcular los factoriales en un arreglo
1 fact [ 0 ] = 1;
2 f o r r ( i , 1 , MAXN) f a c t [ i ] = ( f a c t [ i −1] ∗ i ) % p ;
Factoriales
Calculamos n!, k !, (n − k )! modulo p usando el precálculo
Calculamos los inversos de k !−1 y (n − k )!−1 con aritmética
modular.
Calculamos finalmente n!, k !−1 , (n − k )!−1
Devolvemos n! ∗ k !−1 ∗ (n − k )!−1
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 20 / 62
Combinatoria Formas de calcular los números combinatorios
Cálculo bruto
Método 3: Optimizando el Bruto
Recordamos: kn = k !(n−k
n!
)!
Podemos precalcular los factoriales en un arreglo
1 fact [ 0 ] = 1;
2 f o r r ( i , 1 , MAXN) f a c t [ i ] = ( f a c t [ i −1] ∗ i ) % p ;
Factoriales
Calculamos n!, k !, (n − k )! modulo p usando el precálculo
Calculamos los inversos de k !−1 y (n − k )!−1 con aritmética
modular.
Calculamos finalmente n!, k !−1 , (n − k )!−1
Devolvemos n! ∗ k !−1 ∗ (n − k )!−1
Costo O(n) de precálculo, cada combinatorio lo calculamos en
O(lg(p))
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 20 / 62
Combinatoria Formas de calcular los números combinatorios
Problemita
Problemita
Nos dan Q queries de (n, k ) y tenemos que imprimir el n-k ésimo
número combinatorio (nos aseguran que cada respuesta siempre es
menor que 231 )
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 21 / 62
Combinatoria Inclusión - Exclusión
Inclusión - Exclusión
Inclusión - Exclusión
En combinatoria, el principio de inclusión-exclusión permite calcular el
cardinal de la unión de varios conjuntos, mediante los cardinales de
cada uno de ellos y todas sus posibles intersecciones.
Por ejemplo para dos conjuntos A y B:
|A ∪ B| = |A| + |B| − |A ∩ B|
|A ∩ B| = |A| + |B| − |A ∪ B|
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 22 / 62
Combinatoria Inclusión - Exclusión
Inclusión - Exclusión
Por ejemplo para tres conjuntos A, B y C:
|A ∪ B ∪ C| = |A| + |B| + |C| − |A ∩ B| − |A ∩ C| − |B ∩ C| + |A ∩ B ∩ C|
|A ∩ B ∩ C| = |A| + |B| + |C| − |A ∪ B| − |A ∪ C| − |B ∪ C| + |A ∪ B ∪ C|
Esto se puede generalizar para N conjuntos iterando para los
subconjuntos
Si tienen cantidad impar sumamos
Si tienen cantidad par restamos
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 23 / 62
Combinatoria Inclusión - Exclusión
Problemita 2
Problemita 2
Nos dan N y K números ai . Tachamos todos los que son múltiplos de
algún ai .
Cuántos quedan?
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 24 / 62
Conceptos Básicos de Probabilidad
Contenidos
1 Nociones básicas de Aritmética Modular
2 Combinatoria
Introducción
Numeros Combinatorios y Propiedades
Formas de calcular los números combinatorios
Inclusión - Exclusión
3 Conceptos Básicos de Probabilidad
4 Teoría de Juegos
Nociones básicas
Algunos ejemplos e ideas interesantes
El Nim y su importancia
Algunas variantes
Problemas de tarea
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 25 / 62
Conceptos Básicos de Probabilidad
Probabilidad
Probabilidad
La probabilidad es una medida de la certidumbre asociada a un
suceso o evento futuro y suele expresarse como un número entre 0 y
1 (o entre 0 % y 100 %).
En los casos discretos se suele calcular contando la cantidad de
veces que el evento ocurre dividido el total de eventos posibles.
Por ejemplo al tirar un dado:
1
La probabilidad que salga un 4 es 6
5
La probabilidad de que no salga un 4 es 6
1
La probabilidad de que el número sea par es 2
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 26 / 62
Conceptos Básicos de Probabilidad
Ejemplo
Veamos un problema de ejemplo. Tenemos las 52 cartas de una
baraja francesa. Cual es la probabilidad de sacar 3 cartas y que
sean iguales?
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 27 / 62
Conceptos Básicos de Probabilidad
Ejemplo
Veamos un problema de ejemplo. Tenemos las 52 cartas de una
baraja francesa. Cual es la probabilidad de sacar 3 cartas y que
sean iguales?
Método 1: Contar la cantidad de maneras y dividir por el total
13∗(43) 1
= 425
(523)
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 27 / 62
Conceptos Básicos de Probabilidad
Ejemplo
Veamos un problema de ejemplo. Tenemos las 52 cartas de una
baraja francesa. Cual es la probabilidad de sacar 3 cartas y que
sean iguales?
Método 1: Contar la cantidad de maneras y dividir por el total
13∗(43) 1
= 425
(523)
Método 2: Contar la probabilidad de cada evento por separado
3 2 6 1
1 ∗ 51 ∗ 50 = 2550 = 425
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 27 / 62
Conceptos Básicos de Probabilidad
Ejemplo
Veamos un problema de ejemplo. Tenemos las 52 cartas de una
baraja francesa. Cual es la probabilidad de sacar 3 cartas y que
sean iguales?
Método 1: Contar la cantidad de maneras y dividir por el total
13∗(43) 1
= 425
(523)
Método 2: Contar la probabilidad de cada evento por separado
3 2 6 1
1 ∗ 51 ∗ 50 = 2550 = 425
No siempre ambas son posibles de calcular
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 27 / 62
Conceptos Básicos de Probabilidad
Propiedades
P(A) = 1 − P(A) Esta puede ser útil por ejemplo para calcular la
probabilidad de “sacar al menos un 4”
P(A ∪ B) = P(A) + P(B) − P(A ∩ B)
P(A∩B)
La probabilidad condicional P(A|B) = P(B)
La esperanza matemática E[X ] nos dice el valor promedio de una
variable X.
Si tiramos un dado, la esperanza del número que caerá es 3.5,
pues: 61 ∗ 1 + 16 ∗ 2 + 16 ∗ 3 + 16 ∗ 4 + 16 ∗ 5 + 16 ∗ 6 = 3,5
La linealidad nos dice que E[X1 + X2 ] = E[X1 ] + E[X2 ]
La suma de dos dados nos da una esperanza de
E[D1 + D2 ] = E[D1 ] + E[D2 ] = 3,5 + 3,5 = 7
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 28 / 62
Conceptos Básicos de Probabilidad
Problemita
Problemita
Tenemos n cajas y k bolitas se colocan aleatoriamente en las cajas.
Cual es la esperanza matemática de la cantidad de cajas que estarán
vacías?
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 29 / 62
Conceptos Básicos de Probabilidad
Problemita
Problemita
Tenemos n cajas y k bolitas se colocan aleatoriamente en las cajas.
Cual es la esperanza matemática de la cantidad de cajas que estarán
vacías?
La esperanza matemática de que cada caja individualmente
quede vacía es ( n−1
n )
k
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 29 / 62
Conceptos Básicos de Probabilidad
Problemita
Problemita
Tenemos n cajas y k bolitas se colocan aleatoriamente en las cajas.
Cual es la esperanza matemática de la cantidad de cajas que estarán
vacías?
La esperanza matemática de que cada caja individualmente
quede vacía es ( n−1
n )
k
Por linealidad, el número esperado de cajas vacías será n ∗ ( n−1
n )
k
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 29 / 62
Conceptos Básicos de Probabilidad
Problemita
Problemita
Tenemos n cajas y k bolitas se colocan aleatoriamente en las cajas.
Cual es la esperanza matemática de la cantidad de cajas que estarán
vacías?
La esperanza matemática de que cada caja individualmente
quede vacía es ( n−1
n )
k
Por linealidad, el número esperado de cajas vacías será n ∗ ( n−1
n )
k
Para n = 2, k = 2, nos queda 2 ∗ ( 12 )2 = 2 ∗ 1
4 = 1
2
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 29 / 62
Conceptos Básicos de Probabilidad
Otro Problemita
Otro Problemita
Tenemos un dado que tiene N caras y lo tiramos K veces. Cual es la
esperanza matemática del máximo obtenido?
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 30 / 62
Teoría de Juegos
Contenidos
1 Nociones básicas de Aritmética Modular
2 Combinatoria
Introducción
Numeros Combinatorios y Propiedades
Formas de calcular los números combinatorios
Inclusión - Exclusión
3 Conceptos Básicos de Probabilidad
4 Teoría de Juegos
Nociones básicas
Algunos ejemplos e ideas interesantes
El Nim y su importancia
Algunas variantes
Problemas de tarea
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 31 / 62
Teoría de Juegos
Disclaimer:
Esta parte está completamente basada en las diapos que dio Agustín
Gutiérrez en 2013 en el Training Camp de La Plata.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 32 / 62
Teoría de Juegos
"Si tu signo es jugar, juégalo todo. Tu camisa, tu patio, tu salud. Si tu
debes jugar de cualquier modo, juega bien, con virtud."
- Verbos en Juego, Silvio Rodriguez
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 33 / 62
Teoría de Juegos Nociones básicas
Qué es un juego
“Un juego es eso que hace un conjunto de jugadores cuando
“juega” a algo.”
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 34 / 62
Teoría de Juegos Nociones básicas
Qué es un juego
“Un juego es eso que hace un conjunto de jugadores cuando
“juega” a algo.”
Go, Ajedrez, Solitario, Póker, Batalla Naval, Teg, 1914, Veo Veo
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 34 / 62
Teoría de Juegos Nociones básicas
Qué es un juego
“Un juego es eso que hace un conjunto de jugadores cuando
“juega” a algo.”
Go, Ajedrez, Solitario, Póker, Batalla Naval, Teg, 1914, Veo Veo
Fútbol, Escondida, Chinchón, Mafia.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 34 / 62
Teoría de Juegos Nociones básicas
Qué es un juego
“Un juego es eso que hace un conjunto de jugadores cuando
“juega” a algo.”
Go, Ajedrez, Solitario, Póker, Batalla Naval, Teg, 1914, Veo Veo
Fútbol, Escondida, Chinchón, Mafia.
Partículas subatómicas jugando a seguir ciertas reglas de física
cuántica
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 34 / 62
Teoría de Juegos Nociones básicas
Qué es un juego
“Un juego es eso que hace un conjunto de jugadores cuando
“juega” a algo.”
Go, Ajedrez, Solitario, Póker, Batalla Naval, Teg, 1914, Veo Veo
Fútbol, Escondida, Chinchón, Mafia.
Partículas subatómicas jugando a seguir ciertas reglas de física
cuántica
El universo jugando a seguir las leyes de la física...
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 34 / 62
Teoría de Juegos Nociones básicas
Qué es un juego para nos
Juego combinatorio imparcial
Un juego combinatorio imparcial será para nosotros un juego de dos
jugadores por turnos, de información perfecta y sin azar, que siempre
termina, y cuyo único resultado posible es que un jugador gane y el
otro pierda.
La parte de imparcial hace referencia a que no hay ninguna
diferencia entre las opciones disponibles a ambos jugadores a lo
largo del juego, ni en su función de pagos en una posición
terminal. Es decir, ambos jugadores son idénticos.
Los juegos combinatorios en general permiten juegos partisanos,
donde los jugadores no son iguales (como en Ajedrez).
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 35 / 62
Teoría de Juegos Nociones básicas
Qué es un juego para nos (2)
Muchos de nuestros resultados e ideas se pueden usar igual en
juegos que no sean exactamente combinatorios imparciales
(veremos algunos ejemplos)
En general, podemos pensar estos juegos de manera abstracta
como un grafo de posiciones, con los ejes indicando jugadas
válidas de una posición a otra, y una posición especial actual o
inicial. Las posiciones terminales estarán marcadas como
perdedoras / ganadoras según las reglas del juego.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 36 / 62
Teoría de Juegos Nociones básicas
Qué es un juego para nos (3)
En la teoría no es necesario pedir que estos grafos sean finitos y
hay juegos combinatorios infinitos bien estudiados. Sin embargo
nosotros nos dedicaremos casi exclusivamente a trabajar con
juegos con grafos finitos.
Notar que un juego combinatorio genera un grafo que no contiene
ciclos (DAG), ya que una de las hipótesis es que el juego siempre
termina y no existen cadenas de jugadas infinitas.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 37 / 62
Teoría de Juegos Nociones básicas
Posiciones perdedoras y ganadoras
Intuitivamente decimos que una posición es ganadora si el
jugador al que le toca jugar tiene una estrategia ganadora. Es
decir, una estrategia que le asegura terminar el juego y además
terminarlo ganando, sin importar lo que haga el rival.
De manera análoga una posición es perdedora si el jugador al
que no le toca jugar en esa posición tiene una estrategia
ganadora.
Teorema (Determinación)
En un juego combinatorio imparcial, toda posición es perdedora o
ganadora.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 38 / 62
Teoría de Juegos Nociones básicas
Demostración (O “cómo resolver un juego con DP”)
Basta notar que inductivamente se puede ir asignando un estatus de
ganadora o perdedora a cada posición.
En las posiciones terminales no hay ninguna elección posible:
Son ganadoras o perdedoras inmediatamente según las reglas
del juego.
Luego podemos ir calculando en orden (recordar que es un DAG):
Si de una posición solo se puede mover a ganadoras, entonces
es perdedora. Si se puede mover a al menos una perdedora,
entonces es ganadora.
Esto último es claro pensando en términos de estrategias.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 39 / 62
Teoría de Juegos Nociones básicas
Propiedad universal de las posiciones
ganadoras-perdedoras
Se llama así a la siguiente propiedad:
Teorema (Propiedad universal)
Si {W , L} es una partición del conjunto de posiciones en dos
conjuntos W y L, que cumple la siguiente propiedad universal:
Si p es posicion terminal, p ∈ W si es ganadora y p ∈ L si es
perdedora.
Si p ∈ W no terminal, entonces existe una jugada de p a q y tal
que q ∈ L
Si p ∈ L no terminal, entonces para cada jugada de p a q resulta
que q ∈ W
Entonces W es el conjunto de posiciones ganadoras y L el de
perdedoras.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 40 / 62
Teoría de Juegos Nociones básicas
Ejemplo de las piedritas
Un ejemplo típico es un juego de sustracción como el siguiente:
Juegan dos jugadores por turnos, con una pilita de n piedras. En
cada turno, un jugador puede retirar 1, 3 o 4 piedritas de la pila.
Dado un n, ¿Quién gana si el primer jugador que no puede jugar
es el perdedor?
¿Y si quien no puede jugar ahora es quien gana?
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 41 / 62
Teoría de Juegos Algunos ejemplos e ideas interesantes
Wythoff’s Game (la idea de la criba)
Una variación interesante del juego de sustracción anterior sería
el siguiente:
Juegan dos jugadores por turnos, pero ahora con dos pilitas de
piedras, de n y m piedras.
En cada turno, un jugador puede retirar cualquier cantidad
positiva de piedras de una de las pilas. O bien, puede retirar una
misma cantidad k > 0 de ambas pilas. El jugador que no puede
jugar pierde.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 42 / 62
Teoría de Juegos Algunos ejemplos e ideas interesantes
Strategy Stealing Argument
Un recurso principalmente teórico, aunque podría servir en
competencia.
Es un argumento muy elegante, no constructivo, para demostrar
que un jugador tiene estrategia ganadora.
La idea consiste en suponer que un jugador tiene estrategia
ganadora, y mostrar un absurdo haciendo que el otro jugador se
aproveche de esa estrategia para ganar (le roba la estrategia).
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 43 / 62
Teoría de Juegos El Nim y su importancia
Aclaración previa
Para toda esta parte, es fundamental suponer que tomamos en
nuestros juegos la regla normal de que el jugador que no puede
jugar pierde (o sea, todas las posiciones terminales son
perdedoras).
La suma de juegos se puede plantear también suponiendo que el
que no puede jugar gana, pero la teoría resultante en el caso
general es mucho más complicada en comparación. En muchos
ejemplos de juegos particulares la estrategia es parecida al caso
normal, con alguna modificación ad-hoc.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 44 / 62
Teoría de Juegos El Nim y su importancia
Suma de juegos
Dados dos juegos combinatorios imparciales A y B (como
aclaramos, con la regla normal para terminaciones), podemos
definir un nuevo juego combinatorio imparcial A + B, que consiste
en jugar ambos juegos a la vez.
Es decir: Se ponen los dos tableros sobre la mesa, y cada
jugador en su turno elige uno de los dos juegos y hace una
jugada válida en él. El primero que no puede jugar (porque no
quedan jugadas válidas en ninguno de los dos juegos) pierde.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 45 / 62
Teoría de Juegos El Nim y su importancia
Suma de juegos (2)
Notación: Diremos que res(A) = 1 si la posición inicial del juego A
es ganadora, y res(A) = 0 sino.
Argumento muy importante: res(A + A) = 0 para cualquier A.
Notación: Llamaremos ∗n al juego consistente en empezar con
una pilita de n piedras, y en cada jugada sacar una cantidad
positiva arbitraria. Llamaremos ∗ = ∗1, y notemos que res(∗0) = 0
Notar que la suma de juegos es asociativa y conmutativa (los
juegos resultantes tienen grafos isomorfos), y el ∗0 viene a ser
elemento neutro.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 46 / 62
Teoría de Juegos El Nim y su importancia
Equivalencia de juegos
Dados dos juegos combinatorios imparciales A y B, decimos que
son equivalentes y notamos A ≡ B si para todo juego C vale:
res(A + C) = res(B + C)
Es decir, los juegos son intercambiables entre sí (equivalentes): si
en una suma reemplazamos uno por otro, no afecta al resultado
del juego.
La equivalencia es más fuerte que tener el mismo resultado
(res(∗2) = res(∗) = 1 pero no son equivalentes, como se ve
poniendo C = ∗).
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 47 / 62
Teoría de Juegos El Nim y su importancia
Propiedades de la Equivalencia de juegos
Es inmediato de la definición que la equivalencia de juegos es
reflexiva, simétrica y transitiva, o sea relación de equivalencia.
Propiedad: A + 0 ≡ A
Propiedad: A ≡ 0 ⇔ res(A) = 0 (argumento estratégico:
agregar a una suma un juego perdedor no afecta)
Propiedad: A ≡ B ⇒ A + C ≡ B + C (inmediato de la definición y
propiedades vistas de la suma)
Propiedad: A ≡ B ⇔ A + B ≡ 0 (de las anteriores y
res(B + B) = 0)
Surge ahora la pregunta natural de encontrar las clases de
equivalencia de juegos, y entender cómo se comportan respecto
a la suma de juegos.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 48 / 62
Teoría de Juegos El Nim y su importancia
El nim
Se llama nim a un juego donde la posición inicial es suma de
varios ∗n.
Es decir, en el juego hay pilitas de piedras. Y la jugada válida en
cada paso es elegir una pila y quitarle piedras.
El Nim resulta ser un juego muy importante por ser representativo
de muchos otros juegos combinatorios.
Como precalentamiento, estudiemos por ejemplo el Nim cuando
todas las pilitas son ∗ o ∗2
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 49 / 62
Teoría de Juegos El Nim y su importancia
Juego ad-hoc y su relación con el Nim...
Consideremos un juego donde hay muchos tableros de 3x3. Cada
tablero puede tener casillas rotas y sanas. La jugada válida
consiste en poner un triminó con forma de L en un tablero,
llenando casillas sanas libres no ocupadas anteriormente.
Como siempre el primer jugador que no puede jugar pierde.
¿Cuál es la relación de este juego con el Nim?
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 50 / 62
Teoría de Juegos El Nim y su importancia
Sprague-Grundy Theorem
Resulta que esta traducción al Nim que hemos realizado en el ejemplo
de recién es un caso particular del siguiente
Teorema (Sprague-Grundy)
Si G es un juego combinatorio imparcial cualquiera, entonces existe
un n tal que G ≡ ∗n
Si G es un juego con grafo finito, como todos los que estudiamos, el n
es un natural común y corriente. Sino, el resultado sigue valiendo pero
n podrá ser un número ordinal. Al n tal que G ≡ ∗n se lo llama el
Grundy Number de G y lo notaremos g(G) (¿por qué podemos
afirmar que tal n es único?)
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 51 / 62
Teoría de Juegos El Nim y su importancia
Demostración (algoritmo para calcular Grundy
Numbers)
A partir del grafo del juego, vamos a ir marcando los Grundy
Numbers de sus posiciones.
Es claro que las posiciones p terminales tienen g(p) = 0, pues
justamente son perdedoras.
A partir de ahora, definimos para cada posición p,
g(p) = mex{g(h)|h es hijo de p}
Se puede ver por inducción que cada posición resulta equivalente
con su Grundy Number asignado de esta manera.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 52 / 62
Teoría de Juegos El Nim y su importancia
Teorema de la suma (solución al Nim)
Sabemos ahora que a cada juego G le podemos asignar un
número g(G), que sabemos en principio calcular.
Y es claro que en G gana el primer jugador si y solo si g(G) 6= 0
(pues res(∗n) = 0 solo cuando n = 0)
Lo que nos faltaría para que nuestra teoría resulte ser una
herramienta poderosa para estudiar la suma de juegos es cuánto
vale g(A + B), sabiendo g(A) y g(B)
Teorema
Si A, B son juegos combinatorios imparciales, entonces vale
g(A + B) = g(A) xor g(B)
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 53 / 62
Teoría de Juegos El Nim y su importancia
Demostración
Podemos probarlo inductivamente sobre el grafo del juego A + B
Desde A + B podemos mover a juegos de la forma A0 + B o
A + B 0 , siendo A0 , B 0 ejemplos de opciones posibles en A y B.
Inductivamente sabemos que g(A0 + B) = g(A0 ) xor g(B) y lo
mismo con A, B 0
Por lo tanto lo que queremos ver es que el mex de todos estos
números es justamente g(A) xor g(B)
Como no hay un A0 tal que g(A) = g(A0 ) y lo mismo con B, es fácil
ver que g(A) xor g(B) no aparece entre los números.
Para ver que todos los anteriores aparecen (y por lo tanto ese es
el mex), hay que notar que para cada x < g(A) hay un A0 con
g(A0 ) = x, y lo mismo con B, y observar que con estas opciones
se forman entre los números todos los y < g(A) xor g(B)
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 54 / 62
Teoría de Juegos El Nim y su importancia
¡El Nim está resuelto!
De nuestros resultados es inmediato ahora que una posición en el
Nim es perdedora si y solo si el xor de todas las cantidades de
piedritas es 0. O sea que jugar bien consiste en jugar siempre a
una posición con xor nulo para dejarle a nuestro rival una posición
perdedora en todo momento y asegurarnos ganar.
Lo mismo vale para cualquier otra suma de juegos, siempre que
seamos capaces de calcular primero los Grundy Numbers
correspondientes.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 55 / 62
Teoría de Juegos Algunas variantes
Misère Nim
Se llama así a la variante del Nim (y de cualquier juego en
general) en la cual el jugador que se queda sin movimientos
gana, en lugar de perder.
Con esta regla ya no hay una teoría tan feliz basada en Grundy
Numbers sencillos y nada más. Pero al menos para el caso del
Nim, la modificación necesaria es menor.
Usando la propiedad universal es fácil ver que una posición es
ganadora en el mismo caso que antes, salvo el caso en que son
todas pilitas de 1, en cuyo caso es al revés que antes.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 56 / 62
Teoría de Juegos Algunas variantes
Variantes alternativas de la suma de juegos
Variante 1: Puedo mover con varios tableros que quiera (al menos
uno). Una posición resulta perdedora exactamente cuando todos
los grundy numbers de los tableros son nulos.
Variante 2: Puedo mover con varios tableros que quiera (al menos
uno y no todos). Una posición resulta perdedora exactamente
cuando todos los grundy numbers de los tableros son iguales.
Ambas son muy fáciles de chequear utilizando la propiedad
universal.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 57 / 62
Teoría de Juegos Algunas variantes
El Nim puede esconderse en un Loopy-Game
partisano
Considerar el siguiente juego: En un tablero de ajedrez se ponen en
cada columna una torre blanca y una negra. Cada jugador controla un
color y juegan por turnos. En cada turno cada jugador mueve
libremente una de sus torres dentro de la columna correspondiente,
pero sin comer ni saltar la otra torre. Si alguien no puede jugar, pierde.
¿Alguien tiene estrategia ganadora? ¿Quién? ¿Cómo debe jugar?
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 58 / 62
Teoría de Juegos Algunas variantes
Enunciado de Tic-Tac-Toe
Tic-tac-toe 1-D se juega en un tablero de 1xD. Cada jugador
juega una X en algún lugar del tablero. El primero en escribir 3 “X”
consecutivas gana. Dado un estado inicial decidir quien tiene
estrategia ganadora.
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 59 / 62
Teoría de Juegos Problemas de tarea
¡¡Problemas!!
http://community.topcoder.com/stat?c=problem_statement&pm=6856
http://community.topcoder.com/stat?c=problem_statement&pm=2987&rd=5862
http://community.topcoder.com/stat?c=problem_statement&pm=7424
http://www.spoj.com/problems/MMMGAME/
http://www.spoj.com/problems/QCJ3/
http://www.spoj.com/problems/TRIOMINO/
http://www.spoj.com/problems/BNWNIM/
http://www.spoj.com/problems/CLK/
http://www.spoj.com/problems/POLYGAME/
Los siguientes 3 son el mismo problema en 1D, 2D y 3D (dificultad creciente)
http://www.spoj.com/problems/QWERTY04/
http://www.spoj.com/problems/TWOKINGS/
http://www.spoj.com/KOPC13/problems/CONQUER/
http://ipsc.ksp.sk/2010/real/problems/k.html (con soluciones en http://ipsc.ksp.sk/archive)
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 60 / 62
Teoría de Juegos Problemas de tarea
Bibliografía
http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=algorithmGames
Winning ways for your mathematical plays, Elwyn R. Berlekamp, John H. Conway, and Richard K. Guy
On numbers and games, John Horton Conway
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 61 / 62
Teoría de Juegos Problemas de tarea
Cosas que faltaron (avanzadas)
Burnside Lemma
Números de Catalán
Cadenas de Markov
Pablo Zimmermann (UNR) Combinatoria, Probabilidad y Juegos TC Argentina 2018 62 / 62