0%

算法集训营第二期|-保持做题保持呼吸

第一次有了想要了解自己手下的操着一口二进制乡音的“兄弟”的念头,大概是有次传参数时,发现和库里数值对不上,查了好一会资料,才发现受js语言限制,处理长度超过十六的数据会丢失精度。那时对数据计算有了模模糊糊的“愤怒”,不知是气自己的无知,还是气这个“不完美”的世界哈哈。

技术一定是为解放生产力而被驱动着发展,二战期间,以图灵为代表的数独爱好者,逻辑家、语言家,数学家们等在一股力量的集结下,都在为破译德军密码表而苦苦奋斗着,每天都有约莫二十多个小时的时间可以拼命去计算,去“撞库”,如果能早一秒破译出情报,都会对战局起到“微妙”影响。这是多么激动人心的事情,然而每一个字母有二十六种出现的可能,随着单词的长度和顺序变换,暴力算法的时间复杂度会呈指数级上升,这可不是像牛顿凭借着微积分和万有引力公式就能算准确算出地球运行轨道呈椭圆形,那是在无时间限制且算力范围内,人力所可以达到的。

那么,既然穷尽人力也无法在规定时间内暴力算出题解,那能不能有一种工具可以代替自己算?显然是有的。“模仿游戏”里的问题就变成如何向工具描述这个问题,以及如何让工具独立去解决的问题了。让三维的事物液化成二维的01,真是亏得前辈们想啊,我想,力扣一直苦苦的让我们用代码实现十进制转八进制、十进制转罗马数字,让我们从工具的角度去实现加法、减法,大概也有向先行者致敬的含义吧。工具不是生来就懂得高级函数,它们是从原始时代出发,补码、原码、反码,都是前辈们在尽力向机器描绘着这个美好的三维世界,因为是尽力而不是随心所欲,所以精度丢失是我们需要接纳的“遗憾”,可能否有更高精度还原的编译模式呢?

对于计算机的美学概念,大概受到大刘描绘的秦一号人肉计算机的影响,那时的自己还不够懂与门、非门、以及异或是什么, 这周学到用“异或”来计算只出现一次的数字,真觉得这种设计理念太棒了!伟大的不可能事情,拆分成这一个个最基础的门电路,竟然就变成只需分辨零和一的简单问题,真是不可思议。

修行还在路上,对算法的完美与缺憾都感到欢喜,选修题没怎么做,下周需要多多注意了。

原文地址:《算法集训营第二期|-保持做题保持呼吸》 2021-12-12