范畴论:1.3 大大小小的范畴
你可以通过学习各种各样的例子来真正欣赏范畴。范畴有各种形状和大小,经常出现在意想不到的地方。我们将从一些非常简单的东西开始。
3.1 No Objects
最小的范畴是拥有 0 个对象的范畴。因为没有对象,自然也就没有态射。它本身是一个非常可悲的范畴,但是它在其他范畴的上下文中可能很重要,例如,在所有范畴的范畴中(是的,有这么一个范畴)。如果你认为一个空集是有意义的,那么为什么空范畴就不会有意义呢?
3.2 Simple Graphs
您可以通过用箭头【arrows】连接对象【objects】来构建范畴【category】。您可以想象从任何一个有向图【directed graph】开始,通过简单地添加更多箭头【arrows】,即可以将其变成一个范畴。首先,在有向图【directed graph】的每个节点上添加一个恒等箭头【Identity Arrow】。然后为任意两个首尾相连的箭头(换句话说,即任意两个可组合的箭头)增加一个组合箭头。每次你添加新箭头时,还必须要考虑任意其他箭头(除恒等箭头之外)与其自身的组合。通常会得到无穷多个箭头,但这没关系。
让我们从另一个角度看这个过程,您正在创建一个范畴,对于有向图【directed graph】中的任一节点,范畴都有一个对应的对象【object】,而有向图【directed graph】中由所有可组合的边【edgs】所构成的链【chains】,范畴都有一个对应的态射 (你甚至可以把恒等态射看作为长度为零的链的特殊情况)。
PS:有向图【directed graph】中的“链【chains】”是指连续的边(即首尾相连的边),它使得连接有向图【directed graph】中的两个顶点成为可能。通俗而言,边【edge】即是范畴中对象与对象之间的箭头,链【chains】则是箭头的组合!!
这种由给定的图而衍生出的范畴,被称为自由范畴【 free category】。它是一种自由构造【free construction】的例子,即给定一个结构,并用符合法则(这里指的是范畴的法则)的最小数量的条目来扩展它。我们接下来看到更多这样的例子。
3.3 Orders
现在出现了截然不同的情况!现在有这样一个范畴,它所包含的态射是用来描述两个对象【objects】之间的关系:小于等于的关系。那么我们接下来来检查它是否是一个范畴。
- 它有恒等态射吗?每一个对象都小于或者等于自身----匹配!
- 它可以组合吗?如果a<=b & b <= c,那么a <= c ----匹配!
具有这种关系的集(合)也被成为预序【preorder,也可称为准序列,即quasiorder】,因此预序本质上是一个范畴
注:
考虑集合 P 及其上的二元关系 <= 。若 <= 具有自反性和传递性,则称 <= 为预序。
具体来说,对任意 P 的元素 a,b 和 c,下列性质成立:
① a <= a (自反性)
② 若 a <= b 且 b <= c,则 a <= c (传递性)
带预序的集合称为预序集合。
如果一个预序同时满足反对称性(若 a <= b 且 b <= a,则 a = b)的预序被称为偏序。
如果一个预序同时满足对称性(若a <= b,则b <= a),则为等价关系
PS: 该定义中的 <= 指的是一个二元操作,并非小于等于的意思!!
除此之外,你还可以通过额外施加这样一个条件,即如果a <= b且b <= a,则必须a = b,来得到一个更强的关系,这也被称为偏序【partial order】。
最后,您还可以再施加一个条件,即集合中的任何两个对象都以某种方式彼此关联;这就得到了一个全序【total order,也成为线性序,即linear order】
注:
全序关系即集合 X上的反对称的、传递的和完全的二元关系(一般称其为 <=)。若 X满足全序关系,则下列陈述对于 X中的所有a,b和c成立:
① 反对称性:若 a <= b且b <= a则 a = b
② 传递性:若 a <= b且 b <= c则 a <= c
③ 完全性: a <= b 或 b <= 1
满足全序关系的集合叫做全序集合、线性序集合、简单序集合或链。 链还常用来描述偏序集合的全序子集。
全序关系的完全性可以如下这样描述:集合中的任何一对元素都是可相互比较的。
注意:完全性条件蕴涵了自反性: a <= a,因此全序关系也是(满足“完全性”条件的)偏序关系。
让我们把这些有序的集合描述为范畴。
预序是一个最多只有一个态射(该态射表示的是从任意对象a到任意对象b的映射)的范畴。对于这种范畴还有另外一个名字:瘦【thin】。一个预序也是一个瘦范畴。
在范畴C中,从对象a到对象b的态射集也被成为hom-set,写作
说到 Haskell,这真是一门逼格极高的编程语言,一般初学者如果没有相关函数式编程的经验,入门直接接触那些稀奇古怪的概念,简直要跪下.现在回想起来,隐隐觉得初学者所拥有的命令式编程语言(impera ... 范畴是一系列有联系的概念的集合: 类型关乎复合 范畴论与箭头的复合有关.但是并非任意两个箭头都可以复合.一个箭头的目标对象必须与下一个箭头的源对象相同,这样的两个箭头方能复合.在编程中,我们将一个函数 ... 集合论和范畴论都是现代数学的重要分支,它们有一些相似之处,也有一些不同之处.两者相似之处是:1. 都是数学中的基础理论:集合论和范畴论都是数学中的基础理论,它们为其他分支的研究提供了基础和工具.2. ... 范畴论基本概念 如果你是第一次听说范畴论(category theory),看到这高大上的名字估计心里就会一咯噔,到底数学威力巨大,光是高等数学就能让很多人噩梦连连.和搞编程的一样,数学家喜欢将问题不 ... http://www.yi-programmer.com/blog/2010-04-06_haskell_and_category_translate.html#id24 白菜 - 精确编程 Home ... Haskell与范畴论 http://www.yi-programmer.com/blog/2010-04-06_haskell_and_category_translate.html 用haskel ... 本文来自[前端早读课],内容不错,推荐给大家. 前言 今日早读文章由酷家乐@Gloria投稿分享. 正文从这开始-- 作为前端工程师,你肯定用过Array.prototype.map方法. 如果你听说 ... 完备性 在数学及其相关领域中,一个对象具有完备性,即它不需要添加任何其他元素,这个对象也可称为完备的或完全的. 简介 完备性也称完全性,可以从多个不同的角度来精确描述这个定义,同时可以引入完备化这个概 ... 您已经了解了如何将类型[types]和纯函数[ pure functions]建模为范畴. 我还提到范畴理论中有一种对副作用[ side effects]或非纯函数[non-pure function ...范畴论:1.3 大大小小的范畴相关推荐
最新文章
热门文章