Prerequisites for understanding algorithms? [closed] - algorithm

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
What areas of math are prerequisite for learning algorithms?

I guess it depends a lot about the kind of algorithm you want to use and how deeply you want to understand them.
The understand of the usual basic data structures needs almost no math background.
Most of the graphical algorithms requires knowledge of trigonometry and spatial geometry.
Algorithms about physics engine are easier to understand if you have some physics basis
If you want your program to help you to take decisions, you might need to study operational research which is a really huge sub-fields of math which includes graph theory, game theory, optimisation (which then includes analysis and linera albegra)
In any case, having a logic/mathematical mind obviously helps a lot for the understanding and to check/prove that your code can/cannot work.

If you're talking about simple programming you don't really need a lot of math. At this level, your problem solving and logic abilities are more important, but it's necessary that you get instructed in the basics of problem solving by using flow charts and process planing.
In the other side, math is known to improve your abilities and in some areas you would need to know math to achieve the expected results. For example, to create an animation engine knowing linear algebra is more than useful, so its physics.

Related

Understanding Introduction to Algorithms, Third Edition [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I've been trying to read and understand the contents of this book: http://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844
But I'm finding the contents to be challenging purely because I don't understand the mathematical or pseudo code notation. Are there any resources or books I should read / study in order to help me understand the content? I think I'm looking for the missing mathematical link in my life. I need something to bridge the gap between school and college level.
Thanks
Chris
Maybe go for a book where the examples are given in a specific language rather than pseudo-code. e.g. Algorithms in C++ by Sedgewick is a grand book if you know C++. Many of the older books tend to use Pascal like pseudo code, where Pascal isn't as common as it once was.
Being able run the code under a debugger, single stepped watching variables change, is also a great aid to understanding how the algorithm works.
Be sure to read the first sections and the appendix at the end of the book, which has some mathematical background explained.
A good, not easy, but suitable for high school student, introduction to mathematics used in computer science is Concrete Mathematics, by Knuth, Graham & Patashnik.

Random Mutation Hill Climber & Simulated Annealing - Which is Fastest? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I have used a random mutation hill climbing algorithm as part of a project that I am working on, but was wondering whether it would be better to use simulated annealing to minimise the chance of getting stuck in any local optima.
The question I have is which one tends to be generally faster from your experience? Obviously there is a huge wealth of applications for both algorithms; this is more of a generalised pondering, if you like.
Thank you.
There's no way to tell in advance (unless your project is a 100% match to a well studied academic problem like a pure TSP - and even then ...). It depends on your project's constraints and your project's size (and if you implement the algorithms correctly).
So, to be sure, you have to implement both algorithms (and many others, like Tabu Search, ...) and use a Benchmarker like this one to compare them.
That being said, I 'd put my money on Simulated Annealing over Random Mutation Hill Climbing any day :)
Note: Simulated Annealing is a short but difficult algorithm: I only got it right in my 3th implementation and I 've seen see plenty of wrong implementations (that still output a pretty ok solution) in blogs, etc. It's easier just to reuse optimization algorithms.

List of Mathematics areas to learn for understanding the Algorithm Analysis books (like Introduction to Algorithms) [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
Can someone give a brief list of Mathematics areas (like functions, calculus etc.,) to learn for understanding the Algorithm Analysis books (like Introduction to Algorithms)?
I would start with discrete mathematics. That would probably give you the best computational basis and intuition for what computer algorithms are about in terms of working with sets and discrete numbers in general. Also, something on data structures and algorithms would help as well. This would give you good background on things like sorting arrays, efficient searches etc. You could then move on to books on artificial intelligence (my best guess), but by this time you should definitely be ready to read some algorithms books. IMO, that is.
UPDATE
Also, calculus never hurts either if you're working with minimization/maximization/optimization problems. That might or might not bee needed depending on the specific algorithms you'd like to work with.
To start with:
number theory, especially induction.
basic set theory, sets and functions.
basic calculus, limits.
logarithms
discrete math (combinations, permutations, etc)
generating functions (adv. discrete math).
For Introduction to Algorithms the only things you really need to know are induction and some basic set theory. For the more advanced parts you also need to know some linear algebra and probability theory.

What's the fastest way to brush up on algorithms for a technical interview (on Monday)? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I have a technical interview on Monday and they were kind enough to give me a heads-up to brush up on my basic algorithms. It's been years since I looked at that kind of stuff and I'm pretty weak on it to begin with so I generally have a bad feeling about this. What's the best way to review the basics and get some practice in before Monday?
Starting Project Euler might help you, also try picking up Algorithms in a Nutshell and working through those examples. Should be do-able in a weekend.
TopCoder Algorithm Tutorials
Get the Algorithm Design Manual and look at the reference section. It has a nice "Problem -> Algorithm" cheat sheet.
Also take a look at questions on StackOverflow that are tagged Algorithm.
They might actually turn up in the interview ;)
Best of Luck!
This SO Question would be helpful. Also, mostly you should know about
* Sorting
* Searching
* Inserting and removing from various data structures
As this are the main algorithms which are normally asked in the interviews.
*Note: This is from my personal experience and it may differ from person to person.
http://en.wikipedia.org/wiki/List_of_algorithms
Especially the Search, Item Search and Sorting sections.

Currently known best algorithm(s) for computer chess? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
The community reviewed whether to reopen this question 7 months ago and left it closed:
Original close reason(s) were not resolved
I just wanted to learn name of algorithms.. thanks
A general strategy in game algorithms is the minimax strategy, augmented with alpha-beta pruning. The minimax algorithm finds the best move, and alpha-beta pruning prevents it from going into branches of the game tree that cannot produce a better result than previous branches already have.
However, the chess game tree is too large to be completely examined. That is why computer chess engines only examine the tree up to a certain depth, and then use various methods to evaluate the positions. Many of these methods are based on heuristics. Also, a serious chess-playing program will have a library of openings so that it can play in the beginning by just consulting that library and not having to examine the game tree. Finally, many end games are completely solved, and these are also programmed in as a library.
Minimax
If you need an in-depth knowledge about AI algorithms, I think "artificial intelligence modern approach" book is the best source.
Wikipedia is a safe bet as a starting point. Did you look there?
Rybka seems to be a contender.
Have a look at the some of the free source chess codes, for instance Crafty or even better how about Fruit? It plays pretty much almost the same strength of Rybka. But there are many new algos out there. Day will come when human chess players will have to just say I am not playing vs this engine, and this article pretty much sums it up --> http://www.mychessblog.com/man-versus-machine-when-a-computer-will-become-world-chess-champion/

Resources