演算法价值观无所不在,在软件工程和其他应用领域中的体现都很明显。网络平台路由器标准的许多 主要变化,能看作是现代人对一类极短方向演算法的不足和另一类演算法的相对优势的争论。遗传学家用于表示DNA和DNA之间关联性的基本概念是用演算法定义的。经济学家对组合拍卖行在实 践中的可行性研究所抒发的担忧,部份原因是在许多特殊情况下,那些拍卖行包含计算无解的搜寻问 题。所以,演算法概念不仅局限于不可否认的、解决目前的难题,在许多应用领域再次出现的新难题中,人 们也经常看见那些价值观的踪迹。有一天,AOL的一位科学家在早餐时告诉我们,他们向用户提 供电视广告的系统能归因于一系列难题,那些难题在很大程度上能用网络流难题来可视化。我们 去纽约时恰巧遇到以前的一位学生,他当时是一位管理顾问,负责为大型医院提供更多老龄服 务,也讲诉了类似的事情。
关键不只是演算法有许多应用。在更进一步的层面上,演算法这一主题是一个强大的“摄影机”,借由它能查看软件工程应用领域。演算法难题形成了软件工程的核心理念,但它很少以干净、准确的微积分难题的方式再次出现。相反,它往往有许多凌乱的、插件特定的细节,由许多非常重要和许多毫无意义的东西折腾在一起。因此,演算法难题由三个基本上部份组成:得到微积分上干净的难题核心理念,然后根据难题结构确定适度的演算法结构设计控制技术。这三个部份此消彼长:越随心所欲地运用各种可能的结构设计控制技术,也就越能认识到人世间混乱难题中的干净方式叙述。在最有效的情况下,
演算法价值观不但能提供更多适当难题的软件系统,所以它形成了一类语言,让你能清晰地抒发基本上难题。
学习演算法当选Cornell天神Kleinberg的《演算法结构设计》,其实这是两本最适合进阶经典之作的演算法书。
美版
新浪网如何评论这两本书?
这是我看见的最好的两本演算法书,以示例课堂教学的
7.1-2, 4, 11, 12.4, 13; 肖梅,叙述详细。已答疑的解题价值很高
解了what和why, how自然顺理成章,颇有些只可意会穿鞘的韵味。被虐半学年之后,才略为地感受到“GrignolsIns13zD”的畅快
作为master阶段演算法课的教科书,实实在在地让我知道了何为algorithm”design”
非常棒的教材,让我完全克服了对演算法的恐惧
看这两本书我第一次理解了什么是Invariant,以及如何给演算法做微积分分析。 伪代码写的也很好,演算法复杂度的讨论也很实用。
刚刚上架的中文版
演算法结构设计
众多名校采用的演算法结构设计课程教材;用实际示例阐明枯燥的演算法理论;更注重演算法结构设计思路而非演算法复杂度分析;两本书覆盖面广,且含有200多道精彩的解题,最后还扩展了PSPACE难题、参数复杂性等内容。这是两本被众多名校采用的演算法结构设计课程教材,强调用实际示例阐明枯燥的演算法理论,更注重演算法结构设计思路而非演算法复杂度分析。两本书采用新颖的课堂教学方式,通过分析真实世界的难题来激发演算法价值观。两位作者以一类清晰、直接的方式,指导学生自己分析和定义难题,并从中找出适用于给定场景的演算法结构设计原则。两本书鼓励读者更进一步入地理解演算法结构设计过程,探索演算法在软件工程的更广阔应用领域中的应用。
两本书具有以下特色:
强调难题分析和结构设计方法;遵循结构化课堂教学法,引导学生掌握难题方式化、演算法结构设计和演算法分析的全过程;通过一系列带解答的难题,展示软件工程家结构设计和应用演算法的过程;包含 200 多道作业题,其中许多题目出自 Yahoo! 和 Oracle 等公司;提供更多广泛用于处理 NP 困难难题和随机应用的演算法,那些是极其重要的算法主题。从《演算法结构设计》里你能学习到什么?
两本书适用于这样的学生:他们应该已经学完了基于编程的两学年软件工程引导课程(标准的“CS1/CS2”课程),已编写过实现基本上演算法的程序,操作过离散结构(树和图),并应用过基本上的数据结构(如数组、列表、队列和堆栈)。因为 CS1/CS2 与第一门演算法课程之间的衔接并不是完全标准的,所以我们在两本书开始介绍了许多自包含的主题,某些院校中学过 CS1/CS2 的学生会很熟悉那些内容,但其他院校可能将那些内容放在第一门演算法课程的课堂教学大纲中。因此,那些内容既能用于复习,也能当作新内容处理。我们加入那些内容,是希望两本书适用于更广泛的课程,并在假设的预备知识方面更灵活。
按照上述思路,我们利用了许多软件工程和相关应用领域的难题来开发基本上的演算法结构设计控制技术。这里列出许多有代表性的例子,我们相当详细地讨论了来自下列应用领域的应用,包括系统和网络的插件(缓存、交换、互联网上的域间路由器),人工智能(规划、博弈、霍普菲尔德网络),计算机视觉(图像分割),数据挖掘(变更点检测、聚类),运筹学(航线调度),以及计算生物学(序列比对、RNA 二级结构)。
计算无解性的概念,特别是 NP 完全性,在两本书中起着重要作用。这与我们如何考虑演算法结构设计的整个过程是一致的。有时,在应用应用领域再次出现的有趣难题存在有效的软件系统,而有时候它能被证明是 NP 完全的。为了全面考察新的演算法难题,现代人应该能够同样熟练地探索这三个方面。由于软件工程中的许多自然难题都是 NP 完全的,因此开发处理无解难题的方法已成为演算法研究中的一个关键难题。两本书以很大篇幅反映了这一主题。不应将发现难题是 NP 完全的看作故事的结束,而应该将其看作是对我们开始寻找近似演算法、启发式局部搜寻控制技术或易解的特殊情况的鼓励。我们对这 3 种方法都进行了广泛的探讨。
详细目录
作者简介
乔恩·克莱因伯格(Jon Kleinberg),康奈尔大学软件工程教授。他于1996年从麻省理工学院获得博士学位。他荣获过美国国家科学基金会事业奖、海军研究局青年研究员奖、IBM 杰出创新奖和美国国家科学院创新研究奖等众多奖项。 他的研究集中在演算法上,特别是与网络结构和信息相关的演算法,以及那些演算法在信息科学、优化、数据挖掘以及计算生物学等方面的应用。
伊娃·塔多斯(Éva Tardos),康奈尔大学软件工程教授。她是美国艺术与科学学院院士、ACM会士。她荣获过美国国家科学基金会总统青年研究员奖和富尔克森奖等众多奖项。
她的研究兴趣主要集中在图和网络难题的演算法结构设计和分析上。她因在网络流演算法和网络难题的近似演算法方面的工作而闻名。她最近的工作重点是演算法博弈论。
从这里就开启你的演算法之旅吧!希望本篇文章能帮助到您,祝您阅读愉快!