George T.Heineman,Gary Pollice和Stanley Selkow均為 Woree ste r PolYteChniC In stitute(伍斯特理工學(xué)院)計(jì)算機(jī)科學(xué)系的教授。George是《Component—B ased Software Engineering:Putting the Pieces Together》(Addison—Wesley(的合編者,Gary則是《Head First Object-Oriented Analysis and Design》(OReilly)的合著者。
圖書(shū)目錄
Preface Part 1 1. Algorithms Matter Understand the Problem Experiment if Necessary Algorithms to the Rescue Side Story The Moral of the Story References 2. The Mathematics of Algorithms Size of a Problem Instance Rate of Growth of Functions Analysis in the Best, Average, and Worst Cases. Performance Families Mix of Operations Benchmark Operatxons One Final Point References 3. Patterns and Domains Patterns: A Communication Language Algorithm Pattern Format Pseudocode Pattern Format Design Format Empirical Evaluation Format Domains and Algorithms Floating-Point Computations Manual Memory Allocation Choosing a Programming Language References Part 2 4. Sorting Algorithms Overview Insertion Sort Median Sort Quicksort Selection Sort Heap Sort Counting Sort Bucket Sort Criteria for Choosing a Sorting Algorithm References 5. Searching Overview Sequential Search Binary Search Hash-based Search Binary Tree Search 6. GraphAIgorithms Overview Depth-First Search Breadth-First Search Single-Source Shortest Path All Pairs Shortest Path Minimum Spanning Tree Algorithms References 7. Path Finding in AI Overview Depth-First Search Breadth-First Search A'Search Comparison Minimax NegMax AlphaBeta References 8. Network Flow Algorithms Overview Maximum Flow Bipartite Matching Reflections on Augmenting Paths Minimum Cost Flow Transshipment Transportation Assignment Linear Programming References 9. Computational Geometry Overview Convex Hull Scan LineSweep Nearest Neighbor Queries Range Queries References Part 3 10. When All Else Fails Variations on a Theme Approximation Algorithms Offline Algorithms Parallel Algorithms Randomized Algorithms Algorithms That Can Be Wrong, but with Diminishing Probability References 11. Epilogue Overview Principle: Know Your Data Principle: Decompose the Problem into Smaller Problems Principle: Choose the Right Data Structure Principle: Add Storage to Increase Performance Principle: If No Solution Is Evident, Construct a Search Principle: If No Solution Is Evident, Reduce Your Problem to Another Problem That Has a Solution Principle: Writing Algorithms Is Hard--Testing Algorithms Is Harder Part 4 Appendix: Benchmarking Index