Top products from r/algorithms

We found 45 product mentions on r/algorithms. We ranked the 35 resulting products by number of redditors who mentioned them. Here are the top 20.

Next page

Top comments that mention products on r/algorithms:

u/phao · 1 pointr/algorithms

You can come back to it later, yes. Why though? You'll need them "now", won't you? I mean, you're going through the book (Skiena's) now, not later. Isn't that right? If you learn it now, you will go through the book better equiped to get its message.

And, besides, it isn't that difficult. It's not trivial by any means. You can try some alternative resources.

  • MIT has a course on math for CS, which include several topics which serve as a foundation to, among many things, proving things correct in CS. I don't believe the course will directly help you, but it seems worth to take a look (http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/ - notice the video lectures link on the side).
  • "Foundations of Computer Science", this is a book (http://www.amazon.com/Foundations-Computer-Science-Principles/dp/0716782847/) and they cover the topic of proofs in there too. It's a very good book for all I can remember.
  • Dijkstra's books. He has two books that I know can help you on this: "Structured Programming" (http://www.amazon.com/Structured-Programming-P-I-C-studies-processing/dp/0122005503/) and "The Discipline of Programming" (http://www.amazon.com/Discipline-Programming-Edsger-W-Dijkstra/dp/013215871X/).

    I'm not sure why you're interested in deferring this to later. Personally, I believe having seen how proofs of correctness are somewhat done is way more worth it than seeing the algorithms themselves, although some algorithms are pretty educational (like quicksort and also binary search for example). Because even though you won't prove programs correct in practice, knowing how a proof might be devised helps you in writing programs that are easy to prove, and those have to be simple. The whole idea of structured programming that Dijkstra had in mind was to help with this. It's way more intuitive to reason about "while (i < 10) { <do something> }" than a bunch of goto's. In the while-loop case, you can clearly see that upon termination, i >= 10 is true for example. And you can also clearly derive some properties about the body of the loop inductively by analyzing previous iterations.

    A lot of good readable code techniques can be put in terms of easy to prove code. Like small functions that do very little, are very cohesive, and work collaboratively. Same for objects. It's way easier to prove correct a bunch of small pieces that work together by some simple means of combination, than a huge big thing.

    Good luck.
u/BadArgumentHippie · 3 pointsr/algorithms

Online material: I don't know about any high-quality online-run courses, but with GAs (and EC in general) you'll get quite far with searching Google for "evolutionary algorithms filetype:pdf", or something similar. In addition to freestanding texts, there are many Unis that have courses on biologically inspired AI, with high-quality lecture notes available online.

Where to begin: A standard toy problem is "one max" (have your EA find the bitstring of all ones).
You can start with a pretty simple program, confirming that your EA can solve the problem, and then expand it into a flexible solution supporting multiple selection mechanisms, various representations (binary, real-valued, permutation-based, ...), development schemes, and nice visualizations. EA systems lend themselves quite well to OO design, although other approaches are possible.

Recommended dead trees: An excellent book on EC is de Jong's Evolutionary Computation: A Unified Approach. While quite short, this book, written by one of the absolute experts in the field, is very pedagogical, broad-scoped, and up to date. One problem, though, is that it it's somewhat short in its treatment of GP. If you're interested in GP as well (and who isn't?), you could get this little book which costs about 1 nickle.

Good luck with exploring Evolutionary Computing! It's an amazing subject. You can begin with a 20-line program that you can explain to a kid, and later find yourself reading grad-level mathematics exploring intricacies of some aspect of evolution. Just be prepared for some weird looks when you finally find yourself printing papers on "Incest prevention" in the school library.

Edit: Spelling.

u/[deleted] · 7 pointsr/algorithms

Start here. It's a good book, and it's focused on algorithms and not so much on data structures.

If you want more programming emphasis then try Goodrich's Algorithm Design.

Also check topcoder.com articles once in awhile. Sometimes you'll find interesting discussion on algorithms.

But this will only give you an overview of algorithms; once you're interested in a certain topic, then you can delve further. For example, I'm really interested in arbitrary precision arithmetic, and there's always interesting and different algorithms for solving multiplication of two numbers, efficient methods for calculating square roots in a multiplicative group/finite field, efficient division/modulo operators, etc. But to really experiment, you need to develop your own environment to work on these algorithms and have the data aswell.

Edit: Changed the topcoder link to reflect proper list of articles.

u/bluecoffee · 2 pointsr/algorithms

Project Euler is great, but I can't imagine a less efficient way to learn about "advanced algorithmic techniques". Most of the problems are concerned with brute force search, dynamic programming and "clever" ways to trim the computation trees of those two techniques on specific problems.

A better way would be to read books on general algorithms, on optimization, on AI and on machine learning. To that end, two of my favourites are

  • The Algorithm Design Manual. The ADM has two parts. The first part is a very good undergraduate algorithms textbook. The second part is a whistlestop tour of as much of modern algorithmics as the author could cover.
  • How to Solve It: Modern Heuristics. This rolls parts of an AI, an optimization and a ML textbook into one and takes a very practical perspective.

    Alternatively, if you've got a specific area of interest then you might want to find a handbook for that area. For example, here's one on data structures.

    As a side note, if the price tag of any of those books puts you off, take a look at Library Genesis.
u/DiogoSnows · 2 pointsr/algorithms

I think different people have different ways to retain knowledge. Whatever motivates you.

I like to view learning as a game with multiple levels. I'd start with something easier, more practical, this will keep you motivated with faster feedback and will raise the right questions for the next level.

Start with a book of problems that isn't very formal yet, I'm thinking of the likes of Cracking the Coding Interview

Then move to some of the suggestions around The Algorithm Design Manual and Introduction to Algorithms.

At this point you may want to specialise your knowledge in a particular area of algorithms or math.

The good thing about this approach is that you see results earlier and can also start applying your knowledge quickly (even if very limited).

Along the way, as a second vertical of learning that you should pursue, you should take some online courses on algorithms or more specialised applications (biology has a lot going on now).

Have fun

Edit: try HackerRank too!

u/sick_anon · 8 pointsr/algorithms

I suggest you to not waste too much time reading 15 different books on algorithms or spreading on 15 different resources (YT videos, online courses, forums, tutorials, etc.). Stick to 1 or 2 good books (try Introduction to Algorithms and, if you're completely new to algorithms, and have no idea what are they and what is their role in computer science and science in general, I recommend book by same author that could make a good preparation to previous book; it's called Algorithms Unlocked ) and start applying that knowledge in the run (solving problems). Remember: don't waste time on hundreds of resources; they may be great and offer some really high quality information about topic, but you just don't have time to go through all of them. Good luck!

u/springy · 1 pointr/algorithms

You don't need very much mathematics at all to learn the implementations of various algorithms. Sure, many algorithms books have mathematics in them to analyze the performance of the algorithms, but if you are mostly interested in the details of the implementations of algorithms, rather than analysis of performance then there is nothing to hold you back.

The Algorithms Design Manual, by Steven Skiena would be a great starting point. http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693

Then, if and when your interest in analysis of performance increases you can move on to a more mathematically demanding book, such as Introduction to Algorithms, by Cormen et al. http://www.amazon.com/Introduction-Algorithms-Edition-Thomas-Cormen/dp/0262033844

u/fireatx · 2 pointsr/algorithms

Not either of those, but I can vouch for Algorithm Design. Really innovative practice problems, and they provide some really awesome, novel explanations for concepts.

u/handletakenwtf · 29 pointsr/algorithms

If you have a pressing need to get a handle on DP this probably won't help. That being said, I have an MS in applied math and think the way DP is presented to anyone coming at it from a CS perspective creates a lot of the confusion.

DP is NOT a programming paradigm. It is an optimization technique originally developed to reduce the search space of high dimensional problems.

I would recommend reading the first few chapters of this book (I have no relationship to or financial stake in either the book or you clicking the link): http://athenasc.com/dpbook.html

It does a good job of explaining how to think about DP without being prescriptive which I think is the flaw with the CLRS presentation.

Id also recommend this book (again, I have no interest in this): Dynamic Programming (Dover Books on Computer Science) https://www.amazon.com/dp/0486428095/ref=cm_sw_r_cp_apa_i_UT.7CbAEDXGAM

The book gets pretty dense pretty fast but if you push through the first few chapters it will give you additional insight as to the motivation behind why this technique was developed

u/djhaskin987 · 6 pointsr/algorithms

My algorithms class presupposed that I took linear algebra, I think. I think you'll need to be able to do maths, but they taught me the maths I needed to know as I went along. It depends on the course, though. Here's the book we used in class. Here's its home page, but the link seems to be broken. It should be online for free. For example, I found another copy here. Here's the PDF Also a free book on linear algebra.

u/jsan1234 · 2 pointsr/algorithms

I loved "Algorithms in C++" by Sedgewick.

Standard recommendations will also be: "Introduction to Algorithms" by Cormen et al, and "Algorithms" by Dasgupta et al.

If you want to get introduced to the world of programming contests, I hear great things about Programming Challenges: The Programming Contest Training Manual.

u/chub79 · 15 pointsr/algorithms

The Algotitms Design Manual by Skienna helped me a lot.

I was also curious about this one.

Also, this site may help :)

u/markgraydk · 2 pointsr/algorithms

I liked Algorithm Design. It's not really that more advanced but does a good job at expanding on the design and use of algorithms. It's good for bridging that gap from a theoretical course based off Cormen to real-life application of algorithms, which I think is a problem many CS students run into.

u/gtani · 5 pointsr/algorithms

That book has reviewed excellent reviews http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/. This is the standard text, CLR or CLRS http://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844/

What you're describing is probably what most people think of as machine learning, data science/mining, and has as much to do with computational efficiencies as it does algorithms' intrinsic behavior.

Also, What programming languages do you know?

Maybe if you look at a cheat sheet http://dlib.net/ml.html and some ML texts (Murphy, Bishop, Barber), those would help (also AIMA by Norvig/Russell)

http://www.amazon.com/review/R32N9EIEOMIPQU/ref=cm_cr_pr_perm?ie=UTF8&ASIN=0262018020&linkCode=&nodeID=&tag=

u/ospatil · 3 pointsr/algorithms

Learning JavaScript Data Structures and Algorithms - Second Edition is a really good book with clear explanations and code examples.

Grokking Algorithms is also a wonderful book especially for non-CS people and beginners. The examples are in Python but it shouldn't be a problem given your Ruby and JavaScript background.

u/digitizemd · 3 pointsr/algorithms

The Princeton / Coursera algorithms course. It is great. You can find lectures (since the first course finished recently, and the second course is halfway done) here (you need to change the number at the very end. I think it starts at 10).

There is a book that's relatively cheap: http://www.amazon.com/Algorithms-4th-Edition-Robert-Sedgewick/dp/032157351X

And there's a booksite: http://algs4.cs.princeton.edu/home/

This course is done entirely in Java.

u/grandzooby · 3 pointsr/algorithms

GLPK is a commonly used library in a number of programming languages(R, Python, etc.) and Excel has a limited ability to do these problems.

If you want to take an Excel approach, I once took a class that used this book: https://www.amazon.com/Optimization-Modeling-Spreadsheets-Kenneth-Baker/dp/0470928638

u/samort7 · 1 pointr/algorithms

Honestly, the CLRS book has been the most helpful thing for me doing my Analysis of Algorithms class. For each example in the book, watch a video or three so you get the gist of what's going on, then step through the pseudocode example so you more intuitively understand how it works. I also tend to skip a lot of the proofs, but they are there if you need them.

u/rdguez · 2 pointsr/algorithms

There’s a book called Grokkin Algorithms, which illustrates some of those concepts quickly. I also liked another book called Cracking the Code Interview.

u/0x6f_ · 2 pointsr/algorithms

You usually do see stuff you've never seen before when you're learning something new.

Checkout:

u/drboyfriend · 1 pointr/algorithms

Introduction to the Design and Analysis of Algorithms, by Levitin, was used at my university and none of us cared for that book and I don't recommend it.

I'm not familiar with #1, but I do recommend:

u/Feydarkin · 2 pointsr/algorithms

I second The Algorithm Design Manual, very good book.

I think that being proficient with algorithms consists of three skills:

  • Understanding specific algorithms and how they work (theory)

  • Being able to utilize/tweak a specific algorithm to solve a problem

  • Being able to decompose problems and choose relevant algorithms

    And I think that The Algorithm Design Manual is excellent for this, Carmen is more comprehensive but I find it a bit to dry for my taste.
u/Bayequentist · 1 pointr/algorithms

Generally after CLRS you should be ready to read TAOCP. But if you still feel insufficient, Professor Knudth has another book that you can look into to enhance the math background - Concrete Mathematics: A Foundation for Computer Science.

u/throwdemawaaay · 3 pointsr/algorithms

A good lightweight introduction: Programming Collective Intelligence

If you'd like a single, but more difficult, reference that covers much of the breadth of machine learning: Machine Learning: A probabiliistic Perspective

u/timshoaf · 2 pointsr/algorithms

This isn't the most direct answer; /u/jpfed gave you that. The interior point methods used for these things can be fairly quick in practice.

The theory, mathematically, however is covered in Convex Optimization and Combinatorial Optimization

These are extremely common types of problems in the fields of economics and operations research.

u/kc7wbq · 15 pointsr/algorithms

Oh man, you thread has wrecked my day. You're question prompted me to pull down an algorithm book from a collage class I had about 8 years ago. Out fell some 3x5 cards with algorithm names and short notes summing up the algorithm. I'd written the cards to get ready for tests.

I looked through the cards, then looked at my task list for the day and it made me want to cry. I've been doing bullshit busy work so long in corporate America I've forgotten almost everything I ever learned in collage.

If you love programming, work for a small company when you leave college. If you're incompetent and only looking for a paycheck, go work for a corporation.