Les grammaires de Lindenmayer

jeudi 22 juillet 2010
par  Alain BUSSER

Le langage considéré ici est un langage de programmation dont les instructions sont codées par un seul caractère chacune. Elles sont destinées à une tortue cybernétique :

  • F (« forward ») : La tortue avance d’un pas ;
  • f (« forward ») : La tortue avance d’un pas, crayon levé (sans laisser de trace)
  • + (rotation directe) : La tortue tourne à gauche ;
  • - (rotation inverse) : La tortue tourne à droite ;
  • [ (crochet ouvrant) : La tortue empile son état actuel en mémoire ;
  • ] (crochet fermant) : La tortue récupère son état préalablement empilé.

soit 6 instructions en tout !

Le principe des grammaires L (initiale du nom d’Aristid Lindenmayer, botaniste hongrois qui les a inventées) est d’engendrer de longues chaînes de caractères utilisant ces lettres (soit V=\left\{F,f,+,-,[,] \right\}) avec des grammaires transformationnelles, puis de soumettre la longue chaîne à une tortue LOGO, qui en l’interprétant, va tracer un polygone, qui sera souvent une approximation d’un objet fractal.

Par exemple, l’ensemble triadique de Cantor peut être codé par la grammaire suivante :

Axiome

F

Règles de dérivation

F \rightarrow FfF

f \rightarrow fff

Dérivation après dérivation à partir de l’axiome, on a la suite de chaînes suivantes :

  • FfF
  • FfFfffFfF
  • FfFfffFfFfffffffffFfFfffFfF
  • FfFfffFfFfffffffffFfFfffFfFfffffffffffffffffffffffffffFfFfffFfFfffffffffFfFfffFfF

etc.

La chaîne ci-dessus demande à la tortue d’avancer 81 fois, mais en ne laissant une trace par terre que lorsque le « F » est majuscule, ce qui lui fait alors tracer le motif suivant :

- -   - -         - -   - -                           - -   - -         - -   - -

qui est bien une approximation finie de l’ensemble de Cantor.

Sémantique

Dans les figures ci-dessous, on n’utilise qu’une version réduite du langage de la tortue, celle comportant uniquement les instructions

  • F : Avancer, mais de combien ?
  • + : Tourner à droite, mais de quel angle ?
  • - : Tourner à gauche, mais de quel angle ?

Puisque contrairement à xcas et Python, CaRMetal est un logiciel de géométrie dynamique, autant en profiter pour mettre en mode curseur les variables f (de combien la tortue avance) et d (angle de rotation à droite, l’angle g étant choisi égal ou, selon le cas, supplémentaire à d). Et comme on s’en doute, ces réglages sémantiques changent considérablement l’allure de la courbe fractale, l’exemple voulu n’étant obtenu que pour une valeur bien précise de d.

On va détailler un seul exemple, pour montrer comment on « pense L-systems » : Le flocon de Von Koch :

  • L’axiome représente l’allure globale du flocon, qui est un triangle équilatéral ; la recette LOGO pour le triangle équilatéral, c’est

— *avance f
— *tourne droite 120
— *avance f
— *tourne droite 120
— *avance f

mais ici, l’angle d vaut 60° et non 120° ; donc on va plutôt choisir l’autre triangle équilatéral, celui avec la tête en bas, et choisir

— *avance f
— *tourne gauche 120
— *avance f
— *tourne gauche 120
— *avance f

ce qui s’abrège en

F-F-F
  • La règle de dérivation (il n’y en a qu’une puisque seul F sera remplacé) est celle qui explique comment aller « dans le détail ». Pour Von Koch, au lieu de simplement avancer, on va plutôt faire la suite d’opérations suivantes :

— *avancer
— *tourner à droite (de 60°)
— *avancer
— *tourner à gauche (de 120°)
— *avancer
— *tourner à droite (de 60°)
— *avancer

ce qui se résume par le programme tortue suivant :

F+F-F+F

d’où la règle de dérivation, la récursivité se charge du reste (lancer le script pour voir apparaître la figure ; il est dangereux de changer de figure avant la fin du script ; donc pour essayer d’aller plus loin - changer le nombre de niveaux par « modifier le script » - il est fortement recommandé de télécharger les fichiers au bas de la page et de les utiliser en local)... :

<|doc4192>

Difficile de parler de langages sans parler de vocabulaire : La troisième figure ci-dessus a été nommée « flocon de neige de Sierpinski » par Mandelbrot, qui avait alors attribué à Wacław Sierpiński la paternité de cette courbe fractale. Mais dans wikipedia, elle s’appelle « fractale quadratique de Koch », le même nom ayant été donné à celle-ci

qui, ci-dessus, s’appelle « Koch 2 ». Il a donc été décidé de maintenir le nom de « flocon de Sierpinski » à la courbe fractale de l’onglet 3 ci-dessus...

langage élargi

Ci-dessous, on cherche à élargir le langage précédent par deux moyens

  1. Ajouter la lettre f qui permet à la tortue de bouger sans laisser de traces, et donc de tracer une courbe non connexe, comme celle du premier onglet ci-dessous, représentant une île de forme rectangulaire, cernée de 4 îles plus petites, et percée de 4 lacs, dans lesquels se trouvent des îles, etc.! Essayer en local (après téléchargement du dossier CaRMetal en bas de page), avec un ordre plus grand (et de la patience) pour mieux voir de quoi il s’agit ;
  2. Ajouter une lettre G, qui joue le même rôle sémantique que F (avancer d’une unité) mais se dérive différemment (avec une deuxième règle de dérivation), ce qui est nécessaire quand on tourne de manière complexe comme avec les courbes de Peano ci-dessous (tous les onglets sauf le premier) :
CarMetal - 6.1 ko
figures « langage élargi »

Le triangle de Sierpinski revient, plus rapidement dessiné que précédemment, parce que chaque segment est tracé une seule fois (et d’une couleur différente selon que c’est un segment « F » ou un segment « G », ce qui permet de voir qu’ils sont tracés en alternance). C’est pour un angle de 60° qu’on a un triangle de Sierpinski ; pour un angle de 45° on a ceci :

qui ne porte pas de nom mais dont l’aspect celte prête au rêve (faute de mieux, je propose de la baptiser « courbe du Korrigan »).

La courbe du dragon est un objet très intéressant (après les korrigans, un dragon !) en ce qu’il est formé d’une infinité de copies de lui-même, de plus en plus petites et spiralant autour de deux points limites (images du dragon entier par des similitudes directes) :

ce qui ne l’empêche pas (le dragon entier) de paver le plan !

La courbe hexagonale de Gosper remplit une surface fractale qui, elle aussi, remplit le plan :

La dernière des courbes ci-dessus s’appelle parfois courbe de Gosper (baptisée ici « orthogonale » pour ne pas la confondre avec l’autre) et parfois « courbe de Hilbert »...

Plantes

Pour tracer des structures fractales arborescentes (le but initial d’Aristid Lindenmayer quand il a inventé les L-systèmes) il est nécessaire d’utiliser une pile (informatique), une mémoire qui permet de mémoriser temporairement l’état de la tortue (position et rotation) pour revenir au tronc après avoir fini de tracer une branche. Toutes les grammaires L ci-dessous représentent des plantes, plus ou moins réalistes (pour qu’elles le soient plus, il faudrait ajouter un peu de hasard, ou aller dans la troisième dimension) :

CarMetal - 12.3 ko
figures « plantes »

Le premier exemple, l’arbre binaire, souffre de la simplicité de ses réglages (2 curseurs) en ce sens que deux branches se partagent parfois une feuille (non dessinée). Les trois exemples suivants (la fane et les deux palmiers) sont des créations originales inédites à cet article !

Les trois « plantes » proviennent du livre de Prusinkiewicz et Lindenmayer. Elles n’utilisent que la lettre F pour leurs déplacements parce qu’elles n’ont qu’une règle de dérivation.

Les trois « fleurs », elles aussi originaires du livre de Prusinkiewicz et Lindenmayer, ont deux règles de dérivation, ce qui a obligé à enrichir leur langage avec une lettre « U » (voir le script pour voir pourquoi). Ce qui a permis un enrichissement sémantique assez intéressant : Utiliser les « U » terminaux comme dessins de feuilles, ou plus précisément ici, de boutons de fleurs (ou de fruits [1]) rouges, dont le rayon peut lui aussi être réglé par un curseur (en bas de figure) !

Algèbre

La syntaxe des expressions algébriques peut aussi être décrite par une grammaire transformationnelle, avec pour axiome E (comme « expression », lettre non terminale)) et outre toutes les règles de dérivation de la forme E \rightarrow xx est l’écriture d’un nombre, éventuellement entre parenthèses s’il est précédé d’un signe « moins » ou écrit sous forme scientifique, les règles de dérivation suivantes :

 E \rightarrow (E)

 E \rightarrow E+E

 E \rightarrow E-E

 E \rightarrow E \times E

 E \rightarrow \frac{E}{E}

 E \rightarrow E^E

 E \rightarrow f(E)

f désigne une fonction (racine carrée, sinus, cosinus etc.)

Le langage des expressions bien parenthésées n’est pas régulier, mais la correction des parenthèses peut être vérifiée par une machine de Turing, comme on l’a vu dans l’article sur les machines de Turing.


[1en même temps que je préparais ces figures, j’ai déparché les cerises du coffea arabica de mon jardin, ce qui a pris plusieurs jours : Jamais le café ne m’avait autant détendu ! ceci explique peut-être pourquoi les « fruits » des figures ci-dessus ressemblent autant à des cerises de café...


Documents joints

figures « sémantique »
figures « sémantique »

Commentaires

Navigation

Articles de la rubrique

Annonces

Prochains rendez-vous de l’IREM

Séminaire EDIM-IREM

- Mercredi 22 novembre 2017, 14h-18h, campus du Tampon, amphi 120 D
- Mercredi 7 février 2018, PTU, Saint-Denis, salle S23.6
- Mercredi 7 mars 2018, 14h-18h, campus du Tampon
- Mercredi 4 avril 2018, PTU, Saint-Denis, salle S23.6
- Mercredi 2 mai, 14h-18h, campus du Tampon
- Mardi 5 juin 2018, PTU, Saint-Denis, salle S23.6
- Mercredi 6 juin, 14h-18h, campus du Tampon

Fête de la science

Campus du Moufia, 16 et 17 novembre 2017.
Thème : « La recherche à l’heure du numérique »

Semaine des mathématiques

Du 26 au 31 mars 2018.
Thème : « Mathématiques et mouvement »


Brèves

Décès de Roger Mohr

mardi 27 juin

On sait bien que Nicolas Bourbaki n’était pas le nom d’une personne mais le pseudonyme d’un groupe. L’équivalent en informatique théorique est Claude Livercy, auteur de la théorie des programmes. Roger Mohr était un des membres de Claude Livercy.

À travers les labyrinthes : algorithmes et fourmis

dimanche 1er septembre 2013

Quand les chercheurs mettent au point des modèles d’optimisation et de recherche de plus court chemin qui s’inspirent du comportement de masse de colonies de fourmis...
À écouter : Sur les Épaules de Darwin, émission diffusée sur France Inter samedi 31 août 2013.

Rencontres Mondiales du Logiciel Libre à St-Joseph

mardi 20 août 2013

Les RMLLd se dérouleront pour la 2e fois à Saint-Joseph du 22 au 25 août.
C’est une opportunité pour les élèves qui suivent la spécialité ISN et les passionnés d’informatique.

Voici pour le samedi et le dimanche quelques interventions choisies :
- http://2013.d.rmll.info/Raspberry-votre-ordinateur-au-format-carte-de-credit?lang=fr
- http://2013.d.rmll.info/Materiel-libre-et-DIY?lang=fr
- http://2013.d.rmll.info/Arduino-de-l-electronique-libre?lang=fr

Noter aussi les conférences Art et Culture du dimanche, ainsi qu’une conférence plus engagée.

Le programme complet se trouve ici. Une radio sera ouverte pour l’occasion.
Des plaquettes à distribuer se trouvent ici.

Hyper-vidéos pour l’algorithmique au lycée

dimanche 19 août 2012

Olivier Roizès, à la demande de l’ADIREM, a réalisé une collection d’hyper-vidéos de présentation de logiciels et environnements de programmation. Ces hyper-vidéos, c’est-à-dire des vidéos contenant des éléments clicables, devraient être utiles aux enseignants désireux de se familiariser avec Python, CaRMetal, R, Rurple, Scilab ou Xcas.

Ouverture du SILO

mardi 1er novembre 2011

Le SILO (Science Informatique au Lycée : Oui !) est un espace collaboratif documentaire de partage et de formation collégiale, à destination des professeurs appelés à enseigner l’informatique au lycée.

Une initiative du CNDP, de l’INRIA et de Pasc@line, à laquelle se sont associés SPECIF, fuscia, EPI et ePrep.

Sur le Web : Site du SILO

Introduction à la science informatique

lundi 12 septembre 2011

Le CRDP de Paris publie le premier ouvrage destiné aux professeurs chargés d’enseigner la nouvelle spécialité « Informatique et sciences du numérique » en Terminale S à la rentrée 2012. Cet ouvrage a été coordonné par Gilles Dowek, directeur de recherche à l’INRIA.

Sur la création de la spécialité ISN, on pourra également consulter l’interview donnée au Café pédagogique par l’inspecteur général Robert Cabanne.

Sur le Web : CRDP de Paris

Deux publications sur l’algorithmique

samedi 17 octobre 2009

L’IREM d’Aix-Marseille publie une brochure de 73 pages, téléchargeable librement, intitulée Algorithmes et logique au lycée. Ces notions sont illustrées et déclinées sur des exercices du programme de spécialité mathématique en série L, mais sont adaptables aux programmes à venir.

Le hors série thématique n° 37 du magazine Tangente, disponible actuellement en kiosque, s’intitule « Les algorithmes. Au cœur du raisonnement structuré ». Extrait de l’éditorial : « La rédaction de Tangente a conçu la quasi-totalité de ce hors série thématique pour qu’il puisse être lu par des élèves de Seconde ».

Une carte mentale pour l’algorithmique

jeudi 10 septembre 2009

Sur son site, Jean-Jacques Dhénin a publié une carte mentale géante qui renvoie vers plus de 30 documents en ligne sur l’algorithmique. Tout ce qu’il faut — et même davantage — pour faire face au nouveau programme de Seconde !

Un catalogue libre d’algorithmes pour le lycée

dimanche 30 août 2009

Guillaume Connan, de l’IREM de Nantes, publie un catalogue libre de 119 pages d’algorithmes pour le lycée. Sur son site très riche, on trouvera d’autres documents en rapport avec l’algorithmique, notamment sur l’utilisation des langages fonctionnels au lycée et sur la comparaison programmation fonctionnelle/programmation impérative.

L’algorithmique à l’IREM de Lille

vendredi 26 juin 2009

Le groupe AMECMI de l’IREM de Lille vient de mettre en ligne des ressources importantes au service des professeurs de Seconde :

- Algorithmique et programmation (Emmanuel Ostenne)
- Bibliographie amoureuse de l’algorithmique (Alain Juhel)

Statistiques

Dernière mise à jour

dimanche 12 novembre 2017

Publication

773 Articles
Aucun album photo
133 Brèves
11 Sites Web
132 Auteurs

Visites

46 aujourd'hui
911 hier
2164281 depuis le début
4 visiteurs actuellement connectés