计算机史上首篇教你从算法问题提炼算法思想的文章

路人丙:“小夕,你说学算法有什么用呢?”

小夕:“好玩呀。”

路人丙:“算法问题那么多,现查现用不就好了?”

小夕:“好咯,既然你诚心诚意的问了~小夕就大发慈悲的震惊你( ̄∇ ̄)”

为什喵要学算法

听小夕慢慢讲哦。好像现在在低端程序员的圈子里经常流传着“算法无用论”和“临时抱佛脚论”,好像在有的人眼里,编程就是一个经验活儿,甚至说体力活。小夕只能说,这种想法让人听了会很尴尬的,别人都不知道该如何劝他们。

 

如果一个人是半道转行计算机,有这种想法是无可厚非的。但是甚至一些名校出身的大学生都会这样想,小夕就觉得非常尴尬啦。

 

算法是什么呢?

 

小夕说,算法就是计算方法(已逃

 

学习算法的意义有很多,比如很现实的用算法框架解决某个问题(比如文件排序),再比如用算法将一个时间上不可能完成的任务变得可能(比如用算法优化优美的斐波那契问题),小夕不一一列举。其实整个人工智能领域,高性能计算领域,最终都能纳回到精简的算法大框架里去。一句话,算法是计算机的精华。

算法的究极打开方式

好像很多人学算法就是背过各种算法然后刷几道题,应付一下考试就过去了。事后工作多年也翻不开算法书几次。小夕只能说,╮(╯▽╰)╭哎。

 

小夕觉得,最重要的还是学习每个算法问题中的算法思想。要解决的算法问题是无穷无尽的,但是诸多问题背后的算法思想确是相同的。所以你生生的背过了“解决排序问题可以用选择排序、插入排序、归并排序、快速排序、堆排序巴拉巴拉”,那么你只是成功解决了一个算法问题。但是如果你在排序问题的归并排序方法中提炼出了divide-and-conquer思想(中文叫“分治”),那么恭喜你成功解决了一大堆的算法问题。

 

下面小夕就以计算最长公共子序列(以下简称FCS)这个经典算法问题来给大家深刻感受一下从算法问题中提炼算法思想的过程。

FCS问题

首先,序列嘛,可以简单理解成字符串。比如“tsinghua”就是一个8字符的序列。

 

子序列呢,就是由序列中若干字符,按原相对次序构成。

 

比如下图就是原序列(上)与它的一个子序列(下)。

注意上下的连线一定不能交叉哦。

 

而最长公共子序列,就是两个序列的所有相同子序列中最长的那个。

 

比如序列didactical和序列advantage的最长公共子序列为data,你绝对不可能找出4个以上字符的公共子序列的。

 

下面就以计算序列didactical和序列advantage的最长公共子序列为例,开始吧~

一个纯粹的思路

观察一下这个问题,如果从字符串中间去想的话会感觉一团糟,所以从两头想啊。

 

是不是一下子灵感来啦?对于didactical和advantage的开头,即d和a,那么只有三种情况:

1、    要么a在FCS中,且是第一位,而d一定不在FCS中。

2、    要么d在FCS中,且是第一位,而a一定不在FCS中。

3、    要么d和a均不在FCS的第一位。

 

哈?你想说d和a可不可以都在FCS的第一位?小夕救不了你了。。。

 

走到这里是不是就好像走到了一个分叉路口呢?每一种情况就是一条路。

 

想一下,进入每一条路后,其实此时又是一个新问题。比如进入情况1之后,我们就可以把第二个序列的第一个字母d给剔除掉了,所以就成了计算idactical和advantage的FCS问题了。

 

而计算这个新的FCS问题,与刚才的思路完全一样呀,依然从头上开始,对i和a分三种情况讨论,然后进入每一种情况后,又是一个新的FCS问题。

 

诶?这个套路是不是似曾相识?对!这特喵的不就是学编程语言时讲的递归调用嘛!既然每一次的套路都一样,那就说明完全可以用一个函数反复调用自身来解决问题!

 

是不是灵感爆发啦?只要两个序列的开头字母不同,那就不停的重复下去呗~那如果开头字母相同怎么办呢?这还用说呀!那开头的这个字母肯定是FCS中的一部分啊!然后把这个字母保存下来后,都剔掉继续递归调用呀~比如didactical和dvantage,你说开头的这个d是不是FCS中的!敢说不是,小夕。。。哼哼哼,小夕凶死你~

 

既然开头字母要么相同,要么不同,反正最终都会递归调用。这时再考虑什么呢?显然,我们只需要考虑遇到“空字符串”时该怎么办就好了。

 

显然,只要遭遇了空字符串,那么肯定就代表着这一条寻找公共子序列的路线结束了,我们就可以数一数在这条路线上遇到了多少次“首字母相同”的情况,把这些情况首尾接起来,不就是这个公共子序列嘛~

 

最后,我们把这好多个公共子序列摆出来,比一比哪个最长(咦?怎么感觉怪怪的),最长的那个不就是我们要的FCS嘛~

小夕炼金秘法

 

好啦~任务完成。睁大眼睛看着吧!小夕只演示一遍哦~

首先,我们开始的时候很踏实,从问题的起点开始,也就是从字符串的首字母开始,然后很踏实的分析每一种可能的情况。对于每一种可能情况都考虑在内,最后再考虑一下每种情况结束时的情况和处理方法。诶?这种做法叫什么?大声告诉小夕~~这不就是小学就学过的枚举法嘛~一种情况一种情况的列举,别说你小学的时候没做过这种事。当然啦,枚举法也叫蛮力法、暴力法,是一个东西。这就是本解法的最关键的算法思想啊~新算法思想,get!

 

诶?等等,再深入的挖掘一下,刚才我是不是说我们很踏实的分析每一种可能的情况呢?这里有没有算法思想呢?这就是divide-and-conquer思想啊!就是分治呀~将一个大问题,一分为二,甚至一分为三,然后分别取解决每一个分好的子问题,这种思想就是分治思想!get!想一想拿着这个思想,去扔到排序问题上去,是不是立刻发现你们当年死记硬背的归并排序一下子就出来啦??有木有很激动~

 

然后继续分析,我们哪里来的自信,去相信不停的递归调用下去会结束呢?万一死循环了呢?想一想哪来的自信呢~

 

有没有发现,我们每到达一个岔路时,最少会让一个子序列的字符数量减少1呐!专业的说法是“问题的规模一定会减小”!这样不停的递归调用下去(专业说法叫迭代),问题的规模早晚减小为0!这种思想提炼出来了没~起个名字,叫减而治之!再总结一下,如果你发现你的递归会让问题的规模一点点的减小,那么就可以解决问题!有了减而治之的思想,以后不就会刻意的寻找让问题规模减小的方法了嘛~而不是无头苍蝇瞎蒙啦。

 

还能不能挖出来其他算法思想呢?唔,小夕暂时没有啦~但是你看,一个FCS问题的一种解法,就最少包含了3+1个算法思想!(解决问题的途中用到了递归,也算思想吧QAQ)如果你事先拿着枚举法、分治法、减而治之、递归去扔到这个FCS问题上去,那这个问题秒解呀~当然啦,提炼出来思想后,要深刻消化哦!

 

但是聪明的喵喵也想到了,枚举法看起来开销好大呀,这得让计算机考虑多少种情况呀,累坏计算机宝宝了~于是,有没有办法让计算机大幅度减少考虑的情况呢?期待小夕的下一篇从思想讲算法的大作吧!

 

但是小夕写下去的动力就是你们的小红包呀(⁎⁍̴̛ᴗ⁍̴̛⁎)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/481307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美国能源部正式宣布核聚变里程碑式突破,专家点评商业化还需数10年

来源:澎拜责任编辑:郑洁图片编辑:张同泽校对:施鋆耗资35亿美元的美国国家点火装置用了10多年时间不断冲击点火目标,过程一波三折。成功点火后有两条路可走。一是冲刺更高的能量增益,未来或将再建更大能量的…

Science:找到杀死癌细胞的“单词”

来源:生物通利用新的机器学习技术,加州大学旧金山分校(UCSF)的研究人员与IBM研究院的一个团队合作,开发了一个包含数千个细胞“命令句”的虚拟分子库,基于引导工程免疫细胞寻找并不知疲倦地杀死癌细胞的“单词”组合。预测模型允许…

拼写校正与动态规划的小故事

喵喵喵,细心的你有没有发现小夕已经将卧室和书房精装修了呢~可以输入口令【ho】,或者点击主页的“旧的故事”标签进入哦。一个小现象小夕今天给大家讲一个自然语言处理/信息检索领域的小现象~细心的同学可能发现啦,每当你在使用某度进行搜索时…

《物理世界》公布2022年度十大突破

来源:科技日报近日,英国《物理世界》杂志公布了2022年度十大突破,涵盖从量子、医学物理学、天文学到凝聚态物质等各个方面。这十项突破是由《物理世界》编辑小组从今年在该杂志网站上发布的涵盖物理学所有领域的数百项研究中精选出来的。开创…

飞行器真的是计算机!

小夕在一边默默的玩弄心爱的小四轴(飞行器)。路人丁:“小夕,你不是学计算机的吗?怎么玩起飞机来了?”小夕:“对呀,小四轴也是计算机呀”。路人丁:诶?会不会有…

谷歌员工担心自家 AI 敌不过 ChatGPT,高管回应:其过快发展可能损害公司

来源:AI前线整理:冬梅、核子可乐谷歌的 Jeff Dean 表示,一旦提供错误信息、大企业所面临的“声誉风险”要比小公司更严重,所以谷歌自然“比小型初创公司更加保守”。自 11 月底以来,AI 聊天机器人 ChatGPT 正式向公众发…

深入浅出不可思议的中文分词技术

亲爱的喵喵们,明天小夕就正式开学啦。开学后每周有几天的课比较多,小夕为了保证每篇文章的质量,可能做不到每天一更啦。但是小夕也会尽量挤出时间来写文章,尽量保证两三天更一篇。希望不要责怪小夕哦...分词,也叫切词&…

史上最萌最认真的机器学习/深度学习/模式识别入门指导手册(三)

能够坚持走到阶段三的喵一定是很有毅力的喵!也是很合格的机器学习/人工智能研究者啦~但是走到这里,也意味着您不满足于使用看似孤立的机器学习模型来生硬的完成一些任务,那么,大一统的理论体系就在这一阶段建立吧~前言完成这一阶段…

专访中国工程院院士杜祥琬,可控核聚变美国成了吗?

凤凰网科技 出品作者|蒋浇微信编辑|李金洋12月13日,美国能源部宣布,在加利福尼亚州的劳伦斯利弗莫尔国家实验室(LLNL),研究人员首次在核聚变反应中产生“净能量增益”,即聚变反应产生…

一个问题就可以辨别真假NLP(自然语言处理)研究者

╮(╯▽╰)╭哎,自从人工智能火了以后,最近自称NLP研究者的人越来越多了,然而这其中的大忽悠有多少小夕就不想多说了。如果连自己在哪个领域、哪个学科搞研究都不懂的话,你相信他真的是这个领域的研究者喵?反正小夕不信…

2023年十大数字科技前沿应用趋势

来源:腾讯研究院编辑:蒲蒲继21年的“变量”、22年的“融合”,2023年数字科技的发展呈现出明显的“升维”特征。近日,腾讯研究院联合百位内部科学家、技术专家和外部院士专家,发布《升维 - 2023年十大数字科技前沿应用趋…

绕开数学,讲讲信息论

看到文章的标题,肯定有人想说“诶?小夕你不是做人工智能吗?怎么又捣鼓起通信里面的信息论了?”小夕肯定会很开心的揪住你,然后说“哈哈哈~发现一只外行!”学过机器学习的喵喵肯定知道很多决策树的核心就是计…

大数据时代的机器学习有什么不同?

小夕昨晚没有发文章&#xff0c;却收到了一个大红包和好多晚安&#xff0c;好受之有愧..>_<...谢谢你们喵。路人戊&#xff1a;小夕&#xff0c;我们身处大数据时代了&#xff0c;好厉害呢。小夕&#xff1a;嗯嗯&#xff0c;哪里厉害了呢&#xff1f;路人戊&#xff1a;…

Science Bulletin | 阿尔茨海默病的现状与未来

目前全球人口老龄化进展严重&#xff0c;中国已成为世界上老龄化最快的国家之一。随着人口老龄化&#xff0c;痴呆患者的数目急剧增加&#xff0c;阿尔茨海默病&#xff08;Alzheimers disease, AD&#xff09;作为痴呆的主要原因&#xff0c;已成为当今社会最为热点的话题之一…

Science年度十大科学突破出炉:韦伯望远镜高居榜首,AIGC、NASA主动撞击小行星紧随其后...

来源&#xff1a;FUTURE远见选编&#xff1a;FUTURE | 远见 闵青云 文&#xff1a;量子位 前脚韦伯望远镜运维科学家刚获得Nature年度十大人物&#xff1b;紧接着&#xff0c;Science也将韦伯望远镜评为年度最大科学突破&#xff01;今天&#xff0c;Science重磅发布2022年度科…

词袋、独热与词向量

亲爱的读者喵喵&#xff0c;由于一些事情&#xff0c;小夕最近情绪欠佳&#xff0c;导致昨天又失约没有更新文章...而且文章中萌气散失...小夕会尽快调整好哦&#xff0c;小夕依然萌萌嗒我们知道&#xff0c;传统的数据挖掘任务面向的是结构化数据。结构化数据很好理解&#xf…

人工智能会“偷走”潜艇的隐身能力吗?

更好的探测技术 不仅能使海洋变得透明&#xff0c;也许还会削弱核威慑力。潜艇的价值主要在于其隐蔽性。有一种名为“相互确保摧毁”的威慑战略&#xff0c;其关键在于尽量确保潜艇在核战争的第一次导弹打击中幸存下来&#xff0c;从而在第二次打击时发射导弹回击。因此&#x…

人工智能大地图之分布式人工智能篇

前言人工智能大地图系列文章更新啦&#xff01;大地图系列的文章是为了帮助即将入门和初步入门人工智能相关领域的喵喵从上帝视角看清整个人工智能学科的全貌&#xff08;好长的句子&#xff09;&#xff0c;小夕可不希望小夕的粉丝在研究了一年的人工智能某方向后&#xff0c;…

符合人类创作过程的AIGC:自动生成长故事的模型出现了

来源&#xff1a;机器之心报道编辑&#xff1a;小舟、蛋酱AI写文章还是得模仿人类的创作方法。在今天的人工智能领域&#xff0c;AI 写作神器层出不穷&#xff0c;技术和产品可谓日新月异。如果说 OpenAI 两年前发布的 GPT-3 在文笔上还稍欠火候&#xff0c;那么前段时间的 Cha…

Science:挑战传统理论,重塑联想学习概念

来源&#xff1a;brainnews编译作者&#xff1a;Young&#xff08;brainnews创作团队&#xff09;校审&#xff1a;Simon&#xff08;brainnews编辑部&#xff09;学会根据环境线索预测奖赏对生存至关重要。人们认为&#xff0c;动物通过在结果偏离预期时更新预测来学习预测奖赏…