A procedure is a pattern for the local evolution of a computational process. (SICP book chapter 1) https://mitpress.mit.edu/sicp/chapter1/node11.html
An al·go·rithm is a self-contained step-by-step set of operations and procedures. https://en.wikipedia.org/wiki/Algorithm
It is a procedure or recipe for solving a problem, based on conducting a sequence of specified actions. Executing an algorithm means following a precise list of steps in order to solve a problem, and the problem is usually turning an input into an output.
The overall list of algorithms is huge. https://en.wikipedia.org/wiki/List_of_algorithms
Here is a small selection of some essential ones:
Strings Matching & String Metrics
-
Levenshtein distance https://en.wikipedia.org/wiki/Levenshtein_distance
-
Rabin-Karp used for example in Plagiarism detection https://en.wikipedia.org/wiki/Rabin-Karp_algorithm
-
Boyer-Moore used for example in GNU's grep https://en.wikipedia.org/wiki/Boyer-Moore_string_search_algorithm
Graph and Tree Search
-
BFS and DFS https://en.wikipedia.org/wiki/Depth-first_search
-
Dijkstra's algorithm https://en.wikipedia.org/wiki/Dijkstra's_algorithm
-
A* search algorithm https://en.wikipedia.org/wiki/A*_search_algorithm
-
Tarjan's algorithm https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm
Combinatorial optimization
-
Dynamic Programming https://en.wikipedia.org/wiki/Dynamic_programming
-
Karmarkar Karp, the easiest hard problem https://en.wikipedia.org/wiki/Partition_problem
Classification and Machine Learning
-
k-NN k-nearest neighbors algorithm https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm
-
Backpropagation Algorithm https://en.wikipedia.org/wiki/Backpropagation
Classic