深入理解算法设计技术

“为给定的应用程序设计正确的算法是一项艰巨的任务 . 它需要一个重大的创造性行为,解决问题并从以太中解决问题 . 这比采取其他人的想法并修改它或将其调整为更难 . 让它变得更好 . 你可以在算法设计中做出的选择空间是巨大的,足以让你有足够的自由来悬挂自己“ .

我研究了几种基本的算法,如分而治之,动态编程,贪婪,回溯等 .

但是,当我遇到某些编程问题时,我总是无法认识到适用的原则 . 我想掌握算法的设计 .

所以任何人都可以建议一个最好的地方来深入理解算法设计的原理.....

回答(3)

3 years ago

我建议编辑珍珠,第2版,Jon Bentley . 他谈了很多算法设计技术,并提供了现实世界问题的例子,它们是如何解决的,以及不同的算法如何影响运行时 .

在本书中,您将学习算法设计技术,程序验证方法以确保算法正确,并且您还可以了解一些有关数据结构的知识 . 这是一本非常好的书,我推荐给任何想要掌握算法的人 . 去阅读亚马逊的评论:http://www.amazon.com/Programming-Pearls-2nd-Edition-Bentley/dp/0201657880

你可以在这里查看一些书的内容:http://netlib.bell-labs.com/cm/cs/pearls/

请享用!

3 years ago

你不能仅仅通过阅读书籍来学习算法设计 . 当然,书籍可以提供帮助 . 像另一个答案中建议的编程珍珠之类的书很棒,因为它们会给你带来问题 . 每个问题都会迫使您思考如何解决特定类型的问题 .

我们的想法是让您了解许多不同类型的问题及其解决方案 . 通过这样做,您将学习如何检查问题并查看它是否与您已经看到的问题共享任何共同点 . 在这方面,它与你学习如何在数学课上解决“单词问题”的方式并没有太大的不同 . 当然,大多数算法问题比必须弄清楚两列火车将在轨道上碰撞的地方更复杂,但你学习如何解决问题的方式是相同的 . 您将学习用于解决简单问题的常用技术,然后将这些技术结合起来解决更复杂的问题等 .

阅读,练习,泡沫,冲洗,重复 .

除了像Programming Pearls这样的书籍之外,还有一些网站可以发布您可以自己测试的不同编程挑战 . 如果您有对算法感兴趣的朋友或同事,这会有所帮助,因为您可以互相反对意见并提出有趣的挑战,或者共同努力提出问题的解决方案 .

我提到需要练习吗?

“掌握”任何事都需要时间 . 很长时间 . 一个流行的理论是,需要10,000小时的练习才能成为任何专家 . 对于特定的努力,存在一些争议,但总的来说这是真的 . 你没有一夜之间掌握任何东西 . 你必须学习 . 并且练习 . 并阅读别人的所作所为 . 再研究一下,多练习一些 .

3 years ago

一本关于算法设计的好书是Kleinbeg Tardos . 每种设计技巧都取决于您要解决的问题 . 在算法书中进行练习非常重要,并得到老师的反馈 .

如果存在局部最优选择taht带来全局最优解决方案,您可以使用贪心算法 .

如果问题具有最佳子结构,则可以使用动态编程 .