`
buliedian
  • 浏览: 1259322 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

算法与数据结构:计算的科学

阅读更多

算法与数据结构:计算的科学

摘自:《Algorithms and Data Structures: The Science of Computing 》by Douglas Baldwin and Greg W. Scragg
刘建文略译(http://blog.csdn.net/keminlau

Charles River Media © 2004 (640 pages)

ISBN:1584502509

Back Cover

While many computer science textbooks are confined to teaching programming code and languages, Algorithms and Data Structures: The Science of Computing takes a step back to introduce and explore algorithms -- the content of the code. Focusing on three core topics: design (the architecture of algorithms), theory (mathematical modeling and analysis), and the scientific method (experimental confirmation of theoretical results), the book helps students see that computer science is about problem solving, not simply the memorization and recitation of languages. Unlike many other texts, the methods of inquiry are explained in an integrated manner so students can see explicitly how they interact. Recursion and object oriented programming are emphasized as the main control structure and abstraction mechanism, respectively, in algorithm design.

很多计算机科学教科书都一开始就讲授(并且只局限于讲授)如何用编程语言编写代码,这是不够的。本书的作为知识的补充,退一步,讲讲代码的实质——算法。 本书集中论述三个主题:设计(算法的架构)、理论(数学模型和分析)和科学方法(理论成果的实证)。本书提醒同学们计算机科学是关于问题解决的科学,而不 是简单的对某种编程语言的死记硬背。
另外,本书还特意对质询方法(methods of inquiry)进行系统全面的解释,让同学们注意质询方法的区别与工作原理。递归和面向对象编程分别是讨论算法设计时重点的[控制结构 ]和[抽象机制 ]。

Preface

Algorithms and Data Structures: The Science of Computing (which we usually refer to simply as The Science of Computing) is about understanding computation. We see it as a distinct departure from previous second-course computer science texts, which emphasize building computations. The Science of Computing develops understanding by coupling algorithm design to mathematical and experimental techniques for modeling and observing algorithms' behavior. Its attention to rigorous scientific experimentation particularly distinguishes it from other computing texts. The Science of Computing introduces students to computer science's three core methods of inquiry: design, mathematical theory, and the scientific method. It introduces these methods early in the curriculum, so that students can use them throughout their studies. The book uses a strongly hands-on approach to demonstrate the importance of, and interactions between, all three methods.

本书的主要目标是理解什么是计算,而不像其它图书集中关注如何构建计算。为了达到理解计算的本质,本书耦合(coupling)算法设计与数学方法和实验 技术,对算法行为进行捕捉和建模。与一般的教材不一样,本书特别注重学术的严谨性。本书给同学们介绍计算机科学中三个核心研究方法:设计、数学理论和科学 方法。这三个研究方法将用于同学的整个学业,所以越早熟悉越有裨益。

ORGANIZATION OF THIS BOOK

The Science of Computing has four Parts. The titles of those parts, while descriptive, can be misleading if considered out of context. All three methods of inquiry are addressed in every part, but the emphasis shifts as students mature.

本书分为四部分,如果不考虑上下文,光看每部分的标题会有被误导的可能。那三大研究方法会出现在每一部分,只不过会越来越深入。

For example, Part I: The Science of Computing's Three Methods of Inquiry has four chapters, the first of which is an introduction to the text in the usual form. It is in that chapter that we introduce the first surprise of the course: that the obvious algorithm may not be the best. The other three chapters serve to highlight the three methods of inquiry used throughout this text. These chapters are the only place where the topics are segregated-all subsequent chapters integrate topics from each of the methods of inquiry.

比如,第一个部分--计算机科学的三种研究方法--有四章,第一章是一般的简介,而在这一章我们引入第一个让人震惊的事实,就是备受推崇的算法常常都不是最佳的。余下的三章分别讲述那三种研究方法。这三章也本书中唯一独立地分别讲述三种研究方法,接下来的章节都结合这三种研究方法进行讲述。

The central theme of Part II: Program Design is indeed the design of programs. It reviews standard control structures, but treats each as a design tool for solving certain kinds of problems, with mathematical techniques for reasoning about its correctness and performance, and experimental techniques for confirming the mathematical results. Recursion and related mathematics (induction and recurrence relations) are the heart of this part of the book.

第二部分的主轴程序的设计。本部分复述了一些常用的控制结构,不过我们把这些控制结构看成处理一种特定类型问题的工具对待,并用数学知识推理它的正确性与效率,用实践技术验证这些数学结论。递归和相关数学知识(归纳和递推关系)是这部分的核心内容。

Armed with these tools, students are ready for Part III: Data Structures (the central topic of many CS 2 texts). The tools related to algorithm analysis and to recursion, specifically, can be applied directly to the development of recursively defined data structures, including trees, lists, stacks, queues, hash tables, and priority queues. We present these structures in a manner that continues the themes of Parts I and II: lists as an example of how ideas of repetition and recursion (and related analytic techniques) can be applied to structuring data just as they structured control; stacks and queues as adaptations of the list structure to special applications; trees as structures that improve theoretical and empirical performance; and hash tables and priority queues as case studies in generalizing the previous ideas and applying them to new problems.

有了以上的工具的武装,同学们可以开始下一部分--第三部分:数据结构。与算法分析相关,特别地与递归相关的工具(知识)可直接用来创建递归定义的数据结构,包括树、列表、栈、队列、散列表和优先队列。我们以承接第一二部分的主题的方式继续讲述这些数据结构:就像流程控制可被结构化一样,数据也可以被结构化;列表就是一种如何利用重复和循环递归的思想(和相关的分析技术)结构化数据的例子;栈和队列是为特殊应用而调整的列表结构;(有层次的结构)树在理论上和实践上可提高(算法的)性能;而散列表和优先队列则是一般化前面的思想(KEMIN:就是数据可结构化并根具体问题作相应的调整)并应用到新问题的一个很好的案例。

Finally, Part IV: The Limits of Computer Science takes students through material that might normally be reserved for later theory courses, using the insights that students have developed for both algorithms and data structures to understand just how big some problems are and the recognition that faster computers will not solve all problems.

最后,第四部分--计算机科学的极限--将带给同学们一些一般保留给后续理论课的材料,目的为了掌握数据结构和算法的同学们能够理解有一些问题的难度到底有多大,并且意识到即便是高性能计算机也不能解决所有问题。

Part I: The Science of Computing's Three Methods of Inquiry

CHAPTER LIST
Chapter 1: What is the Science of Computing? 什么是计算科学?
Chapter 2: Abstraction: An Introduction to Design
Chapter 3: Proof: An Introduction to Theory
Chapter 4: Experimentation: An Introduction to the Scientific Method
Does it strike you that there's a certain self-contradiction in the term "computer science"? "Computer" refers to a kind of man-made machine; "science" suggests discovering rules that describe how some part of the universe works. "Computer science" should therefore be the discovery of rules that describe how computers work. But if computers are machines, surely the rules that determine how they work are already understood by the people who make them. What's left for computer science to discover?

你有否觉得“计算机科学”这个词有点自相矛盾的呢?“计算机”指一种人造机器;而“科学”是指发掘宇宙间事物的运动规律。从而“计算机科学”则是发掘计算 机的运动规律了。但是如果计算机是一台可运行的机器,那么人们在制造它的时候不是已经掌握了它的运动规律了吗,还有什么东西留给计算机科学发掘?

The problem with the phrase "computer science" is its use of the word "computer." "Computer" science isn't the study of computers; it's the study of computing, in other words, the study of processes for mechanically solving problems. The phrase "science of computing" emphasizes this concern with general computing processes instead of with machines.[1] [1]In fact, many parts of the world outside the United States call the field "informatics," because it is more concerned with information and information processing than with machines.

“计算机科学”的问题出在“计算机”上。“计算机”科学不是研究计算机,而是研究计算(computing),换句话说,是研究机械地(自动地)解决问题的过程。因此,“计算的科学”比机器的科学更中肯。很多国家干脆叫这一领域为信息科学,用信息科学或信息处理也比机器来得中肯。

The first four chapters of this book explain the idea of "processes" that solve problems and introduce the methods of inquiry with which computer scientists study those processes. These methods of inquiry include designing the processes, mathematically modeling how the processes should behave, and experimentally verifying that the processes behave in practice as they should in theory.

Part III: Introduction to Data Structures

CHAPTER LIST
Chapter 11: Lists
Chapter 12: Queues and Stacks
Chapter 13: Binary Trees
Chapter 14: Case Studies in Design: Abstracting Indirection
The emphasis of the first half of this text has been on actions (methods or algorithms): types of actions, defining new actions, predicting results, and evaluating actions. But the objects manipulated by algorithms can be quite interesting in their own right. In fact some algorithms all but require new perspectives on the nature of objects. This section expands the concept of object and investigates the implications of that expansion on the algorithms that manipulate them.

本书的前半部分集中关注“动作”(actions 方法或算法):动作的类型、定义新动作、对结果预测和对动作进行评估。但是算法所操作的数据对象本身也有着很有趣的性质或规则…………本部分将展开(算法所操作的)数据对象的概念(KEMIN:一个概念的定义常常使用间接概念来定义,而当读者对间接概念仍不了解的时候必须进一步对间接概念进行释义。释义就是这里的展开吧),并研究这些被展开的概念在算法中的含意。

Thus far, objects have been viewed as fixed entities, fully specified by their class. The internal structure of an object does not change over time. A robot can't grow a new wheel, develop a new color palette, or rearrange its internal components. But some problems do require such references to or manipulation of the relationship of an object's subparts to each other or to the object as a whole. Part III describes techniques that enable an object to change in important ways. The resulting object classes with internally addressable structures are called data structures: subparts can be added, removed, reordered, or queried. The three methods of inquiry developed in Parts I and II continue to provide the cornerstone of the investigation, but the four chapters of Part III also add to that collection of tools to describe four classes of data structures and conclude by using those tools in new situations, developing new problem solutions.

到目前为止,数据对象被看成一个固定的整体,全由其类型指定。数据对象的内部结构不会改变。不过有一些问题确实需要访问和操控数据对象内部各子对象…………本部分就是讲述操控数据对象内部各子对象技术。这种内部分可访问的新数据对象被叫作数据结构:内部对象可添加、删除、重组和查询。

分享到:
评论

相关推荐

    算法与数据结构.pdf

    《算法与数据结构》是一门深入探讨计算机科学核心概念的课程,由北京大学信息科学技术学院的王厚峰教授讲授。课程内容重点介绍了算法和数据结构的基本概念、理论及其在实际应用中的重要性。王教授的课程不仅深入浅出...

    算法与数据结构:1-绪论.pdf

    算法与数据结构绪论 数据结构是计算机科学中的一门基础学科,它研究如何组织和存储数据,以便更好地进行数据的存储、处理和检索。数据结构的学科地位非常重要,它是计算机科学的专业基础和理论基础。 数据结构的...

    算法与数据结构_张乃孝

    《算法与数据结构_张乃孝》是一本深入探讨计算机科学基础领域的经典教材,由知名专家张乃孝编著。本书旨在帮助初学者理解和掌握算法与数据结构的核心概念,为编程和软件开发打下坚实的基础。 算法是解决问题或执行...

    算法与数据结构-C语言版

    《算法与数据结构-C语言版》是针对计算机科学领域中至关重要的两个概念——算法和数据结构的深入学习资料。陈守孔版的课程通常以其详尽的解释和实用的示例而闻名,对于初学者和有经验的程序员来说都是宝贵的学习资源...

    算法与数据结构考研试题精析(第三版)

    算法与数据结构是计算机科学与技术专业的核心课程之一。算法是解决特定问题求解步骤的描述,在计算机中为一系列程序指令的集合,数据结构则是算法运算的基础,它关注于数据的逻辑结构、存储结构以及相关操作。 在这...

    计算机算法设计及数据结构离散性研究.pdf

    计算机算法设计和数据结构离散性研究是计算机科学中的核心议题,涉及如何使用数学方法将信息转换为计算机能够识别和处理的编码程序。研究此领域不仅对理解计算机系统的运行机制至关重要,而且对提升数据处理效率和...

    算法与数据结构考研试题精析【第3版】【书签完整】

    《算法与数据结构考研试题精析》第三版是针对计算机科学与技术专业研究生入学考试的一本重要参考资料。这本书深入浅出地讲解了算法与数据结构的基础理论和实践应用,旨在帮助考生全面掌握这一核心领域的知识。书签...

    算法与数据结构--科学计算

    算法与数据结构--科学计算: Algorithms and Data Structures: The Science of Computing CHM格式,文件大小约为11M

    数据结构算法与应用-C++语言描述_Sahni著

    数据结构和算法是计算机科学的基础,对于理解和设计高效的软件至关重要。C++作为一种强大的编程语言,因其面向对象的特性,常被用于实现复杂的数据结构和算法。《数据结构算法与应用-C++语言描述》这本书,由Sahni著...

    算法与数据结构 张乃孝版

    《算法与数据结构 张乃孝版》是关于计算机科学中的核心主题——算法和数据结构的一本经典教材。这本书由知名学者张乃孝撰写,旨在深入浅出地讲解这两个领域的重要概念,帮助读者掌握计算机科学的基础知识。 算法是...

    北航:算法与数据结构

    数据结构与算法是计算机科学的基础,对于理解和设计高效的软件至关重要。北航(北京航空航天大学)作为国内顶尖的工科院校,其在计算机领域的教学资源深受业界认可。这个压缩包中的内容很可能包含了北航教授们精心...

    数据结构及计算机经典算法

    在计算机科学领域,数据结构和算法是至关重要的基础,它们构成了软件工程的基石。"数据结构及计算机经典算法"这个主题涵盖了多个核心概念,旨在帮助理解如何高效地存储和处理数据,以及如何设计和分析计算过程。以下...

    C++数据结构与算法 (第4版)

    根据提供的文件信息,这里主要关注的是“C++数据结构与算法(第4版)”这一主题,虽然实际内容并未给出具体章节或知识点,但我们可以基于标题、描述以及部分已知内容来推测书中可能涵盖的关键知识点。 ### C++数据...

    算法与数据结构 习题答案共十二套

    《算法与数据结构 习题答案共十二套》是一份包含多套算法与数据结构练习题及答案的资源集合,旨在帮助学习者深入理解和掌握这一关键领域的知识。这份压缩包中包含了十套算法与数据结构的常规习题以及两套模拟试题,...

    算法与数据结构c语言版全套完整版教学课件.ppt

    算法与数据结构C语言版全套完整版教学课件.ppt 本资源是关于算法与数据结构的教学课件,主要讲解数据结构的基本概念、算法设计与实现等内容。下面是对该课件的详细知识点总结: 1. 数据结构的基本概念 数据结构是...

    算法与数据结构考研试题精析第二版.rar

    《算法与数据结构考研试题精析第二版》是针对计算机科学与技术专业研究生入学考试的一本重要参考资料。这本书深入浅出地讲解了算法与数据结构的基础理论和实践应用,旨在帮助考生全面掌握这一领域的核心知识,提升...

    算法与数据结构实验报告

    **算法与数据结构实验报告** 本实验报告涵盖了算法与数据结构的重要概念,旨在通过实践加深学生对这些基础知识的理解。在计算机科学中,算法是解决问题的精确步骤,而数据结构则是组织和存储数据的方式,这两者构成...

    武汉大学 C#数据结构与算法

    《武汉大学 C#数据结构与算法》是一门深入探讨计算机科学基础的课程,主要针对C#编程语言,涵盖了数据结构和算法这两个核心概念。在学习这门课程时,你将有机会掌握C#语言如何用于实现高效的数据管理和计算方法。 1...

Global site tag (gtag.js) - Google Analytics