在从函数组合∘的集合E到E的子集 F的函数的幺半群(FE,∘)中,幂等元素是函数 f: E → F ,使得f ∘ f = f,换句话说,使得 对于E中的所有x,f(f(x)) = f(x) (E中每个元素的像是f的 定点 )。例如:
其他例子包括:
如果集合 E 有 n 个元素,在f下我们可以把它分成 k 个选定的固定点和 n − k 个非固定点 ,那么有 kn−k 个不同的幂等函数。因此,考虑到所有可能的分区,
是集合中可能幂等函数的总数。对于n = 0,1,2,3,4,5,6,7,8 ......,由上面求和给出的幂等函数个数的整数序列 从1,1,3,10,41,196,1057,6322,41398,...开始。 (OEIS中的数列A000248)。
在复合函数下,幂等性和非幂等性都没有保留。[11] 作为前者的一个例子,f(x) = x mod 3和 g(x )=max(x,5)都是幂等的,但是 f ∘ g 不是,[12] 尽管 g ∘ f 碰巧是。[13] 作为后者的一个例子,布尔域上的否定函数¬ 不是幂等的,而是 ¬ ∘ ¬ 是。同样,一元否定 −( ) 对实数的幂等性不是,但是 −( ) ∘ −( ) 是。
在 计算机科学 中,术语 幂等性 根据其应用的背景,可能有不同的含义:
在许多情况下,这是一个非常有用的属性,因为这意味着可以根据需要重复或重试一个操作,而不会造成意想不到的影响。对于非幂等运算,算法可能必须跟踪该运算是否已经被执行。
在数据库中查找客户姓名和地址的函数通常是幂等的,因为这不会导致数据库改变。同样,将客户地址更改为XYZ通常是幂等的,因为无论XYZ提交多少次,最终地址都是相同的。但是,为客户订购购物车通常不是幂等的,因为多次运行该呼叫将导致订购多个订单。取消订单是等幂的,因为无论发出多少请求,订单都会被取消。
然而,如果序列中的后一个方法改变了前一个方法所依赖的值,幂等方法或子程序的组合不一定是幂等的 幂等性在组合下是不封闭的。 例如,假设一个变量的初始值是3,并且有一个序列读取该变量,然后将其更改为5,然后再次读取它。 序列中的每一步都是幂等的:读取变量的两个步骤都没有副作用,并且无论执行多少次,将变量更改为5将始终具有相同的效果。尽管如此,执行整个序列第一次会产生输出(3,5),但第二次执行会产生输出(5,5),因此序列不是幂等的。
在 超文本传输协议 中,幂等性和性是区分 的主要属性。 在主要的超文本链接协议动词中,GET、PUT和DELETE应该按照标准以幂等的方式实现,但是POST不需要。[14] GET获取检索资源;PUT将内容存储在资源中;DELETE删除资源。如上例所示,读取数据通常没有副作用,所以它是幂等的(事实上是幂零)。存储和删除给定的一组内容通常都是幂等的,只要请求指定了唯一标识该资源的位置或标识符,并且将来只标识该资源。具有唯一标识符的PUT和DELETE操作分别简化为赋值给一个值或空值的不可变变量的简单情况,并且出于相同的原因是幂等的;最终结果总是与初始执行的结果相同,即使响应不同。[15]
违反存储或删除中的唯一标识要求通常会导致违反幂等性。例如,在没有指定唯一标识符的情况下存储或删除给定的一组内容:不需要幂等的POST请求通常不包含唯一标识符,因此标识符的创建被委托给接收系统,然后接收系统创建相应的新记录。 同样,根据系统的状态,具有非特定标准的PUT和DELETE请求可能会导致不同的结果,例如,删除最近记录的请求。在每种情况下,后续的执行将进一步修改系统的状态,因此它们不是幂等的。
在 事件流处理 中,幂等性指的是系统产生相同结果的能力,即使相同的文件、事件或消息被多次接收。
在 加载存储架构 中,可能导致 页面错误 的命令幂等的。因此,如果发生页面故障,操作系统可以从磁盘加载页面,然后简单地重新执行故障指令。在非等幂指令的处理器中,处理页面错误要复杂得多。
当重新格式化输出时, 漂亮的印刷 是幂等的。换句话说,如果输出已经“漂亮”,那么漂亮的打印机就没什么可做的了。
在 面向服务的体系结构 (SOA)中,如果该过程的任何部分失败的话,则可以重放完全由幂等步骤组成的多步骤编排过程而没有副作用。
^"idempotent". Merriam-Webster. Archived from the original on 2016-10-19..
^Polcino & Sehgal (2002), p. 127..
^Valenza, Robert (2012). Linear Algebra: An Introduction to Abstract Mathematics. Berlin: Springer Science & Business Media. p. 22. ISBN 9781461209010. An element s of a magma such that ss = s is called idempotent..
^Doneddu, Alfred (1976). Polynômes et algèbre linéaire (in 法语). Paris: Vuibert. p. 180. Soit M un magma, noté multiplicativement. On nomme idempotent de M tout élément a de M tel que a2 = a..
^George Grätzer (2003). General Lattice Theory. Basel: Birkhäuser. Here: Sect.1.2, p.5..
^Garrett Birkhoff (1967). Lattice Theory. Colloquium Publications. 25. Providence: Am. Math. Soc.. Here: Sect.I.5, p.8..
^A more common notation for this is , however, it is harder to read when expressions are nested..
^In fact, this equation holds for all rational, real and even complex numbers, too..
^This is an equation between functions. Two functions are equal if their domains and ranges agree, and their output values agree on their whole domain..
^This set of functions is formally denoted as ℤℤ..
^If f and g commute, i.e. if f ∘ g = g ∘ f, then idempotency of both f and g implies that of f ∘ g, since (f ∘ g) ∘ (f ∘ g) = (f ∘ f) ∘ (g ∘ g) = f ∘ g, using the associativity of composition..
^e.g. f(g(7)) = f(7) = 1, but f(g(1)) = f(5) = 2 ≠ 1.
^also showing that commutation of f and g is not a necessary condition for idempotency preservation.
^IETF, Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content Archived 2014-06-08 at the Wayback Machine. See also HyperText Transfer Protocol..
^Idempotent Methods. Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content: sec. 4.2.2. RFC 7231. "It knows that repeating the request will have the same intended effect, even if the original request succeeded, though the response might differ.".
^https://web.archive.org/web/20221029032221/https://web.archive.org/web/20110523081716/http://www.nclabor.com/elevator/geartrac.pdf For example, this design specification includes detailed algorithm for when elevator cars will respond to subsequent calls for service.
暂无