冪等
数学において、冪等性(べきとうせい、英: idempotence、「巾等性」とも書くが読み方は同じ)は、大雑把に言って、ある操作を1回行っても複数回行っても結果が同じであることをいう概念である。まれに等冪(とうべき)とも。抽象代数学、特に射影(projector)や閉包(closure)演算子に見られる特徴である。"idempotence" という単語はラテン語の "idem"(同じ=same)と"potere"(冪=power)から来ている。
主に以下の2つの定義が使われている。
形式的定義
編集二項演算
編集二項演算 "*" を備えた集合 S について、S の元 s は
を満たすとき("*" に関して)冪等(べきとう、idempotent)であるという。特に、任意の中立元は冪等である。S の全ての元が冪等である場合には、その二項演算 "*" は冪等(演算)であるという。例えば、集合の結びと交わりはどちらも冪等演算である。
単項演算
編集単項演算、つまり集合 X から X への写像 f が、X のいかなる元 x についても
を満たすとき、f は冪等であるという。これを写像の合成 ∘ で表すと
となる。つまり、X 上の冪等単項演算とは、X からそれ自身への写像全体のなす集合 XX における、合成 ∘ に関して(上記、二項演算に対する意味で)冪等な元のことである。
主な例
編集写像
編集恒等写像 id(x) = x や定値写像 f(x) = C は、それがいかなる集合上で定義されていたとしても常に冪等写像である。もうすこし明らかでない例として、実数や複素数に対する絶対値関数、実数の床関数などが挙げられる。
ある位相空間 X の各部分集合 U について U の閉包を与える写像は、Xの冪集合における冪等写像である。これは閉包作用素の例であり、全ての閉包作用素は冪等写像である。
環の冪等元
編集環における冪等元とは、環の乗法に関して冪等であるような元のことと定義される。環の冪等元全体からなる集合の半順序を次のように定義することができる。すなわち、e と f が冪等な元であるとき、ef = fe = e となるときかつそのときに限って e ≤ f が成り立つと定めるのである。この順序では 0 が最小な冪等元であり、1 が最大の冪等元となる。
環 R において e が冪等であるとき、eRe も e を乗法単位元とする環になる。もとの環 R が単位元 1R を持つ場合でも、e ≠ 1R ならば単位元が異なるため単位的環としての部分環にはなっていない。
2つの冪等元 e と f は ef = fe = 0 が成り立つとき直交するという。この場合、e + f も冪等であり、e ≤ e + f かつ f ≤ e + f である。
環 R で e が冪等であるとき、f = 1 − e と置けば f と e は直交する(e が冪等なので ee = e であるから、ef = fe = 0 となる)。
R の冪等元 e が R の中心に属すとき、つまり R 内の全ての x について ex = xe が成り立つとき、e は中心的 (central) あるいは中心冪等元であるという。この場合、Re は e を乗法単位元とする環である。R の中心冪等元は、複数の環の直和としての R の分解と密接に関係する。単位的環 R が環 R1,...,Rn の直和であるとき、各環 Ri の単位元は R において互いに直交する中心冪等元であり、これらの総和が単位元 1 に一致する。逆に、R において中心的な冪等元 e1,...,en がどの二つも互いに直交し、これらの総和が単位的環 R の単位元 1 に一致するならば、R は環 Re1,...,Ren の直和である。つまり、R の中心冪等元 e に対し、R は Re と R(1 − e) の直和に分解できる。
0 でも 1 でもない冪等元 e は零因子である(e(1 − e) = 0 である)ため、整域や可除環にはそのような冪等元は存在しない。局所環にもそのような冪等元は存在しないが、理由は異なり、環のジャコブソン根基に含まれる冪等元は(根基が冪零元イデアルゆえ) 0 だけであることによる。また、(可除ゆえに冪等元を持たない四元数体に対して)分解型四元数環 (split-quaternion, coquaternion) には冪等元が存在して、それらはちょうど回転カテナリー曲面 (catenoid) を形作る。
全ての元が冪等である環をブール環と呼ぶ。この場合、乗算は可換で、各元には加法に対する逆元が存在する。
その他
編集情報工学における冪等
編集情報工学における冪等とは、ある操作を1度行っても複数回行っても同じ効果となることを言う。特に、何回行ってもエラーや不整合の状態が変わらない操作を指す。
関数の例
編集絶対値関数 abs(x) == abs(abs(x)) == abs(abs(abs(x))) == ... は全ての x について冪等である。換言すれば、abs を一回適用した結果と複数回適用した結果は等しい。
冪等なヘッダファイル
編集C言語のヘッダファイルは冪等になるよう設計される。すなわち、あるヘッダファイルが複数回インクルードされた場合(#include の入れ子によって容易に発生する)、問題が発生しないようにして(インクルードガード)、一回インクルードしたのと同じ効果をもたらすようにする。
WWW
編集HTTP の GET 要求は冪等とみなされる[1]。Webの機構は基本的にその前提で要求結果をキャッシュに保持する。HTTP の POST 要求(フォーム送信に使われる)は冪等とはみなされないため、POST 要求はキャッシュされない。HTTP の DELETE 要求(指定したURIのリソースを削除する要求)も冪等である。冪等は、単に処理中の要求を再度受け付けたときに何もしないというだけではない。そのような操作は冪等ではなく安全(safe)であるという。
NFS
編集NFSプロトコルの設計者は、冪等な操作によってサーバやネットワークの故障の際の回復力が増すことを理解していた。サーバ内に状態を持たないことでこれが実現される。クライアント側は Read や Write の要求がタイムアウトしたとき、不正な結果が得られることを心配せずに再度要求すればよい。NFS の最初のRFCには、どういう操作が冪等でなくなる可能性があるかが詳しく論じられていたが、それらの場合もサーバ側が要求の繰り返しを検出することで冪等にできる。
ユーザインタフェース
編集ユーザインタフェース設計で、ボタンが冪等であるとは、そのボタンを1回押しても複数回押しても同じ効果が得られることをいう。例えば、「一時停止」ボタンが冪等でない場合、押すたびに一時停止と実行再開を繰り返すだろう。一方、一時停止ボタンを何度押しても一時停止したままの場合は、別にある「プレイ」ボタンで実行再開させる。後者は冪等である。赤外線による遠隔操作やタッチパネルなどのユーザインタフェースでは、ユーザーがちゃんと一回だけボタンを押せるかどうかが確実とは言えないので、冪等なユーザインタフェースが好ましい。エレベータを呼ぶボタンも冪等である(エレベータが到着するまで何度押しても効果は変わらない)が、人によってはそうでないかのように(エレベータが早く到着することを期待して)何度も押してしまう。
一般に Web のフォーム送信ボタンは冪等ではないが、何らかの手段で冪等になるようにしている場合もある。オンラインでのショッピングやインターネットバンキングでは、間違って複数回注文してしまうことがないよう注意が必要である。サイトによってはページが変わるまでボタンを再度押さないよう警告文を載せていることもある。あるいは、何らかのコードで二度目以降の送信を防ぐようになっている場合もある。例えば、即座にクライアント側のボタンを押せないようにしたり、POST 要求にユニークなコードを付与することでサーバ側が同じフォーム送信であると認識して無視したりといった方法がある。後者は、例えばブラウザの戻るボタンで前のページに戻って再度 POST してしまう場合などにも有効である。特に個人のコンピュータ以外でフォーム送信した場合(インターネットカフェなど)、ブラウザを全て終了させるのが安全である。