background preloader


Warning: LiteratePrograms is currently undergoing a license migration to Creative Commons CC0 1.0. All content will be erased unless its authors agree to release it under CC0. If you wish for your contributed content to be retained, please add a statement to your user page that you release all your contributions under CC0 1.0, and inform me via Special:Emailuser/Dcoetzee. You can also re-add content that you created after the migration, provided that you are the sole author. At this time all article namespace content is already migrated. Based on Donald Knuth's concept of literate programming, LiteratePrograms is a collection of code samples displayed in an easy-to-read way, collaboratively edited and debugged, and all released into the public domain under the Creative Commons CC0 1.0 waiver (see Copyrights) so that anyone can use our code and text for any purpose without restriction. If you're interested in contributing your own programs, you can read about how to write an article.

Tree traversal Types[edit] Pre-order: F, B, A, D, C, E, G, I, H In-order: A, B, C, D, E, F, G, H, I Post-order: A, C, E, D, B, H, I, G, F Level-order: F, B, G, A, D, I, C, E, H Compared to linear data structures like linked lists and one-dimensional arrays, which have a canonical method of traversal (namely in linear order), tree structures can be traversed in many different ways. The name given to a particular style of traversal comes from the order in which nodes are visited. For the purpose of illustration, it is assumed that left nodes always have priority over right nodes. Depth-first traversal is easily implemented via a stack, including recursively (via the call stack), while breadth-first traversal is easily implemented via a queue, including corecursively. Beyond these basic traversals, various more complex or hybrid schemes are possible, such as depth-limited searches such as iterative deepening depth-first search. Depth-first[edit] Pre-order[edit] In-order (symmetric)[edit] Post-order[edit] etc.

Clever Algorithms Sorting Algorithm Animations Algorithms in Java, Parts 1-4, 3rd edition by Robert Sedgewick. Addison Wesley, 2003. Quicksort is Optimal by Robert Sedgewick and Jon Bentley, Knuthfest, Stanford University, January, 2002. Dual Pivot Quicksort: Code by Discussion. Bubble-sort with Hungarian (“Csángó”) folk dance YouTube video, created at Sapientia University, Tirgu Mures (Marosvásárhely), Romania. Select-sort with Gypsy folk dance YouTube video, created at Sapientia University, Tirgu Mures (Marosvásárhely), Romania. Sorting Out Sorting, Ronald M. Graph traversal Redundancy[edit] Unlike tree traversal, graph traversal may require that some nodes be visited more than once, since it is not necessarily known before transitioning to a node that it has already been explored. As graphs become more dense, this redundancy becomes more prevalent, causing computation time to increase; as graphs become more sparse, the opposite holds true. Thus, it is usually necessary to remember which nodes have already been explored by the algorithm, so that nodes are revisited as infrequently as possible (or in the worst case, to prevent the traversal from continuing indefinitely). This may be accomplished by associating each node of the graph with a "color" or "visitation" state during the traversal, which is then checked and updated as the algorithm visits each node. Several special cases of graphs imply the visitation of other nodes in their structure, and thus do not require that visitation be explicitly recorded during the traversal. Depth-first search[edit]

Cheat Sheet : All Cheat Sheets in one page A* Pathfinding for Beginners By Patrick Lester (Updated July 18, 2005) This article has been translated into Albanian, Chinese, Finnish, German, Greek, Korean, Polish, Portuguese, Romanian, Russian, Serbian, and Spanish. Other translations are welcome. See email address at the bottom of this article. The A* (pronounced A-star) algorithm can be complicated for beginners. This article does not try to be the definitive work on the subject. Finally, this article is not program-specific. But we are getting ahead of ourselves. Introduction: The Search Area Let’s assume that we have someone who wants to get from point A to point B. [Figure 1] The first thing you should notice is that we have divided our search area into a square grid. These center points are called “nodes”. Starting the Search Once we have simplified our search area into a manageable number of nodes, as we have done with the grid layout above, the next step is to conduct a search to find the shortest path. We begin the search by doing the following: where 1.

Introduction to Algorithms - Massachusetts Institute of Technology Readings refer to chapters and/or sections of Introduction to Algorithms, 3rd Edition. See the table of contents. Sorting and Searching Strings Ternary Search Trees Jon Bentley and Robert Sedgewick feature article in Dr. Dobbs Journal April, 1998 Abstract When you have to store a set of strings, what data structure do you use? Fast Algorithms for Sorting and Searching Strings presented at Eighth Annual ACM-SIAM Symposium on Discrete Algorithms New Orleans, January, 1997 We present theoretical algorithms for sorting and searching multidimensional data and practical C implementations for the application where keys are character strings. Comments, questions, suggestions: mail mail