Grafos con Sage para resolver un problema lúdico
...suelo trabajar con Daniel Sánchez, ¡¡pero no hemos podido traerle!!
...vamos a usar Jugglinglab, pero hay muchos otros.
|
Si el malabarista tiene dos manos, usa la mano izquierda en los pulsos impares, y la derecha en los pulsos pares. |
|
¿Podéis decirme qué trucos hace el malabarista virtual?
Es fácil comprobar si una secuencia finita es un patrón de siteswap periódico.
def validate(lanza):
N = len(lanza)
recoge = [0]*len(lanza)
for j,k in enumerate(lanza):
if recoge[(j+k)%N]>0:
return False
recoge[(j+k)%N] = 1
return True
def validate_bis(seq):
return len(set((j+k)%N for j,k in enumerate(seq) )) == len(seq)
Pero: ¿podemos listar todos los patrones de siteswap posibles?
|
Definir grafos
g = DiGraph()
N = 12
for k in [1..N]:
for j in k.divisors():
g.add_edge(j,k)
¿Qué grafo es éste?
g.plot(layout='circular')
g.plot(layout='circular',
partition=[[v for v in g if g.in_degree(v)==k]
for k in [0..N]])
pincha en la imagen para ver la hoja interactiva en la wiki de Sage de la Universidad de Zaragoza.
Para profundizar
pincha en las imágenes para ver las hojas interactivas en la wiki de Sage de la Universidad de Zaragoza.
Notas sacadas de la asignatura: Laboratorio de Matemáticas
Animaciones con grafos