Algorithms Design Techniques And Analysis

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Algorithms Design Techniques And Analysis as PDF for free.

More details

  • Words: 1,300
  • Pages:
封面页 书名页 版权页 前言页 目录页 PART 1  Basic Concepts and Introduc tion  to Algorithms     Chapter 1  Basic Concepts in Al gorithmic Analysis         1.1  Introduction         1.2  Historical Background         1.3  Binary Search             1.3.1  Analysis of the  binary search algorithm         1.4  Merging Two Sorted Lis ts         1.5  Selection Sort         1.6  Insertion Sort         1.7  Bottom-Up Merge Sortin g             1.7.1  Analysis of bott om-up merge sorting         1.8  Time Complexity             1.8.1  Order of growth             1.8.2  The O-notation             1.8.3  The Ω-notation             1.8.4  The θ-notation             1.8.5  Examples             1.8.6  Complexity class es and the o-notation         1.9  Space Complexity         1.10  Optimal Algorithms         1.11  How to Estimate the R unning Time of an Algorithm             1.11.1  Counting the nu mber of iterations             1.11.2  Counting the fr equency of basic operations             1.11.3  Using recurrenc e relations         1.12  Worst case and averag e case analysis             1.12.1  Worst case anal ysis             1.12.2  Average case an alysis

        1.13  Amortized Analysis         1.14  Input Size and Proble m Instance         1.15  Exercises         1.16  Bibliographic Notes     Chapter 2  Mathematical Prelimi naries         2.1  Sets, Relations and Fu nctions             2.1.1  Sets             2.1.2  Relations                 2.1.2.1  Equivalenc e relations             2.1.3  Functions         2.2  Proof Methods             2.2.1  Direct proof             2.2.2  Indirect proof             2.2.3  Proof by contrad iction             2.2.4  Proof by counter example             2.2.5  Mathematical ind uction         2.3  Logarithms         2.4  Floor and Ceiling Func tions         2.5  Factorial and Binomial  Coefficients             2.5.1  Factorials             2.5.2  Binomial coeffic ients         2.6  The Pigeonhole Princip le         2.7  Summations             2.7.1  Approximation of  summations by integration         2.8  Recurrence Relations             2.8.1  Solution of line ar homogeneous recurrences             2.8.2  Solution of inho mogeneous recurrences             2.8.3  Solution of divi de-and-conquer recurrences                 2.8.3.1  Expanding  the recurrence                 2.8.3.2  Substituti

on                 2.8.3.3  Change of  variables         2.9  Exercises     Chapter 3  Data Structures         3.1  Introduction         3.2  Linked Lists             3.2.1  Stacks and queue s         3.3  Graphs             3.3.1  Representation o f graphs             3.3.2  Planar graphs         3.4  Trees         3.5  Rooted Trees             3.5.1 Tree traversals         3.6  Binary Trees             3.6.1  Some quantitativ e aspects of binary trees             3.6.2  Binary search tr ees         3.7  Exercises         3.8  Bibliographic Notes     Chapter 4  Heaps and the Disjoi nt Sets Data Structures         4.1  Introduction         4.2  Heaps             4.2.1  Operations on he aps             4.2.2  Creating a heap             4.2.3  Heapsort             4.2.4  Min and max heap s         4.3  Disjoint Sets Data Str uctures             4.3.1  The union by ran k heuristic             4.3.2  Path compression             4.3.3  The union-find a lgorithms             4.3.4  Analysis of the  union-find algorithms         4.4  Exercises         4.5  Bibliographic Notes PART 2  Techniques Based on Recursi on

    Chapter 5  Induction         5.1  Introduction         5.2  Two Simple Examples             5.2.1  Selection sort             5.2.2  Insertion sort         5.3  Radix Sort         5.4  Integer Exponentiation         5.5  Evaluating Polynomials (Horner s Rule)         5.6  Generating Permutation s             5.6.1  The first algori thm             5.6.2  The second algor ithm         5.7  Finding the Majority E lement         5.8  Exercises         5.9  Bibliographic Notes     Chapter 6  Divide and Conquer         6.1  Introduction         6.2  Binary Search         6.3  Mergesort             6.3.1  How the algorith m works             6.3.2  Analysis of the  mergesort algorithm         6.4  The Divide and Conquer  Paradigm         6.5  Selection: Finding the  Median and the kth Smallest Elemen t             6.5.1  Analysis of the  selection algorithm         6.6  Quicksort             6.6.1  A partitioning a lgorithm             6.6.2  The sorting algo rithm             6.6.3  Analysis of the  quicksort algorithm                 6.6.3.1  The worst  case behavior                 6.6.3.2  The averag e case behavior             6.6.4  Comparison of so

rting algorithms         6.7  Multiplication of Larg e Integers         6.8  Matrix Multiplication             6.8.1  The traditional  algorithm             6.8.2  Recursive versio n             6.8.3  Strassen s algor ithm             6.8.4  Comparisons of t he three algorithms         6.9  The Closest Pair Probl em             6.9.1  Time complexity         6.10  Exercises         6.11  Bibliographic Notes     Chapter 7  Dynamic Programming         7.1  Introduction         7.2  The Longest Common Sub sequence Problem         7.3  Matrix Chain Multiplic ation         7.4  The Dynamic Programmin g Paradigm         7.5  The All-Pairs Shortest  Path Problem         7.6  The Knapsack Problem         7.7  Exercises         7.8  Bibliographic Notes PART 3  First-Cut Techniques     Chapter 8  The Greedy Approach         8.1  Introduction         8.2  The Shortest Path Prob lem             8.2.1  A linear time al gorithm for dense graphs         8.3  Minimum Cost Spanning  Trees (Kruskal s Algorithm)         8.4  Minimum Cost Spanning  Trees (Prim s Algorithm)             8.4.1  A linear time al gorithm for dense graphs         8.5  File Compression         8.6  Exercises         8.7  Bibliographic Notes

    Chapter 9  Graph Traversal         9.1  Introduction         9.2  Depth-First Search             9.2.1  Time-complexity  of depth-first search         9.3  Applications of Depth- First Search             9.3.1  Graph acyclicity             9.3.2  Topological sort ing             9.3.3  Finding articula tion points in a graph             9.3.4  Strongly connect ed components         9.4  Breadth-First Search         9.5  Applications of Breadt h-First Search         9.6  Exercises         9.7  Bibliographic Notes PART 4  Complexity of Problems     Chapter 10  NP-Complete Problem s         10.1  Introduction         10.2  The Class P         10.3  The Class NP         10.4  NP-Complete Problems             10.4.1  The satisfiabil ity problem             10.4.2  Vertex cover,in dependent set and clique problems             10.4.3  More NP-complet e Problems         10.5  The Class co-NP         10.6  The Class NPI         10.7  The Relationships Bet ween the Four Classes         10.8  Exercises         10.9  Bibliographic Notes     Chapter 11  Introduction to Com putational Complexity         11.1  Introduction         11.2  Model of Computation:  The Turing Machine         11.3  k-tape Turing Machine s and Time complexity         11.4  Off-Line Turing Machi

nes and Space Complexity         11.5  Tape Compression and  Linear Speed-Up         11.6  Relationships Between  Complexity Classes             11.6.1  Space and time  hierarchy theorems             11.6.2  Padding argumen ts         11.7  Reductions         11.8  Completeness             11.8.1  NLOGSPACE-compl ete problems             11.8.2  PSPACE-complete  problems             11.8.3  P-complete prob lems             11.8.4  Some conclusion s of completeness         11.9  The Polynomial Time H ierarchy         11.10  Exercises         11.11  Bibliographic Notes     Chapter 12  Lower Bounds         12.1  Introduction         12.2  Trivial Lower Bounds         12.3  The Decision Tree Mod el             12.3.1  The search prob lem             12.3.2  The sorting pro blem         12.4  The Algebraic Decisio n Tree Model             12.4.1  The element uni queness problem         12.5  Linear Time Reduction s             12.5.1  The convex hull  problem             12.5.2  The closest pai r problem             12.5.3  The Euclidean m inimum spanning tree problem         12.6  Exercises         12.7  Bibliographic Notes

PART 5  Coping with Hardness     Chapter 13  Backtracking         13.1  Introduction         13.2  The 3-Coloring Proble m         13.3  The 8-Queens Problem         13.4  The General Backtrack ing Method         13.5  Branch and Bound         13.6  Exercises         13.7  Bibliographic notes     Chapter 14  Randomized Algorith ms         14.1  Introduction         14.2  Las Vegas and Monte C arlo Algorithms         14.3  Randomized Quicksort         14.4  Randomized Selection         14.5  Testing String Equali ty         14.6  Pattern Matching         14.7  Random Sampling         14.8  Primality Testing         14.9  Exercises         14.1O  Bibliographic Notes     Chapter 15  Approximation Algor ithms         15.1  Introduction         15.2  Basic Definitions         15.3  Difference Bounds             15.3.1  Planar graph co loring             15.3.2  Hardness result : the knapsack problem         15.4  Relative Performance  Bounds             15.4.1  The bin packing  problem             15.4.2  The Euclidean t raveling salesman problem             15.4.3  The vertex cove r problem             15.4.4  Hardness result :the traveling salesman problem         15.5  Polynomial Approximat ion Schemes

            15.5.1  The knapsack pr oblem         15.6  Fully Polynomial Appr oximation Schemes             15.6.1  The subset-sum  problem         15.7  Exercises         15.8  Bibliographic Notes PART 6  Iterative Improvement for D omain-Specific Problems     Chapter 16  Network Flow         16.1  Introduction         16.2  Preliminaries         16.3  The Ford-Fulkerson Me thod         16.4  Maximum Capacity Augm entation         16.5  Shortest Path Augment ation         16.6  Dinic s Algorithm         16.7  The MPM Algorithm         16.8  Exercises         16.9  Bibliographic Notes     Chapter 17  Matching         17.1  Introduction         17.2  Preliminaries         17.3  The Network Flow Meth od         17.4  The Hungarian Tree Me thod for Bipartite Graphs         17.5  Maximum Matching in G eneral Graphs         17.6  An O(n2.5) Algorithm  for Bipartite Graphs         17.7  Exercises         17.8  Bibliographic Notes PART 7  Techniques in Computational  Geometry     Chapter 18  Geometric Sweeping         18.1  Introduction         18.2  Geometric Preliminari es         18.3  Computing the Interse ctions of Line Segments         18.4  The Convex Hull Probl em

        18.5  Computing the Diamete r of a Set of Points         18.6  Exercises         18.7  Bibliographic Notes     Chapter 19  Voronoi Diagrams         19.1  Introduction         19.2  Nearest-Point Voronoi  Diagram             19.2.1  Delaunay triang ulation             19.2.2  Construction of  the Voronoi diagram         19.3  Applications of the V oronoi Diagram             19.3.1  Computing the c onvex hull             19.3.2  All nearest nei ghbors             19.3.3  The Euclidean m inimum spanning tree         19.4  Farthest-Point Vorono i Diagram             19.4.1  Construction of  the farthest-point Voronoi diagram         19.5  Applications of the F arthest-Point Voronoi Diagram             19.5.1  All farthest ne ighbors             19.5.2  Smallest enclos ing circle         19.6  Exercises         19.7  Bibliographic Notes Bibliography Index 附录页

Related Documents