There is good and bad news early on in this book about the P versus NP problem that haunts computing. The good news is that on the description I expected this to be a dull, heavy going book, and it's not at all. Lance Fortnow makes what could be a fairly impenetrable and technical maths/computing issue light and accessible.
The bad news is that frustratingly he doesn't actually tell you what P and NP mean for a long time, just gives rather sideways definitions of the problem along the lines of `P refers to the problems we can solve quickly using computers. NP refers to the problems to which we would like to find the best solution', and also that he makes a couple of major errors early on, which make it difficult to be one hundred percent confident about the rest of the book.
The errors come in a section where he imagines a future where P=NP has been proved. This would mean you could write an algorithm to very efficiently match things and select from data. Fortnow suggests that our lives would be transformed. This is slightly cringe-making as fictional future histories often are, but the real problem is that he tells us that the algorithm would make it possible to do two things that I think just aren't true.
First he says that from DNA you would be able to identify what a person looks like and their personality. Unfortunately, these are both strongly influenced by epigenetic/environmental issues. Anyone who knows adult identical twins (with the same basic DNA) will know that they can look quite different and certainly have very different personalities. And they will usually have been brought up in the same environment. Fortnow is forgetting one of the oldest essentials of computing - it doesn't matter how good your algorithm is, GIGO - garbage in; garbage out.
The other, arguably worse error is that he says that it will be possible to have accurate weather forecasts going forward X days. This is so horribly wrong. He should have read my book Dice World. The reason you can't predict the weather at all beyond about 10 days is nothing to do with the quality of the model/algorithm, it is because the system is chaotic. Firstly we just don't know, and never can know, the initial conditions to enough decimal places not to deviate from the real world. When Lorenz first discovered chaos it was because he entered the starting values in his model to 4 decimal places rather than the 6 to which the model actually worked. It soon deviated from the previous run. We can't measure things accurately enough. The other problem is that the weather system is so complex - hence the slightly misleading title of Lorenz's famous paper Does the flap of a butterfly's wings in Brazil set off a tornado in Texas? - that we can't possible take into account enough inputs to ever have so good a model as to go forwards that far. Sorry, Lance, it ain't going to happen.
For the rest, the first half or so of the book goes along pretty well, gradually opening up the nature of P and NP, the problems that are of interest and the `hardest' NP complete problems. I found the main example, used throughout, a hypothetical world called Frenemy where everyone is either a friend or enemy of everyone else confusing and not particularly useful, but Fortnow gets plenty of good stuff in. After that it's as if he rather runs out of material and it gets a bit repetitious or has rather tangential chapters.
Overall, despite the flaws, a much better and more readable book than I thought it was going to be - but probably best for maths/computing buffs rather than the general popular science audience.
This is a very good book. Lance Fortnow manages to break down into small pieces, a difficult subject that takes years to master. What is left is a well told story totally accessible from everyone. But, I really think that if you hold a BS in Computer Science, you will find it not only a very good book but it will give you the chance to reorganize your thoughts on the P versus NP Problem. On the other hand if you had never heard of P vs NP you will be introduced to something that you may not like or be interested in.