啥是闭包

啥是闭包

我最近经常看到闭包这个概念,我发现离散数学里面有闭包,数据库里面也有闭包,写程序的时候还有闭包函数,所以闭包到底是个啥呢?

离散数学中的闭包:

首先看定义:

一个关系R的闭包,是指加上最小数目的有序偶而形成的具有自反性,对称性或传递性的新的有序偶集,此集就是关系R的闭包。

闭包的定义是,包含指定集合的满足在某个运算下闭合的最小集合。

离散数学中,闭包是一个集合,什么的集合呢?

集合里面的元素是什么呢?

要讲清楚这个问题,要引入闭合的概念。

闭合指的是在一个集合上执行某种运算,得到的结果还是这个集合的元素,那么就说该集合在这个运算操作下构成闭合。

既然有闭合那就肯定有不闭合,

如果我想让他闭合怎么办呢?

我给这个集合添加若干元素,让他满足闭合的特性。

添加元素也不能乱添,我们要找出添加元素数量最少的一种情况。

这种情况下,由新加入的元素后的集合,被在这种运算下的闭包

定义是: 包含指定集合的满足在某个运算下闭合的最小集合

编程语言中的闭包

编程的时候会遇到闭包函数:

即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。

说白了就是在和函数体内部定义函数

比如在python里面可以这样定义:

def fun(n):
	a = 1
	def helper(x):
		x += a
		return x
	
	b = helper(n)
	print(b)

数据库中闭包

数据库中闭包概念:

设X是函数依赖集,被X逻辑蕴涵的函数依赖全体构成的集合,称为函数依赖集X的闭包,记为X+。

我个人理解数据库设计过程中使用的闭包概念和离散数学中的有很大关联

两者都是建立在关系、集合的基础上的

但是数据库的内容太多了,我准备整理一下另写一篇。

他们之间的联系

编程中的闭包和离散数学中的闭包理论上好像没什么俩系,没有直接证据证明他们的关系。计算机语言中闭包的用法是发明者只是用了相同的词汇而已。

参考链接

知乎:离散数学中的闭包和计算机语言中的闭包有联系吗?

百度百科:闭包函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值