今天是2021年的第一天,AI科技评论首先祝大家2021年万事顺利、身体安康、心想事成、论文多多、新的一年牛气冲天( ఠൠఠ )ノ!!!
好了,祝福语说完了,现在轮到“三金”我登场了,我是负责写这篇文章的作者,也是前些天负责写过“AI识别彻底懵逼,这到底是「牛」还是「鲨」?”一文的作者。
前些天我们编辑部有个例行活动:一起商讨元旦福利要为大家送什么书 。
为什么要送书呢?
因为书是人类的...... 是人类的...... 书中自有...... 书中自有......
好吧,其实是因为想直接送大家V100显卡,但是怕大家觉得太贵、心里过意不去、不好意思接受。
那为什么说这是例行活动呢?
因为AI科技评论一直就在陆陆续续地为大家赠送书籍,就以今年下半年为例,AI科技评论在1024程序员节日曾为大家赠送了蜥蜴书:《机器学习实战:基于Scikit-Learn、Keras和TensorFlow(原书第2版)》两书,中秋节之际曾为大家赠送了周志华教授著作《集成学习:基础与算法》(森林书)和贾扬清力荐《阿里云天池大赛赛题解析——机器学习篇》一书,在其它时候AI科技评论又送书了杨强老师的《迁移学习》一书以及吴军老师的《信息传》一书。
那今天我们又要送给大家什么书呢?
噢!这个不急,首先要从几件小事说起......
小事一:
在今年AI科技评论采访过的国内某TOP 2高校的一名AI研究生期间,他正在积极备战秋招,而除了顶会论文和项目经历之外,他最主要的准备都用在了刷算法题上面,其中以刷Leetcode Medium和 Hard为主,而去年三金我认识的另外一位某TOP 2隔壁的TOP 2同学,十分优秀啊,多篇顶会在手,但是在准备谷歌研究院、达摩院等面试时同样也在辛苦地刷算法题。
小事二:
在今年的NeurIPS 2020开会期间,三金我登录NeurIPS的虚拟Poster聊天室之后,在里面遇到了一位北美CS TOP 10名校的博士生。这个时间他在聊天室,是因为这三个小时是他的一作论文的Poster时间,他要为陆陆续续来到他的论文虚拟Poster之处的其它AI研究员介绍自己的论文以及问答交流。
而三金我显然不是在问他论文相关的问题,而是关心他的工作问题,他说他很忙,哦对了,他手上有像NeurIPS 这样顶会的多篇论文,他也曾在Facebook AI研究院等大厂研究员做过挺长时间实习研究员,但是他面试依旧也要刷算法题,我没有问他是不是也在Leetcode 上刷,因为我怕他会觉得我比较Low、怕他把算法导论等黑色大理石书直接甩在我的脸上。
小事三:哦这个事就是传闻了,传闻以XX跳动为首的互联网大厂近年来在算法工程师的面试时,算法题考察的越来越难了,难到手写红黑树都已经成为不了段子了。
难归难,但是据流传国内江湖上还是以Leetcode Hard为一个评判基准,而且有时是面试上来就做一到三道算法题,确实是这样吗?
那是否每个人面试都需要做算法题呢?
想必不是,Kai ming这样的大神估计是不需要的,在ACM总决赛拿过牌子、Codeforces、Topcoder榜上有名的同学估计也是不需要的。
那三金我需要做算法题吗?
不需要,但这不代表我啥都不会,简单的动态规划还是不在话下的
AI太内卷了啊,现在国内外的选手都太优秀了,学历、顶会论文、项目、Coding能力都得要求 ,当去大厂面试的时候,Coding能力是很重要的考察标准,如果你没有顶会论文,但是Coding能力很强,这种情况是有可能过的,如果你Coding能力很拉垮,哪怕有一两篇顶会论文,那八成也是要挂掉。
当然这也要分研究岗和工程岗,有时具体情况要具体而论,比如对AI科学家这一级别一般不至于还要让对方做几道算法题,否则那就太掉价了。
总之,哪怕多篇顶会论文在手,找算法工作时大概率上还是手撕算法题的,因为企业要的还是工程师多一些,没有Coding能力怎么展开工程业务呢,算法工程师,算法工程师,首先你得是个工程师。
三金我口吐芬芳了这么多,需要说明的一点是以上观点仅仅代表三金我一人哈,不代表AI科技评论,如有任何不妥当之处,欢迎评论区来打三金脸
那么今天到底要送什么书就显而易见了,它肯定是一本算法书,准确的说是教大家如何高效地刷算法题的书。
在《labuladong的算法小抄》“动态规划解题套路框架”章节中,会讲到简单的凑零钱问题,暴力解法就是遍历一棵 N 叉树:
1def coinChange(coins: List[int], amount: int):
2
3 def dp(n):
4 if n == 0: return 0
5 if n < 0: return -1
6
7 res = float('INF')
8 for coin in coins:
9 subproblem = dp(n - coin)
10 # 子问题无解,跳过
11 if subproblem == -1: continue
12 res = min(res, 1 + subproblem)
13 return res if res != float('INF') else -1
14
15 return dp(amount)
这么多代码看不懂怎么办?直接提取框架,这样就能看出核心思路了,这就是遍历 N叉树的框架:
1def dp(n):
2 for coin in coins:
3 dp(n - coin)
其实很多动态规划问题就是在遍历一棵树,你如果对树的遍历操作烂熟于心,那么起码知道怎么把思路转化成代码,也知道如何提取别人解法的核心思路。
再看看回溯算法,在《labuladong的算法小抄》“回溯算法解题套路框架”中会直接告诉你,回溯算法就是一个 N 叉树的前序 + 后序遍历问题,没有例外。比如,排列组合问题、经典的回溯问题,主要代码如下:
1void backtrack(int[] nums, LinkedList<Integer> track) {
2 if (track.size() == nums.length) {
3 res.add(new LinkedList(track));
4 return;
5 }
6
7 for (int i = 0; i < nums.length; i++) {
8 if (track.contains(nums[i]))
9 continue;
10 track.add(nums[i]);
11 // 进入下一层决策树
12 backtrack(nums, track);
13 track.removeLast();
14 }
15
16/* 提取 N叉树遍历框架 */
17void backtrack(int[] nums, LinkedList<Integer> track) {
18 for (int i = 0; i < nums.length; i++) {
19 backtrack(nums, track);
20}
AI科技评论本次联合【博文视点】为大家带来15本“《labuladong 的算法小抄》”正版新书。
在本文留言区留言,欢迎大家畅所欲言,谈一谈你刷算法的故事,或你对2020的总结或者是对2021年的规划和心愿,甚至可以是新的一年对AI科技评论的建议和期待,有哪些喜欢看的报道,还希望看到什么样的报道?
AI 科技评论将会在留言区选出 15名读者,每人送出《labuladong 的算法小抄》一本。
活动规则:
1. 在本文留言区留言,留言点赞最高的前 15 位读者将获得赠书。获得赠书的读者请联系 AI 科技评论客服(aitechreview)。
2. 留言内容会有筛选,例如“选我上去”等内容将不会被筛选,亦不会中奖。
3. 本活动时间为2021年1月1日 - 2020年1月7日(23:00),活动推送内仅允许中奖一次。
点击阅读原文,直达AAAI小组!
由于微信公众号试行乱序推送,您可能不再能准时收到AI科技评论的推送。为了第一时间收到AI科技评论的报道, 请将“AI科技评论”设为星标账号,以及常点文末右下角的“在看”。