专栏首页MatheMagician魔术里的集合、映射和关系(二)——集合怎么用?

魔术里的集合、映射和关系(二)——集合怎么用?

上一讲我们通过一些故事讲到了集合的概念和来历,对其意义有了一个基本的认识:

魔术里的集合、映射和关系(一)——集合是个啥?

今天,我们来说说,基本集合到底怎么用,有什么用?

集合的表示方法

要知道,集合本身代表的是真真切切的对象的总体,而我们日常交流中又不可能真的把这些实物拿过来才能表示相应的集合,因此,我们需要用一组数学符号来代表这些真实的集合,让信息的传输记录通过这些符号就能做到,哪怕丢失一些不重要的部分,但也抓住了核心和关键,反而有好处。

集合的根本定义是某全集到bool集的映射,但发现这个定义竟然使用了概念自身,而有时候要表达的就是全集,或者压根就没考虑全集是什么。从函数概念来讲,定义域应该就是由集合来定义的,然而集合本身又是个bool函数。不用纠结,这是数学概念起源时候的借助对方互相定义,怎么讲都讲不清,于是干脆说集合是个不加定义的概念好了。你得先承认这个玩意,再往后推导。另外,数理逻辑里对集合是这么定义的:

{x|A(x)}

A(x)代表x是否满足某种性质,本质上是个bool函数。同时,集合的意义其实就在于A(x)函数,它代表了某种性质,包括该性质考虑的全集范围(定义域),以及是否拥有它。看来,和我前面讲的定义的含义基本吻合。

而实际使用的时候,集合的常用表示方法有如下几种:

1. 列举法

例如:{0, 1, 2}

把你想表达的集合的符号编码用逗号互相隔开,用“{}”包起来,用来表示由这些符号所代表的的元素组成的集合。这时候,符号的意义已经很广了,比如R,苹果本身就是集合,苹果A是苹果集合里的元素,空集是一个没有元素的集合等等。而他们又可以拿个“{}”包起来,都当成是元素,去得到一个新的集合:{R, 苹果, 苹果A, 空集}。也即,集合是可以复合的。这种复合性,是构成复杂结构的重要基础操作之一,另一个操作则是集合的运算,后面会讲。

2. 描述法

例如:{x in R| 1 <= x <= 6}

就像给定函数定义域的限制条件那样限制一个集合真实的在全集中的范围,经常用来给函数划定定义域。在实数范围内,又常常用[a, b], (a, b), (a, b], [a, b)等区间来简化表达。

又如,通过函数产生的生成集:{2x | 1 <= x <=6}

其"|"右侧是和描述法类似的部分,描述一个函数的定义域,往往会省略x in R这种显然的全集约定;而"|"左边则是函数对应关系的描述,由此定义的集合即这个函数的值域。

注意,以上两种描述写法的条件虽然写的一样,但有着本质的区别,2的描述法是为全集R内判断是否在该集合内给出了bool条件,而3是在2的描述的定义域基础上加上了函数关系构建的值域,哪怕函数很简单,甚至是个自反函数,也是完全不同的概念。

3. 图像法

Wenn图,数轴,序轴等等形式的表示,当然还包括他们的高维扩展,比如直角坐标系,三维坐标系等等。相当于把一些集合(常常是实数集及其笛卡尔乘方)映射到图形上,这样可以清晰地表示集合的大小,互相之间的关系,是相交还是包含,或者交集为空。他们各自表达的侧重点又有所区别,如图所示:

图1 Wenn图,清晰表达各个集合的相互关系,对具体范围不严格区分

图2 数轴,三个要素构成,是实数集的图形表示

图3 序轴,忽略比例和距离大小,仅保持有序,突出区间的表达意图

4. 符号法

对一些常用集合的字母表示,以减轻书写负担。和我们代数里用x, y, z来表示未知数是一样,但一般用大写字母表达,一般会遵守这些基本习惯,没必要特立独行。但一定要清楚,字母表示的集合,和方程里的未知数,代码里的变量,是完全不同的概念,一定不能混为一谈。常用的数集符号有N, Z, Q, R, C等等。

集合之间的关系

这里讲的关系,还不是我们后面要展开的函数,关系这些系统的内容,而是针对集合的简单关系,仅有4个类型而已:相交,不相交,包含和被包含。其中前两者是对称关系,而后二者则互为逆关系,大家可以先领会一下这几个关系的异同,前面很多数学魔术文章里都提到过,后面也会再次详细分析。

天哪,集合之间的关系多简单啊!要是人际关系也能有这么简单就好了!

我们先搞懂最单纯简单的世界,面对复杂问题才能游刃有余。

集合的运算

可以从运算的不同模式,按以下方式来划分:

1. 性质类:大小,是否包含某元素,两个集合的关系为何等等,是集合到量的函数;

2. 生成类:两个集合取交集,并集,差集,单个集合的补集,子集(所有子集又构成一个集合,称为称为幂集)等等;以及集合笛卡尔积的维度扩展,变成多元元组组成的高维集合;

你会发现,你可以给两个bool变量设计多少种计算,就会有多少种集合的运算:

A op_set B = {x | (x in A) op_bool (x in B)}

其中,(op_set, op_bool)的二元组,又可以构成一个集合:

{(intersect, and), (union, or), (difference, A and not B)......}

这样看来,其实补集就是差集运算中被减数是全集的情况,而很多其他逻辑运算,比如xor,nxor等等,又可以构造出一些有意义但是可能还没取名字的集合运算来。嗯嗯,有名字的运算都是精英,没名字是常态,但是也不赖的。

顺便提一下,这里涉及的运算都是集合通用的,那些二元关系才有的对称性,传递性,自反性等等我们讨论关系的时候再说。

不要觉得这些都是抽象的数学过程,没有什么意义,其实,他们之所以存在和被命名,就是因为在科学和生活中已经出现了太多次,值得用一个统一的概念来描述了。比如我们很有需求知道一筐鸡蛋有多少个,还差多少个就满了,这样的信息决定要不要再买,买多少;你在不在升职员工池子里,未来有没有机会;有没有一个球员在两个队伍都呆过来看他是否有多重经验;或者只要待过任何一个球队就行;一排彩球摸奖到底有几种模法;除了学生以外,学校还有些什么人;还有,班上有多少对情侣;有没有可能一个人同时在情侣集合中出现若干次?等等概念,在每天的生活中耳熟能详,但是其底层的理解逻辑,就是集合,以及它的这些运算。而人类还有对抽象数值的理解能力,这个我们到讲计量的时候一起说。

集合的基本性质

我们中学学过的集合的三个性质,其实也是这个以bool值作为值域的函数的基本性质,作为考点是那么写,但是本身也是合理存在,富有智慧的建模假设。我们通过集合的定义:全集到bool集的映射,来理解一下这些性质为什么成立。

无序性:在集合的函数定义里,函数的定义域,还是映射到1的部分,都是集合和集合上的子集,基本集合绝不考察这些元素的序,要的就是这么一个定类的计量方式。但集合加上序等关系以后,可以变成更有用的数学结构。比如,可以有建立在其上的偏序集,比如total order和partially ordered set所含有的建立在集合上的二元关系。

确定性:函数的对应关系是确定的,是0是1的确定决定了其对应集合的确定性;

互异性:每个元素可以有某些属性相同相当,但是必须是不同的客观对象,但看起来的性质都一样却是可以的。这是函数每个原象中的元素仅有唯一象空间元素与之对应决定的,不允许有两个,故互异性成立。

这些性质也是不加定义的,是人们用抽象数学概念对具体问题的总结归纳和规定。

集合观点下的世界

每个人构建起的世界认知不尽相同,而实际上我们的知识结构也是不是单一树状的,而是DAG,即,除了基本的叶子对象以外,其余节点代表的都是一个bool函数,除了其父对象不在考虑之列以外,在生成它的时候,其定义域就是全体对象,而去判定哪些是在这个范围的。这样自然就没有了树有层次这一说,因为,每个元素都有可能处在不同的层次,这是真实情况。

但树状的分类体系好像更符合一般的认知。任何一个树状的分类体系其实都是在DAG上找到一颗树。比如对人的男女和是否中国人来分,那显然他们的父节点都是一个,而且形成了两个类别体系,最后,要用(女,中国人)这样的元祖来代表其关系。我们生物里面的“界门纲目科属种”的分类就是典型的树状分类体系;NLP里面的文本分来也是去相对找到一种合理的多级树状体系,哪怕不可能用这个体系解决所有问题,也比没有好,而那些多粒度,多层次的表达交给bool值的标签去解决。对一篇文章内容的类型理解,权衡数据条件和建模真实性,我们一般就抽象为这分类和标签这两个问题,虽然,DAG才是更加真实的人类类型体系认知。

再想想我们是怎么进行认知活动的的。我们的大脑接受的最主要的信号就是声音和图像,但并没有去存储它的像素级内容,而是把每个节点都记忆成自己总结或是书本上看到的属性和特征,进而有了这套判断能力。这比背下来要好得多也是人脑比计算机优势最大的地方,神经网络离我们还差得远。因为每天都会产生新的个体,而属性是可以万能判别,且在一定程度正确的。而在这个判别网络后还有一个执行网络,比如“这是水果的话,那应该尝起来是甜的还能解渴”,于是所有的人类行为都会有条不紊,而且具有高度容错性。

这样看起来,我们通过学习构建起了任何对象到{0, 1}集合的映射以及多分类的类型映射。一般第一层以bool集作为象空间的这种特殊映射,会先划分出定义域。比如,长在地里吃的叫“农作物”,甜甜的能直接吃的叫“水果”。然后第二层再根据味道,大小,颜色等等,区分出枣子,橙子,香蕉等等。这里第两层的关系我们都称为集合,其也是一个表达从属关系的函数关系,对于给定全集中的每一个元素,都有0或1或者有限个C类别与之对应。这样我们逐步递推下去,就形成了一个树状递归的结构,而如果像苹果,既在水果集合里,又在甜味实物集合的时候,就呈现一个DAG网状了。实际上应当可以由此划分出若干棵完备合理的分类树来,相应的每单一元素,也都有多条路径,去通往世界所有元素的全集,比如:

你手里的苹果 -> 苹果 ->水果 -> 食物 -> 所有事物

你手里的苹果 -> 苹果-> 甜的东西 -> 所有事物

等等,可以看到,这其实是一个单元素集合在不断扩充到全集的过程,每一个父亲集合都包含孩子,在包含关系下,世界上的各种集合概念共同形成一个偏序集(partially ordered set),有自反性,反对称性和传递性。

由此,世界上的每一个对象,都在我们的大脑里有一个位置,继承和实例化于一个基本的类别。而这里的每一层,都是一层抽象,不同的分类起点又给了我们对事物二元判断的更多角度,这样,以一系列集合为名称的bool函数,就构成了我们最简单的bool世界认知模型。

到此,哲学里讲的概念的内涵和外延到底是什么意思,我突然明白了。内涵就是在这个DAG里,一条通往你要描述这个集合的链路;外延就是,这个要描述的集合节点下,还有哪些节点。

比如,苹果的内涵可以说成,食物中的水果,而且是长在苹果树上的果实;也可以说成,甜的东西里面,长在苹果树上的果实。外延则是,苹果有青苹果,红苹果等;或者有山东苹果,湖南苹果等等。可以看到,内涵和外延随DAG一起,都有多条链路。

今天的数学部分结束了,今天给大家分享的魔术是前面在说奇偶性和印度洗牌法的时候解析过的一个魔术,今天大家对集合有了深入的了解,看看能否从这个观点来进一步理解这个魔术的原理。

视频1 五张牌的奇迹

另外,特地在公众号里制作了数学建模试题解析,刘谦专区历年春晚魔术精选,喜欢的朋友可以进入MatheMagician公众号,发现 -> 数学建模试题解析/刘谦专区/历年春晚魔术精选前来查看

好了,今天数学魔术师的分享就到这,希望各位客官喜欢,期待你的转发和赞赏哦!


我们是谁:MatheMagician,中文“数学魔术师”,原指用数学设计魔术的魔术师和数学家。既取其用数学来变魔术的本义,也取像魔术一样玩数学的意思。文章内容涵盖互联网,计算机,统计,算法,NLP等前沿的数学及应用领域;也包括魔术思想,流程鉴赏等魔术内容;以及结合二者的数学魔术分享,还有一些思辨性的谈天说地的随笔。希望你能和我一起,既能感性思考又保持理性思维,享受人生乐趣。欢迎扫码关注和在文末或公众号留言与我交流!
扫描二维码关注更多精彩


魔术里的集合、映射和关系(一)——集合是个啥?
我和Double Lift的故事(五)——升华篇闯红灯到底该不该罚款?——逻辑推理浅谈(二)循环、递归与魔术(五)——再谈递归的魔术逻辑与欣赏Roberto Giobbi的纸牌大学

本文分享自微信公众号 - MatheMagician(Modeling_Artist),作者:magic2728

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ​魔术里的集合、映射和关系(一)——集合是个啥?

    按往年,今年应该春节假期结束,准备返工。不过今年情况特殊,继续放假,大家在做好个人防护的同时,可以借助这难得多出来的闲暇,修炼内功。

    magic2728
  • 字母预言卡里的魔术与数学(三)——魔术背后的数学模型

    在前面的文章中,我们分别探讨了《字母预言卡》这个魔术的表演改进以及背后数学模型建立的分析。今天,我们接着上一期的分析来把这个魔术背后的数学模型精确地描述出来,并...

    magic2728
  • 字母预言卡里的魔术与数学(四)——Sperner's Theorem的美妙证明

    在前面三期文章中,我们就《字母预言卡》这个魔术所包含的表演技巧和背后的数学模型的分析和完整建模给大家作了阐述。相关内容回顾如下:

    magic2728
  • 4.93Python数据类型之(8)集合

    py3study
  • 排队的时候请学习List 不要做Set

    集合框架是一个非常重要的知识点,有了集合框架,我们在处理一些特殊的数据结构的时候,可以直接用框架封装好的工具来帮助我们解决问题。

    用户5745563
  • Java SE | 每日作业卷day15

    自定义一个学生类,给出成员变量name和age,使用HashSet集合存储自定义对象并遍历,遍历集合的时候,在控制台输出学生对象的成员变量值。要求使用两种方式进...

    剑走天涯
  • 一文掌握Python集合的语法与应用

    Python语言中的集合是无序的、可变的容器类对象,所有元素放在一对大括号中,元素之间使用逗号分隔,同一个集合内的每个元素都是唯一的,不允许重复。

    Python小屋屋主
  • Java集合框架综述

    最近打算复习复习JDK中的集合框架,并尝试分析其源码,这么做一方面是这些类非常实用,掌握其实现能更好的优化我们的程序;另一方面是学习借鉴JDK是如何实现了这么一...

    Java团长
  • NLP入门之形式语言与自动机学习(一)

    第一篇:集合与推理方法 1:我们为什么要学习形式语言与自动机 任何一门科学都有其自身的理论基础,计算机科学也是这样.大家现在看看计算机的技术变化的很快,现在我们...

    云时之间
  • NLP入门之形式语言与自动机学习(一)

    任何一门科学都有其自身的理论基础,计算机科学也是这样.大家现在看看计算机的技术变化的很快,现在我们很流行的框架和工具很有可能几年内就会变成过时的东西.但是计算机...

    云时之间

扫码关注云+社区

领取腾讯云代金券