英文版算法设计参考书:深入理解数据结构后的学习宝典

需积分: 10 9 下载量 131 浏览量 更新于2024-07-18 2 收藏 4.79MB PDF 举报
"《算法设计英文版》是一本深度剖析和实践算法理论的专业书籍,适合在掌握一定数据结构基础后进一步提升算法设计能力的学习者使用。该书由经验丰富的Acquisitions Editor Matt Goldstein主导项目编辑工作,Maite Suarez-Rivas负责具体实施,Marilyn Lloyd担任生产监督,确保项目的高效进行。Marketing团队由Michelle Brown担任经理,Jake Zavracky协助市场协调,而Windfall Software则提供了项目管理支持。 本书采用Windfall Software的ZzT技术进行编排,保证了内容的专业性和易读性。Carol Leyba负责文字校对,确保语言准确无误,而Dartmouth Publishing的专业技术人员提供了技术插图,使得抽象的概念更加生动易懂。Jennifer McClain担任了最终的校对工作,保证了内容的准确性。Indexer Ted Laux精心编制索引,方便读者快速查找所需信息。 封面设计出自Joyce Cosentino Wells之手,配以Tim Laman拍摄的非洲织布鸟合作筑巢的照片,体现了生物学与计算机科学的巧妙融合。印刷和制造由Caroline Fell负责,通过Courier Westford完成,同时,读者可以通过Addison-Wesley的官方网站http://www.aw-bc.com/computing获取更多关于此系列图书的最新资讯。 值得注意的是,书中所提及的产品名称和商标多处使用,通常代表制造商或销售商对其产品独特的标识。在符合法律规定的前提下,这些标志被标注为全大写或首字母大写,体现了尊重知识产权的原则。 书中包含的实际程序和应用程序,不仅展示了理论知识的应用,还鼓励读者动手实践,提升编程技能。整体而言,《算法设计英文版》是一部兼具理论深度与实践指导价值的权威之作,是计算机科学专业人员和高级学习者不可或缺的学习资料。"
2018-09-19 上传
英文版 算法设计 Preface Algorithmic ideas are pervasive, and their reach is apparent in examples both within computer science and beyond. Some of the major shifts in Internet routing standards can be viewed as debates over the deficiencies of one shortest-path algorithm and the relative advantages of another. The basic notions used by biologists to express similarities among genes and genomes have algorithmic definitions. The concerns voiced by economists over the feasibility of combinatorial auctions in practice are rooted partly in the fact that these auctions contain computationally intractable search problems as special cases. And algorithmic notions aren’t just restricted to well-known and longstanding problems; one sees the reflections of these ideas on a regular basis, in novel issues arising across a wide range of areas. The scientist from Yahoo! who told us over lunch one day about their system for serving ads to users was describing a set of issues that, deep down, could be modeled as a network flow problem. So was the former student, now a management consultant working on staffing protocols for large hospitals, whom we happened to meet on a trip to New York City. The point is not simply that algorithms have many applications. The deeper issue is that the subject of algorithms is a powerful lens through which to view the field of computer science in general. Algorithmic problems form the heart of computer science, but they rarely arrive as cleanly packaged, mathematically precise questions. Rather, they tend to come bundled together with lots of messy, application-specific detail, some of it essential, some of it extraneous. As a result, the algorithmic enterprise consists of two fundamental components: the task of getting to the mathematically clean core of a problem, and then the task of identifying the appropriate algorithm design techniques, based on the structure of the problem. These two components interact: the more comfortable one is with the full array of possible design techniques, the more one starts to recognize the clean formulations that lie within messy problems out in the world. At their most effective, then, algorithmic ideas do not just provide solutions to well-posed problems; they form the language that lets you cleanly express the underlying questions. The goal of our book is to convey this approach to algorithms, as a design process that begins with problems arising across the full range of computing applications, builds on an understanding of algorithm design techniques, and results in the development of efficient solutions to these problems. We seek to explore the role of algorithmic ideas in computer science generally, and relate these ideas to the range of precisely formulated problems for which we can design and analyze algorithms. In other words, what are the underlying issues that motivate these problems, and how did we choose these particular ways of formulating them? How did we recognize which design principles were appropriate in different situations? In keeping with this, our goal is to offer advice on how to identify clean algorithmic problem formulations in complex issues from different areas of computing and, from this, how to design efficient algorithms for the resulting problems. Sophisticated algorithms are often best understood by reconstructing the sequence of ideas—including false starts and dead ends—that led from simpler initial approaches to the eventual solution. The result is a style of exposition that does not take the most direct route from problem statement to algorithm, but we feel it better reflects the way that we and our colleagues genuinely think about these questions.