我们用映射来表达集合上的额外结构,引出图、动力系统以及其他结构类型的例子。然后我们研究保持结构的映射。
第三篇、范畴的例子——有向图及其他结构
回顾第十讲:
- 给定一个没有不动点的球的自态射,我们能构造出从球到边界的收缩。
- 布劳威尔证明不可能有这样的收缩。
由纯逻辑推导:
- 球的每个自态射都有一个不动点。
我们进一步看到
- 球面和球体不可能同构(因为球面确实有一个无不动点的自态射,例如它的对映映射)。
特别重要的是,我们所讨论的范畴不是抽象集合和任意函数的范畴:它必须是某种内聚 cohesive 对象和连续 continuous 映射的范畴。
这里的内聚性指的是对象中的点之间的相互作用(结构)。连续性则是指这种对象内部元素之间的相互作用是如何被映射所保持的(结构的保持)。
我们并不关心究竟是哪种具体范畴。重要的是,球面和球体是通过某些具有特定性质的映射联系在一起的,我们在第 1 点中详细说明了这一点。其次,第 2 点在集合与函数范畴中不成立。3 和 4 也不成立:例如,球体、球面和圆在集合范畴中都是同构的(因为球面同构于
相反,我们建议定义和研究某些更简单的范畴,它们本身也很有意义,而且表现出内聚范畴的许多特征。我们的所有例子都将说明一种基本方法:为了使某些不精确的已知范畴变得精确,我们可以尝试用集合范畴中的结构来模拟它,这些结构总是表达为给定映射的特定配置。本章的主旨是快速浏览结构的一些可能概念,尤其是初步介绍保持结构 structure-preserving 映射这个有力概念。本文中的练习与前面的练习一样,只涉及关联律在给定定义中的应用。当相关范畴在以后出现时,我们将更缓慢、更仔细地处理它们。
1、集合自态射 的范畴
前文已经隐含的提到了集合自态射范畴,其中的对象是一个配有特定自态射的集合。我们用

其中
现在我们回过来讨论集合自态射的范畴
命题 1:若
证明: 首先作为
2、 的典型应用
- 可达性(accessibility):给定状态
,是否存在状态 满足 ? - 收敛至平衡态:给定状态
,是否存在充分大的 满足 。、
3、 的两个子范畴
给自态射的类型加上限制,我们就可以得到两个
4、自态射的范畴
若

它们分别是

其中, involution 意为对合映射,即
是否存在一个自态射既是自同态又是幂等映射?首先
练习:若幂等映射有收缩,它有什么性质?
解答:若幂等映射
也就是说幂等映射不需要有双边逆才是恒等映射,只要有单边逆即可(有收缩或有截面)。
对合映射

命题:给定一个有限集合
有偶数个元素当且仅当存在一个 上的对合映射没有不动点。 有奇数个元素当且仅当存在一个 上的对合映射只有一个不动点。
证明:
必要性:考虑数学归纳法。如果
有两个元素 那么显然存在映射 满足条件。假设 有 个元素时必要性成立,那么当它有 个元素时,任取其中含 个元素的子集 ,存在 在 上为对合映射满足条件。设 ,令 ,则 为 上的对合映射,且没有不动点。 充分性:若存在
为 上的对合映射且没有不动点,任取 ,则 。考虑 在 上的限制 ,它是 上的对合映射。 这是因为 ,且对合映射可逆,故它在限制上的像 。我们可以按照这种方法从剩余的集合上不断移去点对 ,直到元素数目少于 2 个。假设只剩下一个元素,那么限制 就是单元集上对合映射,它必然有一个不动点,而这个不动点也是原映射的不动点(因为它是原映射的限制),因此矛盾。故当元素数目少于 2 个时,它只能为空。这样我们就证明 的元素数目一定是偶数个。 必要性:考虑数学归纳法。如过
有一个元素 ,那么显然 是这个对合映射,且只有一个不动点。假设 有 个元素时必要性成立,那么当它有 个元素时,任取其中含 个元素的子集 ,存在 在 上为对合映射满足条件。设 ,令 ,则 为 上的对合映射,且只有一个不动点。 充分性:若存在
为 上的对合映射且只有一个不动点,记为 。考虑 在 上的限制 ,它是 上的对合映射且没有不动点。那么根据 1 中的充分性知 有偶数个元素,因此 有奇数个元素。
尽管这里我们使用了奇数偶数这样的数量概念,但是我们可以用这两条充要条件作为对象奇偶性的定义。因此我们实际上就不需要计算对象中的点数目。在现实生活中,袜子的配对就是这样一个没有不动点的对合映射(袜子不可能自己配对自己),既然每一只袜子都能找到它的配对,袜子的数目一定是偶数。
练习:满足
解答:幂等范畴是子范畴
练习:若三元集自态射满足
解答:显然。
这说明
的范畴是真包含幂等范畴和对合范畴。
5、非自反图 Irreflexive graphs
还有一个重要的范畴可以将
其中

其中
非自反什么意思?
其映射则也要定义为保持图结构,即

对象间的映射是任意

简言之就是要保持入射和出射关系。
练习:证明若
证明:由
我们很自然的把这两个
-映射构成的 -映射记为 。这样我们在形式上就有 。
图有许多重要应用。譬如我们可以把节点看成城镇,箭头看成其间的道路(拓扑式的地图,如哥尼斯堡七桥问题的示意图);节点看成名词,箭头看成及物动词(知识图谱)。电路图、信息流图等等都可以视为
6、自态射作为一种特殊的图
前面我们说自态射范畴可以视为图范畴的一个子范畴。这是因为对任意自态射范畴中的对象
这很好理解,因为如果我们画出任意一个自态射的内在图示,就会发现它其实是图的一个特例。
同理,自态射范畴中的映射也可以视为图范畴中的映射。给定

显然它满足

这是因为自态射范畴中映射的复合律
记这种把自态射范畴视为图范畴子范畴的操作为
命题:证明
证明:我们只需证明它逐点成立。注意图范畴中的映射
- 把节点映射为节点。即把
中的元素映射到 中。 - 把箭头映射为箭头。即保持图
中的出入射关系,也就是把 中的箭头出射点映射为 中对应箭头的出射点,把 中的箭头入射点映射为 中对应箭头的入射点。
因此为了证明两者相等,只需证明它逐点成立,也就是对任意节点和箭头,
显然,因为此时
。映射的复合由集合映射的复合律保证。 显然。因为根据图复合律性质
, 把箭头 映射为 。而由复合律性质 , 把箭头 映射为箭头 ;由复合律性质 , 把箭头 映射为箭头 。根据前两组复合律性质,我们得出 ,即 把箭头 映射为箭头 。因此对任意箭头而言 与 逐点相等。即以下交换图成立 

综上我们证明了
注意到,若
,则我们自然有 ,这与上个练习的规定一致。
命题(全性):给定由集合自态射经过函子
这个问题说的有点不清楚,用数学语言来说就是,若下面的图范畴中的对象是

则
证明:首先该同态满足
函子的全性指的是,给定函子
,若任意目标范畴对象之间的态射 ,都可以找到原范畴对象之间的态射 ,使得 ,则称 是全的。说白了就是 是满射。
通过嵌入函子

7、更简单的范畴 :对象只是集合的映射
不同于自态射范畴的另一个图范畴的子范畴是集合映射范畴,它的对象是任意两个集合之间的映射,它的映射是满足交换方形集合映射。即

把
练习:证明这个嵌入不是全性的。
证明:我们只要找到两个自态射
因为该嵌入没有全性,这意味着被
8、自反图
最后一个例子是自反图:它们可以被视为包含第三个结构映射的图。

其中源映射和汇映射都是收缩,即它们存在一个共同的截面映射
练习:证明在一个自反图中,箭头集合上的两个自反态射
解答:
幂等性:
方程条件:
既然自反图范畴在图范畴的基础上还要保持
练习:证明若
解答:自然,我们要求如下交换图成立。

特别的除图范畴映射中的约束,还有
练习:考虑一个涉及两个集合和四个映射的结构

例如
要求映射满足下面交换图即可

9、关于以上例子及其普遍意义的总结

上图中
在所有例子中,所涉及的一般“结构”类型都可以得到更精确的描述。每个例子都涉及一个内聚的 cohesive 或活动的 active 集合的范畴 category(种类 species 或模式 mode)。与内聚性 internal cohesion 或内部运动 internal motion 为零的抽象集合
这里 cohesive-cohesion-stick-tear 是从静力学的角度描述这种内部结构,而 active-motion-move-interrupt 则是从动力学的角度描述这种内部结构。
同时我们也更好的理解了前文不断提到的所谓 “抽象集合”的概念的具体意思,这里的“抽象”指的是那种没有任何内部结构的集合。
10、收缩和单射性
什么时候映射有收缩?一个重要的必要条件是它是单射。(我们在上文证明过)
对抽象集合范畴
现在我们考虑在

其中方框内分别是
练习:
- 证明
是自态射范畴的映射。 - 证明
是单射。 - 证明
作为一个 -映射,恰好有两个收缩 。 - 证明 3 中的两个收缩映射都不是
-映射,因此 在 中没有收缩。 - 在所有 8 个
-映射 中,有多少是 -映射? - 证明即使把
视为更大的范畴 中的态射(经过第 7 节中的函子 嵌入),它也没有收缩。
证明:
证明
即可。 。 显然。
为使得
满足 ,至少 ,因此 。最后 只有两种选择要么为 ,要么为 ,我们记前者为 ,后者为 。 验证
是否满足 。 ,因此不满足。 首先这样的集合映射确实有
个。取值表罗列如下: 0 x 0 0 x x 0 x 0 0 x 0 x 0 x x 0 0 0 x 0 x x x 4 中证明了第 3、7 列的映射不在自态射范畴中。写一个小脚本代替我们验证这件事
pythonfrom itertools import product X = ["0", "x"] Y = ["0", "y", "y_bar"] alpha = {"x": "0", "0": "0"} beta = {"y_bar": "y", "y": "0", "0": "0"} p = {} all_p = [] for values in product(X, X, X): for y, v in zip(Y, values): p[y] = v all_p.append(p.copy()) print(all_p) for p in all_p: trues = [alpha[p[y]] == p[beta[y]] for y in Y] if all(trues): print(p)最后知道只有第 1、4 列的函数符合要求。
验证
是否满足 -映射的条件。即 ,然而由自态射范畴的嵌入方式可知, ,所以归根结底还是要验证 是否满足,这与 4 相同,故在 中仍然没有收缩。
练习:证明对任意两个图和它们之间的任意图范畴映射

证明:所谓
再看一个例子。
练习:存在一个集合范畴上的嵌入映射
是自态射范畴上的映射。 是自同构。 是单射。
解答: 考虑
练习:考虑幂等映射
令
证明:任何这样的
练习:若
该练习是前一个练习的一般形式。
证明:反证法,假设
11、结构的种类
带有结构的对象有以下要素:
- 每个对象对应着一个结构的实例,每个对象由一些名称表示而每个名称对应着这个结构的某个组成部分。
- 每个结构映射(注意不要和对象间的映射搞混)也由一些名称表示而每个名称对应着这种保持这个结构的某个组成部分的映射。
- 每个保持结构中的某个组成部分的映射的定义域和陪域所对应的结构的某个组成部分也由一些名称指定。
这一大段表达不清,我梳理大意重新表达了一遍。
套入具体的例子这段话的意思会更加清晰:例如对于图范畴而言,它的结构包含节点和箭头。因此每个图对象都有两个组成部分(节点集合和箭头集合),相应的结构映射分别是源映射
我们必须分清楚对象的组成部分和对象、结构映射与对象之间的映射的区别。对象的组成部分和结构映射都是对象内的要素,是(内部)结构。内部结构为空的抽象集合范畴中的对象是没有这些要素的。
现在,我们可以效仿上面那些带有具体结构的范畴来定义带有抽象结构的范畴,其格式是一样的。假设

该交换图对任意
除了抽象结构范畴之外还有更多的范畴,不过它们都可以被认为是抽象结构范畴的完整子范畴,因此映射的概念并不改变。这些完整子范畴通过对构成对象的图施加限制条件来确定,最简单的一种条件就是结构映射必须满足的复合律。例如,一个动力系统可能被要求是一个对合系统(即动力映射是对合映射),或者一个图被要求是自反的,因此环结构需要被专门规定,即要求源映射和汇映射都必须是节点集合上的恒等映射。
一个抽象结构常常从下面的特例中出现。设
原文中每个映射
被视为结构映射 ,其中 的陪域是 的定义域, 的定义域是 的陪域。这句话我感觉有问题,因为如果这里的 指的是 ,那么显然不对:因为 是把一个映射 映射为另一个映射 ,而 是把 中的元素映射到 中的元素,而映射的集合和集合并不相等。
练习:根据结合律,每个
解答:对任意对象
注意
与 定义是相同的,唯一的区别就是 中一个 ,另一个是 。
例如,图结构就可以由下面的

因为对任意图
这里
是图范畴, 是由两个图和两个映射组成:两个图分别是 (只含一个节点,没有箭头)和 (含两个节点,只有一个箭头);两个映射分别是 ,将 中的单点映射到 中的(唯一那个)源节点,另一个是 ,将 中单点映射到 中的(唯一那个)汇节点。我们可以把 和 分别理解成两个最简单的图:一个是节点原型,一个是箭头原型。因此对任意图 而言, 本身是其所有节点和箭头的集合,而这个所有节点和箭头的集合中的元素,恰恰都可以视为从 或者 出发的全部映射的集合——这个思想是与把任意 视为点映射 的思想一致的。
下面这一段没看懂。略。
12、导览
我们已经用一种共同的方法构建了几个有用的范畴示例,并开始探索这些范畴与集合范畴之间的相同或不同之处。第 11-18 课将对这些类别和其他类别进行深入讨论,第 17 课后还将进行一次抽测。
第十一讲、登堂入室:结构更丰富的范畴
1、自态射范畴
略。
至此,我想说的关于这个新范畴的例子就讲完了。结构范畴的例子还有很多,但要注意,这些结构都建立在无结构的集合上,这看起来像是个悖论。这实际上揭示了,虽然一个抽象的集合完全可以用一个数字来描述,但在映射的帮助下集合具有承载各种结构的能力。
2、两个子范畴:幂等范畴和自同构范畴
略
3、图范畴
略
练习:从

解答:3 个。我们先确定有多少自态射,首先注意到自态射的循环性,因此只要确定一个元素的像,由于保持映射性,剩下的两个像也自然确定了。其次验证它们都是自同构即可。
练习:证明从

解答:记不在环中的那个元素为
练习: 若
解答:作为集合映射的
结合上两个练习,我们可以知道如果两个自态射对象在集合范畴内同构,不一定在自态射范畴内同构,但如果二者在自态射范畴上的映射作为集合态射是同构,那么它作为自态射范畴上的态射也是同构。
练习:
解答:不是。
练习:将下面的图按同构两两配对。

解答:a-d, b-e, c-f。
练习:这两个图是否同构?

解答:是。把左图中间节点和右边节点交换位置,再把整幅图旋转 180 度即可。
练习:(不可能的旅途)
- 若
是图映射,满足 ,则 中不存在从 到 的路径。 - 反之,若
中不存在从 到 的路径,则 是图映射,满足 。
解答:
必要性:反证法,假设存在从
充分性:把从
第十二讲、图示范畴 categories of diagrams
1、动力系统或自动机
练习:假设
解答:
练习:对有限动力系统而言,所有状态最终会进入循环,即存在
证明:设动力系统的状态数为
这里
是一个充分大的演化时长,它对系统内所有状态而言是普遍的。而 则是 在演化充分时长后所进入的那个循环的周期。
2、家族树
我们现在考虑配有两个自态射的集合构成的范畴,记为
练习:
假设对象
表示配有父母亲自态射的所有人类的集合。证明性别是范畴 中从 到对象 的映射 
在某个社会,所有人都被分为狼族和熊族两个氏族。同族结婚被禁止。一个孩子的氏族与继承于母亲。证明把人分为氏族的映射是范畴
中从 到下面对象的映射 
为下面这个集合构造一个合适的父亲、母亲映射,使得它是
中的对象且氏族和性别映射可以被整合为一个映射 。尽管我们尚未定义范畴中对象的乘法,但我们后面会看到 确实是二者的积。

解答:
我们只需证明它保持映射即可。即对任意
, 。前半子句:因为母亲的性别一定为女,即对任意 ,同理在 中无论男性还是女性的母亲都被映射为女性即对任意 ,因此 。同理可证父亲的结构也被保持。 按照氏族母系继承规则可知,狼族的母亲是狼族,熊族的母亲是熊族。又根据同族不婚配的原则,如果母亲是狼族那么父亲一定是熊族,母亲是熊族则父亲一定是狼族。这就是
的情况。 如下

3、重访动力系统
前面我们所有的构造都基于集合范畴
-映射的复合确实是 -映射 上的恒等映射确实是 上的恒等映射
但这两个条件都可由
类似的我们可以构造包含链中的这些范畴

注意我们的构造与在集合范畴上的情形完全一致,唯一的区别在于这里的底范畴
第十三讲、单元范畴 Monoids
Monoids 常常被翻译为幺半群,但是既然我们讨论的语境是范畴论而非抽象代数,用单元范畴这个翻译更为妥当。
一般来说,为了完整地刻画一个范畴,我必须说明对象是什么,映射是什么,每个映射的定义域是什么对象,每个映射的陪域是什么对象,每个对象的恒等映射是什么,任意两个可复合的映射的复合映射是什么这六件事。当然,还有它们必须满足的法则:簿记律(映射可复合的条件与复合后的定义域和陪域)、结合律、恒同律。
下面是一个特例。假设我们的范畴中只有一个对象,我们称之为
在这个范畴中我们应该如何定义复合呢?有许多可能方式,不过我们选取的是数的乘法,换言之,定义任意两个映射的复合为这两个数的乘积,即
现在,我们必须指定唯一对象
这个特殊的范畴我们称为单元范畴 monoid。
它在范畴论中的地位类似于单元集在集合论中的地位。我们把那个唯一的对象也称为单元对象。
单元范畴中的单元对象似乎没有任何特征。然而,任何范畴都可以用集合范畴来解释,从而使对象有一定的生命。我们把上面定义的范畴称为
这样的函子还启发我们可以在何种意义上使用“负一次幂”的符号作为“逆”推广。如果我们稍微改变一下例子,用有理数代替自然数作为
我们再构造另一个单元范畴的例子称为
上面两种函子是把单元范畴解释为集合范畴的标准案例,其中单元对象被解释为单元对象上的映射的集合。通过这种方法我们得到了从任何单元范畴到集合范畴上的标准函子 standard functor 。
这里“把单元对象解释为单元对象上的映射的集合”,根本就是“人是一切社会关系的总和”的范畴论翻版。
除了标准函子以外,
这个函子相当于一个指数映射。只不过底是一个自映射
,指数是 自复合的阶次。
这样,从任意一个配有自映射的集合出发,我们都可以得到一个
这种符号的写法是因为
常用来表示所有 映射的集合,其中每个元素都是 的映射。
我们称其为离散时间动力系统范畴。一个离散时间动力系统(对象)就是一个从单元范畴
第十四讲、保持积极性质的映射
以下是一些关于自态射范畴中映射含义的练习。这些练习的目的是说明在集合范畴中的交换条件
对于容易的练习,我们省略解答仅给出见解。
练习:若在
即
保持原像性, 。
练习:若
即
保持轨道距离/演化时长。
练习:若
即
保持不动点。
练习:给一个反例要求
解答:考虑
这说明
只是保持结构,但并不反射结构,也就是说对于定义域中有的结构,在陪域中被保持,但在定义域中没有的结构并不会排除在陪域中有。
练习:证明若
解答:考虑
这表明若
保持在环中的结构,则环的大小可能变小。
1、积极性质与消极性质 Positive properties versus negative properties
可达性是积极性质的一个例子。消极性质的例子比如
这两个性质是对偶的。如果
是某种积极性质,那么 是对应的消极性质。积极性质被保持与消极性质被反射是互为逆否命题的关系。
第十五讲、动力系统性质的对象化
1、从环到另一个自态射的结构保持映射
设自态射范畴对象

我们希望找到映射
from itertools import product
X = ["0", "1", "2", "3"]
Y = ["y", "z", "w"]
f = {}
all_f = []
for values in product(Y, Y, Y, Y):
for x, v in zip(X, values):
f[x] = v
all_f.append(f.copy())
all_f
for f in all_f:
trues = [beta[f[x]] == f[alpha[x]] for x in X]
if all(trues):
print(f)最终这样的映射只有两个
| 0 | y | z |
| 1 | z | y |
| 2 | y | z |
| 3 | z | y |
一般来说没有通用规则可以告诉两个自态射集合之间有多少结构保留映射。但在一些特殊情形,我们可以数出这个数目。例如上面这个例子,
最小正周期为
的元素数目有 个,因为每个 -轨道中的 个元素的最小正周期都为 。
2、用映射命名具有给定周期的元素
我们定义

注意这里的元素只是形式上写成自然数,但它可以是任何名字。
回忆以下这里的命名 naming,就是第六讲中的含义。
练习:证明若一个元素有周期 5 和周期 7,那么它一定是不动点。
这个练习有一个更强的版本,如果元素有两个周期
,那么它也有周期 。证明采用欧几里得辗转相除法。略过。
3、命名任意元素
我们是否能找到一个
也就是说是否其中的每个元素都可以被命名,也就是被“表示”。反过来,是否存在不可命名的东西?这里的关键在于这个
是普遍的,即它可以命名任意 ,否则对每个 我们至少可以用它自己来命名自己。
若存在这样的

然而这个元素也还有一个性质即“三步以后进入环”。是否可能找到一个排除任何具体积极性质的元素呢?为此,我们至少要取消自态射含环的可能性,因此这样的自态射只可能包含无穷长的链条,例如自然数集上的加法自态射。

这里,
从映射
不过
元素显然有一个消极性质,即它不是 -可达的,即不存在 ,使得 。
练习:证明若

解答:记
这个练习说明为了表述动力系统的性质,我们不需要诉诸任何
练习:找到所有可能的映射
解答:根据上面的性质,我们知道这样的映射总共有四个分别是,被它在
对任意

其中赋值映射
命题 1:证明二者互逆。
证明:对任意
于是我们把
练习:对任意动力系统
解答:显然,本身它是集合映射,又满足复合律
特别的,
命题 2:证明若
证明:记
命题 1、2 告诉我们,任何一个动力系统总是被其初值与动力映射所决定,而该同构就记录下每一个动力系统的离散时间动力系统方程
这个等式的含义是,时间迭代与状态迭代的相互变换。
是从初始状态 开始迭代 步状态,而 则是从初始时刻 开始迭代 步时间的状态。
1872 年 Felix Klein 提出这个方法用以考察某对象的全部自同构映射,当时它称为对称性 symmetries。的确,在晶体学和其他领域,研究对称性非常有用;但通过从若干标准对象的映射来 探测一个对象更加有用。在我们的动力系统中,这种作用来自于这样一个事实:虽然
4、自然数集 的哲学角色 philosophical role
在第六讲中我们强调为研究包含所有抽象集合和映射的大范畴
映射
是 中的所有点 映射
是 中的所有点对 映射
足以表示 上所有布尔性质(也即该性质可以表达为一个命题在某点上或成立或不成立两种情况) 用一个映射
先复合(precomposing)3 中的映射交换了点对中两点的角色 在复合方程
中,我们称用 先复合(precomposing with ),因为它在映射链中先作用于对象。反之 称为后复合(following by )。 用一个映射
后复合(following)3 中的映射否定一个性质 复合
记录 中一点是否具有某个特殊性质。
这里的八个映射是怎么数出来的?
一个, 两个, 一个, 四个。
回忆在第六讲中,研究一个复杂的客观范畴,选择一些较小的对象构成主观范畴,从主观对象到客观对象的映射是对客观对象中元素的列举 listing,而从客观对象到主观对象的映射则是研究了客观对象的属性。其实我对原文中所谓的客观范畴和主观范畴的命名并不赞同,更恰当的名字应该是”未知”范畴和”已知”范畴。而知本身不是绝对的,而是相对的,也就是说它是体现在用已知物表达未知物的关系中的,在这个表达关系中,用于表达的物处于已知地位,而被表达的物处于未知地位。
这些基本要素足以用于分析任意
这种方法适用于所有更深层次的客观范畴
为说明提出的子范畴
- 映射
是 的状态 - 用
先复合的效果是取下一个状态的操作(即动力映射)
总之,离散动力系统中的状态和动力映射这两个要素都被刻画了,因此它就刻画了全部的离散动力系统。诸如“某状态是否在 7 步时间单位后回归”的问题,可以在我们将
映射

若
将

纳入主观范畴,就可以记录离散动力系统中的任何状态的稳定性,即每个状态在多少步以后进入稳定态。如果某个状态在离散动力系统范畴映射下被映射到
特别的,注意后者是集合中的映射,因为回答某个性质是否为真是一个静态概念,它不涉及时间性,或者我们也可以把它看成是配上恒等自映射的集合,即真假是永恒的。
一般而言,这种用”主观寓于客观“来解释范畴之间的包含关系,即主观范畴

在作者看来,精神(如理论、设计)与人造物(如计算机)是主观范畴的一部分。而客观物则是外在于主观范畴的客观对象。因此在计算机中建模某理论,是主观范畴内的映射。而等变映射,则是外在于主观的客观动力系统之间的映射。而建模是从具体的客观范畴中抽象出某些性质在主观范畴中进行研究,而实现则是将主观范畴中的对象实现为客观物——在这个过程中我们要求客观物完全的表达主观对象(即用主观对象命名客观物,或者说在客观物中落实我们主观对象所要求的全部),但我们并不保证这其中会引入其他副作用——例如我们将逻辑运算实现为电路中电压的高低水平,但电路还额外产生出热量,这热量就不是任何主观的对应。
为使这些粗略的描述更加精确,则要求结构比单一自映射范畴更深的系统,故而目前来说这些词语只是启发性的。
5、动力系统的表示

为其中的某些元素赋予名字。若某环有毛(指与环中元素相连的非环路径)则标记其端点;若无毛则标记环中的一个元素。我们称这些标记的元素为
的生成元。 
指定一个顺序罗列生成元,例如
。 从列表中的第一个元素开始,不断作用变换
直至出现重复为止,例如 两两不同,但 开始重复。 然后轮到列表中的下一个元素,重复 3。
重复 4 直到列表遍历完。
由此我们可以得到一组恰好遍历一遍系统全部状态的列表:
这些方程式称为生成元之间的关系。

将已遍历的点记上标签有助于找到这些方程式。
这个过程能在有限时间内停止,因为我们局限于有限状态系统。
如果任意
令人惊讶的是,这一程序可以逆转:给定任意
我们把对象中的一组元素和其元素之间的满足方程组合称为对象的表示 presentation,如果它满足上面的“泛性质” universal property,即每个
这种表示是否能帮助我们找到所有可能的映射呢?尤其是如何计算这些映射的数目?假设

我们可以按照以下步骤找齐所有
- 找到所有可能的
,即满足第一个方程 的元素,例如 满足该要求,但 不满足。 - 对 1 中的每一个可能性,寻找
满足第二个方程 。例如,当我们取 时,我们可以看到 ,因此 ,即 在 中选。 - 然后根据
的选择,找到符合下一个方程式的 - 最后找到
。
练习:找到所有
我们写一个程序帮忙:
X_generator = {'a','b','c','d'}
Y = ['l','m','p','q','r','s','t','u','v','w','x','y','z']
beta = {
'p':'r',
'q':'r',
'r':'t',
't':'v',
'v':'u',
'u':'s',
's':'t',
'l':'m',
'm':'l',
'z':'y',
'y':'w',
'w':'x',
'x':'y'
}
def apply(f, x, n=1):
res = x
for i in range(n):
res = f[res]
return res
from itertools import product
all_f = []
f={}
for values in product(*[Y]*len(X_generator)):
for k,v in zip(X_generator, values):
f[k] = v
all_f.append(f.copy())
from typing import Tuple
def check_rule(rule: Tuple[Tuple[int, str], Tuple[int, str]], endomap, morphism):
left, right = rule
n1, x1 = left
n2, x2 = right
return apply(endomap, morphism[x1], n1)==apply(endomap, morphism[x2], n2)
rules = [((5,'a'),(2,'a')),((1,'b'),(1,'a')),((1,'c'),(3,'a')),((2,'d'),(0,'d'))]
valid_f = [f for f in all_f if all(check_rule(rule, beta, f) for rule in rules)]最后确实打印出 14 个符合条件的映射,罗列如下:
| w | w | y | l |
| w | w | y | m |
| x | x | w | l |
| x | z | w | l |
| x | x | w | m |
| x | z | w | m |
| y | y | x | l |
| y | y | z | l |
| y | y | x | m |
| y | y | z | m |
| z | x | w | l |
| z | z | w | l |
| z | x | w | m |
| z | z | w | m |
不过此处我们采用的是穷举法,即枚举出全部生成元像点的可能性
种,然而同时检验是否满足所有方程。而书中所给的算法是先确定第一个生成元像点的可能取值,相当于提早缩小搜索空间剪枝,而我们则是穷尽到叶节点,然后直接在叶节点上检查方程式。穷举法的好处是不需要确定一个遍历顺序,因此也不需要考虑方程式的验证顺序(毕竟我们必须用第一个方程来确定第一个生成元的可能性,而方程组中的方程之间还有依赖关系,这都使查找、排除变得较为繁琐),从而把方程式的验证顺序同排除生成元的可能取值彻底分开。
这里有一句忠告:盲目地遵循”算法”会比较繁琐。如果你在操作中保持头脑清醒,往往会发现一些有趣的事情。例如在本例中,我们会发现对
与上一段呼应,如果不采用穷举法,则需考虑生成元选择之间(因方程造成的)依赖关系。
练习:请自己找一个简单的动力系统,并确定它的表示。
略。
练习:我们的寻找对象间映射的算法以不同的方式处理源对象
我早就开始用了。
解答:注意到表示本身就决定了对象的全部结构。我们首先找到
这个过程的副产品是生成表
事实上,所谓的生成元和生成元方程其实是如果写出所有方程,即把所有元素互相之间的变换关系写出,例如
等等,那么生成元和生成元方程则是总方程组中的极大独立变量组和极大独立方程式组。(类比线性代数中的极大线性无关组和独立方程组)
现在我们要从
编程如下:
X_generators = ['a','b','c','d']
Y_generators = ['p', 'q', 'l', 'z']
Y_rules = [((6, 'p'),(2,'p')),((1,'q'),(1,'p')),((2,'l'),(0,'l')),((4,'z'),(1,'z'))]
Y_gen_list = []
for g in Y_generators:
n = 0
repeat = False
while not repeat:
new_element = (n, g)
for rule in Y_rules:
left, right = rule
if left == new_element and right in Y_gen_list:
repeat = True
break
if repeat:
break
Y_gen_list.append(new_element)
n += 1
from itertools import product
all_f = []
f={}
for values in product(*[Y_gen_list]*len(X_generators)):
for k,v in zip(X_generators, values):
f[k] = v
all_f.append(f.copy())
len(all_f)
def apply2(f, x, n):
t = f[x]
n0, y = t
return (n+n0, y)
from typing import Tuple
def reduce(p: Tuple[int, str], gen_list, rules):
n, y = p
if not p in gen_list:
for rule in rules:
left, right = rule
n1, y1 = left
n2, y2 = right
if y == y1:
q = n // n1
r = n % n1
n_ = n2 * q + r
return reduce((n_, y2), gen_list, rules)
else:
return p
def check_rule2(rule: Tuple[Tuple[int, str], Tuple[int, str]], morphism, Y_gen_list, Y_rules):
left, right = rule
n1, x1 = left
n2, x2 = right
res1 = apply2(morphism, x1, n1)
res2 = apply2(morphism, x2, n2)
res1 = reduce(res1, Y_gen_list, Y_rules)
res2 = reduce(res2, Y_gen_list, Y_rules)
return res1 == res2
X_rules = [((5,'a'),(2,'a')),((1,'b'),(1,'a')),((1,'c'),(3,'a')),((2,'d'),(0,'d'))]
valid_f = [f for f in all_f if all(check_rule2(rule, f, Y_gen_list, Y_rules) for rule in X_rules)]由于我们不直接知道
的内部图示,我们需要把所有元素处理成生成元与自映射作用阶次的序对,而比较两个元素是否相等就归结为比较其序对形式是否一致,为此我们需要利用生成元关系来约化高阶序对。
甚至是无穷状态的动力系统也可能有有限表示,例如自然数集在加法自态射下只有一个生成元
练习:找到以下系统的表示。

解答:生成元
练习:考虑图的表示。(想不到的话就留待第二十二讲)
解答:对于自态射对象(动力系统对象)而言,表示的特点在于选取一个对象的子集,然后通过反复施加自态射遍历全部元素。但是这仅仅是针对自态射对象而言,事实上表示的本质是能够刻画对象间的全部映射。我们可以把对象的表示视为是对象间映射的一组基底。不过图的表示具体是什么还想不到。
其实在本节中自态射范畴的表示的定义也是相当粗糙的,毕竟我们压根就没有证明上面那个一一对应的性质。
看完第十八讲,图
的表示需要刻画从 出发的任意图映射,而我们知道图映射的特点是把箭头映射为箭头,节点映射为节点,且保持箭头的节点关系不变,即源节点映射为源节点,汇节点映射为汇节点。因此,图 的表示至少应该包含所有箭头(生成元),因为箭头之间没有生成关系,但是一旦确定了箭头的映射关系,那些属于箭头的源或汇的节点的映射关系也相应的确定了,最后剩下的是不属于任何箭头的节点,即孤立节点。而那些属于多个箭头的节点,换言之就是共享同一个节点的不同箭头还需要满足节点关系(生成元关系),二者共同构成了图的表示。
练习:一个非自主动力系统
思路:我们试图使用上面动力系统范畴的表示的泛性质,即每一个表示对应于一个动力系统间的映射。此处我们需要考虑的动力系统间映射是
。
解答:对于任意
这个命题颇有点类似微分方程初值问题解的存在唯一性结论。
第十六讲、幂等、对合和图
1、解答关于幂等映射和对合映射的习题
略。
2、解答关于图范畴映射的习题
略。
这两节是解答第三篇中的若干习题,因为我们已经在行文中解答了它们,从略。
练习:给定范畴

例如第十二讲第二节中的亲属关系可以视为
回忆映射的两种视角,所谓的分拣映射只是为了说明映射的陪域是已知的(简单)对象。这里相当于把人分拣成了两种性别的简单范畴。
解答:一方面

另一方面

其中
注意到分拣映射

其实这里并不是严格意义上的交换图,因为它们并非是同一范畴中的对象,但为何这么画且看下面的阐释。
其中
若
若
用自然语言解释就是
我们可以简写为
此外
若
若
即在
这里提到的其实是商结构。不过似乎我的解答还不够完善。
分拣映射
定义了等价关系,即把 中的元素按其性别分成两类,男性集合和女性集合。这样父亲映射和母亲映射在男性和女性集合上都是自映射。
第十七讲、图的一些用处
1、路径
如何使用图来解决问题?首先是表述问题,为此,我们需要一个通用语境(即范畴),大多数问题及其解答可以在该语境下表达出来。这种语境的好处是,当两个问题(一个已知,另一个未知)以同样的方式表述时,我们就能更准确地看到它们的共同特征,这样处理一个问题的经验就能指导你解决另一个问题。这样,我们就建立了一小族概念和方法,可以用来解决更多问题。
还有一点:解决特定问题不是科学的唯一目标,甚至不是主要目标。理解事物、对事物有清晰的认识也是一个目标。例如,牛顿发现了苹果下落和行星运动都服从同一个普遍原理,寻求对运动的清晰认识正是我们实现太空旅行的可能性所在。
给定一个图 graph,我们可以构造图的自由范畴 free category,其对象为图的节点,其映射为从一个节点到另一个节点的路径,注意恒等映射就是长度为零的路径。而映射的复合就是路径的复合,即将终点和起点重合的两个路径联接起来形成一个新的路径。
练习:考虑以下图上的自由范畴,哪些图有一个终对象 terminal object?

终对象的定义在后文中才给出,它指的是若对任意对象
,都存在唯一的映射 ,则称 为终对象。
解答: b,c 有。 a 没有,因为对于单点本身而言存在无穷多路径以自己为终点。 d 没有,道理同上。 e 没有,因为存在两条路径使得左边节点映射到右边节点。 f 没有因为最右侧节点与其他两个节点之间没有路径。我们因此可以归纳得出终对象必须是树(即有向无环连通图)。
2、作为图示形状的图
图 graph 和范畴的外部图示 diagram 的相似性暗示了我们另一个图的主要用法。若

则在任何范畴中我们都能找到以此图为形状的图示。这个图示把图中每个节点对应为范畴中的一个对象,每个箭头对应为范畴中具有相应定义域和陪域的映射。它可以称为

用我们图 figure 的类比,我们可以称之为奇异图 singular diagram,因其中若干节点对应同一个对象
若我们取

我们在范畴中的图示允许我们将其解释为范畴中的映射,即映射
3、交换图
定义:我们称范畴

表示
剩下的例子就不举了。这里主要是为了给前面提出的交换图一个更明确的定义。
练习:
证明使该图交换的映射是互逆的。
解答:假设该图分配的对象和映射如下

那么考虑 从
练习:使得下图交换的充分条件是

解答:充分条件是这三个方块分别单独交换。要证明的式子对应于路径
练习:对以下各个图,找到最短的方程组使其交换。然后解释以下为什么你知道从这些方程就能推出所有可能路径都给出相同的复合结果。

解答:
. . .
因为我们找的最短方程组涉及的映射相当于生成元,而最短方程组相当于生成元关系。从这些路径可以生成出全部可能的路径。如果这些生成元满足的方程相等,那么一切可能的路径也都相等。
4、图示本身是否是一个映射?
如果
这里所谓的遗忘复合其实是指在大图
中只有基本路径(或者说基本映射)而没有复合路径(例如只有路径 而没有 ),而图示相当于是嵌入这个大图的一个子图,即找到大图中的一个路径交换的子图。
第十八讲
略