
算法
S_o_l_o_n
logic
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
python之利用递归函数实现goto或者label功能
c/cpp的goto和java的label都是一种可以从指定的语句处重新运行的功能,即可以在程序的其他地方跳转到指定处重新开始执行。那么在python中,其实并没有原生支持的类似语法,但是本文将说明,利用python的递归函数也可以实现类似的功能。 比如,我们程序在运行到某处时,如果不满足某些条件,我们希望其可以在某个地方重新开始运行,这时我们就可以将这部分需要重新运行的语句以及条件判断封装成一个函数,之后再进行递归调用即可,伪代码如下所示。---some codes...原创 2020-08-15 19:15:18 · 1158 阅读 · 1 评论 -
整数转浮点数精度溢出的原因和处理方式
对于64位浮点数来说,其尾数有53位(包含首位的隐藏位),当一个整数转为浮点数时,只有当该整数的二进制位数不超过53位时,64位浮点数才可以精确的表示该整数,不然会造成精度丢失。试想一下,当一个十进制整数的二进制有54位,那么最后一位无法准确储存,64位浮点数就会造成精度的丢失,自然地,当位数超过53位后,64位浮点数的可表示整数并不是连续的。 在笔者的这篇文章《浮点数的各种最值推算以及对python sys.float_info的解释》中,讲过浮点数能在该范围内精确表示的最大...原创 2020-06-01 23:25:38 · 4360 阅读 · 0 评论 -
理解浮点数的二进制表示
目录二进制的科学计数法浮点数的二进制表示符号位、尾数和指数(以64位浮点数为例)0、规约数和非规约数无穷大和空值NaN二进制的科学计数法 浮点数在电脑中用二进制储存,约定以二进制的科学计数法来进行表示一个浮点数,类比十进制的科学计数法,很容易知道,二进制的科学计数法的首位数字一定为1,然后通过乘以相应的底数为2的指数来得到二进制数,如下所示。 下面等号左边是原二进制数,右边就是其二进制的科学计数表示。和十进制一样,二进制的科学计数表示之后,也...原创 2020-05-30 23:14:14 · 6882 阅读 · 0 评论 -
P、NP、NPC、NP-Hard
P=NP?一直是一个未解决的世纪难题,这个问题的意义非凡,当然了,如果等号成立才是有非凡的意义,但是如今大多数科学家都认为等号是不成立的,只是还没有人能够证明或证伪。 P和NP是两类问题的集合。P集合中的问题叫做P问题,其表示可以通过确定机(可以认为就是现在的计算机)在多项式时间内找到解的问题。这里的多项式时间并不是直接的表示真正意义上的时间,因为我们无法准确的定义某个问...原创 2019-01-07 15:46:21 · 271 阅读 · 0 评论 -
python正则表达式的贪心算法和非贪心算法
正则表达式是一种字符串匹配和检索的规则,基本各种高级编程语言都实现了正则表达式规则,总体的语法规则也都相似,只是不同的编程语言会有些许的不同。正则表达式主要用在文本提取,笔者主要用在爬虫爬取后的文本数据的清洗,虽然在爬取文本数据时不一定要用正则表达式,比如用Xpath语法就可以快速定位相关数据在网页中的位置,但是当清洗处理爬取后的文本信息时,就需要用到正则表达式了,其简洁性和功能的强大...原创 2019-01-07 22:53:52 · 2199 阅读 · 0 评论 -
为什么十进制浮点数常常无法用二进制精确表示?
十进制浮点数很好理解,就是我们日常所见的数字,比如3.3,2.56等数字,都是十进制的。那么,二进制小数该如何表示呢? 首先,我们先看下整数,对于十进制整数10,用二进制表示就是1010=1*2^3+0*2^2+1*2^1+0*2^0,所以对于整数,十进制和二进制之间的转化还是挺直接的。那么对于小数,该如何转化呢? 比如,对于3.3,如何转化为二进制表...原创 2019-05-27 22:39:00 · 4268 阅读 · 0 评论 -
如何直观理解梯度下降算法
要理解梯度下降算法,首先得理解梯度,而为了更好的理解梯度,首先需要理解方向导数。所以,我们先从一个多元可微函数的方向导数开始进入。 在讲方向导数之前,我们先思考一个问题:在三维空间里面想象一个立方体,如下图,现在底面ABCD上任意取一点E,坐标为(a,b),则点E到斜平面AB''D''的竖直距离d是多少呢? 如果a,b都大于0,则实际上d=a+b。...原创 2019-07-20 12:43:29 · 524 阅读 · 0 评论 -
直观理解拉格朗日乘子法和Karush-Kuhn-Tucker(KKT)条件
在最优化问题中,经常是会有约束条件的,而约束条件可分为等式约束条件和不等式约束条件,对于前者,我们有拉格朗日乘子法,对于后者,有KKT条件,对于既有等式约束又有不等式约束的最优化问题,只需要结合拉格朗日乘子法和KKT条件即可。本文中,我们将分别看下等式约束和不等式约束下,拉格朗日乘子法和KKT条件的原理,以及如何去理解。 其实只要理解了等式约束条件下的拉格朗日乘子法,...原创 2019-07-21 02:24:08 · 2286 阅读 · 0 评论