Glossary
A comprehensive collection of terms, concepts, and definitions used throughout Algorithm Wiki. Browse by category or search for specific terms to better understand the theoretical foundations and technical vocabulary of algorithms and computational complexity.
Algebraic Structures
Abelian Group
A group is abelian if its group operation is commutative.
Associativity
A binary operation is associative if
Commutativity
A binary operation is commutative if .
Field
A field is a commutative ring (multiplication commutes) where (additive and multiplicative identities are different) and all nonzero elements are invertible under multiplication.
Group
A group is a set with an operation that satisfies the following: the operation is associative and has an identity element , and every element has an inverse (that is, for all g in the group, there exists an element such that
Ring
A ring is a set with two operations, and . must be an abelian group under addition. Also, must be associative and have an identity element. Finally, must be distributive with respect to , that is, and (b+c) \cdot a = b\cdot a + c\cdot a$.
Semiring
Like a ring, a semiring is a set with a and operation. However, it drops the requirement that have additive inverses.
Algorithmic Analysis
Big O Notation
↑Big O notation is used to classify algorithms according to how their runtime or space requirements grow as the input size grows. For example, we say that an algorithm requires O(f(n)) time if, as the size of the input (n) grows linearly, the amount of time required to run the algorithm grows proportially to f(n).
Geometry
Convex Set
↑A set is convex if for any two elements , any linear combination of and of the form is still in .
Euclidean Space
↑Metric Space
↑A set equipped with a distance function, which provides a measure of distance between any two points in the set and satisfies certain axioms. Metrics must be symmetric, i.e. , satisfy iff , and the triangle inequality:
Graph Properties
Dense
↑In general, a dense graph is a graph in which the number of edges is close to the maximal number of edges. For a graph on vertices, there are possible edges (one between each pair of vertices. Thus, a dense graph would have edges.
Sparse
↑Similarly, a sparse graph is one where the number of edges is not close to the maximum. For a graph on vertices, where there are possible edges, a sparse graph might have or even fewer edges.
Graph Subsets
Matching
↑A matching on a graph (or an independent edge set) is a set of edges that don't have vertices in common. In other words, each vertex has 0 or 1 edges incident to it.
Graph Types
Flow Network
↑A flow network is a directed graph where each edge has a capacity and receives a flow. The flow must satisfy Kirchhoff's circuit laws — the sum of the flows entering a node must equal the sum of the flows exiting it, and the directed sum of the flow in a cycle must be 0.
Tree
↑A tree is a graph in which any two vertices are connected by exactly one path, or equivalently a connected acyclic graph.
Linear Algebra
Problem Types
Decision Problem
↑Any problem that takes an input (usually encoded by a bitstring) and outputs a single bit, 0 or 1. Canonically, we think about decision problems in the context of Turing machines, which accept or reject given an input tape.
Optimization Problem
↑The problem of finding the "best" solution from all feasible solutions, usually done by maximizing or minimizing the value of some objective function. Examples include: shortest paths, minimum spanning trees, etc.