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