算法設(shè)計(jì)與分析基礎(chǔ) (第3版)(影印版)
定 價(jià):79 元
- 作者:(美),Anany Levitin 著
- 出版時(shí)間:2013/5/1
- ISBN:9787302311850
- 出 版 社:清華大學(xué)出版社
- 中圖法分類(lèi):TP301.6
- 頁(yè)碼:596
- 紙張:膠版紙
- 版次:3
- 開(kāi)本:16K
《算法設(shè)計(jì)與分析基礎(chǔ) (第3版)(影印版)》在講述算法設(shè)計(jì)技術(shù)時(shí)采用了新的分類(lèi)方法,在討論分析方法時(shí)條分縷析,形成了連貫有序、耳目一新的風(fēng)格。為便于學(xué)生掌握,本書(shū)涵蓋算法入門(mén)課程的全部?jī)?nèi)容,更注重對(duì)概念(而非形式)的理解。書(shū)中通過(guò)一些流行的謎題來(lái)激發(fā)學(xué)生的興趣,幫助他們加強(qiáng)和提高解決算法問(wèn)題的能力。每章小結(jié)、習(xí)題提示和詳細(xì)解答,形成了非常鮮明的教學(xué)特色。
歷經(jīng)十年數(shù)百所高校教學(xué)實(shí)踐的算法入門(mén)經(jīng)典。算法是思維的藝術(shù),是數(shù)學(xué)之美的完美體現(xiàn),是計(jì)算機(jī)和信息科學(xué)的靈魂,更是優(yōu)秀程序員的安身立命之本!端惴ㄔO(shè)計(jì)與分析基礎(chǔ) (第3版)(影印版)》將算法視為解決問(wèn)題的工具,通過(guò)作者獨(dú)創(chuàng)的、具有里程碑意義的新型分類(lèi)法彌補(bǔ)了傳統(tǒng)算法設(shè)計(jì)技術(shù)分類(lèi)法的缺陷,用深入淺出的語(yǔ)言和新穎的實(shí)例與謎題,詮釋了何為算法、算法的分類(lèi)、算法幕后的思想、算法的效率,抽絲剝繭、條分縷析地探索了算法設(shè)計(jì)與分析過(guò)程。
Anany Levitin博士,美國(guó)維拉諾瓦大學(xué)教授,畢業(yè)于莫斯科國(guó)立大學(xué)并獲得數(shù)學(xué)碩士學(xué)位。他擁有耶路撒冷希伯來(lái)大學(xué)數(shù)學(xué)博士學(xué)位和美國(guó)肯塔基大學(xué)計(jì)算機(jī)科學(xué)碩士學(xué)位。他的著作《算法設(shè)計(jì)與分析基礎(chǔ)》已經(jīng)被翻譯為中文、俄文、希臘文和韓文,并被全球數(shù)百所高校廣泛用作教材。目前,Levitin博士在美國(guó)維拉諾瓦大學(xué)講授“算法設(shè)計(jì)與分析”課程。他的另一本著作《算法謎題》已經(jīng)于2011年秋出版。
Anany Levitin,美籍猶太人,維拉諾瓦大學(xué)(Villanova)計(jì)算機(jī)科學(xué)系教授。他的論文“算法設(shè)計(jì)技術(shù)新途徑:彌補(bǔ)傳統(tǒng)分類(lèi)法的缺憾”(A New Road Mpa of Algorithm Design Techniques: Picking Up Where the Traditional Classfication Leaves Off)深受業(yè)內(nèi)好評(píng),并享有廣泛的聲譽(yù)。他提出的這種新分類(lèi)方法涵蓋眾多經(jīng)典算法,開(kāi)創(chuàng)了傳統(tǒng)分類(lèi)無(wú)法以一致方式介紹這些算法的先河。作為通用的問(wèn)題解決工具,算法設(shè)計(jì)技術(shù)的應(yīng)用很廣,尤其適用于解決“狼,羊,白菜”問(wèn)題和旅行商問(wèn)題之類(lèi)的流行謎題。
因?yàn)樗麑?duì)算法教育所做出的杰出貢獻(xiàn),Levitin教授曾多次受邀在SIGCSE(Computer Science Education,計(jì)算機(jī)教育) 全球大會(huì)上發(fā)表演講,此大會(huì)每三年才舉行一次。
Anany Levitin教授目前的研究課題為“Do We Teach the Right Algorithm Design Techniques ?”
New to the Third Edition xvii
Preface xix
1Introduction
1.1 What Is an Algorithm?
Exercises 1.1
1.2 Fundamentals of Algorithmic Problem Solving
Understanding the Problem
Ascertaining the Capabilities of the Computational Device
Choosing between Exact and Approximate Problem Solving
Algorithm Design Techniques
Designing an Algorithm and Data Structures
Methods of Specifying an Algorithm
Proving an Algorithm's Correctness
Analyzing an Algorithm
Coding an Algorithm
Exercises 1.2
1.3 Important Problem Types
Sorting
Searching
String Processing
Graph Problems
Combinatorial Problems
Geometric Problems
Numerical Problems
Exercises 1.3
1.4 Fundamental Data Structures
Linear Data Structures
Graphs
Trees
Sets and Dictionaries
Exerises 1.4
Summary
2 Fundamentals of the Analysis of Algorithm Efficiency
2.1 The Analysis Framework
Measuring an Input's Size
Units for Measuring Running Time
Orders of Growth
Worst-Case, Best-Case, and Average-Case Efficiencies
Recapitulation of the Analysis Framework
Exercises 2.1
2.2 Asymptotic Notations and Basic Efficiency Classes
Informal Introduction
O-notation
-notation
-notation
Useful Property Involving the Asymptotic Notations
Using Limits for Comparing Orders of Growth
Basic Efficiency Classes
Exercises 2.2
2.3 Mathematical Analysis of Nonrecursive Algorithms
Exercises 2.3
2.4 Mathematical Analysis of Recursive Algorithms
Exercises 2.4
2.5 Example: Computing the nth Fibonacci Number
Exercises 2.5
2.6 Empirical Analysis of Algorithms
Exercises 2.6
2.7 Algorithm Visualization
Summary
3 Brute Force and Exhaustive Search
3.1 Selection Sort and Bubble Sort
Selection Sort
Bubble Sort
Exercises 3.1
3.2 Sequential Search and Brute-Force String Matching
Sequential Search
Brute-Force String Matching
Exercises 3.2
3.3 Closest-Pair and Convex-Hull Problems by Brute Force
Closest-Pair Problem
Convex-Hull Problem
Exercises 3.3
3.4 Exhaustive Search
Traveling Salesman Problem
Knapsack Problem
Assignment Problem
Exercises 3.4
3.5 Depth-First Search and Breadth-First Search
Depth-First Search
Breadth-First Search
Exercises 3.5
Summary
4 Decrease-and-Conquer
4.1 Insertion Sort
Exercises 4.1
4.2 Topological Sorting
Exercises 4.2
4.3 Algorithms for Generating Combinatorial Objects
Generating Permutations
Generating Subsets
Exercises 4.3
4.4 Decrease-by-a-Constant-Factor Algorithms
Binary Search
Fake-Coin Problem
Russian Peasant Multiplication
Josephus Problem
Exercises 4.4
4.5 Variable-Size-Decrease Algorithms
Computing a Median and the Selection Problem
Interpolation Search
Searching and Insertion in a Binary Search Tree
The Game of Nim
Exercises 4.5
Summary
5 Divide-and-Conquer
5.1 Mergesort
Exercises 5.1
5.2 Quicksort
Exercises 5.2
5.3 Binary Tree Traversals and Related Properties
Exercises 5.3
5.4 Multiplication of Large Integers and
Strassen's Matrix Multiplication
Multiplication of Large Integers
Strassen's Matrix Multiplication
Exercises 5.4
5.5 The Closest-Pair and Convex-Hull Problems
by Divide-and-Conquer
The Closest-Pair Problem
Convex-Hull Problem
Exercises 5.5
Summary
6 Transform-and-Conquer
6.1 Presorting
Exercises 6.1
6.2 Gaussian Elimination
LU Decomposition
Computing a Matrix Inverse
Computing a Determinant
Exercises 6.2
6.3 Balanced Search Trees
AVL Trees
2-3 Trees
Exercises 6.3
6.4 Heaps and Heapsort
Notion of the Heap
Heapsort
Exercises 6.4
6.5 Horner's Rule and Binary Exponentiation
Horner's Rule
Binary Exponentiation
Exercises 6.5
6.6 Problem Reduction
Computing the Least Common Multiple
Counting Paths in a Graph
Reduction of Optimization Problems
Linear Programming
Reduction to Graph Problems
Exercises 6.6
Summary
7 Space and Time Trade-Offs
7.1 Sorting by Counting
Exercises 7.1
7.2 Input Enhancement in String Matching
Horspool's Algorithm
Boyer-Moore Algorithm
Exercises 7.2
7.3 Hashing
Open Hashing (Separate Chaining)
Closed Hashing (Open Addressing)
Exercises 7.3
7.4 B-Trees
Exercises 7.4
Summary
8 Dynamic Programming
8.1 Three Basic Examples
Exercises 8.1
8.2 The Knapsack Problem and Memory Functions
Memory Functions
Exercises 8.2
8.3 Optimal Binary Search Trees
Exercises 8.3
8.4 Warshall's and Floyd's Algorithms
Warshall's Algorithm
Floyd's Algorithm for the All-Pairs Shortest-Paths Problem
Exercises 8.4
Summary
9 Greedy Technique
9.1 Prim's Algorithm
Exercises 9.1
9.2 Kruskal's Algorithm
Disjoint Subsets and Union-Find Algorithms
Exercises 9.2
9.3 Dijkstra's Algorithm
Exercises 9.3
9.4 Huffman Trees and Codes
Exercises 9.4
Summary
10 Iterative Improvement
10.1 The Simplex Method
Geometric Interpretation of Linear Programming
An Outline of the Simplex Method
Further Notes on the Simplex Method
Exercises 10.1
10.2 The Maximum-Flow Problem
Exercises 10.2
10.3 Maximum Matching in Bipartite Graphs
Exercises 10.3
10.4 The Stable Marriage Problem
Exercises 10.4
Summary
11 Limitations of Algorithm Power
11.1 Lower-Bound Arguments
Trivial Lower Bounds
Information-Theoretic Arguments
Adversary Arguments
Problem Reduction
Exercises 11.1
11.2 Decision Trees
Decision Trees for Sorting
Decision Trees for Searching a Sorted Array
Exercises 11.2
11.3 P, NP, and NP-Complete Problems
P and NP Problems
NP-Complete Problems
Exercises 11.3
11.4 Challenges of Numerical Algorithms
Exercises 11.4
Summary
12 Coping with the Limitations of Algorithm Power
12.1 Backtracking
n-Queens Problem
Hamiltonian Circuit Problem
Subset-Sum Problem
General Remarks
Exercises 12.1
12.2 Branch-and-Bound
Assignment Problem
Knapsack Problem
Traveling Salesman Problem
Exercises 12.2
12.3 Approximation Algorithms for NP-Hard Problems
Approximation Algorithms for the Traveling Salesman Problem
Approximation Algorithms for the Knapsack Problem
Exercises 12.3
12.4 Algorithms for Solving Nonlinear Equations
Bisection Method
Method of False Position
Newton's Method
Exercises 12.4
Summary
Epilogue
APPENDIX A
Useful Formulas for the Analysis of Algorithms
Properties of Logarithms
Combinatorics
Important Summation Formulas
Sum Manipulation Rules
Approximation of a Sum by a Definite Integral
Floor and Ceiling Formulas
Miscellaneous
APPENDIX B
Short Tutorial on Recurrence Relations
Sequences and Recurrence Relations
Methods for Solving Recurrence Relations
Common Recurrence Types in Algorithm Analysis
References
Hints to Exercises
Index