You are on page 1of 2

Hello Readers, This is mail from Mr. S. M. Shahriar Nirjon (to buet_contest_teams@yahoogroups.

com), I found it to be useful for the new programmers. Lets check Hi Folks, (here in US, teachers sometimes call students Folks!!, I just imitated them to see how it feels, never mind.) Nice to see sooo many eager persons who wants to learn algorithms and good programming. Seems like you guys want some shortcuts also- no book reading, no papers- just attend some camps and there you fly. Trust me, its never going to be so easy. You HAVE to study books/papers/ articles/ other peoples codes/forums to learn these hings. However, camping is of course always a good idea. In my opinion, although some/all may disagree, there had been no good book on algorithms for starters. Beginners look for the basic idea and some examples, but the writers tend to fill the book with lemmas nd proofs. Some books try to do this, but the frustation among our young programmers proves that these are not helping. I would like to list steps in algorithms that new folks may find nteresting. I am trying to remember what I learnt serially1) First, the simple problems that needs no particular algo. Like, all simulation type problems, all math problems, prime number realted problems, big integer related problems etc. Also, learn sorting, inary search. 2) To make/use stack/queue and learn BFS. I solved Knight moves as the first one. Then keep on solving all the BFS problems. 3) To learn DFS. My first problem was Oil Deposits. Now try to nderstand the difference between DFS/BFS. 4) To learn Topological sorting. If you know DFS, then you basically know this too. 5) Learn Backtracking. This is not any algorithm, rather a name for ecursive searching. Example problems are- N-queens, hamiltonian cycle etc.It will give you the idea that, all the ACM problems are olvable by you, if you didnot have any time-limit. 6) At this point, you will feel that BFS/DFS/Backtracking is not good enough to find the shortest paths in graphs. So, you will learn 3 new algorithms- Dijkstra, BellmanFord, Floyd-Warshall. Play with these Algorithms to understand, when to apply what. 7) At this point, you are little experienced with graphs. You should be learning Minimum Spanning Tree. Learn Kruskal first, then learn Prim. There is particularly no age for starting Dynamic programming. But, once you are familiar with recursive relations, you should start

this fantastic thing. Learn quickly- LCS, 0/1 Knapsack, Matrix chain multiplication. Then solve varieties of DP problems. Well, no more today. I mentioned at least a dozen of things to learn today. So, learn these if you havent yet. Figure out the next steps (from 9 to infinity) by yourself. You will learn- max-flow, matching, inear-programming etc in these steps for sure. Thats all Folks! BestsS. M. Shahriar Nirjon http://nirjon. googlepages. com http://www.somewher einblog.net/ blog/nirjon_ buet

You might also like