モノイドがプログラミングで驚くほど遍在していることはよく知られています。それらは非常に遍在し、非常に便利なので、私は「趣味のプロジェクト」として、それらの特性 (分散データ集約) に完全に基づいたシステムに取り組んでいます。システムを便利にするためには、便利なモノイドが必要です :)
私はすでにこれらを知っています:
- 数値または行列の合計
- 数値または行列積
- 最上位要素または最下位要素を含む全次数の下での最小値または最大値 (より一般的には、有界格子での結合または会合、またはさらに一般的には、カテゴリ内の積または共積)
- セットユニオン
- モノイドを使用して競合する値が結合される写像結合
- 有限集合の部分集合の交点 (半群について言えば集合交点)
- 境界のあるキー ドメインとのマップの交差 (ここでも同じ)
- ソートされたシーケンスのマージ。おそらく、異なるモノイド/セミグループでキーが等しい値を結合します
- ソートされたリストの制限付きマージ (上記と同じですが、結果の上位 N を取得します)
- 2 つのモノイドまたは半群のデカルト積
- リスト連結
- 自己同形組成物。
ここで、操作の準プロパティを同値関係を維持するプロパティとして定義しましょう。たとえば、同じ長さのリスト、または順列まで同一の内容を持つリストを同等と見なす場合、リストの連結は準交換可能です。
いくつかの準モノイドと準可換モノイドと半群があります:
- 任意 (a+b = a または b、キャリア セットのすべての要素が同等であると見なす場合)
- 満足する述語 (a+b = a と b のうち、null ではなく、何らかの述語 P を満たすもの。述語がない場合は null; すべての要素が P の等価性を満たすと見なす場合)
- ランダム サンプルの限定された混合 (xs+ys = xs と ys の連結からのサイズ N のランダム サンプル。データセット全体と同じ分布を持つ任意の 2 つのサンプルが同等であると見なす場合)
- 重み付けされたランダム サンプルの有界混合
- これを「トポロジー マージ」と呼びましょう。2 つの非循環的で矛盾のない依存関係グラフが与えられた場合、両方で指定されたすべての依存関係を含むグラフです。たとえば、各リストの要素が順番に続く順列を生成する「連結」リスト (たとえば、123+456=142356)。
他にどのような存在がありますか?