![]() ![]() |
算法設計與分析基礎 (第3版)(影印版) ![]()
《算法設計與分析基礎 (第3版)(影印版)》在講述算法設計技術時采用了新的分類方法,在討論分析方法時條分縷析,形成了連貫有序、耳目一新的風格。為便于學生掌握,本書涵蓋算法入門課程的全部內容,更注重對概念(而非形式)的理解。書中通過一些流行的謎題來激發(fā)學生的興趣,幫助他們加強和提高解決算法問題的能力。每章小結、習題提示和詳細解答,形成了非常鮮明的教學特色。
歷經十年數百所高校教學實踐的算法入門經典。算法是思維的藝術,是數學之美的完美體現(xiàn),是計算機和信息科學的靈魂,更是優(yōu)秀程序員的安身立命之本!端惴ㄔO計與分析基礎 (第3版)(影印版)》將算法視為解決問題的工具,通過作者獨創(chuàng)的、具有里程碑意義的新型分類法彌補了傳統(tǒng)算法設計技術分類法的缺陷,用深入淺出的語言和新穎的實例與謎題,詮釋了何為算法、算法的分類、算法幕后的思想、算法的效率,抽絲剝繭、條分縷析地探索了算法設計與分析過程。
Anany Levitin博士,美國維拉諾瓦大學教授,畢業(yè)于莫斯科國立大學并獲得數學碩士學位。他擁有耶路撒冷希伯來大學數學博士學位和美國肯塔基大學計算機科學碩士學位。他的著作《算法設計與分析基礎》已經被翻譯為中文、俄文、希臘文和韓文,并被全球數百所高校廣泛用作教材。目前,Levitin博士在美國維拉諾瓦大學講授“算法設計與分析”課程。他的另一本著作《算法謎題》已經于2011年秋出版。
Anany Levitin,美籍猶太人,維拉諾瓦大學(Villanova)計算機科學系教授。他的論文“算法設計技術新途徑:彌補傳統(tǒng)分類法的缺憾”(A New Road Mpa of Algorithm Design Techniques: Picking Up Where the Traditional Classfication Leaves Off)深受業(yè)內好評,并享有廣泛的聲譽。他提出的這種新分類方法涵蓋眾多經典算法,開創(chuàng)了傳統(tǒng)分類無法以一致方式介紹這些算法的先河。作為通用的問題解決工具,算法設計技術的應用很廣,尤其適用于解決“狼,羊,白菜”問題和旅行商問題之類的流行謎題。 因為他對算法教育所做出的杰出貢獻,Levitin教授曾多次受邀在SIGCSE(Computer Science Education,計算機教育) 全球大會上發(fā)表演講,此大會每三年才舉行一次。 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
你還可能感興趣
我要評論
|