幺半群

来源:互联网 发布:gamemaker 源码 编辑:程序博客网 时间:2024/06/14 00:30

前言

一个单子就是一个自函子范畴上的幺半群。
前面已经讲解了范畴以及函子和自函子,那什么是幺半群呢?

幺半群(Monoid)

维基百科中幺半群被定义为是一个伴有二元运算的集合,且这个二元运算只需要满足结合率,并且这个集合中还必须有一个特殊的元素,幺元,对于这个二元运算,一个元素与幺元的运算将返回这个元素自身。
用公式表示为,假设这个二元运算用 * 表示:
结合律:对任何在 M 内的a、b、c , (a * b) * c = a * (b * c) 。
单位元:存在一在 M 内的元素e,使得任一于 M 内的 a 都会符合 a * e = e * a = a 。
往往还在满足封闭性,即 a * b 的结果依然在这个集合内。

幺半群作为范畴

我们知道,范畴论中讨论的是对象以及态射,并不是集合,其实集合也是一个范畴,如果一个范畴内的对象都是集合,那么我们说这个范畴叫做小范畴。
我引用网上的一幅图来讨论范畴论中的幺半群,如下:

这里写图片描述

这个例子与上一篇中类型范畴的自函子相似,假设类型范畴是一个更大的范畴C里的对象,且范畴C仅有这一个对象,那么自函子就相当于一系统的态射了,函子之间的自然变换(自已科谱)相当于该范畴内态射的复合了。
如果我们把态射看成是一个集合的元素,我们看一下它是否符合幺半群定义:
是否存在一个二元运算且满足结合律。这个是存在的,因为这些态射都是 Hom-集M(m.m) 里的元素,它们的复合总是存在的,因为他们指向同一个对象,甚至它们都满足交换率,是否存在一个幺元,对象 m 的单位态射 id,就相当于幺元,根据单位态射的定义,这个正好符合幺元的特性。
其实我们总能够从一个单对象的范畴里,其实就是幺半群范畴里抽出一个幺半群集合,该范畴里的对象的所有态射,即 Hom-集,其实是一个集合,也是一个小范畴。

总结

自函子范畴上的幺半群,这个时候就好理解了,它说的就是,范畴C上的自函子,以自函子为对象,自函子之间的自然变换为态射组成的一个范畴,这个范畴是个小范畴,它满足幺半群特性。这与把范畴 C 当作一个更大的范畴的对象,以自函子当态射是一个道理。只不过它正好满足幺半群的特性,所以我们说它也是一个幺半群。

1 0
原创粉丝点击