有哪些算法惊艳到了你?
Reservoir Sampling(
这是我在今年求职过程中面试的时候被问到的,因为之前很少接触Streaming的算法,在听到这个题目的时候被惊呆了,根本不能理解:
给一个Streaming的Data,未知长度,要求在Streaming结束后返回N个Data,且是等概率的。
在听到这个问题的时候简直惊呆了。如果Streaming长度已知为L,当然对于每一个Data,我生成一个N/L的概率即可。但是长度未知,也即概率未知,怎么可能在Data来的时候判断要不要保留这个Data,还能保证是等概率的……百思不得其解。
事后一番研究,才发现了这类算法,算法之简单令人惊叹:
首先保留前N个Data,对于后面来的Data以N/i的概率选择是否保留,i为当前Data序号,保留的话在原来保留的N的Data中随机剔除一个。最后返回这N的即可。
证明也很容易,奇妙得地方在于在计算概率的时候,出现了很长的,可以前后上下不断约掉的分式。相互约去之后剩下的概率刚好是N/L,L为总长度。简直美妙极了!
显然这类算法也非常有用,因为在实际问题中会出现大量需要在Streaming的数据中进行Sample,为下一步处理数据做准备的情形。而这竟然有一个O(L)的算法,真是太惊艳了!
继续阅读
全部内容AI如何辅助编程?
从我的观察来看,AI辅助编程最大的变革不在于代码自动生成本身,而在于它完全改变了我们与代码交互的方式,让编程从"写代码"变成了"设计系统"。就像我写的文章中提到的: "工程师的工作大部分就是造轮子与用轮子,而工具的逐渐标准化使得重复造轮子的需求越来越弱,越来越多的工程师核心任务并不是研发,而是整合(Integratio...
集成 GPT-4 的代码生成器 Cursor 使用体验如何?怎么用更高效?
你有没有过这样的时候:花了无数心力去“打磨”一个人工智能开发项目,结果却越修越乱,反而不如直接重来?这个现象在当今 AI 领域并不罕见。我们常常期望用 AI 帮助我们自动生成内容乃至代码,但却忘了 AI 在处理复杂的中间过程时,可能会带来比想象中更多的混乱。今天就和大家分享一个失败的 AI 开发项目经历,以及由此带来的...
如何评价Cursor?
你有没有想过,只花不到一个小时,就能为你的播客产出整整一周的内容?又或者,一首自己用AI创作的音乐,能成为一支支短视频的背景,让需要被领养的狗狗收获更多关注?听起来像是天方夜谭,但其实现在通过“AI自动化”,这一切都不再是难事。下面,我想分享三件我用 Cursor AI+自动化做的项目,也谈谈其中的一些思考。 一、自动...
