À propos de la profondeur des zones de buts dans le CQU4
02 mars 2015 | Catégories: ultimate | View CommentsLes Règlements du jeu de l’ultimate 4 contre 4 adoptés pour la première fois en 2007 et dont la dernière version a été adoptée en 2012 indiquent que la profondeur de la zone de buts pour l'ultimate 4 contre 4 au Québec est de 3 mètres. La version de 2007 indiquait 2.5 mètres et suite aux procédures de reconnaissance de la Fédération québécoise d'ultimate par le Ministère en 2011, on était passé à 3 mètres.
Trois mètres, c'est petit, mais remarquons que c'est plus que la grandeur de n'importe quel être humain. En théorie, cela signifie notamment que personne (pas même Kevin Groulx) ne peut toucher simultanément à la ligne de fond avec ses pieds et à la ligne de buts avec ses mains. En théorie, 3 mètres, c'est la hauteur d'un éléphant. Mais la réalité ne correspond pas toujours à la théorie...
En réalité, les zones de buts dans le CQU4 et dans les ligues québécoises de 4 contre 4 sont très souvent trop peu profondes et parfois même moins que 2 mètres. On peut se demander pourquoi est-ce qu'on place toujours les cônes à la mauvaise distance? Mais, ce n'est pas la question que je vais considérer dans ce message. Je vais plutôt m'intéresser à la question suivante:
Pourquoi faudrait-il placer les cônes à une distance de 3 mètres?
J'y vois deux raisons.
Raison 1 (pour l'offensive). Lorsque la zone a une profondeur de 2 mètres seulement, elle est essentiellement unidimensionnelle (gauche-droite), car un défenseur placé dans un coin de la zone bloque toute la profondeur de la zone. Les tracés sont donc unidimensionnels: un traceur va attaquer un coin puis se diriger vers l'autre coin. Lorsque la zone a une profondeur de 3 mètres, un défenseur ne peut plus bloquer toute la profondeur de la zone. Le défenseur doit faire un choix. Protéger le "fond" ou protéger le "proche". Cela offre une nouvelle dimension aux tracés possibles de l'attaquant. Cela offre une nouvelle dimension aux feintes que le lanceur peut faire. Bref, cela permet de développer chez les joueurs et joueuses du Québec une attaque deux-dimensionnelle de la zone des buts ce qui peut être très utile l'été venu lorsqu'on joue à 7 contre 7 avec des zones de buts qui comporte aussi cette deuxième dimension de profondeur.
Raison 2 (pour la défensive). Depuis plusieurs années, on joue avec des zones d'environ 2 mètres de profondeur. En tant que défenseur ayant joué beaucoup dans le CQU4, j'ai développé des aptitudes pour marquer un traceur attaquant la zone des buts. Je connais les tracés typiques, je sais ce que je dois protéger, ce que je peux laisser et à quelle distance et où je dois me placer en tout temps pour bien protéger la zone de buts de 2 mètres de profond. Toutefois, toutes ces aptitudes sont encore une fois unidimensionnelles. En jouant dans le CQU4 ces dernières années, je n'ai pas développé la deuxième dimension de mon positionnement défensif en tenant compte de la profondeur de la zone de buts, car la zone des buts n'était toujours profonde que de 2 mètres. Je crois qu'il faudrait placer les cônes à 3 mètres pour développer chez les joueurs et joueuses du Québec une défensive deux-dimensionnelle qui connaîtrait les tracés typiques utilisant la profondeur de la zone des buts. Je pense que ces aptitudes ainsi développées seraient très utiles l'été venu dans le contexte de la défense d'une zone des buts qui admet clairement un aspect deux-dimensionnel.
Arnoux-Rauzy-Poincaré sequences
26 février 2015 | Catégories: sage | View CommentsIn a recent article with Valérie Berthé [BL15], we provided a multidimensional continued fraction algorithm called Arnoux-Rauzy-Poincaré (ARP) to construct, given any vector \(v\in\mathbb{R}_+^3\), an infinite word \(w\in\{1,2,3\}^\mathbb{N}\) over a three-letter alphabet such that the frequencies of letters in \(w\) exists and are equal to \(v\) and such that the number of factors (i.e. finite block of consecutive letters) of length \(n\) appearing in \(w\) is linear and less than \(\frac{5}{2}n+1\). We also conjecture that for almost all \(v\) the contructed word describes a discrete path in the positive octant staying at a bounded distance from the euclidean line of direction \(v\).
In Sage, you can construct this word using the next version of my package slabbe-0.2 (not released yet, email me to press me to finish it). The one with frequencies of letters proportionnal to \((1, e, \pi)\) is:
sage: from slabbe.mcf import algo sage: D = algo.arp.substitutions() sage: it = algo.arp.coding_iterator((1,e,pi)) sage: w = words.s_adic(it, repeat(1), D) word: 1232323123233231232332312323123232312323...
The factor complexity is close to 2n+1 and the balance is often less or equal to three:
sage: w[:10000].number_of_factors(100) 202 sage: w[:100000].number_of_factors(1000) 2002 sage: w[:1000].balance() 3 sage: w[:2000].balance() 3
Note that bounded distance from the euclidean line almost surely was proven in [DHS2013] for Brun algorithm, another MCF algorithm.
Other approaches: Standard model and billiard sequences
Other approaches have been proposed to construct such discrete lines.
One of them is the standard model of Eric Andres [A03]. It is also equivalent to billiard sequences in the cube. It is well known that the factor complexity of billiard sequences is quadratic \(p(n)=n^2+n+1\) [AMST94]. Experimentally, we can verify this. We first create a billiard word of some given direction:
sage: from slabbe import BilliardCube sage: v = vector(RR, (1, e, pi)) sage: b = BilliardCube(v) sage: b Cubic billiard of direction (1.00000000000000, 2.71828182845905, 3.14159265358979) sage: w = b.to_word() sage: w word: 3231232323123233213232321323231233232132...
We create some prefixes of \(w\) that we represent internally as char*. The creation is slow because the implementation of billiard words in my optional package is in Python and is not that efficient:
sage: p3 = Word(w[:10^3], alphabet=[1,2,3], datatype='char') sage: p4 = Word(w[:10^4], alphabet=[1,2,3], datatype='char') # takes 3s sage: p5 = Word(w[:10^5], alphabet=[1,2,3], datatype='char') # takes 32s sage: p6 = Word(w[:10^6], alphabet=[1,2,3], datatype='char') # takes 5min 20s
We see below that exactly \(n^2+n+1\) factors of length \(n<20\) appears in the prefix of length 1000000 of \(w\):
sage: A = ['n'] + range(30) sage: c3 = ['p_(w[:10^3])(n)'] + map(p3.number_of_factors, range(30)) sage: c4 = ['p_(w[:10^4])(n)'] + map(p4.number_of_factors, range(30)) sage: c5 = ['p_(w[:10^5])(n)'] + map(p5.number_of_factors, range(30)) # takes 4s sage: c6 = ['p_(w[:10^6])(n)'] + map(p6.number_of_factors, range(30)) # takes 49s sage: ref = ['n^2+n+1'] + [n^2+n+1 for n in range(30)] sage: T = table(columns=[A,c3,c4,c5,c6,ref]) sage: T n p_(w[:10^3])(n) p_(w[:10^4])(n) p_(w[:10^5])(n) p_(w[:10^6])(n) n^2+n+1 +----+-----------------+-----------------+-----------------+-----------------+---------+ 0 1 1 1 1 1 1 3 3 3 3 3 2 7 7 7 7 7 3 13 13 13 13 13 4 21 21 21 21 21 5 31 31 31 31 31 6 43 43 43 43 43 7 52 55 56 57 57 8 63 69 71 73 73 9 74 85 88 91 91 10 87 103 107 111 111 11 100 123 128 133 133 12 115 145 151 157 157 13 130 169 176 183 183 14 144 195 203 211 211 15 160 223 232 241 241 16 176 253 263 273 273 17 192 285 296 307 307 18 208 319 331 343 343 19 224 355 368 381 381 20 239 392 407 421 421 21 254 430 448 463 463 22 268 470 491 507 507 23 282 510 536 553 553 24 296 552 583 601 601 25 310 596 632 651 651 26 324 642 683 703 703 27 335 687 734 757 757 28 345 734 787 813 813 29 355 783 842 871 871
Billiard sequences generate paths that are at a bounded distance from an euclidean line. This is equivalent to say that the balance is finite. The balance is defined as the supremum value of difference of the number of apparition of a letter in two factors of the same length. For billiard sequences, the balance is 2:
sage: p3.balance() 2 sage: p4.balance() # takes 2min 37s 2
Other approaches: Melançon and Reutenauer
Melançon and Reutenauer [MR13] also suggested a method that generalizes Christoffel words in higher dimension. The construction is based on the application of two substitutions generalizing the construction of sturmian sequences. Below we compute the factor complexity and the balance of some of their words over a three-letter alphabet.
On a three-letter alphabet, the two morphisms are:
sage: L = WordMorphism('1->1,2->13,3->2') sage: R = WordMorphism('1->13,2->2,3->3') sage: L WordMorphism: 1->1, 2->13, 3->2 sage: R WordMorphism: 1->13, 2->2, 3->3
Example 1: periodic case \(LRLRLRLRLR\dots\). In this example, the factor complexity seems to be around \(p(n)=2.76n\) and the balance is at least 28:
sage: from itertools import repeat, cycle sage: W = words.s_adic(cycle((L,R)),repeat('1')) sage: W word: 1213122121313121312212212131221213131213... sage: map(W[:10000].number_of_factors, [10,20,40,80]) [27, 54, 110, 221] sage: [27/10., 54/20., 110/40., 221/80.] [2.70000000000000, 2.70000000000000, 2.75000000000000, 2.76250000000000] sage: W[:1000].balance() # takes 1.6s 21 sage: W[:2000].balance() # takes 6.4s 28
Example 2: \(RLR^2LR^4LR^8LR^{16}LR^{32}LR^{64}LR^{128}\dots\) taken from the conclusion of their article. In this example, the factor complexity seems to be \(p(n)=3n\) and balance at least as high (=bad) as \(122\):
sage: W = words.s_adic([R,L,R,R,L,R,R,R,R,L]+[R]*8+[L]+[R]*16+[L]+[R]*32+[L]+[R]*64+[L]+[R]*128,'1') sage: W.length() 330312 sage: map(W.number_of_factors, [10, 20, 100, 200, 300, 1000]) [29, 57, 295, 595, 895, 2981] sage: [29/10., 57/20., 295/100., 595/200., 895/300., 2981/1000.] [2.90000000000000, 2.85000000000000, 2.95000000000000, 2.97500000000000, 2.98333333333333, 2.98100000000000] sage: W[:1000].balance() # takes 1.6s 122 sage: W[:2000].balance() # takes 6s 122
Example 3: some random ones. The complexity \(p(n)/n\) occillates between 2 and 3 for factors of length \(n=1000\) in prefixes of length 100000:
sage: for _ in range(10): ....: W = words.s_adic([choice((L,R)) for _ in range(50)],'1') ....: print W[:100000].number_of_factors(1000)/1000. 2.02700000000000 2.23600000000000 2.74000000000000 2.21500000000000 2.78700000000000 2.52700000000000 2.85700000000000 2.33300000000000 2.65500000000000 2.51800000000000
For ten randomly generated words, the balance goes from 6 to 27 which is much more than what is obtained for billiard words or by our approach:
sage: for _ in range(10): ....: W = words.s_adic([choice((L,R)) for _ in range(50)],'1') ....: print W[:1000].balance(), W[:2000].balance() 12 15 8 24 14 14 5 11 17 17 14 14 6 6 19 27 9 16 12 12
References
[BL15] | V. Berthé, S. Labbé, Factor Complexity of S-adic words generated by the Arnoux-Rauzy-Poincaré Algorithm, Advances in Applied Mathematics 63 (2015) 90-130. http://dx.doi.org/10.1016/j.aam.2014.11.001 |
[DHS2013] | Delecroix, Vincent, Tomás Hejda, and Wolfgang Steiner. “Balancedness of Arnoux-Rauzy and Brun Words.” In Combinatorics on Words, 119–31. Springer, 2013. http://link.springer.com/chapter/10.1007/978-3-642-40579-2_14. |
[A03] | E. Andres, Discrete linear objects in dimension n: the standard model, Graphical Models 65 (2003) 92-111. |
[AMST94] | P. Arnoux, C. Mauduit, I. Shiokawa, J. I. Tamura, Complexity of sequences defined by billiards in the cube, Bull. Soc. Math. France 122 (1994) 1-12. |
[MR13] | G. Melançon, C. Reutenauer, On a class of Lyndon words extending Christoffel words and related to a multidimensional continued fraction algorithm. J. Integer Seq. 16, No. 9, Article 13.9.7, 30 p., electronic only (2013). https://cs.uwaterloo.ca/journals/JIS/VOL16/Reutenauer/reut3.html |
Monsieur Coderre a raison de parler de la qualité des terrains... d'ultimate
27 janvier 2015 | Catégories: ultimate | View CommentsComme l'a annoncé Radio-Canada cette semaine, "le maire de Montréal, Denis Coderre, veut promouvoir le baseball. Pour ce faire, il annonce entre autres un investissement de 11 millions de dollars pour la réfection des terrains de balle municipaux, dont plusieurs sont en mauvais état". Cette nouvelle m'a fait réaliser plusieurs choses.
Premièrement, oui, on a le droit de considérer la qualité des terrains sur lesquels on pratique notre sport. Je ne m'étais jamais posé cette question toutes les soirées où j'ai pratiqué avec Méphisto les soirs de semaines sur les terrains secs, argileux et si mal drainés de l'Hôpital Douglas à Verdun. Je n'avais jamais remis en question la qualité des terrains au centre de l'anneau de l'Hippodrome à Montréal au milieu des années 2000 dans la ligue du mardi avec les Smileys. Un terrain où la pelouse ressemble étrangement à du sable dur et où le foin atteint les 30 cm de hauteur.
Deuxièmement, une ville peut financer des installations sportives. Ça non plus, je ne savais pas que ça se pouvait. Je croyais que la seule possibilité était que nous autres, joueurs et joueuses d'ultimate, paient comme l'Association d'ultimate de Montréal (AUM) l'a fait dans Rosemont en 2010 en investissant 50000$ pour retaper un terrain ou encore l'Association des joueuses et joueurs d'ultimate de Québec (AJJUQ) l'a fait dans les années 2000 en investissant elle aussi plusieurs milliers de dollars pour développer le Parc d'ultimate de Québec (PUQ) situé sous les lignes à haute tension de pilônes électriques d'Hydro-Québec (quoi de plus normal?). Sinon, je pensais que la seule façon de pratiquer mon sport était de trouver un terrain encerclé par les voies d'accès du pont Jacques-Cartier. L'avantage de ce terrain du parc Faubourg est qu'il est toujours libre, car personne n'a le goût d'être là. Et surtout, suivez le conseil de l'association en vous installant "le plus près possible du pont, car c'est de là que le terrain est le plus beau!".
Troisièmement, de l'éclairage, ça existe. Dans l'article de Radio-Canada, "on parle notamment de mettre l'accent sur le drainage et l'éclairage". Le drainage, je ne peux pas en parler, car je n'ai jamais eu l'occasion de jouer sur un terrain drainé. Mais l'éclairage, ça je sais ce que c'est. Mais je n'avais pas pensé qu'on pouvait s'en servir pour utiliser un terrain d'ultimate en soirée. Comme c'est brillant! Je m'étais habitué à faire des pratiques d'ultimate écourtées de 30 minutes dans un parc au mois d'août juste avant les Championnats canadiens, car il ne faisait plus assez clair pour jouer sans se blesser. J'avais toujours trouvé géniale et naturelle la politique de temps de jeu maximum de l'AUM basée sur le coucher du soleil: au crépuscule, le match est terminé peu importe le pointage. L'heure du coucher du soleil est connue à l'avance par les deux capitaines selon des calculs de météo média et elle détermine l'heure de la fin du match à la minute près selon la date du match. Les matchs se terminent quand dans les autres sports?
Notons, il faut le dire, que le développement des installations sportives pour les autres sports (football, soccer, volley ball de plage) bénéficie aussi à l'ultimate. L'hiver, les Montréalais n'ont plus à faire 40 minutes de voiture pour jouer un match d'ultimate à 23h10 un mardi soir à Saint-Jean-sur-Richelieu. Depuis les 5 ou 6 dernières années, de nouveaux plateaux de soccer intérieur et dômes gonflés sur des terrains extérieur en synthétique ont vu le jour à Laval, à Longueuil, au campus Loyola de l'Université Concordia et au Stade Hébert (Crémazie et Viau). Cela a permis d'accueillir une forte croissance de la pratique de l'ultimate en hiver. Donc, ça oui, je le savais quand même un peu: les investissements en installations sportives faites pour d'autres sports profitent aussi à l'ultimate lorsque nous avons accès à ces plateaux. Il ne faut pas tenir cela pour acquis comme se le demandait récemment Philippe Thivierge. En France par exemple, le soccer s'approprie toutes les plages horaires et laisse des miettes à l'ultimate sinon rien.
Comme le baseball, l'ultimate connaît aussi une progression annuelle de 5 à 10% du nombre de participants pour un total de plus de 6000 joueurs et joueuses au Québec en 2014. Aussi, l'ultimate a l'avantage de rejoindre dans des proportions beaucoup plus équilibrées tant les femmes que les hommes, proportion que j'évaluerais à 40%-60% (à confirmer par la fédération). Finalement, l'ultimate possède déjà son équipe professionnelle d'ultimate, le Royal... dont le nom a peut-être été inspiré du baseball. Si je ne me trompe pas le Royal a déjà attiré plus de spectateurs que la plus petite foule de l'histoire des Expos (2134 personnes le 5 septembre 2002 selon cet article de RDS), c'est déjà ça!
Selon l'article de Radio-Canada, il y aurait 27000 joueurs de baseball dans la province. Soyons donc honnête et raisonnable dans nos demandes comme nous l'avons toujours été. Optons pour la répartition proportionnelle: \[ \frac{6000}{27000 + 6000} \times 11\,000\,000 $ = 2\,000\,000 $ \] Tout spécialiste de la négociation sera d'accord pour dire qu'une répartition proportionnelle est juste. Ainsi, soyons honnête et laissons 9 des 11 millions $ de l'investissement de Monsieur Coderre pour le baseball et conservons seulement ce que nous méritons, c'est-à-dire la différence de 2 millions $ pour faire des investissements sur l'île de Montréal pour construire des installations en bons états (terrains drainés, éclairés avec estrades) pour la pratique de l'ultimate.
Et vous, pensez-vous que l'ultimate mérite une attention de la part des municipalités comme le suggère la fin de l'article de La Presse sur le même sujet?
Échelles de points proposées pour la saison 2014-15 du CQU4
29 septembre 2014 | Catégories: ultimate | View CommentsLes points par tournois tels qu'ils sont depuis 2011:
Les points par tournois que je suggère d'utiliser pour la saison 2014-15:
Avec ces échelles de points, une équipe qui gagne un tournoi de la Série 666 obtient autant de points qu'une équipe finissant 12e dans un tournoi de la Série 1000. Pareillement, une équipe qui gagne un tournoi de la Série 333 obtient autant de points qu'une équipe finissant environ 12e dans un tournoi de Série 666.
Concrètement les tournois de la Série 666 seront payant pour les équipes du 16-32 voulant se tailler une place dans le top 16. Et les tournois de la Série 333 seront payant pour les équipes du 32-50 voulant se tailler une place dans le top 32.
Il y aura maintenant trois Séries, chaque série possédant au plus 4 tournois pour favoriser les rencontres entre équipes du même niveau.
Série 1000:
- Les tournois des grands centres (Montréal, Trois-Rivières, Sherbrooke, Québec)
- Movember, Bye Bye, Coup de Foudre (et le Mars Attaque ou non pour cette année?)
- Dans un complexe de gazon synthétique intérieur
- 6 ou 7 parties par équipe sur deux jours
- Les 100 premières équipes obtiennent des points
- L'équipe gagnante obtient 1000 points
- Trois équipes obtiennent 50 points pour l'esprit sportif
Série 666:
- Les tournois des régions plus élgoinées, possiblement dans des gymnases
- St-Jean-sur-Richelieu, Gatineau, Rimouski, Saguenay
- October Disk, Bonne année, La Flotte, La Virée
- Dans un complexe de gazon synthétique intérieur ou dans des gymnases
- 6 ou 7 parties par équipe sur deux jours
- Les 50 premières équipes obtiennent des points
- L'équipe gagnante obtient 666 points
- Trois équipes obtiennent 50 points pour l'esprit sportif
Série 333:
- Nouveaux tournois organisés à Terrebonne, Drumondville, Granby, Saint-Hyacinthe, etc.
- Ou encore tournois dans les grands centres comme Sherbrooke, Québec, Montréal ou Trois-Rivières.
- Il pourrait en avoir un ou deux cette année dans la perspective d'un nouveau tournoi par année.
- Dans un complexe de gazon synthétique intérieur ou dans des gymnases
- 4 à 7 parties par équipe sur un ou deux journées
- Les 24 premières équipes obtiennent des points
- L'équipe gagnante obtient 333 points
- Trois équipes obtiennent 50 points pour l'esprit sportif
- Les tournois de la Séries 333 pourront agir comme tournoi de qualification pour les tournois contingentés de la Série 1000. Par exemple, le top 8 d'un tournoi de la Série 333 pourraient obtenir un laisser-passer pour le Coup de Foudre.
La Série 333 comme tournois de qualification
Concrètement, je pense que ce serait intéressant de créer un tournoi de la Série 333 dès cette année dans les semaines précédents le Coup de Foudre. Ce tournoi pourrait être organisé à Sherbrooke ou ailleurs comme Granby ou une autre ville. Ensuite, s'il y a 48 places pour le Coup de Foudre, elles pourraient être réparties de la façon suivante: 32 équipes provenant grosso moddo du top 32 de la FQU ayant répondu aux critères de sélection, 8 équipes locales choisies par l'AUS, et 8 équipes qualifiées via le tournoi de la Série 333. Si le tournoi de la Série 333 n'est pas trop organisé à l'avance, cela permet de dévier les inscriptions en surplus du Coup de Foudre vers ce tournoi de qualification.
L'idée d'avoir des tournois de qualifications est, je pense, la direction vers laquelle nous devons aller pour désengorger les tournois de la Série 1000 ne pouvant accueillir plus d'une cinquantaine d'équipes et obligés de refuser une vingtaine d'équipes. C'est logique et utilisé dans les autres sports (surf, tennis par exemple).
Les tableaux pour avoir les chiffres exacts:
Position | Série 1000 | Série 666 | Série 333 |
1 | 1000 | 666 | 333 |
2 | 955 | 614 | 286 |
3 | 916 | 570 | 248 |
4 | 881 | 530 | 216 |
5 | 848 | 495 | 188 |
6 | 817 | 462 | 163 |
7 | 788 | 432 | 141 |
8 | 761 | 404 | 122 |
9 | 735 | 378 | 104 |
10 | 710 | 354 | 89 |
11 | 686 | 331 | 75 |
12 | 663 | 309 | 63 |
13 | 641 | 288 | 52 |
14 | 620 | 269 | 42 |
15 | 599 | 251 | 34 |
16 | 580 | 234 | 26 |
17 | 561 | 217 | 20 |
18 | 542 | 202 | 15 |
19 | 524 | 187 | 10 |
20 | 507 | 173 | 7 |
21 | 490 | 160 | 4 |
22 | 474 | 148 | 2 |
23 | 458 | 136 | 1 |
24 | 443 | 125 | 1 |
25 | 428 | 114 | 0 |
26 | 413 | 104 | 0 |
27 | 399 | 95 | 0 |
28 | 386 | 86 | 0 |
29 | 372 | 78 | 0 |
30 | 360 | 70 | 0 |
31 | 347 | 63 | 0 |
32 | 335 | 56 | 0 |
33 | 323 | 49 | 0 |
34 | 311 | 44 | 0 |
35 | 300 | 38 | 0 |
36 | 289 | 33 | 0 |
37 | 278 | 28 | 0 |
38 | 268 | 24 | 0 |
39 | 258 | 20 | 0 |
40 | 248 | 17 | 0 |
41 | 239 | 14 | 0 |
42 | 229 | 11 | 0 |
43 | 220 | 9 | 0 |
44 | 211 | 7 | 0 |
45 | 203 | 5 | 0 |
46 | 194 | 3 | 0 |
47 | 186 | 2 | 0 |
48 | 178 | 2 | 0 |
49 | 171 | 1 | 0 |
50 | 163 | 1 | 0 |
51 | 156 | 0 | 0 |
52 | 149 | 0 | 0 |
53 | 142 | 0 | 0 |
54 | 136 | 0 | 0 |
55 | 129 | 0 | 0 |
56 | 123 | 0 | 0 |
57 | 117 | 0 | 0 |
58 | 111 | 0 | 0 |
59 | 105 | 0 | 0 |
60 | 100 | 0 | 0 |
61 | 95 | 0 | 0 |
62 | 89 | 0 | 0 |
63 | 85 | 0 | 0 |
64 | 80 | 0 | 0 |
65 | 75 | 0 | 0 |
66 | 71 | 0 | 0 |
67 | 66 | 0 | 0 |
68 | 62 | 0 | 0 |
69 | 58 | 0 | 0 |
70 | 54 | 0 | 0 |
71 | 51 | 0 | 0 |
72 | 47 | 0 | 0 |
73 | 44 | 0 | 0 |
74 | 40 | 0 | 0 |
75 | 37 | 0 | 0 |
76 | 34 | 0 | 0 |
77 | 31 | 0 | 0 |
78 | 29 | 0 | 0 |
79 | 26 | 0 | 0 |
80 | 24 | 0 | 0 |
81 | 21 | 0 | 0 |
82 | 19 | 0 | 0 |
83 | 17 | 0 | 0 |
84 | 15 | 0 | 0 |
85 | 14 | 0 | 0 |
86 | 12 | 0 | 0 |
87 | 10 | 0 | 0 |
88 | 9 | 0 | 0 |
89 | 8 | 0 | 0 |
90 | 6 | 0 | 0 |
91 | 5 | 0 | 0 |
92 | 4 | 0 | 0 |
93 | 4 | 0 | 0 |
94 | 3 | 0 | 0 |
95 | 2 | 0 | 0 |
96 | 2 | 0 | 0 |
97 | 1 | 0 | 0 |
98 | 1 | 0 | 0 |
99 | 1 | 0 | 0 |
100 | 1 | 0 | 0 |
Abelian complexity of the Oldenburger sequence
27 septembre 2014 | Catégories: sage | View CommentsThe Oldenburger infinite sequence [O39] \[ K = 1221121221221121122121121221121121221221\ldots \] also known under the name of Kolakoski, is equal to its exponent trajectory. The exponent trajectory \(\Delta\) can be obtained by counting the lengths of blocks of consecutive and equal letters: \[ K = 1^12^21^22^11^12^21^12^21^22^11^22^21^12^11^22^11^12^21^22^11^22^11^12^21^12^21^22^11^12^21^12^11^22^11^22^21^12^21^2\ldots \] The sequence of exponents above gives the exponent trajectory of the Oldenburger sequence: \[ \Delta = 12211212212211211221211212\ldots \] which is equal to the original sequence \(K\). You can define this sequence in Sage:
sage: K = words.KolakoskiWord() sage: K word: 1221121221221121122121121221121121221221... sage: K.delta() # delta returns the exponent trajectory word: 1221121221221121122121121221121121221221...
There are a lot of open problem related to basic properties of that sequence. For example, we do not know if that sequence is recurrent, that is, all finite subword or factor (finite block of consecutive letters) always reappear. Also, it is still open to prove whether the density of 1 in that sequence is equal to \(1/2\).
In this blog post, I do some computations on its abelian complexity \(p_{ab}(n)\) defined as the number of distinct abelian vectors of subwords of length \(n\) in the sequence. The abelian vector \(\vec{w}\) of a word \(w\) counts the number of occurences of each letter: \[ w = 12211212212 \quad \mapsto \quad 1^5 2^7 \text{, abelianized} \quad \mapsto \quad \vec{w} = (5, 7) \text{, the abelian vector of } w \]
Here are the abelian vectors of subwords of length 10 and 20 in the prefix of length 100 of the Oldenburger sequence. The functions abelian_vectors and abelian_complexity are not in Sage as of now. Code is available at trac #17058 to be merged in Sage soon:
sage: prefix = words.KolakoskiWord()[:100] sage: prefix.abelian_vectors(10) {(4, 6), (5, 5), (6, 4)} sage: prefix.abelian_vectors(20) {(8, 12), (9, 11), (10, 10), (11, 9), (12, 8)}
Therefore, the prefix of length 100 has 3 vectors of subwords of length 10 and 5 vectors of subwords of length 20:
sage: p100.abelian_complexity(10) 3 sage: p100.abelian_complexity(20) 5
I import the OldenburgerSequence from my optional spkg because it is faster than the implementation in Sage:
sage: from slabbe import KolakoskiWord as OldenburgerSequence sage: Olden = OldenburgerSequence()
I count the number of abelian vectors of subwords of length 100 in the prefix of length \(2^{20}\) of the Oldenburger sequence:
sage: prefix = Olden[:2^20] sage: %time prefix.abelian_vectors(100) CPU times: user 3.48 s, sys: 66.9 ms, total: 3.54 s Wall time: 3.56 s {(47, 53), (48, 52), (49, 51), (50, 50), (51, 49), (52, 48), (53, 47)}
Number of abelian vectors of subwords of length less than 100 in the prefix of length \(2^{20}\) of the Oldenburger sequence:
sage: %time L100 = map(prefix.abelian_complexity, range(100)) CPU times: user 3min 20s, sys: 1.08 s, total: 3min 21s Wall time: 3min 23s sage: from collections import Counter sage: Counter(L100) Counter({5: 26, 6: 26, 4: 17, 7: 15, 3: 8, 8: 4, 2: 3, 1: 1})
Let's draw that:
sage: labels = ('Length of factors', 'Number of abelian vectors') sage: title = 'Abelian Complexity of the prefix of length $2^{20}$ of Oldenburger sequence' sage: list_plot(L100, color='green', plotjoined=True, axes_labels=labels, title=title)
It seems to grow something like \(\log(n)\). Let's now consider subwords of length \(2^n\) for \(0\leq n\leq 12\) in the same prefix of length \(2^{20}\):
sage: %time L20 = [(2^n, prefix.abelian_complexity(2^n)) for n in range(20)] CPU times: user 41 s, sys: 239 ms, total: 41.2 s Wall time: 41.5 s sage: L20 [(1, 2), (2, 3), (4, 3), (8, 3), (16, 3), (32, 5), (64, 5), (128, 9), (256, 9), (512, 13), (1024, 17), (2048, 22), (4096, 27), (8192, 40), (16384, 46), (32768, 67), (65536, 81), (131072, 85), (262144, 90), (524288, 104)]
I now look at subwords of length \(2^n\) for \(0\leq n\leq 23\) in the longer prefix of length \(2^{24}\):
sage: prefix = Olden[:2^24] sage: %time L24 = [(2^n, prefix.abelian_complexity(2^n)) for n in range(24)] CPU times: user 20min 47s, sys: 13.5 s, total: 21min Wall time: 20min 13s sage: L24 [(1, 2), (2, 3), (4, 3), (8, 3), (16, 3), (32, 5), (64, 5), (128, 9), (256, 9), (512, 13), (1024, 17), (2048, 23), (4096, 33), (8192, 46), (16384, 58), (32768, 74), (65536, 98), (131072, 134), (262144, 165), (524288, 229), (1048576, 302), (2097152, 371), (4194304, 304), (8388608, 329)]
The next graph gather all of the above computations:
sage: G = Graphics() sage: legend = 'in the prefix of length 2^{}' sage: G += list_plot(L24, plotjoined=True, thickness=4, color='blue', legend_label=legend.format(24)) sage: G += list_plot(L20, plotjoined=True, thickness=4, color='red', legend_label=legend.format(20)) sage: G += list_plot(L100, plotjoined=True, thickness=4, color='green', legend_label=legend.format(20)) sage: labels = ('Length of factors', 'Number of abelian vectors') sage: title = 'Abelian complexity of Oldenburger sequence' sage: G.show(scale=('semilogx', 2), axes_labels=labels, title=title)
A linear growth in the above graphics with logarithmic \(x\) abcisse would mean a growth in \(\log(n)\). After those experimentations, my hypothesis is that the abelian complexity of the Oldenburger sequence grows like \(\log(n)^2\).
References
[O39] | Oldenburger, Rufus (1939). "Exponent trajectories in symbolic dynamics". Transactions of the American Mathematical Society 46: 453–466. doi:10.2307/1989933 |
« Previous Page -- Next Page »