Идемпотентность
Идемпотентность — термин, означающий свойство математического объекта, которое проявляется в том, что повторное действие над объектом не изменяет его. Термин предложил американский математик Бенджамин Пирс (англ. Benjamin Peirce) в статьях 1870-х годов. Пирс получил термин путём комбинации двух латинских слов: «idem» («тот же самый») и «potens» («способный»).
Примеры идемпотентных операций:
- сложение с нулём: ;
- умножение на единицу: ;
- модуль числа: ;
- поиск максимального значения: ;
- вычисление наибольшего общего делителя: ;
- сложение по модулю 2 с нулём: .
Элемент
Идемпотентный элемент (идемпотент) в алгебре — элемент полугруппы, сохраняющийся при умножении самого на себя: . Теорема об идемпотенте гласит: в конечной полугруппе есть идемпотент.
Идемпотентный элемент содержит идемпотентный элемент (обозначается ), если . Отношение является отношением частичного порядка в множестве идемпотентных элементов и называется естественным частичным порядком на множестве .
Два идемпотентных элемента ассоциативного кольца (которое будет полугруппой по умножению) и называются ортогональными, если .
Операция
В математике
Идемпотентная бинарная операция в математике — операция, относительно которой всякий элемент обладает идемпотентностью в вышеназванном смысле:
- .
Этим свойством обладают, например, логическое И и логическое ИЛИ.
Идемпотентная унарная операция — операция, для которой выполняется
- , или .
Из линейных операторов в идемпотентна только параллельная проекция. Поэтому проектор в алгебре — в том числе в бесконечномерных пространствах — определяется как .
В информатике
Идемпотентная операция в информатике — действие, многократное повторение которого эквивалентно однократному.
Примером такой операции могут служить GET-запросы в протоколе HTTP. По спецификации, сервер должен возвращать одни и те же ответы на идентичные запросы (при условии, что ресурс не изменился между ними по иным причинам). Такая особенность позволяет кэшировать ответы, снижая нагрузку на сеть.
Для препроцессора языка C директива «#include "xxx.h"
» является идемпотентной, если в заголовочном файле есть защита от двойного включения.