Spis treści |
Idempotentność (łac. idempotent-: idem, „taki sam, równy” i potens, „mieć moc, siłę”, od potis, pote, „móc”; spokr. z gr. πόσις posis, „małżonek”, sanskr. पित pati, „mistrz, małżonek”) – w matematyce i informatyce własność pewnych operacji, która pozwala na ich wielokrotne stosowanie bez zmiany wyniku.
Pojęcie idempotentności pojawia się wielokrotnie w algebrze (w szczególności w teorii rzutów i operatorów domknięcia) oraz programowaniu funkcyjnym (w którym ma ono związek z przejrzystością referencyjną).
Termin wprowadził Benjamin Peirce[1] w kontekście elementów algebry, które są niezmiennicze ze względu na potęgowanie.
Istnieje kilka znaczeń idempotentności w zależności od pojęcia, do którego się odnoszą:


będąca idempotentem mnożenia: 
Działanie jednoargumentowe
tzn. funkcję danego zbioru
w siebie, nazywa się idempotentną, jeśli dla każdego
zachodzi

W szczególności funkcja tożsamościowa
określona wzorem
jest idempotentna, podobnie jak funkcja stała
gdzie
dana wzorem 
Ważną klasą funkcji idempotentych są rzuty w przestrzeni liniowej. Przykładowo rzutem jest funkcja
dana wzorem
która rzutuje dowolny punkt przestrzeni trójwymiarowej na punkt płaszczyzny
gdyż trzecia współrzędna
jest równa 
Działanie jednoargumentowe
jest idempotentne wtedy i tylko wtedy, gdy odwzorowuje wszystkie elementy zbioru
na punkty stałe. Dla zbioru
-elementowego istnieje

funkcji idempotentnych, gdzie

jest liczbą funkcji idempotentnych o dokładnie
punktach stałych. Początkowymi wyrazami ciągu liczby funkcji idempotentnych danego przez powyższą sumę są: 1, 1, 3, 10, 41, 196, 1057, 6322, 41393, …[2]
Dwuargumentowe działanie
na zbiorze
nazywa się idempotentnym, jeżeli dla wszystkich
zachodzi

Przykładami działań idempotentnych mogą być działania sumy zbiorów i iloczynu zbiorów, a także działania koniunkcji logicznej i dysjunkcji logicznej oraz, w ogólności, działania kresu dolnego i górnego w kratach.
Element
nazywa się idempotentnym lub idempotentem, jeżeli zachodzi dla niego równość

W szczególności idempotentem działania
jest jego element neutralny.
Powyższe trzy pojęcia można przedstawić następująco:
na zbiorze
jest idempotentne jest równoważne żądaniu, by każdy element zbioru
był idempotenty względem 
w następujący sposób:
W ten sposób twierdzenie, że
jest jednoargumentowym działaniem idempotentnym na
jest równoważne stwierdzeniu, że
jest elementem idempotentnym działania
na zbiorze funkcji 
Jak wspomniano wyżej, przekształcenia tożsamościowe i stałe są idempotentne. Idempotentne są również funkcje wartości bezwzględnej zmiennej rzeczywistej i zespolonej oraz funkcja podłogi i sufitu zmiennej rzeczywistej.
Funkcja przypisująca każdemu podzbiorowi przestrzeni topologicznej
jej domknięcie jest idempotentna na zbiorze potęgowym zbioru
Jest to przykład operatora domknięcia; własność idempotentności cechuje wszystkie operatory domknięcia. Idempotentne są również działania wnętrza oraz k-rozszerzenia.
Operatory gwiazdka i plus Kleene'ego wykorzystywane w językach formalnych do wyrażania powtórzeń są idempotente.
Element idempotentny pierścienia to, z definicji, element idempotentny względem mnożenia w pierścieniu[3]. Innymi słowy element
jest idempotentny, gdy
W zbiorze idempotentów pierścienia można zdać porządek częściowy w następujący sposób: jeśli
i
są idempotentami, to

W porządku tym
jest najmniejszym, a
– największym idempotentem.
Dwa idempotenty
nazywa się ortogonalnymi i oznacza
jeżeli
Wówczas
również jest idempotentny i zachodzi
oraz 
Jeśli
jest idempotentem pierścienia
to
wówczas 
również jest pierścieniem z jedynką 
zachodzi
wówczas
jest pierścieniem z jedynką 
Idempotenty centralne są blisko związane z rozkładami
na sumy proste pierścieni. Jeśli

to jedynki pierścieni
są parami ortogonalnymi idempotentami centralnymi w
których suma jest równa
Odwrotnie, dla danych parami ortogonalnych idempotentów centralnych
sumujących się do
zachodzi

W szczególności idempotent centralny
daje więc rozkład
na sumę prostą 
Dowolny idempotent różny od
i
jest dzielnikiem zera, gdyż
W związku z tym dziedziny całkowitości i pierścienie z dzieleniem nie mają takich idempotentów. Pierścienie lokalne również nie mają tego rodzaju idempotentów, ale z innego powodu: jedynym idempotentem zawartym w radykale Jacobsona pierścienia jest
Istnieje katenoida idempotentów w pierścieniu kokwaternionów.
Pierścienie, których wszystkie elementy są idempotentne nazywa się pierścieniami Boole'a. Można pokazać, że w każdym takim pierścieniu mnożenie jest przemienne, a każdy element swoim elementem przeciwnym.
Jeśli
jest idempotentem, to
jest inwolucją.
Jeśli
jest idempotentem, to
jest idempotentem i są one swoimi odwrotnościami: stąd jeśli
jest odwracalna w danym pierścieniu, to idempotentny i inwolucje są pojęciami równoważnymi.
Więcej, jeżeli
jest inwolucją, to
i
są idempotentami ortogonalnymi odpowiadającymi
i 
W informatyce idempotentność jest własnością operacji pozwalającą na jej wielokrotne powtarzanie bez zmiany wyniku lub powodowania błędu. Taką cechę ma np. operacja czytania.
Programista aplikacji internetowych powinien zadbać o idempotentność wykonywanych przez serwer operacji, nie dopuszczając np. do kolejnego zakupu identycznego wyrobu w sklepie internetowym po odświeżeniu strony. Jedną z metod jest wprowadzenie tokenu synchronizującego, który jest inkrementowany przy każdym zapytaniu od klienta i np. jako ciasteczko przesyłany wraz z odpowiedzią do klienta. Jeśli token otrzymany od klienta jest różny od tokena zapamiętanego na serwerze, oznacza to że nastąpiło rozsynchronizowanie, np. klient odświeżył stronę.
Standardowo uważa się metody GET i HEAD protokołu HTTP za idempotentne, więc przeglądarki internetowe nie wyświetlają żadnego ostrzeżenia w przypadku odświeżania strony za pomocą metody GET. Stąd poleca się implementację operacji zmieniających stan sesji klienta za pomocą metody POST.