Mastering Algorithms with Perl

Quick Book Review - Mastering Algorithms with Perl

Authors: Jon Orwant, Jarkko Hietaniemi & John Macdonald
Publisher: O'Reilly
ISBN: 1-56592-398-7

Pages: 704 (648 of real hard core stuff)
Rating: 9
Reviewer: Ryan Dibble (rdibble at dibble dot net)
WebSite: http://www.dibble.net

Summary: Overall, this book explains methods of implementing Algorithms with Perl blending custom
techniques with resources available (CPAN) in a "learn by example" approach. It contains 16 great
chapters of background, theory, sample code, diagrams, and discussion. It has a good Appendix A (for
additional info on algorithms) and a useful ASCII table in Appendix B. If you want to learn good ways
to implement specific Algorithms with Perl - Read this book!

Review:

When I heard that O'Reilly was publishing a book on Algorithms in Perl I couldn't wait to get my
hands on it. Well last month (Oct 1999) I did and it was great!

The clearly written text contains the usual light, easy-reading tone and occasional humorous elements
found in most O'Reilly books. The authors include plenty of pictures and diagrams for those who learn
visually (rather then by reciting words out loud). The Perl code within is concise, with comments when
necessary, and makes use of the objects when possible. If you plan to read this book you should know
Perl because the more advanced level of the code could cause problems for the non-Perl or beginning
Perl Programmer. However, to a Perl programmer who is comfortable with the language the code reads
clean and understandably - sometimes it's even more clear then pseudocode.

The text covers a broad range of topics (with varying levels of complexity). When I was reading I
recalled things I learned in college classes such as: Data Structures, Algorithm Analysis, Discrete Math,
Calculous, Linear Algebra, Statistics, Compiler Design, Signal Processing, and even some good old
fashion high school geometry. I found this extremely helpful because the broad nature of the book
doesn't allow the authors to cover a topic in great detail. They do review each topic area giving the
proper terminology used along with background of how the field developed.

Within the different chapters the authors present various code segments. For some segments the authors
have written there own code to implement the algorithms. In other cases, as is Perl custom, the authors
have searched CPAN for the modules that implement the algorithm. Then the example code
demonstrates the proper use of that module.

One of the features I really enjoyed is that each chapter can stand on its own as a nice review of the
algorithms in that section. (In cases where they build on other sections you are reminded where to go
and read.) Another great feature the authors include is the references - all the web sites and books
you'll need are listed in Appendix A, by topic area.

The only thing I really felt was missing was a discussion on some AI topics such as Neural Networks
and Genetic Programming. (If you're interesting Neural Networks in general check out The Linux
Journal July 1999 p 44. For Genetic Programming in Perl check out The Perl Journal Fall 1999 p 34)

Overall, this book explains methods of implementing Algorithms with Perl blending custom techniques
with resources available (CPAN) in a "learn by example" approach. It contains 16 great chapters of
background, theory, sample code, diagrams, and discussion. It has a good Appendix A (for additional
info on algorithms) and a useful ASCII table in Appendix B. If you want to learn good ways to
implement specific Algorithms with Perl - Read this book!

Table of Contents:

Preface
Chapter 1. Introduction
What Is an Algorithm?
Efficiency
Recurrent Themes in Algorithms
Chapter 2. Basic Data Structures
Perl's Built-in Data Structures
Build Your Own Data Structure
A Simple Example
Perl Arrays: Many Data Structures in One
Chapter 3. Advanced Data Structures
Linked Lists
Circular Linked Lists
Garbage Collection in Perl
Doubly-Linked Lists
Infinite Lists
The Cost of Traversal
Binary Trees
Heaps
Binary Heaps
Janus Heap
The Heaps Module
Future CPAN Modules
Chapter 4. Sorting
An Introduction to Sorting
All Sorts of Sorts
Sorting Algorithms Summary
Chapter 5. Searching
Hash Search and Other Non-Searches
Lookup Searches
Generative Searches
Chapter 6. Sets
Venn Diagrams
Creating Sets
Set Union and Intersection
Set Differences
Counting Set Elements
Set Relations
The Set Modules of CPAN
Sets of Sets
Multivalued Sets
Sets Summary
Chapter 7. Matrices
Creating Matrices
Manipulating Individual Elements
Finding the Dimensions of a Matrix
Displaying Matrices
Adding or Multiplying Constants
Transposing a Matrix
Multiplying Matrices
Extracting a Submatrix
Combining Matrices
Inverting a Matrix
Computing the Determinant
Gaussian Elimination
Eigenvalues and Eigenvectors
The Matrix Chain Product
Delving Deeper
Chapter 8. Graphs
Vertices and Edges
Derived Graphs
Graph Attributes
Graph Representation in Computers
Graph Traversal
Paths and Bridges
Graph Biology: Trees, Forests, DAGS, Ancestors, and Descendants
Edge and Graph Classes
CPAN Graph Modules
Chapter 9. Strings
Perl Builtins
String-Matching Algorithms
Phonetic Algorithms
Stemming and Inflection
Parsing
Compression
Chapter 10. Geometric Algorithms
Distance
Area, Perimeter, and Volume
Direction
Intersection
Inclusion
Boundaries
Closest Pair of Points
Geometric Algorithms Summary
CPAN Graphics Modules
Chapter 11. Number Systems
Integers and Reals
Strange Systems
Trigonometry
Significant Series
Chapter 12. Number Theory
Basic Number Theory
Prime Numbers
Unsolved Problems
Chapter 13. Cryptography
Legal Issues
Authorizing People with Passwords
Authorization of Data: Checksums and More
Obscuring Data: Encryption
Hiding Data: Steganography
Winnowing and Chaffing
Encrypted Perl Code
Other Issues
Chapter 14. Probability
Random Numbers
Events
Permutations and Combinations
Probability Distributions
Rolling Dice: Uniform Distributions
Loaded Dice and Candy Colors: Nonuniform Discrete Distributions
If the Blue Jays Score Six Runs: Conditional Probability
Flipping Coins Over and Over: Infinite Discrete Distributions
How Much Snow? Continuous Distributions
Many More Distributions
Chapter 15. Statistics
Statistical Measures
Significance Tests
Correlation
Chapter 16. Numerical Analysis
Computing Derivatives and Integrals
Solving Equations
Interpolation, Extrapolation, and Curve Fitting
Appendix A. Further Reading
Appendix B. ASCII Character Set
Index

see also http://dibble.net/pp/MasteringAlgPerlReview.html