Start reading Python Algorithms: Mastering Basic Algorithms in the Pyth... on your Kindle in under a minute. Don't have a Kindle? Get your Kindle here or start reading now with a free Kindle Reading App.

Deliver to your Kindle or other device

 
 
 

Try it free

Sample the beginning of this book for free

Deliver to your Kindle or other device

Sorry, this item is not available in
Image not available for
Colour:
Image not available
 

Python Algorithms: Mastering Basic Algorithms in the Python Language (Expert's Voice in Open Source) [Kindle Edition]

Magnus Lie Hetland
5.0 out of 5 stars  See all reviews (1 customer review)

Print List Price: £43.50
Kindle Price: £37.91 includes VAT* & free wireless delivery via Amazon Whispernet
You Save: £5.59 (13%)
* Unlike print books, digital books are subject to VAT.

Free Kindle Reading App Anybody can read Kindle books—even without a Kindle device—with the FREE Kindle app for smartphones, tablets and computers.

To get the free app, enter your e-mail address or mobile phone number.

Formats

Amazon Price New from Used from
Kindle Edition £34.76  
Kindle Edition, 30 Nov. 2010 £37.91  
Paperback £43.50  
Kindle Daily Deal
Kindle Daily Deal: Up to 70% off
Each day we unveil a new book deal at a specially discounted price--for that day only. Learn more about the Kindle Daily Deal or sign up for the Kindle Daily Deal Newsletter to receive free e-mail notifications about each day's deal.

Book Description


Python Algorithms explains the Python approach to algorithm analysis and design. Written by Magnus Lie Hetland, author of Beginning Python, this book is sharply focused on classical algorithms, but it also gives a solid understanding of fundamental algorithmic problem-solving techniques.  




  • The book deals with some of the most important and challenging areas of programming and computer science, but in a highly pedagogic and readable manner.


  • The book covers both algorithmic theory and programming practice, demonstrating how theory is reflected in real Python programs.


  • Well-known algorithms and data structures that are built into the Python language are explained, and the user is shown how to implement and evaluate others himself.






What you’ll learn



  • Transform new problems to well-known algorithmic problems with efficient solutions, or show that the problems belong to classes of problems thought not to be efficiently solvable.


  • Analyze algorithms and Python programs both using mathematical tools and basic experiments and benchmarks.


  • Prove correctness, optimality, or bounds on approximation error for Python programs and their underlying algorithms.


  • Understand several classical algorithms and data structures in depth, and be able to implement these efficiently in Python.


  • Design and implement new algorithms for new problems, using time-tested design principles and techniques.


  • Speed up implementations, using a plethora of tools for high-performance computing in Python.




Who this book is for



The book is intended for Python programmers who need to learn about algorithmic problem-solving, or who need a refresher. Students of computer science, or similar programming-related topics, such as bioinformatics, may also find the book to be quite useful.



Table of Contents



  1. Introduction


  2. The Basics


  3. Counting 101


  4. Induction and Recursion ... and Reduction


  5. Traversal: The Skeleton Key of Algorithmics


  6. Divide, Combine, and Conquer


  7. Greed Is Good? Prove It!


  8. Tangled Dependencies and Memoization


  9. From A to B with Edsger and Friends


  10. Matchings, Cuts, and Flows


  11. Hard Problems and (Limited) Sloppiness




Product Description

About the Author

Magnus Lie Hetland is an experienced Python programmer, having used the language since the late 1990s. He is also an associate professor of algorithms at the Norwegian University of Science and Technology, having taught algorithms for the better part of a decade. Hetland is the author of Practical Python and Beginning Python, first and second editions, as well as several scientific papers.

Product details

  • Format: Kindle Edition
  • File Size: 4761 KB
  • Print Length: 336 pages
  • Publisher: Apress; 1 edition (23 Nov. 2010)
  • Sold by: Amazon Media EU S.à r.l.
  • Language: English
  • ASIN: B004D9ES2U
  • Text-to-Speech: Enabled
  • X-Ray:
  • Word Wise: Not Enabled
  • Average Customer Review: 5.0 out of 5 stars  See all reviews (1 customer review)
  • Amazon Bestsellers Rank: #623,145 Paid in Kindle Store (See Top 100 Paid in Kindle Store)
  •  Would you like to give feedback on images?


More About the Author

Discover books, learn about writers, and more.

Customer Reviews

4 star
0
3 star
0
2 star
0
1 star
0
5.0 out of 5 stars
5.0 out of 5 stars
Most Helpful Customer Reviews
1 of 1 people found the following review helpful
5.0 out of 5 stars great stuff 26 Sept. 2013
Format:Kindle Edition
whilst most algorithm books worry about the algorithm this worries about getting you to understand - and it covers enough basics that you can start here and grow in confidence
Comment | 
Was this review helpful to you?
Most Helpful Customer Reviews on Amazon.com (beta)
Amazon.com: 3.6 out of 5 stars  13 reviews
32 of 33 people found the following review helpful
4.0 out of 5 stars Very good explanation of basic algorithms 13 Dec. 2010
By Robert Hancock - Published on Amazon.com
Format:Paperback|Verified Purchase
Pros:
- Very clear explanation of a complex subject.
- Each chapter builds upon the previous chapters so that this is more like a class than a reference manual.
- More approachable that the Sedgewick and Cormen.

Cons:
- The almost constant parenthetical phrases distract from the text and quickly become irritating. After page 20 I just skipped them and found that I understood the concepts more quickly.
- The use of single letter variables in the code examples makes it more difficult to understand the structure of a new concept. When there are several of them, it can become confusing. (See page 207.) Why not just use descriptive variable names?

There are sections that make note of how to implement certain algorithms using Python specific features, and this is very helpful, but this is first and foremost a book on algorithmic theory that happens to use Python for code examples.
9 of 10 people found the following review helpful
5.0 out of 5 stars Instructive and Entertaining 5 Jan. 2011
By Mike - Published on Amazon.com
Format:Paperback
I found Python Algorithms not only extremely helpful but an enjoyable read as well, not an easy task for an algorithm book. The text is conversational and well-organized, with numerous side notes that allow the reader to make insightful connections. The author's use of humor is not overwhelming, nor is it so sparse as to confuse novice readers to his intent. His use of sidebars can bog down the topics at times, but this has the advantage of making this text appropriate for readers of all skill levels.

The author also takes great pains to explain Python code within the book, which not only models well-written code to the reader but also takes advantage of eliminating pseudo-code with concrete examples of the Python language. The use of citations and notes on external sources within the book made it possible for me to independently research topics on the web. For more hands-on learners, there are exercises at the end of each chapter. This text could easily be the basis for a college-level class on Python and algorithm theory/development. All in all, a great text and a must-have for the Python programmer!
8 of 9 people found the following review helpful
2.0 out of 5 stars Really Needs Clean Programming Style 2 Jun. 2013
By Cecil McGregor - Published on Amazon.com
Format:Paperback
While this author presents very interesting topics, following along with coding is particularly difficult. His coding style is very difficult to follow.

His habit of using single character variables (lower and upper case) obfuscates all of his code. This incredibly poor naming convention makes me wonder where this author learned to code.

He writes a function and does not provide accompanying data to create a test of the function. A developer is left to wonder how this function will work in the real world.

While the accompanying source code does contain tests, they are just as difficult to read as the book version. These tests contain few pertinent comments and one is left wondering why any one test exists. The test are certainly not unit tests since they don't apparently cover corner cases. No industrial strength QA would pass this code. And certainly no code review would allow this code into their code base.

This leaves a reader struggling to follow coding examples since he must create his own data to explore the various algorithms.

I'll allow a 4 for material and a 0 for user accessibility. The overall rating is thus a 2.
15 of 19 people found the following review helpful
3.0 out of 5 stars It's okay but too chatty. 24 Mar. 2011
By Ian Zimmerman - Published on Amazon.com
Format:Paperback
This book presents a quite broad range of fundamental computer science
algorithms, with all illustrative code written in Python. There is a
strong emphasis on graph algorithms, perhaps reflecting a predilection
of the author. Since I like graphs too I cannot complain about that.

Beyond the actual implementations, the book aims for extra Python
relevance by including asides on Python internals (CPython, to be
precise). I was pleasantly surprised by the ones included, as they go
beyond the trivial. Given the prevalence of graph algorithms heaps (or
priority queues) had to play a central role, and the aside on Python's
heapq module is perhaps the most important of them. I wish there were
more of the Pythonic asides, though.

Even so, the book makes clear how Python's carefully balanced design
enables beautiful, concise implementations. There is almost no low
level busy-work code, the algorithms practically read themselves. And
they are commented too just in case you find a piece difficult to
understand.

There's more to algorithms then the implementations, though: one has to
address correctness proofs and efficiency properties. The book
certainly doesn't neglect these, but if there's one clear downside (for
this reader) it is this: too much English, too few symbols. The author
goes to great lengths to use informal language instead of "math" when
discussing correctness and efficiency, and in the end I think he
overdoes it. Here's an example from Chapter 7, on greedy algorithms,
discussing the scheduling problem with hard deadlines, discrete time
and tasks of equal length:

"The last question then becomes, does S' have the same profit as S?
And indeed it does, because the T' cannot have a greater profit than T!
We can prove this by contradiction, based on our greed: if T' has a
greater profit, we would have considered it before T, necessarily
scheduling it somewhere else. (It would have been scheduled, because
there was at least one free slot before its deadline.) But we assumed
that we could extend P to S, and if it has a task in a different
position, we have a contradiction."

Perhaps it's just me (I have a math background) but if I were writing
code to run a nuclear power station I would not be comfortable with
proofs in this style.

I also think this might be a consequence of a more general attribute of
the book, namely its tendency to banter. Phrases like "Cool, no?" or
"This might hurt your brain" are numerous to the point of distracting -
again, for this reader, perhaps not so much for someone younger or with
a different background.

There are many exercises, with hints for solutions in an appendix. Each
chapter ends with an "If You're Curious" section which points you to the
relevant reference items in the bibliography and to some topics related
to, but deeper than, those discussed in the chapter. Some parts of the
text are set in a slightly larger and bolder font, with white titles on
black background. The purpose of this typographic device is not clear.
Maybe they are intended as general asides, but in some cases there are
back references to them later in the main text. In a technical book
this kind of thing is usually explained in the introduction, but not
here. Finally, as a fan I greatly appreciated the xkcd comic strips
included when relevant.

All in all, the book does a large part of what I expected of it. I
would recommend it most of all to someone already familiar with most of
the algorithms but not very familiar with Python, as a very good example
of Python's power. It can also work as a general introduction to the
algorithms, just be prepared to reach for the references in some cases
to clarify and expand your view.
9 of 11 people found the following review helpful
5.0 out of 5 stars For Intermediate Python Programmers Who Want to Master Basic Algorithms 21 Jan. 2011
By K. Noagbodji - Published on Amazon.com
Format:Paperback
Python Algorithms is of the same level as the book Pro Python by Marty Alchin,
also by Apress. So warning: this is not for beginners. Especially if you are
just starting with both Python and algorithms. Experienced algorists would
probably find their way through the book though.

So much for apologies, to use Dijsktra's words. This has been my hardest Apress
so far and second reading is in order. Oh and next time, I won't be skipping
the exercices. I advise you do the same. Some are very necessary if you want to
have a good grasp of all the algorithms covered.

Professor and author Magnus Lie Hetland is an experienced algorist and Python
coder. He promises in Chapter 1 (Introduction) to make you master basic
algorithms with Python and teach you how to create new ones. *cough* I think I
missed that latter part in the book. I only gathered that we can transform few
basic algorithms and apply them to new problems, especially graph algorithms.

It is thus important that you dont skip Chapter 5 (Traversal: The Skeleton Key
of Algorithmics) where I think the basics are found. No really, you don't want
to skip it. And while we are at it, you don't want to skip Chapter 4 (Induction
and Recursion... and Reduction) either. The idea of using reduction when
solving new problems is discussed in full in that chapter.

The last chapter I want to mention is Chapter 11 [Hard Problems and (Limited)
Sloppiness]. Weird but important terms used by experienced algorists are
discussed. I am talking about: solvable, tractable, P, NP, NPC, NP-hard, SAT,
etc...

The chapters I have not mentioned were difficult for me to understand. I wont
say more about them.

You got to like author Lie Hetland for his frankness though. Dijsktra (who gets
chapter 9 entirely dedicated to his graph algorithm) wrote in his preface to A
Discipline of Programming: "For the absence of a bibliography I offer neither
explanation nor apology." Here we have a different author, he writes: "Even so,
I'm sure I have failed in many ways, and if you have suggestions for improving
the book, I'd be happy to hear from you". So can I bitch a little?

The discussion for most algorithms are really visual and that is beautiful...
unless picturing them gets in the way. In chapter 3 (Counting 101) everything
is explained using metaphors. Sums are stories of knights jousting at
tournaments and algorists shaking hands at conferences. The width and the
height of binary trees are the hare and the tortoise. Ice cream cones are used
for doubling and halving processes. Combinations and permutations are stories
of movie goers trying to get tickets.

You quickly get lost in the pictures if like me you are the imaginative type.
So many images, so many stories, in only 25 pages. The whole thing becomes more
a distraction than an actual explanation. I felt that the author sometimes
reduces the reader to hysterical despair with his ability to switch between
stories and metaphors.

I mentioned that I took one algorithm class in college. I remember we were
given formulas, we proved them, and we convinced ourselves that they were
correct. That's it. Don't get me wrong though, Chapter 3 is easily my favorite,
but the pattern repeats itself thorough the book with never ending metaphor
compilations.

All in all, if you are a Python programmer interested in algorithms, this book
is for you. It's a good read. Take your time though, don't rush the reading
like I did and you will learn a lot.
Were these reviews helpful?   Let us know
Search Customer Reviews
Only search this product's reviews

Customer Discussions

This product's forum
Discussion Replies Latest Post
No discussions yet

Ask questions, Share opinions, Gain insight
Start a new discussion
Topic:
First post:
Prompts for sign-in
 

Search Customer Discussions
Search all Amazon discussions
   


Look for similar items by category