Location:  Home » Books » Algorithms in a Nutshell (In a Nutshell (O'Reilly))    

Algorithms in a Nutshell (In a Nutshell (O'Reilly))

Algorithms in a Nutshell (In a Nutshell (O'Reilly))Authors: George T. Heineman, Gary Pollice, Stanley Selkow
Publisher: O'Reilly Media
Category: Book

List Price: $49.99
Buy New: $31.48
as of 9/10/2010 11:51 CDT details
You Save: $18.51 (37%)

In Stock


New (23) Used (19) from $22.84

Seller: pbshop
Rating: 4.0 out of 5 stars 8 reviews
Sales Rank: 23,945

Media: Paperback
Edition: 1
Pages: 368
Number Of Items: 1
Shipping Weight (lbs): 0.9
Dimensions (in): 8.9 x 6 x 0.9

ISBN: 059651624X
Dewey Decimal Number: 005
EAN: 9780596516246
ASIN: 059651624X

Publication Date: October 14, 2008
Availability: Usually ships in 1-2 business days

Features:
  • ISBN13: 9780596516246
  • Condition: New
  • Notes: BUY WITH CONFIDENCE, Over one million books sold! 98% Positive feedback. Compare our books, prices and service to the competition. 100% Satisfaction Guaranteed

Also Available In:

  • Paperback - Algorithms in a Nutshell

Similar Items:


Editorial Reviews:

Product Description

Creating software systems involves more than simply writing a program. It requires creativity and technical excellence. Technical excellence includes the ability to make programs robust and efficient. Efficient algorithms are at the heart of all but the most trivial programs. Programmers, however, seldom think about the algorithms in their programs until they encounter problems. Many programmers do not have a background in algorithm analysis and design and if they do, they don't take the time to find the right algorithm for their needs.

Algorithms in a Nutshell helps programmers select, analyze, and implement the right algorithms for their particular needs. It provides just enough mathematics to let the reader understand and analyze algorithm performance. The algorithms in the book are based upon the type of problems they address. Each algorithm is presented in the style of a design pattern - an approach, or plan for how to solve the problem accompanied by the information needed to understand why the algorithm is appropriate, how one might determine why the algorithm is the right one, and implementation tips. This is a major benefit to the reader. Just as design patterns for object-oriented design enable developers to use a common language to describe their designs, we believe that providing a pattern language for algorithms can enable similar communication benefits.




Customer Reviews:
Showing reviews 1-5 of 8



5 out of 5 stars Its pedestrian title gives a very wrong first-impression!   December 13, 2008
K. Jazayeri (San Jose, CA United States)
52 out of 54 found this review helpful

In recent years I have found most other non-textbooks on algorithms to be uninteresting mainly for two reasons. First, there are books that are re-released periodically in a new "programming language du jour" without adding real value (some moving from Pascal to C/C++ to Python, Java or C#). The second group are books that are rather unimaginative collections of elementary information, often augmenting their bulk with lengthy pages of source code (touted as "ready-to-use", but never actually usable).

I almost didn't pay any attention to this book because its title struck me as rather mundane and pedestrian .... what an uncommonly false first-impression that turned out to be!

The is a well-written book and a great practical and usable one for working software developers at any skill or experience level. It starts with a condensed set of introductory material. It then covers the gamut of common and some not-so-common algorithms grouped by problems/tasks that do come up in a variety of real-world applications.

I particularly appreciate the concise and thoughtful - and concise - descriptions -- chock-full of notes on applicability and usability -- with absolutely no fluff! If nothing else, this book can be a good quick index or a chit sheet before culling through more standard textbooks (many of which, in fact, mentioned as further references in each section).

I believe the authors have identified a valid "hole" in the technical bookshelves - and plugged it quite well! Regarding the book's title, ... now I feel it's just appropriately simple, honest, and down-to-earth.



5 out of 5 stars A great supplemental book on Algorithms   October 25, 2008
calvinnme
77 out of 84 found this review helpful

This new book on algorithms from O'Reilly is a breath of fresh air. Most books on the subject fall into two categories: very dense tomes full of math and heavy on sometime unintelligible pseudocode, or books that basically just give you recipes without much understanding. The second category is the "give a man a fish" type, the first type is the "teach a man to fish, but use ALGOL to do it". Even the author, in his preface, recognizes that this is not the one book on algorithms you'd need if you were on a desert island. On a desert island you have plenty of time and you can carefully digest Cormen's Introduction to Algorithms. However, you're not on a desert island, are you? Thus this book is the link between Cormen's careful theoretical approach that takes time, and books that amount to code dumps.

The first six chapters amount to supplements on the basics of Theory of Algorithm courses: mathematics foundations, sorting, searching, and graphing algorithms. The mathematics here is somewhat lacking, but then the author is assuming you have other books on the subject - this is a book for ramping up quickly. The rest of the book is rather specialized, considering specific families of algorithms that are topical in these times such as path finding in AI, computational geometry, and network flow. They fill in the blanks missing in the standard textbooks. Plus there is plenty of code - real code, not pseudocode - that you can put to work quickly. The product description lacks the table of contents, so I list that next:

Part I: I
Chapter 1. Algorithms Matter
Section 1.1. Understand the Problem
Section 1.2. Experiment if Necessary
Section 1.3. Side Story
Section 1.4. The Moral of the Story
Section 1.5. References
Chapter 2. The Mathematics of Algorithms
Section 2.1. Size of a Problem Instance
Section 2.2. Rate of Growth of Functions
Section 2.3. Analysis in the Best, Average, and Worst Cases
Section 2.4. Performance Families
Section 2.5. Mix of Operations
Section 2.6. Benchmark Operations
Section 2.7. One Final Point
Section 2.8. References
Chapter 3. Patterns and Domains
Section 3.1. Patterns: A Communication Language
Section 3.2. Algorithm Pattern Format
Section 3.3. Pseudocode Pattern Format
Section 3.4. Design Format
Section 3.5. Empirical Evaluation Format
Section 3.6. Domains and Algorithms
Section 3.7. Floating-Point Computations
Section 3.8. Manual Memory Allocation
Section 3.9. Choosing a Programming Language
Section 3.10. References
Part II: II
Chapter 4. Sorting Algorithms
Section 4.1. Overview
Section 4.2. Insertion Sort
Section 4.3. Median Sort
Section 4.4. Quicksort
Section 4.5. Selection Sort
Section 4.6. Heap Sort
Section 4.7. Counting Sort
Section 4.8. Bucket Sort
Section 4.9. Criteria for Choosing a Sorting Algorithm
Section 4.10. References
Chapter 5. Searching
Section 5.1. Overview
Section 5.2. Sequential Search
Section 5.3. Binary Search
Section 5.4. Hash-based Search
Section 5.5. Binary Tree Search
Chapter 6. Graph Algorithms
Section 6.1. Overview
Section 6.2. Depth-First Search
Section 6.3. Breadth-First Search
Section 6.4. Single-Source Shortest Path
Section 6.5. All Pairs Shortest Path
Section 6.6. Minimum Spanning Tree Algorithms
Section 6.7. References
Chapter 7. Path Finding in AI
Section 7.1. Overview
Section 7.2. Depth-First Search
Section 7.3. Breadth-First Search
Section 7.4. A*Search
Section 7.5. Comparison
Section 7.6. Minimax
Section 7.7. NegMax
Section 7.8. AlphaBeta
Section 7.9. References
Chapter 8. Network Flow Algorithms
Section 8.1. Overview
Section 8.2. Maximum Flow
Section 8.3. Bipartite Matching
Section 8.4. Reflections on Augmenting Paths
Section 8.5. Minimum Cost Flow
Section 8.6. Transshipment
Section 8.7. Transportation
Section 8.8. Assignment
Section 8.9. Linear Programming
Section 8.10. References
Chapter 9. Computational Geometry
Section 9.1. Overview
Section 9.2. Convex Hull Scan
Section 9.3. LineSweep
Section 9.4. Nearest Neighbor Queries
Section 9.5. Range Queries
Section 9.6. References
Part III: III
Chapter 10. When All Else Fails
Section 10.1. Variations on a Theme
Section 10.2. Approximation Algorithms
Section 10.3. Offline Algorithms
Section 10.4. Parallel Algorithms
Section 10.5. Randomized Algorithms
Section 10.6. Algorithms That Can Be Wrong, but with Diminishing Probability
Section 10.7. References
Chapter 11. Epilogue
Section 11.1. Overview
Section 11.2. Principle: Know Your Data
Section 11.3. Principle: Decompose the Problem into Smaller Problems
Section 11.4. Principle: Choose the Right Data Structure
Section 11.5. Principle: Add Storage to Increase Performance
Section 11.6. Principle: If No Solution Is Evident, Construct a Search
Section 11.7. Principle: If No Solution Is Evident, Reduce Your Problem to Another Problem That Has a Solution
Section 11.8. Principle: Writing Algorithms Is Hard--Testing Algorithms Is Harder
Part IV: IV
Appendix A. Benchmarking
Section A.1. Statistical Foundation
Section A.2. Hardware
Section A.3. Reporting
Section A.4. Precision



5 out of 5 stars Quickly locate algorithms that relate to the problems that you want to solve   October 5, 2009
bernie (Arlington, Texas)
5 out of 6 found this review helpful

This is my first Safari book that has the free online edition for 45 days.

I have a pretty good collection of books on algorithms. Many O'Reilly books are among the collection. Yet I am most impressed with" Algorithms in a Nutshell "a desktop quick reference. I won't go into a lot of detail as anybody who purchases this book was already know what they're looking for. I am impressed however that for such a small book this goes into a lot of deep concepts and gives you practical solutions.

The best way to see if this book is useful compared to others is to look at sorting algorithms that you know by heart such as median sort and quick sort. If this book tells you what you already know or even does a better job of explaining what you know this is the book for you. This is definitely the book for me.

Even with these examples, that take very little adjustment to put into the real world, you may want to supplement this book with "Sorting and Searching (The Art of Computer Programming, Volume 3)" by Donald E Knuth, Richard S Varga, and Michael A Harrison.

Even if you are not a programmer this book can help you to understand what programmers and or coders are accomplishing with their programs. For people taking any math discipline school this makes a fantastic supplement to understanding math from a different angle.

Sorting and Searching (The Art of Computer Programming, Volume 3)



4 out of 5 stars Delivers as advertised   March 23, 2009
J. Pease (Odessa, TX United States)
20 out of 20 found this review helpful

The book does not aim to be an introduction to, nor the definitive encyclopedia on, the subject of algorithms.

It is intended, as advertised on the cover, as "A Desktop Quick Reference". In the Preface it states that the goal is to provide a useful tool for working programmers to find good solutions to the problems they solve.

As a self-taught programmer I am finding this book interesting to better understand the various ways that the same problem can be solved, and the pros and cons of each. While the book is mainly intended to help programmers review and select appropriate algorithms for a problem at hand, I am using it as a study guide and have enjoyed it as such thus far. While it doesn't exactly make for light reading, each algorithm is considered individually, which makes for a decent size chunk of information which can be considered independently.

Multiple languages (C, C++, Java, Ruby) are used throughout the book in demonstrating the algorithms, solutions are not provided in each language for each algorithm. However, if you are using this as a study guide, this can provide a good exercise to translate the solution into the language of your liking.



4 out of 5 stars Interesting, but...   December 23, 2008
Peter Alfheim (United States)
11 out of 18 found this review helpful

The preface states that the main purpose of this book is to provide usable implementations of some of the most useful algorithms. To illustrate the superiority of this approach as compared to similar books, the authors present the pseudo-code of the Ford-Fulkerson algorithm as given in Wikipedia and Cormen's textbook. Then they write that such listings are basically useless for a software engineer, who cannot produce working programs from them. He needs a book with real, working, verified implementations rather than pseudo-code and proofs of correctness. This is that book.

After reading this part of the preface in a local bookstore, I read the table of contents and picked at random the section on Linear Programming for a closer look at the contents. This 2-page section provides no code whatsoever. Not even pseudo-code. It uses a commercial mathematical software to solve a problem and advises the readers to do the same. Don't implement anything here because it's too complicated, just use a commercial package. I found this message a bit amusing, and somehow opposed to the stated purpose of the book.

Maybe I was unlucky, and other sections are different. You'll have to check that for yourselves. The book seems otherwise compact in its field, reasonably priced, rich in tables, examples, illustrations and other attention-grabbers. I'd say buy it, but take its promises with a grain of salt.

Incidentally, the Wikipedia article on Ford-Fulkerson provides a Python implementation in addition to the pseudo-code. It might have been added after this book was published. Nevertheless, this shows how quickly some parts of a 2008 book can become outdated.


Showing reviews 1-5 of 8



Copyright © 2009 Web Development
algorithms  nutshell  oreilly  programming  software development