A Programmer's Companion to Algorithm AnalysisUntil now, no other book examined the gap between the theory of algorithms and the production of software programs. Focusing on practical issues, A Programmer's Companion to Algorithm Analysis carefully details the transition from the design and analysis of an algorithm to the resulting software program. Consisting of two main complementary parts, the book emphasizes the concrete aspects of translating an algorithm into software that should perform based on what the algorithm analysis indicated. In the first part, the author describes the idealized universe that algorithm designers inhabit while the second part outlines how this ideal can be adapted to the real world of programming. The book explores analysis techniques, including crossover points, the influence of the memory hierarchy, implications of programming language aspects, such as recursion, and problems arising from excessively high computational complexities of solution methods. It concludes with four appendices that discuss basic algorithms; memory hierarchy, virtual memory management, optimizing compilers, and garbage collection; NP-completeness and higher complexity classes; and undecidability in practical terms. Applying the theory of algorithms to the production of software, A Programmer's Companion to Algorithm Analysis fulfills the needs of software programmers and developers as well as students by showing that with the correct algorithm, you can achieve a functional software program. |
Contents
A Taxonomy of Algorithmic Complexity | 3 |
Bibliographical Notes | 30 |
Exercises | 31 |
Copyright | |
17 other sections not shown
Other editions - View all
Common terms and phrases
algorithm design allocation analysis of algorithms approach aspects assume assumption asymptotic atomic operations AVL tree binary search bit complexity block transfers cache Chapter chunk column-major complexity analysis computing consider constant factor context-free grammars data item data structures deallocation deletion determine disk efficient example exception handling execution Exercise finite formulation garbage collection given hashing HeapSort height implementation implicit important in-core insertion instance integers iteration linear list log₂(n loop lower bound main memory mapping matrix multiplication memory space memory-mapping function MergeSort node NP-complete O(n² occurs Operating Systems optimizing compiler out-of-core out-of-core programming parameters performance plexity pointer probes problem programming language QuickSort random access property recursive call regular expressions representation request requires result retrieve rithm search tree Section sequence solve sorting space complexity specific stack techniques testing for equality Turing machine undecidable variables word complexity worst worst-case complexity worst-case time complexity