Idempotence

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

En mathématiques et en informatique, l'idempotence signifie qu'une opération a le même effet qu'on l'applique une ou plusieurs fois. Par exemple, la valeur absolue est idempotente ː abs(abs(-5)) = abs(-5) = 5. On retrouve ce concept en algèbre générale, en particulier dans la théorie des opérateurs de projection et des opérateurs de clôture, mais aussi en informatique, en particulier en programmation fonctionnelle.

Définition[modifier | modifier le code]

Un élément a d'un magma est dit idempotent si a2 = a.

Exemples[modifier | modifier le code]

  • Dans le demi-groupe (, ×) — qui est même un monoïde — les éléments idempotents sont 0 et 1.
  • Dans le monoïde de l'ensemble des parties d'un ensemble E, muni de l'union ensembliste, tout élément A est idempotent : (de même si l'on remplace l'union par l'intersection).
  • Dans le monoïde des applications d'un ensemble E dans lui-même (muni de la composition), les éléments idempotents sont les applications f : E → E telles que ff = f, autrement dit telles que pour tout élément x de E, f(f(x)) = f(x) (l'image de tout élément de E est un point fixe de f). Par exemple :
  • Dans un monoïde E, le neutre e est un élément idempotent.
  • Dans un groupe G, le neutre e est le seul élément idempotent. En effet, si x élément de G est tel que x x = x, ou encore x x = x e, on en déduit x = e en simplifiant à gauche par x (c'est-à-dire en composant à gauche par le symétrique de x).

En informatique[modifier | modifier le code]

En informatique, le terme est utilisé pour décrire une opération qui produit le même résultat qu'elle soit exécutée une seule ou plusieurs fois. Il peut avoir un sens différent selon le contexte : dans le cas d'appels de méthodes ou routines avec des effets de bords, par exemple, il signifie que l'état du système reste le même après le premier appel. En programmation fonctionnelle, une fonction idempotente est celle qui a la propriété ƒ(ƒ(x)) = ƒ(x) pour chaque valeur x.

Par exemple : rechercher le nom d'un client dans une base de données est typiquement idempotent, car cela ne change pas la base de données. Passer une commande n'est pas idempotent, car plusieurs invocations résulteront en plusieurs commandes. Annuler une commande au contraire est idempotent car la commande reste annulée quel que soit le nombre d'invocations.

Autre exemple : le tri d'une liste d'éléments est une procédure idempotente. Une fois la liste triée, le fait de la trier à nouveau ne changera pas l'ordre des éléments ; la liste ne sera donc pas modifiée.

Un script SQL d'insertion dans une base de données peut être écrit de manière à être idempotent : les commandes d'insertions peuvent être écrites avec des conditions empêchant la réinsertion de ces mêmes enregistrements. Ce script peut alors être exécuté plusieurs fois sur la même base de données sans aucun risque de duplication de données. Ceci est intéressant dans le cas d'un système qui évolue et qui nécessite de nouvelles insertions lors de nouvelles versions. Ceci permet également aux utilisateurs du logiciel de faire évoluer leur installation à leur rythme, sans devoir toujours passer de la version n à la version n + 1.

Voir aussi[modifier | modifier le code]