Récursivité

principe en programmation informatique

La récursivité est une démarche qui fait référence à l'objet même de la démarche à un moment du processus. En d'autres termes, c'est une démarche dont la description mène à la répétition d'une même règle[1],[2]. Ainsi, les cas suivants constituent des cas concrets de récursivité :

  • décrire un processus dépendant de données en faisant appel à ce même processus sur d'autres données plus « simples » ;
  • montrer une image contenant des images similaires ;
  • définir un concept en invoquant ce même concept ;
  • écrire un algorithme qui s'invoque lui-même[note 1] ;
  • définir une structure à partir de l'une au moins de ses sous-structures ;
  • faire pointer un article de Wikipédia vers lui-même ou vers un article qui, par une succession de pointeurs, pointe vers l'article dont on est parti ; ainsi dans l'article que vous lisez, l'expression « pétition de principe » pointe vers un article qui pointe vers le présent article[note 2].

En informatique

modifier
 
Un arbre binaire est une structure de données récursive. L’arbre représenté, contenant les neuf éléments {2, 7, 2, 6, 5, 11, 5, 9, 4}, est constitué d’un nœud 2 portant à gauche un arbre à cinq éléments {7, 2, 6, 5, 11} et à droite un arbre à trois élements {5, 9, 4}. Ce dernier est constitué d’un nœud 5 portant à gauche un arbre vide, et à droite un arbre à deux éléments {9, 4}. Ce dernier est constitué d’un nœud 9 portant à gauche un arbre à un élément {4}, et à droite un arbre vide. L’arbre à un élément {4} est constitué d’un nœud 4 portant deux arbres vides.

En informatique, la définition de certaines structures de données, comme les listes ou les arbres, est récursive : elle mentionne le type de données en train d’être défini. Par exemple (voir la figure) un arbre binaire est soit vide, soit un nœud portant deux arbres binaires plus petits.

Par ailleurs, une fonction ou plus généralement un algorithme peut contenir un ou des appels à lui-même, auquel cas il est dit récursif. Ce procédé est en particulier employé pour traiter les structures de données récursives, ainsi que pour réaliser le paradigme algorithmique « diviser pour régner ».

Deux types de données peuvent, dans leur définition respective, se mentionner l'un l'autre ; de même, deux algorithmes peuvent s'appeler l'un l'autre. On parle alors de récursivité croisée, ou mutuelle.

Comme l’usage de boucles, la récursivité permet d’effectuer un nombre d’opérations non connu à l’avance car déterminé par les entrées du programme ; ces deux procédés permettent aussi d’écrire des programmes qui ne terminent pas. Un langage autorisant des boucles, tout comme un langage autorisant la récursivité, est en général Turing-complet.

La récursivité est un point délicat dans l'enseignement de l'informatique[3], car son appropriation par l'apprenant demande une dose d'abstraction.

En linguistique

modifier

Noam Chomsky, linguiste américain renommé, parmi d'autres, affirme que le manque d'une limite supérieure en ce qui concerne le nombre de phrases grammaticales ainsi que leur longueur (en restant dans le domaine de ce qui est pratique) est le résultat de la récursivité du langage naturel[4],[5].

Cela se comprend à l'aide d'une définition récursive d'une catégorie syntaxique, comme une phrase. Une phrase peut posséder une structure dans laquelle une phrase enchâssée se trouve après le verbe : Dorothée pense que les sorcières sont dangereuses, dans laquelle la phrase les sorcières sont dangereuses se trouve dans une phrase déjà présente. Donc, une phrase peut être définie récursivement (à peu près) comme quelque chose qui possède une structure qui inclut une phrase nominale, un verbe et une autre phrase (optionnelle). C'est vraiment un cas spécial dans lequel la définition mathématique de la récursivité se manifeste.

La récursivité joue un rôle important non seulement en syntaxe, mais aussi dans la sémantique du langage naturel. Le mot et, par exemple, peut être considéré comme une fonction qui peut s'appliquer aux sens des phrases pour créer de nouvelles phrases. Cela s'effectue également en ce qui concerne les sens des phrases nominales, verbales, parmi d'autres formes phrasales. C'est aussi le cas pour les verbes transitifs, intransitifs ou même ditransitifs. Afin de lui fournir une seule dénotation suffisamment flexible, et se définit tout simplement comme ayant la possibilité de représenter des arguments à travers n'importe quelles formes significatives. Cela peut s'effectuer en définissant et pour un cas simple dans lequel on combine des phrases, puis définir les autres cas récursivement en termes du cas simple[6].

La grammaire du sanskrit de Pānini utilise déjà la récursivité au Ve siècle av. J.-C. Les constructions des langues sont essentiellement récursives, par exemple la construction des groupes nominaux : la clé de la serrure de la porte d'entrée de la maison de la rue du bout du village. Des travaux menés par le professeur Daniel Everett tendraient cependant à montrer l'absence de récursivité dans la langue Pirahã[7].

Certains auteurs ont considéré que la capacité à construire des structures récursives est propre aux systèmes de communication humaine, mais cette affirmation est aujourd'hui remise en cause par des travaux de cognition animale[8].

Un dictionnaire (dictionnaire de définition) est un exemple de récursivité : chaque mot du dictionnaire est défini par d'autres mots eux-mêmes définis par d'autres mots dans ce même dictionnaire.

 
Figure de Sierpiński.

Dans les arts

modifier

Dans le domaine des arts, le procédé récursif est appelé mise en abîme et c'est l'artiste Maurits Cornelis Escher qui en fait le plus grand usage ; il est connu pour ses œuvres inspirées par la récursivité[9]. De son côté, la publicité a aussi utilisé la récursivité, rendant célèbres en France La vache qui rit et Dubonnet[10],[11].

En biologie

modifier

La récursivité est particulièrement présente en biologie, notamment dans les motifs de végétaux et les processus de développement. Les diatomées présentent en particulier de belles structures récursives.

En mathématiques

modifier
 
Le triangle de Sierpiński — une récurrence de triangles formant une fractale.

Suite définie récursivement

modifier

Fonctions récursives

modifier

Une fonction peut être définie en fonction d'elle-même. Un exemple familier est la suite de Fibonacci vue comme une fonction  , à savoir  . Pour qu'une telle définition ait un sens, elle doit conduire à des valeurs immédiatement évaluables: dans le cas de la suite de Fibonacci on pose   et  .

Un exemple : le flocon de Koch

modifier

Le flocon de Koch est une figure fractale utilisant un procédé simple de récursivité.

 
Le flocon de Koch - une récurrence de triangles formant une fractale.

À l'étape initiale, on a un triangle équilatéral. L'étape suivante consiste à construire trois triangles équilatéraux en prenant pour base le tiers central de chacun des côtés du triangle initial. En répétant ce procédé d'abord pour les trois nouveaux triangles, puis autant de fois qu'on le veut, on obtient le flocon de Koch.

Récursivité, imprédicativité et auto-référence

modifier
 
Une publicité récursive.

Définir un concept à partir de lui-même a été appelé par les logiciens et les mathématiciens imprédicativité, notion qui ne doit pas être confondue avec celle de récursivité bien qu'elle lui soit apparentée. On parle aussi d'auto-référence. Il existe des théories logiques imprédicatives (comme le système F dû à Jean-Yves Girard), mais elles doivent être définies avec précaution si l'on veut préserver leur cohérence, car les paradoxes ne sont pas loin. Ainsi en théorie des ensembles, le paradoxe de Russell montre qu'il ne peut pas y avoir d'ensemble constitué des ensembles qui ne se contiennent pas eux-mêmes (popularisé comme le paradoxe du barbier, en effet « si le barbier est celui qui rase ceux qui ne se rasent pas eux-mêmes, qui rase le barbier ? »). Toujours en théorie des ensembles, l'axiome de fondation proscrit les ensembles qui se contiennent eux-mêmes.

C'est pour jouer sur ces principes que des informaticiens facétieux ont défini des acronymes récursifs qui ne définissent rien puisqu'ils sont imprédicatifs et incohérents. De même, l'aphorisme suivant : « Pour comprendre le principe de récursivité, il faut d'abord comprendre le principe de récursivité »[réf. nécessaire], est imprédicatif et peut être considéré comme une pétition de principe.

En systémique, neurosciences et systèmes complexes, cognition

modifier

Edgar Morin a très souvent utilisé le concept de récursivité, qu'il appelle boucle récursive, notamment dans ses ouvrages constituant la Méthode. La boucle récursive est à causalité circulaire : la conséquence agit sur la cause de l'effet. La plasticité cérébrale, composée de la plasticité neuronale et de la plasticité synaptique, est un exemple de boucle récursive. Par exemple : le cerveau a la capacité de piloter l'enchaînement des différents muscles de commande lors du premier apprentissage d'un mouvement complexe (swing du golf). La répétition du geste modifie les réseaux neuronaux et synaptiques qui deviennent ainsi aptes à de nouvelles capacités : l'apprentissage des gestes pour les effets donnés à la balle.

« Le principe de récursion organisationnelle va au-delà du principe de la rétroaction (feed-back); il dépasse la notion de régulation pour celle d'autoproduction et auto-organisation. C'est une boucle génératrice dans laquelle les produits et les effets sont eux-mêmes producteurs et causateurs de ce qui les produit. […] Les individus humains produisent la société dans et par leurs interactions, mais la société, en tant que tout émergeant, produit l'humanité de ces individus en leur apportant le langage et la culture »[12].

Dans le 6e opus de La Méthode, Edgar Morin propose la récursion éthique.

« L'auto-examen, l'autocritique et la gymnastique psychique coïncident en la pratique récursive qui consiste à évaluer nos évaluations, juger nos jugements, critiquer nos critiques. […]

La récursion éthique met également en boucle compréhension/explication (c'est-à-dire examen objectif/subjectif) : toute explication doit être complétée par la compréhension, toute compréhension doit être complétée par l'explication.

La récursion éthique, enfin, nous renforce immunologiquement contre notre tendance à culpabiliser autrui, devenant bouc émissaire de nos fautes »[13].

Notes et références

modifier
(en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Recursion » (voir la liste des auteurs).
  1. En algorithmique, les algorithmes récursifs sont couramment employés.
  2. Notons que le système de wiki détecte les liens hypertextes qui pointent sur la page les mentionnant et les supprime afin d'éviter des problèmes de boucle aux robots parcourant les pages.

Références

modifier
  1. CNRTL: RECURSIVITÉ.
  2. Larousse: récursivité.
  3. Hauswirth et Hromkovič 2017.
  4. Pinker 2008.
  5. Pinker et Jackendoff 2005.
  6. Portner et Partee 2002.
  7. Lemieux 2013.
  8. Rey, Perruchet et Fagot 2012.
  9. Odile Allimann et Émilie Revaz, « La mise en abyme dans les arts », École polytechnique fédérale de Lausanne (Énoncé théorique de master),‎ , p. 27-28 (lire en ligne [PDF], consulté le ).
  10. « L’effet Vache-qui-rit ou les phrases emboîtées », Sciences et Avenir,‎ (lire en ligne, consulté le ).
  11. J.-M. Limoges, « La Mise en abyme imagée », Textimage, no 4,‎ , p. 5 (lire en ligne [PDF], consulté le ).
  12. Morin et Le Moigne 1999.
  13. Morin 2004.

Annexes

modifier

Sur les autres projets Wikimedia :

Bibliographie

modifier

Liens externes

modifier

Articles connexes

modifier
  NODES
Note 6