龙空技术网

码代码速度奇慢,靠自己永远想不出来算法,怎么办?

人民邮电出版社 187

前言:

目前兄弟们对“算法设计kleinberg”都比较珍视,兄弟们都需要分析一些“算法设计kleinberg”的相关内容。那么小编在网摘上汇集了一些关于“算法设计kleinberg””的相关知识,希望你们能喜欢,小伙伴们一起来了解一下吧!

算法之于编程的重要性,自不必多言,毕竟简洁高效的算法不仅有利于程序的运行和维护,还能节省代码体量和编程时间,更是程序员升级打怪无法绕过的一环。

但是,只有将“读算法”的外功化为“写算法”的内功,才能算是成功攻克了算法这个副本。

其实,存在题主这种困惑的同学不在少数,这一阶段的程序员基本都很明白算法之于编程的重要性,却很可能忽略了“算法设计”之于“算法”的重要性。

做编程和算法,一定要先建立起自己的思维模型。

可以比较轻松地阅读他人写好的算法,说明题主对于编程和算法的原理拥有较好的知识积累;而难以自己编写算法,则说明题主尚未形成对代码或是算法的一套完整逻辑,有一点像是“知其然却不知其所以然”。

因此,人邮君推荐题主多多研究算法的形成逻辑,并来锻炼自己算法设计的逻辑闭环。

就像在《算法设计》一书中,康奈尔大神Jon Kleinberg、 Éva Tardos强调的算法设计思维的重要性:要侧重算法设计思路,从实际问题出发,经过深入具体的分析引出相应算法,并对算法的正确性和复杂性进行合理的分析和论证,这种学习路径对算法能力的提升很有帮助。

作为康奈尔大学教授算法课程多年的资深教授,以及常年参与项目的一线程序员,本书的两位作者非常清楚计算机专业的学生们需要知道什么,以及如何表达能让学生们更好地吸收这些知识,因此《算法设计》虽然内容高深,但亦可作为一本算法入门书,让读者能够看明白、学下去、用得好。

首先,你要学会分析问题和设计解决方案的方法。

《算法设计》一书中,作者倡导程序员们要识别不同计算领域复杂问题中算法的清晰描述形式,并基于此针对具体问题设计具有针对性的有效算法。

因此,在讲解具体算法时,本书作者会引导读者掌握问题形式化、算法设计和算法分析的全过程,力求通过分析真实世界的问题来激发算法思想。

比如在介绍稳定匹配问题时,作者先通过求职者与招聘方的匹配问题来引入,说明稳定匹配的逻辑,并设计算法给出计算机在不同场景下的解决方案。

以及书中讲解的系统和网络的应用程序(缓存、交换、互联网上的域间路由),人工智能(规划、博弈、霍普菲尔德网络),计算机视觉(图像分割),数据挖掘(变更点检测、聚类),运筹学(航线调度),以及计算生物学(序列比对、RNA 二级结构)等代表性例子。

两位作者以一种清晰、直接的方式,指导读者自己分析和定义问题,并从中找出适用于给定场景的算法设计原则,鼓励大家更深入地理解算法设计过程,探索算法在计算机科学的更广阔领域中的应用。

这种更注重算法设计思维的培养,通过整理思路,从最简单的初始方法到最终的解决方案,能够帮助大家更好地理解复杂算法,而非单纯的知识罗列,从而实现“理解了what和why, how自然水到渠成”。

其次,学会提问,是真正掌握知识的第一步。

两位作者将提出问题视为本书的一个重要组成部分,并且让问题的结构与算法设计的方法保持一致:建立必要的符号和形式化,设计算法,然后分析这个算法并证明它是正确的。

书中每章末尾的“带解答的练习”部分都会讨论一个或多个问题,并描述如何形式化一个算法解,包括带完整解释的算法、运行时间的分析和正确性的证明。

本书中共包含200个问题,几乎都是康奈尔大学算法课程的课外作业,或者课堂测验的考试题目,还有部分题目出自Yahoo!和Oracle等公司。

《算法设计》并没有对知识进行长篇大论,而是只有关键的过程证明,反而读下来容易掌握重点,进而教会我们如何解决具体问题,乃至提出优化问题。

希望通过这本书,可以帮助大家逐步建立起自己的算法设计思维模型,真正做到学以致用。#技术派的书架#

标签: #算法设计kleinberg