# AllMyAlgorithms

The aim of this semantic wiki is to collect, categorize and relate **all** algorithms and data structures.

Furthermore, the wiki should detail all uses of every algorithm and list all algorithms successfully applied to solve a particular problem.

This includes pointing out how a problem must be conceptualized in order to be solvable by a certain algorithm (i.e. *as* what kind of thing or under which model it must be regarded to be valid input).

The main objectives are to

- relate the
*same algorithmic solution*found for problems posed in*different areas of study*and thereby reduce the number of "different" algorithms by showing how a problem has to be*seen as*that it is valid input for an algorithm - enable powerful queries for algorithms and data structures solving problems in various fields, for inspiration (views), insight (techniques) and implementations

**Please register and contribute**(contact andreas.bihlmaier@gmx.de)

## Algorithm categories

Sorting, Graphs, Combinatorical, Dynamic Programming, Approximation, Heuristics, Optimization, Geometry, Strings, Numerical, Arithmetic, Probabilistic, Randomized, Transformation,

## Data structure categories

Sets, Key Value, Trees, Strings, Ordered, Graphs,

## Problem categories

Paths, Partition, Connection, Sequence, Search, Recognition, Learning, Inference, Arithmetic, Geometric, Aggregation, Distribution,

## Views

Graph, Matrix or Vector, Image, Space and Time, Dynamic System, Control, Optimization, Branch and Bound, Game Theory, Market, Multi-Agent, Planning, Physics,

## Fields

Robotics, Computer Vision, Machine Learning, Image Processing, Pattern Recognition, Cognition, Language Processing, Compiler Design, Type Theory, Medical Image Computing, Databases, Cryptography, Human Machine Interaction, Automated Planning,

## Techniques

Divide and Conquer, Recursion, Dynamic Programming,

## Implementations

External Memory, Parallel Shared Memory, Parallel Distributed Memory, Graph, Computer Vision, Machine Learning,

## The idea behind

This effort was motivated after incidentally realizing that the Wagner–Fischer algorithm (measuring Levenshtein distance between two strings) and the Dynamic Time Warping algorithm (measuring similarity between two sequences which may vary in time or speed) are actually the same algorithm. This is obvious when looking at both algorithms at the same time. However, the speech and pattern recognition community seems to always refer to the Dynamic time warping algorithm while the Wagner-Fischer algorithm is better known in the algorithm community. Both communities would benefit if the synonymy or very close kinship of the algorithm would be well-known.

Similarly, it is quite inspiring to see the same problem under different views and thereby different algorithmic solutions, e.g. edge detection in images as just this problem or as input to min-cut, geometric or diffusion algorithms.