« Idempotence » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
suppression de modif par erreur
HB (discuter | contributions)
→‎Exemples : suppression : cas particulier d'applications constantes citées déjà plus haut
 
(15 versions intermédiaires par 10 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{À sourcer|date=mars 2021}}
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 : {{nowrap|1=abs(abs(−5)) = abs(−5)}}, les deux membres étant égaux à 5. On retrouve ce concept en [[algèbre générale]], en particulier dans la théorie des [[Projecteur (mathématiques)|opérateurs de projection]] et des [[Opérateur de clôture|opérateurs de clôture]], mais aussi en informatique, en particulier en [[programmation fonctionnelle]].


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 : <math display="inline">\left\vert\left\vert -5 \right\vert\right\vert = \left\vert -5 \right\vert</math>, les deux membres étant égaux à 5. On retrouve ce concept en [[algèbre générale]], en particulier dans la théorie des [[Projecteur (mathématiques)|opérateurs de projection]] et des [[Opérateur de clôture|opérateurs de clôture]], mais aussi en informatique, en particulier en [[programmation fonctionnelle]].
== Définition ==

== En mathématiques ==

=== Définition ===
Un élément ''x'' d'un [[Magma (mathématiques)|magma]] (''M'', •) est dit ''idempotent'' si{{Note|id=AD1976|texte=Alfred Doneddu, ''Polynômes et algèbre linéaire'', 1976|détails={{p.|180}}, {{citation|1=Soit ''M'' un magma, noté multiplicativement. On nomme idempotent de ''M'' tout élément ''a'' de ''M'' tel que {{nowrap|1=''a''<sup>2</sup> = ''a''}}.}}|url=https://books.google.fr/books?id=5Ry7AAAAIAAJ}}{{,}}{{Note|id=RV2012|texte=Robert J. Valenza, ''Linear Algebra: An Introduction to Abstract Mathematics'', 2012|détails={{p.|22}}, {{citation étrangère|langue=en|1=An element ''s'' of a magma such that {{nowrap|1=''ss'' = ''s''}} is called ''idempotent''.}}|url=https://books.google.fr/books?id=7x8MCAAAQBAJ}} :
Un élément ''x'' d'un [[Magma (mathématiques)|magma]] (''M'', •) est dit ''idempotent'' si{{Note|id=AD1976|texte=Alfred Doneddu, ''Polynômes et algèbre linéaire'', 1976|détails={{p.|180}}, {{citation|1=Soit ''M'' un magma, noté multiplicativement. On nomme idempotent de ''M'' tout élément ''a'' de ''M'' tel que {{nowrap|1=''a''<sup>2</sup> = ''a''}}.}}|url=https://books.google.fr/books?id=5Ry7AAAAIAAJ}}{{,}}{{Note|id=RV2012|texte=Robert J. Valenza, ''Linear Algebra: An Introduction to Abstract Mathematics'', 2012|détails={{p.|22}}, {{citation étrangère|langue=en|1=An element ''s'' of a magma such that {{nowrap|1=''ss'' = ''s''}} is called ''idempotent''.}}|url=https://books.google.fr/books?id=7x8MCAAAQBAJ}} :
: {{nowrap|1=''x'' • ''x'' = ''x''}}.
: {{nowrap|1=''x'' • ''x'' = ''x''}}.
Si tous les éléments de ''M'' sont idempotents pour •, alors • est dite ''idempotente''.
Si tous les éléments de ''M'' sont idempotents pour •, alors • est dite ''idempotente''.


== Exemples ==
=== Exemples ===
* Dans un magma (''M'', •), l'[[élément neutre]] ''e'' ou l'[[élément absorbant]] ''a'', s'il existe, est un élément idempotent. En effet, {{nowrap|1=''e'' • ''e'' = ''e''}} et {{nowrap|1=''a'' • ''a'' = ''a''}}.
* Dans un magma (''M'', •), l'[[élément neutre]] ''e'' ou l'[[élément absorbant]] ''a'', s'il existe, est un élément idempotent. En effet, {{nowrap|1=''e'' • ''e'' = ''e''}} et {{nowrap|1=''a'' • ''a'' = ''a''}}.
*Dans tout magma associatif fini (''E'', •), il existe un élément idempotent. En effet, si ''a'' est une élément quelconque de ''E'', alors la suite des ''a'' puissance 2<sup>''n''</sup> est injective, donc il existe un entier ''p'' tel que les termes de rangs ''n'' et ''n + p'' soient égaux. De plus, la puissance 2<sup>''p''</sup> - 1 du terme de rang ''n'' de la suite est un idempotent.
*Dans tout magma associatif fini (''E'', •) non vide, il existe un élément idempotent. En effet, si ''a'' est un élément quelconque de ''E'', alors la suite des puissances de ''a'' est non injective, donc il existe deux entiers strictement positifs ''n'' et ''p'' tels que ''a{{exp|n+p}} = a{{exp|n}}'', si bien que ''a{{exp|np}}'' est idempotent.
* Dans un [[Groupe (mathématiques)|groupe]] (''G'', •), l'élément neutre ''e'' est le seul élément idempotent. En effet, si ''x'' est un élément de ''G'' tel que {{nowrap|1=''x'' • ''x'' = ''x''}}, alors {{nowrap|1=''x'' • ''x'' = ''x'' • ''e''}} et on en déduit ''x'' = ''e'' en simplifiant à gauche par ''x'' (c'est-à-dire en composant à gauche par l'[[élément symétrique]] de ''x'').
* Dans un [[Groupe (mathématiques)|groupe]] (''G'', •), l'élément neutre ''e'' est le seul élément idempotent. En effet, si ''x'' est un élément de ''G'' tel que {{nowrap|1=''x'' • ''x'' = ''x''}}, alors {{nowrap|1=''x'' • ''x'' = ''x'' • ''e''}} et on en déduit ''x'' = ''e'' en simplifiant à gauche par ''x'' (c'est-à-dire en composant à gauche par l'[[élément symétrique]] de ''x'').
* Dans le monoïde ([[entier naturel|ℕ]], ×), les éléments idempotents sont 0 et 1.
* Dans le monoïde ([[entier naturel|ℕ]], ×), les éléments idempotents sont 0 et 1.
* Dans les monoïdes (𝒫(''E''), ∪) et (𝒫(''E''), ∩) de l'[[ensemble des parties d'un ensemble]] ''E'' muni de l'[[Union (mathématiques)|union ensembliste]] ∪ et de l'[[Intersection (mathématiques)|intersection ensembliste]] ∩ respectivement, tout élément est idempotent.
* Dans les monoïdes (𝒫(''E''), ∪) et (𝒫(''E''), ∩) de l'[[ensemble des parties d'un ensemble]] ''E'' muni de l'[[Union (mathématiques)|union ensembliste]] ∪ et de l'[[Intersection (mathématiques)|intersection ensembliste]] ∩ respectivement, tout élément est idempotent.
* Dans les monoïdes ({0, 1}, ∨) et ({0, 1}, ∧) du [[domaine booléen]] muni de la [[disjonction logique]] ∨ et de la [[conjonction logique]] ∧ respectivement, tout élément est idempotent.
* Dans les monoïdes ({0, 1}, ∨) et ({0, 1}, ∧) du [[domaine booléen]] muni de la [[disjonction logique]] ∨ et de la [[conjonction logique]] ∧ respectivement, tout élément est idempotent.
* Dans le monoïde (''F<sup>E</sup>'', ∘) des [[Application (mathématiques)|applications]] d'un ensemble ''E'' dans un [[Inclusion (mathématiques)|sous-ensemble]] ''F'' de ''E'' muni de la [[composition de fonctions]] ∘, les éléments idempotents sont les applications {{nowrap|''f'' : ''E'' → ''F''}} telles que {{nowrap|1=''f'' ∘ ''f'' = ''f''}}, autrement dit telles que pour tout élément ''x'' de ''E'', {{nowrap|1=''f''(''f''(''x'')) = ''f''(''x'')}} (l'[[Image (mathématiques)|image]] de tout élément de ''E'' est un [[point fixe]] de ''f''). Par exemple :
* Dans le monoïde (''E<sup>E</sup>'', ∘) des [[Application (mathématiques)|applications]] d'un ensemble ''E'' dans lui-même muni de la [[composition de fonctions]] ∘, les éléments idempotents sont les applications {{nowrap|''f'' : ''E'' → ''E''}} telles que {{nowrap|1=''f'' ∘ ''f'' = ''f''}}, autrement dit telles que pour tout élément ''x'' de ''E'', {{nowrap|1=''f''(''f''(''x'')) = ''f''(''x'')}} (l'[[Image (mathématiques)|image]] de tout élément de ''E'' par ''f'' est un [[point fixe]] de ''f''). Par exemple :
** l'application [[Application identité|identité]] est idempotente ;
** l'application [[Application identité|identité]] est idempotente ;
** les applications [[Fonction constante|constantes]] sont idempotentes ;
** les applications [[Fonction constante|constantes]] sont idempotentes ;
Ligne 22 : Ligne 26 :
** les applications [[Adhérence (mathématiques)|adhérence]] et [[Intérieur (topologie)|intérieur]] de l'ensemble des parties d'un [[espace topologique]] dans lui-même sont idempotentes ;
** les applications [[Adhérence (mathématiques)|adhérence]] et [[Intérieur (topologie)|intérieur]] de l'ensemble des parties d'un [[espace topologique]] dans lui-même sont idempotentes ;
** les applications [[étoile de Kleene]] et [[Étoile de Kleene#Opérateur plus|plus de Kleene]] de l'ensemble des parties d'un monoïde dans lui-même sont idempotentes ;
** les applications [[étoile de Kleene]] et [[Étoile de Kleene#Opérateur plus|plus de Kleene]] de l'ensemble des parties d'un monoïde dans lui-même sont idempotentes ;
** les [[Endomorphisme linéaire|endomorphismes]] idempotents d'un [[espace vectoriel]] sont ses [[projecteur (mathématiques)|projecteurs]].
** les [[Endomorphisme linéaire|endomorphismes]] idempotents d'un espace vectoriel sont ses [[projecteur (mathématiques)|projecteurs]] ;


== En informatique ==
== En informatique ==
En informatique, le terme peut avoir un sens différent selon le contexte :
En informatique, le terme peut avoir un sens différent selon le contexte, mais reste néanmoins proche du sens mathématique :


* en [[programmation impérative]], une [[Routine (informatique)|routine]] <code>f</code> est idempotente si l'état du système reste le même après un ou plusieurs appels (par exemple : <code>f(x); f(x);</code>), autrement dit si la fonction de l'espace des états du système dans lui-même associée à la routine est idempotente au sens mathématique.
* en [[programmation impérative]], une [[Routine (informatique)|routine]] <code>f</code> est idempotente si l'état du système reste le même après un ou plusieurs appels (par exemple : <code>f(x); f(x);</code>), autrement dit si la fonction de l'espace des états du système dans lui-même associée à la routine est idempotente au sens mathématique.
** Le standard [[HTTP]] désigne par le mot "idempotent" les méthodes HTTP qui produisent le même ''effet'' sur le serveur, bien que les codes de réponses renvoyés au [[client (informatique)|client]] puissent différer d'un appel à l'autre.

* en [[programmation fonctionnelle]], une [[fonction pure]] est idempotente si elle est idempotente au sens mathématique.
* en [[programmation fonctionnelle]], une [[fonction pure]] est idempotente si elle est idempotente au sens mathématique.


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.
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.
Autre exemple : le tri d'une [[Liste (informatique)|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 [[Structured Query Language|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 {{nowrap|''n'' + 1}}.
Un script [[Structured Query Language|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 {{nowrap|''n'' + 1}}.
Ligne 40 : Ligne 46 :


== Voir aussi ==
== Voir aussi ==
{{Autres projets|wikt=idempotence}}
* [[Involution (mathématiques)|Involution]]
* [[Involution (mathématiques)]]
* [[Point fixe]]
* [[Point fixe]]
* [[Nilpotent]]
* [[Nilpotent]]
* [[Effet de bord (informatique)|Effet de bord]]
* [[Effet de bord (informatique)]]
* [[Fonction déterministe]]
* [[Fonction déterministe]]
* [[Fonction pure]]
* [[Fonction pure]]

Dernière version du 10 avril 2024 à 11:37

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 : , les deux membres étant égaux à 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.

En mathématiques[modifier | modifier le code]

Définition[modifier | modifier le code]

Un élément x d'un magma (M, •) est dit idempotent si[1],[2] :

xx = x.

Si tous les éléments de M sont idempotents pour •, alors • est dite idempotente.

Exemples[modifier | modifier le code]

En informatique[modifier | modifier le code]

En informatique, le terme peut avoir un sens différent selon le contexte, mais reste néanmoins proche du sens mathématique :

  • en programmation impérative, une routine f est idempotente si l'état du système reste le même après un ou plusieurs appels (par exemple : f(x); f(x);), autrement dit si la fonction de l'espace des états du système dans lui-même associée à la routine est idempotente au sens mathématique.
    • Le standard HTTP désigne par le mot "idempotent" les méthodes HTTP qui produisent le même effet sur le serveur, bien que les codes de réponses renvoyés au client puissent différer d'un appel à l'autre.

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.

Notes et références[modifier | modifier le code]

  1. Alfred Doneddu, Polynômes et algèbre linéaire, 1976, p. 180, « Soit M un magma, noté multiplicativement. On nomme idempotent de M tout élément a de M tel que a2 = a. »  [lire en ligne]
  2. Robert J. Valenza, Linear Algebra: An Introduction to Abstract Mathematics, 2012, p. 22, « An element s of a magma such that ss = s is called idempotent. »  [lire en ligne]

Voir aussi[modifier | modifier le code]

Sur les autres projets Wikimedia :