Jérémie ROUX HLSE403 L2 CMI Informatique Dancing with Donald Étude bibliographique

1 Introduction

L’objectif de cette étude bibliographique est d’étudier des problèmes algorithmiques en particulier celui des Liens Valsants (traduit de Dancing Links) théorisés par .

"What a dance do they do Lordy, I am tellin’ you !" [6] (Harry Barris)

2 Donald Knuth, une référence dans le milieu de l’informatique

Donald Ervin Knuth [7] est un informaticien et mathématicien américain, ancien professeur d’informatique à l’université Stanford [20]. Il a notamment participé à la genèse de l’algorithmique et a fait de nombreuses publications dans plusieurs branches de l’informatique théorique. Il est naturellement considéré par la plupart des informaticiens comme une référence (vivante qui plus est) et l’un des pionniers de l’informatique.

Comment ne pas parler de Donald E. Knuth sans évoquer son fameux ouvrage "The Art Of Computer Programming" (TAOCP) [14][18] connu de la majorité des informaticiens ? Toujours en cours de rédaction, ces 7 volumes décrivent et expliquent différents pans de la programmation informatique. Cet ouvrage est d’autant plus une révolution à sa sortie et encore aujourd’hui, que pour éditer et mettre en page son texte Donald E. Knuth décide de créer le TEX [12][19][15]. Par exemple, le document que vous êtes en train de lire est mis en forme avec le système de composition de documents LATEX [4] qui est une extension du TEX. Le LATEX est utilisé dans les milieux académiques et scientifiques afin de produire des documents techniques, notamment grâce à son rendu de formules et autres symboles. Toujours utilisé aujourd’hui (la dernière version date de janvier 2014) et depuis sa création en 1977, cela a permis de créer une normalisation de la rédaction de ces documents.

Donald E. Knuth a effectué de nombreuses publications qui se trouvent parfois regroupées dans des recueils dont certains sont traduits en Français, comme "Algorithmes" [21] (traduit par Patrick Cégielski). On trouve dans ce recueil un article qui évoque les Liens Valsants [16] que nous étudierons en particulier au cours de ce stage. Cela va nous servir de base à leur compréhension. Nous disposons donc de l’article original et de sa traduction en Français.

3 Les Liens Valsants, un problème combinatoire

Les Liens Valsants [16] (ou Dancing Links en anglais) sont une technique évoquée par Donald E. Knuth pour améliorer son algorithme X.

L’algorithme X [11] est un algorithme récursif de parcours en profondeur. Il permet d’optimiser le temps de calcul du problème de couverture exacte de matrice (EMC) [3]. Cela a été développé d’abord par S. Cook [9] (en 1971) puis par R. Karp [17][13] (en 1972) connu notamment pour ses recherches en théorie de la complexité. Si on représente ce problème sous la forme d’une matrice contenant des 0 et des 1, l’objectif est de déterminer un sous-ensemble de lignes tel que le chiffre 1 n’apparaisse dans chaque colonne qu’une et une seule fois.

Les Liens Valsants (voir Figure 1) permettent à D. E. Knuth d’améliorer son algorithme X. Lorsque le parcours d’une arborescence aboutit à un résultat non-optimal (dont on sait que parcourir la suite de l’arbre à partir de ce noeud ne peut pas être efficace), l’algorithme remonte l’arbre pour trouver une solution au problème. C’est ce que l’on appelle le 1 [1].

1. Retour sur trace

1 Jérémie ROUX HLSE403 L2 CMI Informatique Dancing with Donald Étude bibliographique

Figure 1 – Les Liens Valsants écrits de la main de D. E. Knuth

D. E. Knuth décrit dans [16] les Liens Valsants Mon but est d’étudier une technique extrêmement simple méritant d’être mieux connue. Supposons que x pointe sur un élément d’une liste doublement chaînée ; disons que L[x] et R[x] pointent sur le prédécesseur et le successeur de cet élément. Les opérations L[R[x]] ← L[x] et R[L[x]] ← R[x] suppriment donc x de la liste ; tout programmeur sait cela. Mais, par contre, peu de programmeurs ont pris conscience que L[R[x]] ← x et R[L[x]] ← x replaceront x dans cette liste.

4 Programmes et jeux basés sur l’algorithme X

Pour terminer, nous allons nous intéresser à plusieurs jeux et programmes basés sur l’algorithme X de Knuth.

Le puissance 4 (ou Connect Four en anglais) [2] est un jeu de stratégie combinatoire abstrait, commercialisé pour la première fois en 1974 par la Milton Bradley Company (MB). Le but du jeu est d’aligner une suite de 4 pions de même couleur (diagonale, vertical ou horizontal) soumis à la gravité sur une grille 6x7 pions. Victor Allis (informaticien néerlandais) a travaillé sur une Intelligence Artificielle (IA) qui optimise la résolution du Puissance 4 [5].

L’arbre de recherche de Monte-Carlo [8] (ou Monte-Carlo Tree Search en anglais ou MCTS) est un algorithme de recherche basé sur la prise de décisions et le parcours d’une arborescence. Il est basé sur le backtracking. Il est beaucoup utilisé dans des jeux comme Go (jeu de plateau originaire de Chine) ou Othello (également appelé Reversi). Ces deux jeux de stratégie opposent des pierres noires et blanches qui représentent 2 joueurs. Ces joueurs adverses posent des pierres de leur couleur mais ne peuvent plus les déplacer par la suite et le but est d’avoir le plus de pierres à la fin de la partie. Dans le premier cas (Go), il s’agit d’enfermer l’adversaire en dressant une muraille autour de ses pierres, dans le deuxième cas (Othello), il suffit de disposer deux pions aux extrémités d’un alignement de pions adverses contigus afin d’en prendre le contrôle.

5 Conclusion

De nombreux problèmes combinatoires sont régulièrement optimisés par les chercheurs. Ceux-ci publient des articles dans lesquels ils détaillent comment réduire la complexité d’algorithmes. On peut citer un exemple récent dans lequel il est démontré que l’on peut réduire la complexité de l’algorithme de Karatsuba (de multiplication de deux nombres entiers) : θ(n2) à sa découverte il y a 4000 ans, θ(n1.58) dans une optimisation datant des années 1960 et θ(n.log(n)) le 18 mars 2019 [10]. Pour aboutir à ces optimisations, les scientifiques changent l’approche du problème ainsi que les méthodes et les structures de données employées. Durant ce stage, nous allons nous intéresser aux points décrits dans cette étude : l’algorithme X de Donald E. Knuth qui permet de trouver efficacement les solutions au problème de couverture exacte, l’arbre de recherche de Monte-Carlo (MCTS) qui est à la base des programmes de résolution du jeu de Go et des échecs ainsi que le puissance 4 de Victor Allis qui est un jeu dont la résolution est un problème combinatoire.

2 Jérémie ROUX HLSE403 L2 CMI Informatique Dancing with Donald Étude bibliographique

Références

[1] Backtracking - GeeksForGeeks.org. https://www.geeksforgeeks.org/ backtracking-algorithms/. [2] John’s Connect Four Playground. https://tromp.github.io/c4/c4.html. [3] NP Complete, . http://www.mathreference.com/lan-cx-np,excov.html. [4] LaTeX : a document preparation system. https://www.latex-project.org/. [5] Victor Allis. A Knowledge-based Approach of Connect-Four. Department of Mathematics and Computer Science Vrije, Universiteit Amsterdam, The Netherlands, Masters Thesis, Oct 1988. [6] Harry Barris. Mississippi Mud. New York : Shapiro, Bernstein Co., 1927. [7] Donald Knuth biography : School of Mathematics and Statistics (University of St Andrews of Scotland). https ://www-cs-faculty.stanford.edu/ knuth/. [8] Guillaume M.J-B. Chaslot, H.M. Winands Mark, H. Jaap Van Den Herik, Jos W.H.M. Uiterwijk, and Bruno Bouzy. Progressive strategies for Monte-Carlo Tree Search. New Mathematics and Natural Computation, Nov 2008. [9] Stephen Cook. The complexity of theorem proving procedures. Proc. 3rd Annual ACM Symposium on Theory of Computing (STOC), 1971. [10] David Harvey et Joris Van Der Hoeven. Integer multiplication in time θ(n.log(n)). , Mars 2019. [11] X in 30 lines ! https://www.cs.mcgill.ca/~aassaf9/python/algorithm_x.html. [12] What is TeX ? : The TeX FAQ. https://texfaq.org/FAQ-whatTeX. [13] Richard M. Karp. Reducibility among combinatorial problems. In R. E. Miller ; J. W. Thatcher ; J.D. Bohlinger. Complexity of Computer Computations. New York, 1972. [14] Donald E. Knuth. The Art of Computer Programming. Addison-Wesley. Vol. 1 : Fundamental Algorithms (troisième édition 1997), Vol. 2 : Seminumerical Algorithms (troisième édition 1997), Vol. 3 : Sorting and Searching (seconde édition, 1998), Vol. 4A : Enumeration and Backtracking (2011), Vol. 4B, 4C et 4D en rédaction. [15] Donald E. Knuth. Tex : The program. Reading, Massachusetts : Addison-Wesley, 1986. [16] Donald E. Knuth. Dancing links. Jim Davies, Bill Roscoe, Jim Woodcock, Millennial Perspectives in Computer Science : Proceedings of the 1999 Oxford-Microsoft Symposium in Honour of Sir Tony Hoare, Palgrave, coll. « Cornerstones of Computing », novembre 2000. [17] Richard Karp : A.M. Turing Award Laureate. https://amturing.acm.org/award_winners/karp_ 3256708.cfm. [18] The Art of Computer Programming (TAOCP) by Donald E. Knuth. https://www-cs-faculty.stanford. edu/~knuth/taocp.html. [19] History of TeX : TeX Users Group. https://www.tug.org/whatis.html. [20] Don Knuth’s Home Page : Stanford Computer Science. https://www-cs-faculty.stanford.edu/~knuth/. [21] Donald Knuth (version française). Algorithmes. CSLI Publications et Société Mathématique de France, 2011.

3