# List of algorithms

The following is a list of algorithms along with one-line descriptions for each.

## Combinatorial algorithms

### Graph algorithms

#### Routing for graphs

• A*: special case of best-first search that uses heuristics to improve speed
• B*: a best-first graph search algorithm that finds the least-cost path from a given initial node to any goal node (out of one or more possible goals)
• Backtracking: abandons partial solutions when they are found not to satisfy a complete solution
• Beam search: is a heuristic search algorithm that is an optimization of best-first search that reduces its memory requirement
• Beam stack search: integrates backtracking with beam search
• Best-first search: traverses a graph in the order of likely importance using a priority queue
• Bidirectional search: find the shortest path from an initial vertex to a goal vertex in a directed graph
• Bloom filter: a constant time and memory check to see whether a given element exists in a set. May return a false positive, but never a false negative.
• Breadth-first search: traverses a graph level by level
• Brute-force search: An exhaustive and reliable search method, but computationally inefficient in many applications.
• D*: an incremental heuristic search algorithm
• Depth-first search: traverses a graph branch by branch
• Dijkstra's algorithm: A special case of A* for which no heuristic function is used
• General Problem Solver: a seminal theorem-proving algorithm intended to work as a universal problem solver machine.
• Iterative deepening depth-first search (IDDFS): a state space search strategy
• Jump point search: An optimization to A* which may reduce computation time by an order of magnitude using further heuristics.
• Lexicographic breadth-first search (also known as Lex-BFS): a linear time algorithm for ordering the vertices of a graph
• Uniform-cost search: a tree search that finds the lowest cost route where costs vary
• SSS*: state space search traversing a game tree in a best-first fashion similar to that of the A* search algorithm

### Sequence algorithms

#### Approximate sequence matching

• Bitap algorithm: fuzzy algorithm that determines if strings are approximately equal.
• Phonetic algorithms
• Daitch–Mokotoff Soundex: a Soundex refinement which allows matching of Slavic and Germanic surnames
• Double Metaphone: an improvement on Metaphone
• Match Rating Approach: a phonetic algorithm developed by Western Airlines
• Metaphone: an algorithm for indexing words by their sound, when pronounced in English
• NYSIIS: phonetic algorithm, improves on Soundex
• Soundex: a phonetic algorithm for indexing names by sound, as pronounced in English
• String metrics: compute a similarity or dissimilarity (distance) score between two pairs of text strings
• Trigram search: search for text when the exact syntax or spelling of the target object is not precisely known

#### Sequence merging

• Simple merge algorithm
• k-way merge algorithm
• Union (merge, with elements on the output not repeated)

#### Sequence sorting

• Exchange Sorts
• Bubble sort: for each pair of indices, swap the items if out of order
• Cocktail shaker sort or bidirectional bubble sort, a bubble sort traversing the list alternately from front to back and back to front
• Comb sort
• Gnome sort
• Odd–even sort
• Quicksort: divide list into two, with all items on the first list coming before all items on the second list.; then sort the two lists. Often the method of choice
• Humorous or ineffective
• Hybrid
• Flashsort
• Introsort: begin with quicksort and switch to heapsort when the recursion depth exceeds a certain level
• Timsort: adaptative algorithm derived from merge sort and insertion sort. Used in Python 2.3 and up, and Java SE 7.
• Insertion sorts
• Insertion sort: determine where the current item belongs in the list of sorted ones, and insert it there
• Library sort
• Patience sorting
• Shell sort: an attempt to improve insertion sort
• Tree sort (binary tree sort): build binary tree, then traverse it to create sorted list
• Cycle sort: in-place with theoretically optimal number of writes
• Merge sorts
• Merge sort: sort the first and second half of the list separately, then merge the sorted lists
• Strand sort
• Non-comparison sorts
• Selection sorts
• Heapsort: convert the list into a heap, keep removing the largest element from the heap and adding it to the end of the list
• Selection sort: pick the smallest of the remaining elements, add it to the end of the sorted list
• Smoothsort
• Other
• Unknown class

## Computational science

### Geoscience

• Vincenty's formulae: a fast algorithm to calculate the distance between two latitude/longitude points on an ellipsoid
• Geohash: a public domain algorithm that encodes a decimal latitude/longitude pair as a hash string

### Linguistics

• Lesk algorithm: word sense disambiguation
• Stemming algorithm: a method of reducing words to their stem, base, or root form
• Sukhotin's algorithm: a statistical classification algorithm for classifying characters in a text as vowels or consonants

## Computer science

### Computer architecture

• Tomasulo algorithm: allows sequential instructions that would normally be stalled due to certain dependencies to execute non-sequentially

## Information theory and signal processing

### Digital signal processing

• Adaptive-additive algorithm (AA algorithm): find the spatial frequency phase of an observed wave source
• Discrete Fourier transform: determines the frequencies contained in a (segment of a) signal
• Fast folding algorithm: an efficient algorithm for the detection of approximately periodic events within time series data
• Gerchberg–Saxton algorithm: Phase retrieval algorithm for optical planes
• Goertzel algorithm: identify a particular frequency component in a signal. Can be used for DTMF digit decoding.
• Karplus-Strong string synthesis: physical modelling synthesis to simulate the sound of a hammered or plucked string or some types of percussion

## Operating systems algorithms

### I/O scheduling

#### Disk scheduling

• Elevator algorithm: Disk scheduling algorithm that works like an elevator.
• Shortest seek first: Disk scheduling algorithm to reduce seek time.