1 Linear algebra problems
1.1 Matrix and vector operations
1.1.1 Vector operations
Pairwise summation
Pairwise summation of numbers
Parallel prefix scan algorithm using pairwise summation
Uniform norm of a vector: Real version, serial-parallel variant
Dot product
The serial-parallel summation method
1.1.2 Matrix-vector operations
1.1.2.1 Multiplying a nonsingular matrix by a vector
Dense matrix-vector multiplication
1.1.2.2 Multiplying a matrix of special form by a vector
- Fourier transform
- Fast Fourier transform for composite dimension
Fast Fourier transform for powers-of-two
Cooley–Tukey Fast Fourier Transform, radix-2 case
- Fast Fourier transform for even powers-of-two
- Fast Fourier transform for composite dimension with small prime divisors (2,3,5,7)
- Fast Fourier transform for prime dimension
1.1.3 Matrix operations
Dense matrix multiplication
Dense matrix multiplication (serial version for real matrices)
- Strassen's algorithm
1.2 Matrix decompositions
Matrix decomposition problem
Triangular decompositions
Gaussian elimination (finding the LU decomposition)
LU decomposition using Gaussian elimination without pivoting
LU decomposition via Gaussian elimination
Gaussian elimination, compact scheme for tridiagonal matrices and its modifications
- Compact scheme for Gaussian elimination: Dense matrix
Compact scheme for Gaussian elimination and its modifications: Tridiagonal matrix
Gaussian elimination, compact scheme for tridiagonal matrices, serial version
Stone doubling algorithm for the LU decomposition of a tridiagonal matrix
Serial-parallel algorithm for the LU decomposition of a tridiagonal matrix
LU decomposition using Gaussian elimination with pivoting
Gaussian elimination with column pivoting
Gaussian elimination with row pivoting
Gaussian elimination with diagonal pivoting
Gaussian elimination with complete pivoting
Cholesky method
Cholesky decomposition
- Available triangular decompositions for matrices of special form
Unitary-triangular factorizations
QR decomposition of dense nonsingular matrices
Givens (rotations) method for the QR decomposition of a matrix
Givens method
Householder (reflections) method for the QR decomposition of a matrix
Householder (reflections) method for the QR decomposition of a square matrix, real point-wise version
Orthogonalization method
Classical orthogonalization method
Orthogonalization method with reorthogonalization
Triangular decomposition of a Gram matrix
QR decomposition methods for dense Hessenberg matrices
Givens (rotations) method for the QR decomposition of a (real) Hessenberg matrix
Householder (reflections) method for the QR decomposition of a (real) Hessenberg matrix
Reducing matrices to compact forms
Unitary reductions to Hessenberg form
Householder (reflections) method for reducing of a matrix to Hessenberg form
Classical point-wise Householder (reflections) method for reducing a matrix to Hessenberg form
- Givens (rotations) method for reducing a matrix to Hessenberg form
- Classical point-wise Givens (rotations) method for reducing a matrix to Hessenberg form
Unitary reductions to tridiagonal form
- Householder (reflections) method for reducing to tridiagonal form
Householder (reflections) method for reducing a symmetric matrix to tridiagonal form
Householder (reflections) method for reducing a complex Hermitian matrix to symmetric tridiagonal form
- Givens (rotations) reduction to tridiagonal form
Eigenvalue decomposition (finding eigenvalues and eigenvectors)
- Unitary non-similarity reductions to compact forms
- Unitary reduction to bidiagonal form
Householder (reflections) reduction of a matrix to bidiagonal form
- Givens (rotations) reduction of a matrix to bidiagonal form
- Singular value decomposition
Singular value decomposition (finding singular values and singular vectors)
- Methods for calculating singular values of bidiagonal matrices
- The dqds algorithm for calculating singular values of bidiagonal matrices
One step of the dqds algorithm
1.3 Solving systems of linear algebraic equations
- Direct methods
Linpack benchmark
- Matrices of a special form
- Triangular matrices
Forward substitution
Backward substitution
- Bidiagonal matrices
- Forward and backward substitution for bidiagonal matrices
Stone doubling algorithm for solving bidiagonal SLAEs
- Serial-parallel variant of the backward substitution
Methods for solving tridiagonal SLAEs
- Methods based on the conventional LU decomposition
Thomas algorithm
Thomas algorithm, pointwise version
Repeated Thomas algorithm, pointwise version
Stone doubling algorithm
- Stone doubling algorithm for the LU decomposition of tridiagonal matrices
Stone doubling algorithm for solving bidiagonal SLAEs
Serial-parallel method for solving tridiagonal matrices based on the LU decomposition and backward substitutions
- Other methods
- Reduction method
- Complete reduction method
- Reduction method repeated for a new right-hand side
- Two-sided Thomas algorithm
Two-sided Thomas algorithm, pointwise version
Repeated two-sided Thomas algorithm, pointwise version
- Cyclic reduction
Complete cyclic reduction
- Cyclic reduction repeated for a new right-hand side
- Bordering method
- Methods for solving block triangular matrices
- Block forward substitution (real version)
- Block backward substitution (real version)
- Methods for solving block bidiagonal matrices
- Forward and backward substitution for block bidiagonal matrices
- Stone doubling algorithm for solving block bidiagonal matrices
- Serial-parallel variant of the block backward substitution for solving block bidiagonal matrices
- Methods for solving block tridiagonal matrices
- Methods based on the conventional LU decomposition
Block Thomas algorithm
- Serial-parallel method for solving block systems of linear algebraic equations based on the LU decomposition and backward substitutions
- Other methods
Two-sided Thomas algorithm, block variant
- Block cyclic reduction
- Block bordering method
- Solving systems of linear algebraic equations with coefficient matrices of special form whose inverses are known
- Iterative methods for solving systems of linear algebraic equations
High Performance Conjugate Gradient (HPCG) benchmark
Biconjugate gradient stabilized method (BiCGStab)
Kaczmarz's algorithm
1.4 Solving eigenvalue problems
Eigenvalue decomposition (finding eigenvalues and eigenvectors)
QR algorithm
QR algorithm as implemented in SCALAPACK
Classical point-wise Householder (reflections) method for reducing a matrix to Hessenberg form
Hessenberg QR algorithm as implemented in SCALAPACK
Symmetric QR algorithm as implemented in SCALAPACK
Householder (reflections) method for reducing a symmetric matrix to tridiagonal form
- Symmetric tridiagonal QR algorithm as implemented in SCALAPACK
QR algorithm for complex Hermitian matrices as implemented in SCALAPACK
Householder (reflections) method for reducing a complex Hermitian matrix to symmetric tridiagonal form
- Symmetric tridiagonal QR algorithm as implemented in SCALAPACK
The Jacobi (rotations) method for solving the symmetric eigenvalue problem
The classical Jacobi (rotations) method with pivoting for symmetric matrices
Serial Jacobi (rotations) method for symmetric matrices
Serial Jacobi (rotations) method with thresholds for symmetric matrices
- Lanczos algorithm
Lanczos algorithm in exact algorithm (without reorthogonalization)
- Partial eigenvalue problem
- Method of bisection
Singular value decomposition (finding singular values and singular vectors)
Jacobi (rotations) method for finding singular values
- Serial Jacobi (rotations) method for finding singular values
- Jacobi method with a special choice of rotations for finding singular values
- QR algorithm as applied to singular value decomposition алгоритм
1.5 Algebra of polynomials
Horners method
2 Algorithms on lists and arrays
2.1 Search algorithms
- Linear search: Finding an item in an arbitrary list, [math]O(n)[/math]
Binary search: Finding the position of a target value within a sorted array, [math]O(\log(n))[/math]
2.2 Sorting algorithms
- Binary tree sort
- Bubble sort
- Merge sort (serial and parallel variants)
2.3 Graph algorithms
- Graph traversal
Breadth-first search (BFS)
Depth-first search (DFS)
Single Source Shortest Path (SSSP)
Breadth-first search (BFS) (for unweighted graphs)
Dijkstra's algorithm
Bellman-Ford algorithm
Δ-stepping algorithm
All Pairs Shortest Path (APSP)
Johnson's algorithm
Floyd-Warshall algorithm
Transitive closure of a directed graph
Purdom's algorithm
Longest shortest path
Construction of the minimum spanning tree (MST)
Boruvka's algorithm
Kruskal's algorithm
Prim's algorithm
GHS algorithm
Search for isomorphic subgraphs
Ullman's algorithm
VF2 algorithm
Graph connectivity
Shiloach-Vishkin algorithm for finding the connected components
Disjoint set union
Tarjan's strongly connected components algorithm
DCSC algorithm for finding the strongly connected components
Tarjan's biconnected components algorithm
Tarjan-Vishkin biconnected components algorithm
Tarjan's algorithm for finding the bridges of a graph
Vertex connectivity of a graph
Gabow's edge connectivity algorithm
Finding maximal flow in a transportation network
Ford–Fulkerson algorithm
Preflow-Push algorithm
Finding minimal-cost flow in a transportation network
Assignment problem
Hungarian algorithm
Auction algorithm
Hopcroft–Karp algorithm
- Betweenness centrality algorithm
3 Computational geometry
- Finding the diameter of a point set
- Finding the convex hull of a point set
- Delaunay triangulation
- Voronoi diagram
- Point-in-polygon problem
- Convex polygon intersection
- Star-shaped polygon intersection
3.1 Computer graphics
- Line drawing algorithms: Approximating a line segment on discrete graphical media
- Determining visible parts of a three-dimensional scene
- Ray tracing: Rendering realistic images
- Global illumination: Regarding direct illumination and reflection from other objects
4 Computer analysis and modeling
4.1 Computer benchmarks
High Performance Conjugate Gradient (HPCG) benchmark
Linpack benchmark
4.2 Algorithms of quantum system simulation
- Algorithms of quantum computation simulation
Single-qubit transform of a state vector
Two-qubit transform of a state vector
- Quantum Fourier transform simulation
4.3 Machine learning algorithms
k-means clustering
4.3.1 Neural networks
- Pattern recognition
- Text recognition
- Speech recognition
Face recognition
4.3.2 Game theory algorithms
5 Miscellaneous applied problems
5.1 Optimization algorithms
- Linear programming
- Simplex algorithm
- Branch and bound method
- Genetic algorithms
- Ant colony algorithms
- Hybrid algorithms
Stochastic dual dynamic programming (SDDP)
5.2 Solving systems of nonlinear equations
Newton's method for systems of nonlinear equations
5.3 Numerical quadrature
Cubature rules
Numerical quadrature (cubature) rules on an interval (for a multidimensional cube)
- Rectangle rule
- Trapezoid rule
- Simpson rule
- Gauss rule
5.4 Algorithms for solving equations of mathematical physics
Poisson equation, solving with DFT
6 Cryptographic algorithms
Meet-in-the-middle attack
7 Other algorithms