书籍详情
算法设计与分析基础(影印版)
作者:(美)Anany Levitin著;潘彦译;潘彦译
出版社:清华大学出版社
出版时间:2004-06-01
ISBN:9787302086567
定价:¥45.00
购买这本书可以去
内容简介
本书利用了作者所开发的算法设计技术的最新分类,这种新的分类方法涵盖了众多经典算法,而采用过去的分类无法以一种一致的方式介绍这些算法。作为通用的问题解决工具,算法设计技术得以广泛的应用。尤其是将其应用到解决类似封面上那些流行的谜题时,会显示出其巨大的威力。本书包含了超过600个练习,包括一些利用万维多资源的练习。书中还包括了针对所有练习的提示,以帮助读者完全这些练习。AnanyLevitin是Villanova大学计算机科学系的教授。于2000年4月发表了“算法设计技术新途径”一文,获得业内高度认同。本书利用了作者所开发的算法设计技术的最新分类,这种新的分类方法涵盖了众多经典算法,而采用过去的分类无法以一种一致的方式介绍这些算法。作为通用的问题解决工具,算法设计技术得以广泛的应用。尤其是将其应用到解决类似封面上那些流行的谜题时,会显示出其巨大的威力。本书包含了超过600个练习,包括一些利用万维多资源的练习。书中还包括了针对所有练习的提示,以帮助读者完全这些练习。
作者简介
Anany Lcvitin 是Villanova大学计算科学系的教授。他的论文《算法设计技术新途径:弥补传统分类法的缺憾》(A new road map of algorithm design techniques;picking up where the traditional classiflcation leaves off )受到极高的评价。在SIGCSE会议上,作者做过多次关于算法教学的演讲。
目录
Preface
1 Introduction
1.1 Notion of Algorithm
Exercises 1.1
1.2 Fundamentals of Algorithmic Problem Solving
Understanding the Problem
Ascertaining the Capabilities of a Computational Device
Choosing between Exact and Approximate Problem Solving
Deciding on Appropriate Data Structures
Algorithm Design Techniques
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
Exercises 1.4
Summary
2 Fundamentals of the Analysis of Algorithm Efficiency
2.1 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
O-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: Fibonacci Numbers
Explicit Formula for the nth Fibonacci Number
Algorithms for Computing Fibonacci Numbers
Exercises 2.5
2.6 Empirical Analysis of Algorithms
Exercises 2.6
2.7 Algorithm Visualization
Summary
3 Brute Force
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
Summary
4 Divide-and-Conquer
4.1 Mergesort
Exercises 4.1
4.2 Quicksort
Exercises 4.2
4.3 Binary Search
Exercises 4.3
4.4 Binary Tree Traversals and Related Properties
Exercises 4.4
4.5 Multiplication of Large Integers and Strassen''s Matrix Multiplication
Multiplication of Large Integers
Strassen''s Matrix Multiplication
Exercises 4.5
4.6 Closest-Pair and Convex-Hull Problems by Divide-and-Conquer
Closest-Pair Problem
Convex-Hull Problem
Exercises 4.6
Summary
5 Decrease-and-Conquer
5.1 Insertion Sort
Exercises 5.1
5.2 Depth-First Search and Breadth-First Search
Depth-First Search
Breadth-First Search
Exercises 5.2
5.3 Topological Sorting
Exercises 5.3
5.4 Algorithms for Generating Combinatorial Objects
Generating Permutations
Generating Subsets
Exercises 5.4
5.5 Decrease-by-a-Constant-Factor Algorithms
Fake-Coin Problem
Multiplication a la Russe
Josephus Problem
Exercises 5,5
5.6 Variable-Size-Decrease Algorithms
Computing e Median and the Selection Problem
Interpolation Search
Searching and Insertion in a Binary Search Tree
Exercises 5.6
Summary
6 Transform-and-Conquer
6.1 Presorting
Exercises 6.1
6.2 Gaussian Elimination
LU Decomposition and Other Applications
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 lime Tradeoffs
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 Computing a Binomial Coefficient
Exercises 8.1
8.2 Warshall''s and Floyd''s Algorithms
Warshall''s Algorithm
Floyd''s Algorithm for the Ali-Pairs Shortest-Paths Problem
Exercises 8.2
8.3 Optimal Binary Search Trees
Exercises 8.3
8.4 The Knapsack Problem and Memory Functions
Memory Functions
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
Exercises 9.4
Summary
10 Limitations of Algorithm Power
10.1 Lower-Bound Arguments
Trivial Lower Bounds
Information-Theoretic Arguments
Adversary Arguments
Problem Reduction
Exercises 10.1
10.2 Decision Trees
Decision Trees for Sorting Algorithms
Decision Trees for Searching a Sorted Array
Exercises 10.2
10.3 P, NP, and NP-complete Problems
P and NP Problems
NP-complete Problems
Exercises 10.3
10.4 Challenges of Numerical Algorithms
Exercises 10.4
Summary
44
11 Coping with the Limitations of Algorithm Power
11.1 Backtracking
n-Queens Problem
Hamiltonian Circuit Problem
Subset-Sum Problem
General Remarks
Exercises 11,1
11.2 Branch-and-Bound
Assignment Problem
Knapsack Problem
Traveling Salesman Problem
Exercises 11,2
11.3 Approximation Algorithms for NP-hard Problems
Approximation Algorithms for the Traveling Salesman Problem
Approximation Algorithms for the Knapsack Problem
Exercises 11.3
11.4 Algorithms for Solving Nonlinear Equations
Bisection Method
Method of False Position
Newton''s Method
Exercises 11.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 arid Recurrence Relations
Methods for Solving Recurrence Relations
Common Recurrence Types in Algorithm Analysis
Bibliography
Hints to Exercises
Index
1 Introduction
1.1 Notion of Algorithm
Exercises 1.1
1.2 Fundamentals of Algorithmic Problem Solving
Understanding the Problem
Ascertaining the Capabilities of a Computational Device
Choosing between Exact and Approximate Problem Solving
Deciding on Appropriate Data Structures
Algorithm Design Techniques
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
Exercises 1.4
Summary
2 Fundamentals of the Analysis of Algorithm Efficiency
2.1 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
O-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: Fibonacci Numbers
Explicit Formula for the nth Fibonacci Number
Algorithms for Computing Fibonacci Numbers
Exercises 2.5
2.6 Empirical Analysis of Algorithms
Exercises 2.6
2.7 Algorithm Visualization
Summary
3 Brute Force
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
Summary
4 Divide-and-Conquer
4.1 Mergesort
Exercises 4.1
4.2 Quicksort
Exercises 4.2
4.3 Binary Search
Exercises 4.3
4.4 Binary Tree Traversals and Related Properties
Exercises 4.4
4.5 Multiplication of Large Integers and Strassen''s Matrix Multiplication
Multiplication of Large Integers
Strassen''s Matrix Multiplication
Exercises 4.5
4.6 Closest-Pair and Convex-Hull Problems by Divide-and-Conquer
Closest-Pair Problem
Convex-Hull Problem
Exercises 4.6
Summary
5 Decrease-and-Conquer
5.1 Insertion Sort
Exercises 5.1
5.2 Depth-First Search and Breadth-First Search
Depth-First Search
Breadth-First Search
Exercises 5.2
5.3 Topological Sorting
Exercises 5.3
5.4 Algorithms for Generating Combinatorial Objects
Generating Permutations
Generating Subsets
Exercises 5.4
5.5 Decrease-by-a-Constant-Factor Algorithms
Fake-Coin Problem
Multiplication a la Russe
Josephus Problem
Exercises 5,5
5.6 Variable-Size-Decrease Algorithms
Computing e Median and the Selection Problem
Interpolation Search
Searching and Insertion in a Binary Search Tree
Exercises 5.6
Summary
6 Transform-and-Conquer
6.1 Presorting
Exercises 6.1
6.2 Gaussian Elimination
LU Decomposition and Other Applications
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 lime Tradeoffs
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 Computing a Binomial Coefficient
Exercises 8.1
8.2 Warshall''s and Floyd''s Algorithms
Warshall''s Algorithm
Floyd''s Algorithm for the Ali-Pairs Shortest-Paths Problem
Exercises 8.2
8.3 Optimal Binary Search Trees
Exercises 8.3
8.4 The Knapsack Problem and Memory Functions
Memory Functions
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
Exercises 9.4
Summary
10 Limitations of Algorithm Power
10.1 Lower-Bound Arguments
Trivial Lower Bounds
Information-Theoretic Arguments
Adversary Arguments
Problem Reduction
Exercises 10.1
10.2 Decision Trees
Decision Trees for Sorting Algorithms
Decision Trees for Searching a Sorted Array
Exercises 10.2
10.3 P, NP, and NP-complete Problems
P and NP Problems
NP-complete Problems
Exercises 10.3
10.4 Challenges of Numerical Algorithms
Exercises 10.4
Summary
44
11 Coping with the Limitations of Algorithm Power
11.1 Backtracking
n-Queens Problem
Hamiltonian Circuit Problem
Subset-Sum Problem
General Remarks
Exercises 11,1
11.2 Branch-and-Bound
Assignment Problem
Knapsack Problem
Traveling Salesman Problem
Exercises 11,2
11.3 Approximation Algorithms for NP-hard Problems
Approximation Algorithms for the Traveling Salesman Problem
Approximation Algorithms for the Knapsack Problem
Exercises 11.3
11.4 Algorithms for Solving Nonlinear Equations
Bisection Method
Method of False Position
Newton''s Method
Exercises 11.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 arid Recurrence Relations
Methods for Solving Recurrence Relations
Common Recurrence Types in Algorithm Analysis
Bibliography
Hints to Exercises
Index
猜您喜欢