The Wayback Machine - https://web.archive.org/web/20221029032221/https://baike.sogou.com/kexue/d10368.htm

幂等

编辑
波兰台式计算器的开/关按钮。按下“开”按钮(绿色)是一种幂等操作,因为无论是做一次还是多次操作它都具有相同的效果。

幂等性[1]是数学和计算机科学中某些运算的性质,它们可以被多次应用,而不会改变初始应用的结果。幂等性的概念出现在抽象代数 (特别是在投影和闭包算子的理论中)和 函数编程(其中它与引用透明性有关)中的许多地方。

这个术语是由本杰明·皮尔斯[2]在代数元素的背景下引入的,当被提升到正整数幂时保持不变,字面意思是“(具有)相同幂的性质”,从 idem + 效力 (相同+功率)。

1 定义编辑

原群 (M, •) 中的元素 x 被称为是 幂等 的,如果:[3][4]

xx = x

如果所有元素相对于•都是幂等的,则称•为幂等的。公式∀x, xx = x 被称为•的幂等法则。[5][6]

2 例子编辑

  • 自然数1是一个关于乘法的幂等元素 (因为1×1 = 1),0也是如此(因为0×0=0),但是没有其他自然数是(例如2×2=2不成立)。由于后一个原因,自然数的乘法不是 幂等运算。更正式地说,在 独异点 (ℕ,×),幂等元素只有0和1。
  • 在原群 (M, •)中,一个 单位元素 e 或者一个 吸收元素 a(如果存在)是幂等的。实际上, ee = eaa = a
  • 在群 (G, •)中,单位元素 e 是唯一的幂等元素。事实上,如果 xG 的一个元素使得 xx = x成立,那么 xx = xe ,最后通过左边乘以x的逆元素得到x = e

  • 两个集合x和y的 交集 x∩y是幂等运算,因为 x∩x 永远等于 x。这意味着幂等法则∀x, x∩x = x是正确的。同样,取两个集合的并是幂等运算。形式上,在集合E的 幂集的幺半群(𝒫(E),∪)和(𝒫(E),∩)中分别有集合并集∪和集合交集∩,所有元素都是幂等的;因此∪和∪是𝒫(E )上的幂等运算。
  • 在具有 逻辑连接词与∨和 逻辑连接词或∧的 布尔域的幺半群({0,1},∨)和({0,1},∧)中,所有元素都是幂等的。
  • 在 布尔环 中,乘法是幂等的。

2.1 幂等函数

在从函数组合∘的集合E到E的子集 F的函数的幺半群(FE,∘)中,幂等元素是函数 f: EF ,使得ff = f,换句话说,使得 对于E中的所有x,f(f(x)) = f(x) (E中每个元素的像是f的 定点 )。例如:

  • 取 整数 x的 绝对值 abs(x)[7]是幂等函数,原因如下: abs(abs(x))=abs(x)对于每个整数x都是真的。[8] 这意味着abs∘abs = abs [9] 成立,也就是说,abs是所有函数集(从整数到整数)[10] 中关于函数组合的一个幂等元素。因此,abs满足幂等函数的上述定义。

其他例子包括:

  • 恒等函数是幂等的;
  • 常数 函数是幂等的;
  • 向下取整函数,向上取整函数 和 分数部分 函数是幂等的;
  • 从群的幂集到自身的子群生成函数是幂等的;
  • 实数上仿射空间的幂集到其自身的凸包函数是幂等的;
  • 拓扑空间的幂集对其自身的闭包和内函数是幂等的;
  • 幺半群的幂集对自身的 克莱尼星 和 克莱尼加号 函数是幂等的;
  • 向量空间的幂等 自同态是它的投影。

如果集合 En 个元素,在f下我们可以把它分成 k 个选定的固定点和 nk 个非固定点 ,那么有 knk 个不同的幂等函数。因此,考虑到所有可能的分区,

  

是集合中可能幂等函数的总数。对于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和 gx )=max(x,5)都是幂等的,但是 fg 不是,[12] 尽管 gf 碰巧是。[13] 作为后者的一个例子,布尔域上的否定函数¬ 不是幂等的,而是 ¬ ∘ ¬ 是。同样,一元否定 −( ) 对实数的幂等性不是,但是 −( ) ∘ −( ) 是。

3 计算机科学的意义编辑

在 计算机科学 中,术语 幂等性 根据其应用的背景,可能有不同的含义:

  • 在 命令式编程 中,如果一个或多个调用后系统状态保持不变,则具有 副作用的 子程序是幂等的,换句话说,· 从系统状态空间到与子程序相关联的自身的函数在 中给出的数学意义上是幂等的;
  • 在 函数编程 中,· 如果一个 纯函数 在中给出的数学意义上是幂等的,那么它就是幂等的。

在许多情况下,这是一个非常有用的属性,因为这意味着可以根据需要重复或重试一个操作,而不会造成意想不到的影响。对于非幂等运算,算法可能必须跟踪该运算是否已经被执行。

3.1 计算机科学示例

在数据库中查找客户姓名和地址的函数通常是幂等的,因为这不会导致数据库改变。同样,将客户地址更改为XYZ通常是幂等的,因为无论XYZ提交多少次,最终地址都是相同的。但是,为客户订购购物车通常不是幂等的,因为多次运行该呼叫将导致订购多个订单。取消订单是等幂的,因为无论发出多少请求,订单都会被取消。

然而,如果序列中的后一个方法改变了前一个方法所依赖的值,幂等方法或子程序的组合不一定是幂等的 幂等性在组合下是不封闭的。 例如,假设一个变量的初始值是3,并且有一个序列读取该变量,然后将其更改为5,然后再次读取它。 序列中的每一步都是幂等的:读取变量的两个步骤都没有副作用,并且无论执行多少次,将变量更改为5将始终具有相同的效果。尽管如此,执行整个序列第一次会产生输出(3,5),但第二次执行会产生输出(5,5),因此序列不是幂等的。

在 超文本传输协议 中,幂等性和性是区分 的主要属性。 在主要的超文本链接协议动词中,GET、PUT和DELETE应该按照标准以幂等的方式实现,但是POST不需要。[14] GET获取检索资源;PUT将内容存储在资源中;DELETE删除资源。如上例所示,读取数据通常没有副作用,所以它是幂等的(事实上是幂零)。存储和删除给定的一组内容通常都是幂等的,只要请求指定了唯一标识该资源的位置或标识符,并且将来只标识该资源。具有唯一标识符的PUT和DELETE操作分别简化为赋值给一个值或空值的不可变变量的简单情况,并且出于相同的原因是幂等的;最终结果总是与初始执行的结果相同,即使响应不同。[15]

违反存储或删除中的唯一标识要求通常会导致违反幂等性。例如,在没有指定唯一标识符的情况下存储或删除给定的一组内容:不需要幂等的POST请求通常不包含唯一标识符,因此标识符的创建被委托给接收系统,然后接收系统创建相应的新记录。 同样,根据系统的状态,具有非特定标准的PUT和DELETE请求可能会导致不同的结果,例如,删除最近记录的请求。在每种情况下,后续的执行将进一步修改系统的状态,因此它们不是幂等的。

在 事件流处理 中,幂等性指的是系统产生相同结果的能力,即使相同的文件、事件或消息被多次接收。

在 加载存储架构 中,可能导致 页面错误 的命令幂等的。因此,如果发生页面故障,操作系统可以从磁盘加载页面,然后简单地重新执行故障指令。在非等幂指令的处理器中,处理页面错误要复杂得多。

当重新格式化输出时, 漂亮的印刷 是幂等的。换句话说,如果输出已经“漂亮”,那么漂亮的打印机就没什么可做的了。

在 面向服务的体系结构 (SOA)中,如果该过程的任何部分失败的话,则可以重放完全由幂等步骤组成的多步骤编排过程而没有副作用。

4 应用实例编辑

典型的人行横道按钮是幂等系统的示例

许多人在日常生活中可能遇到的应用例子包括 电梯 呼叫按钮和 人行横道按钮.[16] 按钮的初始激活使系统进入请求状态,直到请求得到满足。在初始激活和被满足的请求之间的按钮的后续激活没有效果,除非系统被设计成基于激活次数来调整满足请求的时间。

参考文献

  • [1]

    ^"idempotent". Merriam-Webster. Archived from the original on 2016-10-19..

  • [2]

    ^Polcino & Sehgal (2002), p. 127..

  • [3]

    ^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..

  • [4]

    ^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..

  • [5]

    ^George Grätzer (2003). General Lattice Theory. Basel: Birkhäuser. Here: Sect.1.2, p.5..

  • [6]

    ^Garrett Birkhoff (1967). Lattice Theory. Colloquium Publications. 25. Providence: Am. Math. Soc.. Here: Sect.I.5, p.8..

  • [7]

    ^A more common notation for this is , however, it is harder to read when expressions are nested..

  • [8]

    ^In fact, this equation holds for all rational, real and even complex numbers, too..

  • [9]

    ^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..

  • [10]

    ^This set of functions is formally denoted as ℤℤ..

  • [11]

    ^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..

  • [12]

    ^e.g. f(g(7)) = f(7) = 1, but f(g(1)) = f(5) = 2 ≠ 1.

  • [13]

    ^also showing that commutation of f and g is not a necessary condition for idempotency preservation.

  • [14]

    ^IETF, Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content Archived 2014-06-08 at the Wayback Machine. See also HyperText Transfer Protocol..

  • [15]

    ^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.".

  • [16]

    ^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.

阅读 1513
版本记录
  • 暂无