創(chuàng)造穩(wěn)定的軟件需要有效的算法,但是程序設(shè)計者們很少能在問題出現(xiàn)之前就想到。《算法技術(shù)手冊》描述了現(xiàn)有的可以解決多種問題的算法,并且能夠幫助你根據(jù)需求選擇并實現(xiàn)正確的算法——只需要一定的數(shù)學(xué)知識即可理解并分析算法執(zhí)行。相對于理論來說,本書更注重實際運用,書中提供了多種程序語言中可用的有效代碼解決方案,可輕而易舉地適合一個特定的項目。有了這本書,你可以:
解決特定編碼問題或改進現(xiàn)有解決方案的執(zhí)行;
迅速確定與需要解決的問題相關(guān)的算法,并判定為什么這樣的算法是正確的;
探索C、C++、Java、Ruby中的算法解決方案,伴有實現(xiàn)訣竅;
了解一個算法預(yù)期的執(zhí)行情況及的執(zhí)行條件;
發(fā)現(xiàn)不同算法中相似設(shè)計產(chǎn)生的沖突;
學(xué)習(xí)先進的數(shù)據(jù)結(jié)構(gòu)以改進算法效率。
有了《算法技術(shù)手冊》,你可以學(xué)習(xí)如何改進算法的性能,這是軟件應(yīng)用成功的關(guān)鍵。
"作者汲取了大量鮮為人知的文獻資料,這本不可或缺的指南鞏固了理論與實際操作的平衡。通過它來理解算法變得更加輕松容易。"
——Matthew Russell.高級技術(shù)總監(jiān),Digital Reasoning System;《Doj0:The Definitive Guide》的作者(O'Reilly)
作者簡介:
George T.Heineman,Gary Pollice和Stanley Selkow均為 Woree ste r PolYteChniC In stitute(伍斯特理工學(xué)院)計算機科學(xué)系的教授。George是《Component—B ased Software Engineering:Putting the Pieces Together》(Addison—Wesley(的合編者,Gary則是《Head First Object-Oriented Analysis and Design》(O'Reilly)的合著者。
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