自由,是一个修饰词,与约束相对。
在代数结构中,就是除了各种公理外,没有别的限制。最常见的就是自由群,单生成子自由群就是整数加法群,也就是单位元0和生成子1所构成的群{...,-1,0,1,2,3,...}。
自由幺半群,monoid。可以通过通用映射性质,ump来表述这种自由性。使用通用映射性质表述一个结构,其基本语法结构是给出一个结构,如果对于任意的***,存在唯一的***,使得图***交换,那么这个结构就满足了所定义的性质。
对于自由幺半群的例子,就是给定的函数i:A——>|M(A)|,如果对任意的幺半群N以及任意的函数f:A——>N,存在唯一的幺半群同态f^hat:M(A)——>N,使图交换。那么经由这个函数得到的M(A)就是自由幺半群。
抽象的讲其实也没什么意思,来考虑一些具体的东西,自由往往是伴随着生成的过程,因为各种自由结构本身是很复杂的,一般都包含无限多的对象,这种自由反映在运算的无限可进行性,每进行一次生成一个新元素,比如前面给出的整数加法群,生成元1可以无限的自加,而且所得到的元素没有一个是重复的,我们还可以接着考虑二生成元的情形,1和i,得到的是高斯整数加法群,也就是复平面上的整数格点,在两个方向上的无限生成。
于是,考虑生成子与关系的表示法,通过生成子构造出庞大的自由结构,然后通过定义额外的关系来消除多余的元素,就可以定义出有限的结构。这种表示法在群论中经常使用。对于别的代数结构,流程应该还是一样的。
然后是通用映射性质,反映的是,自由结构是在更基础的结构上构造的,比如自由幺半群,自由群,是在特定集合上构成的,集合在代数上显然比群和幺半群要基础。仿照着,就得到了自由范畴的定义,范畴其实可以视为特殊的有向图,因为范畴和有向图都是一些点和箭头构成的,不同的是,范畴需要满足额外的公理,比如复合运算,恒等元。于是,可以考虑在通过有向图构造出自由范畴。
有向图的一些基本知识,在数据结构中了解过,包括顶点,边,边又有起点和终点。对比范畴中的元素,就可以将顶点视为对象,边视为箭头,起点,终点就是箭头的定义域和陪域。于是,只要定义复合运算和恒等元,就可以得到范畴了。
同样使用ump来表述,会发现,这个图和上面的那个非常像,这也是ump表述的好处了,可以轻而易举的将定义从一种结构迁移到另一种结构。只需要给出很少的信息,就可以定义极大的一类具有特定性质的对象,就像自由性,就是一个箭头,和一个箭头三角,包含的对象,一个是自由对象,一个特定结构对象,一个比特定结构更基础的对象。
这里其实还包括一个函子,遗忘函子,作用就是面向对象中的向上造型,将一个高级的对象转化为一个低级的对象,例如,群同态一定是一个函数,范畴同态也一定是一个有向图同态,猫一定是一个宠物。从而将上面的箭头拉到了下面。这种意义下,范畴和面向对象就有很多相似之处,也算是范畴论的一种实用化。