演算法與資料結構:計算的科學

來源:互聯網
上載者:User
演算法與資料結構:計算的科學摘自:《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.

到目前為止,資料對象被看成一個固定的整體,全由其類型指定。資料對象的內部結構不會改變。不過有一些問題確實需要訪問和操控資料對象內部各子物件…………本部分就是講述操控資料對象內部各子物件技術。這種內部分可訪問的新資料對象被叫作資料結構:內部對象可添加、刪除、重組和查詢。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.