Difference between revisions of "Algorithm classification"

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

Revision as of 16:46, 6 March 2018

1 Linear algebra problems

1.1 Matrix and vector operations

1.1.1 Vector operations

  1. Method level Pairwise summation
    1. Method level Pairwise summation of numbers
    2. Algorithm level Parallel prefix scan algorithm using pairwise summation
  2. Algorithm level Uniform norm of a vector: Real version, serial-parallel variant
  3. Algorithm level Dot product
  4. Algorithm level The serial-parallel summation method

1.1.2 Matrix-vector operations

1.1.2.1 Multiplying a nonsingular matrix by a vector

  1. Algorithm level Dense matrix-vector multiplication

1.1.2.2 Multiplying a matrix of special form by a vector

  1. Fourier transform
    1. Fast Fourier transform for composite dimension
      1. Method level Fast Fourier transform for powers-of-two
        1. Algorithm level Cooley–Tukey Fast Fourier Transform, radix-2 case
        2. Fast Fourier transform for even powers-of-two
      2. Fast Fourier transform for composite dimension with small prime divisors (2,3,5,7)
    2. Fast Fourier transform for prime dimension

1.1.3 Matrix operations

  1. Problem level Dense matrix multiplication
    1. Problem level Dense matrix multiplication (serial version for real matrices)
    2. Strassen's algorithm

1.2 Matrix decompositions

Problem level Matrix decomposition problem

  1. Problem level Triangular decompositions
    1. Gaussian elimination (finding the LU decomposition))
      1. Method level LU decomposition using Gaussian elimination without pivoting
        1. Algorithm level LU decomposition via Gaussian elimination
        2. Method level Gaussian elimination, compact scheme for tridiagonal matrices and its modifications
          1. Compact scheme for Gaussian elimination: Dense matrix
          2. Method level Compact scheme for Gaussian elimination and its modifications: Tridiagonal matrix
            1. Algorithm level Gaussian elimination, compact scheme for tridiagonal matrices, serial version
            2. Algorithm level Stone doubling algorithm for the LU decomposition of a tridiagonal matrix
            3. Method level Serial-parallel algorithm for the LU decomposition of a tridiagonal matrix
      2. Method level LU decomposition using Gaussian elimination with pivoting
        1. Algorithm level Gaussian elimination with column pivoting
        2. Algorithm level Gaussian elimination with row pivoting
        3. Algorithm level Gaussian elimination with diagonal pivoting
        4. Algorithm level Gaussian elimination with complete pivoting
    2. Method level Cholesky method
      1. Algorithm level Cholesky decomposition
  2. Available triangular decompositions for matrices of special form
  3. Problem level Unitary-triangular factorizations
    1. Problem level QR decomposition of dense nonsingular matrices
      1. Method level Givens (rotations) method for the QR decomposition of a matrix
        1. Algorithm level Givens method
      2. Method level Householder (reflections) method for the QR decomposition of a matrix
        1. Algorithm level Householder (reflections) method for the QR decomposition of a square matrix, real point-wise version
      3. Method level Orthogonalization method
        1. Algorithm level Classical orthogonalization method
        2. Algorithm level Orthogonalization method with reorthogonalization
      4. Method level Triangular decomposition of a Gram matrix
    2. Problem level QR decomposition methods for dense Hessenberg matrices
      1. Method level Givens (rotations) method for the QR decomposition of a (real) Hessenberg matrix
      2. Method level Householder (reflections) method for the QR decomposition of a (real) Hessenberg matrix
  4. Problem level Reducing matrices to compact forms
    1. Problem level Unitary reductions to Hessenberg form
      1. Householder (reflections) reduction of a matrix to Hessenberg form
        1. Algorithm level Classical point-wise Householder (reflections) method for reducing a matrix to Hessenberg form
      2. Givens (rotations) method for reducing a matrix to Hessenberg form
        1. Classical point-wise Givens (rotations) method for reducing a matrix to Hessenberg form
    2. Problem level Unitary reductions to tridiagonal form
      1. Householder (reflections) reduction to tridiagonal form
        1. Householder (reflections) reduction of a symmetric matrix to tridiagonal form
        2. Householder (reflections) reduction of a complex Hermitian matrix to tridiagonal form
      2. Givens (rotations) reduction to tridiagonal form
    3. Problem level Eigenvalue decomposition (finding eigenvalues and eigenvectors)
  5. Unitary non-similarity reductions to compact forms
    1. Unitary reduction to bidiagonal form
      1. Algorithm level Householder (reflections) reduction of a matrix to bidiagonal form
      2. Givens (rotations) reduction of a matrix to bidiagonal form
    2. Singular value decomposition
      1. Problem level Singular value decomposition (finding singular values and singular vectors)
        1. Methods for calculating singular values of bidiagonal matrices
          1. The dqds algorithm for calculating singular values of bidiagonal matrices
            1. Algorithm level One step of the dqds algorithm

1.3 Solving systems of linear algebraic equations

  1. Direct methods
    1. Algorithm level Linpack benchmark
    2. Matrices of a special form
      1. Triangular matrices
        1. Algorithm level Forward substitution
        2. Algorithm level Backward substitution
        3. Bidiagonal matrices
          1. Forward and backward substitution for bidiagonal matrices
          2. Stone doubling algorithm for solving bidiagonal matrices
          3. Serial-parallel variant of the backward substitution
      2. Problem level Methods for solving tridiagonal SLAEs
        1. Methods based on the conventional LU decomposition
          1. Method level Thomas algorithm
            1. Algorithm level Thomas algorithm, pointwise version
            2. Algorithm level Repeated Thomas algorithm, pointwise version
          2. Method level Stone doubling algorithm
            1. Stone doubling algorithm for the LU decomposition of tridiagonal matrices
            2. Algorithm level Stone doubling algorithm for solving bidiagonal SLAEs
          3. Method level Serial-parallel method for solving tridiagonal matrices based on the LU decomposition and backward substitutions
        2. Other methods
          1. Reduction method
            1. Complete reduction method
            2. Reduction method repeated for a new right-hand side
          2. Two-sided Thomas algorithm
            1. Algorithm level Two-sided Thomas algorithm, pointwise version
            2. Algorithm level Repeated two-sided Thomas algorithm, pointwise version
          3. Cyclic reduction
            1. Algorithm level Complete cyclic reduction
            2. Cyclic reduction repeated for a new right-hand side
          4. Bordering method
      3. Methods for solving block triangular matrices
        1. Block forward substitution (real version)
        2. Block backward substitution (real version)
        3. Methods for solving block bidiagonal matrices
          1. Forward and backward substitution for block bidiagonal matrices
          2. Stone doubling algorithm for solving block bidiagonal matrices
          3. Serial-parallel variant of the block backward substitution for solving block bidiagonal matrices
      4. Methods for solving block tridiagonal matrices
        1. Methods based on the conventional LU decomposition
          1. Algorithm level Block Thomas algorithm
          2. Serial-parallel method for solving block systems of linear algebraic equations based on the LU decomposition and backward substitutions
        2. Other methods
          1. Algorithm level Two-sided Thomas algorithm, block variant
          2. Block cyclic reduction
          3. Block bordering method
    3. Solving systems of linear algebraic equations with coefficient matrices of special form whose inverses are known
  2. Iterative methods for solving systems of linear algebraic equations
    1. Algorithm level High Performance Conjugate Gradient (HPCG) benchmark
    2. Algorithm level Biconjugate gradient stabilized method (BiCGStab)
    3. Algorithm level Kaczmarz's algorithm

1.4 Solving eigenvalue problems

  1. Problem level Eigenvalue decomposition (finding eigenvalues and eigenvectors)
    1. Method level QR algorithm
      1. Algorithm level QR algorithm as implemented in SCALAPACK
        1. Algorithm level Classical point-wise Householder (reflections) method for reducing a matrix to Hessenberg form
        2. Algorithm level Hessenberg QR algorithm as implemented in SCALAPACK
      2. Algorithm level Symmetric QR algorithm as implemented in SCALAPACK
        1. Algorithm level Householder (reflections) method for reducing a symmetric matrix to tridiagonal form
        2. Symmetric tridiagonal QR algorithm as implemented in SCALAPACK
      3. Algorithm level QR algorithm for complex Hermitian matrices as implemented in SCALAPACK
        1. Algorithm level Householder (reflections) method for reducing a complex Hermitian matrix to symmetric tridiagonal form
        2. Symmetric tridiagonal QR algorithm as implemented in SCALAPACK
    2. Method level The Jacobi (rotations) method for solving the symmetric eigenvalue problem
      1. Algorithm level The classical Jacobi (rotations) method with pivoting for symmetric matrices
      2. Algorithm level Serial Jacobi (rotations) method for symmetric matrices
      3. Algorithm level Serial Jacobi (rotations) method with thresholds for symmetric matrices
    3. Lanczos algorithm
      1. Algorithm level Lanczos algorithm in exact algorithm (without reorthogonalization)
  2. Partial eigenvalue problem
    1. Method of bisection
  3. Problem level Singular value decomposition (finding singular values and singular vectors)
    1. Method level Jacobi (rotations) method for finding singular values
      1. Serial Jacobi (rotations) method for finding singular values
      2. Jacobi method with a special choice of rotations for finding singular values
    2. QR algorithm as applied to singular value decomposition алгоритм

1.5 Algebra of polynomials

  1. Horner's method

2 Algorithms on lists and arrays

2.1 Search algorithms

  1. Linear search: Finding an item in an arbitrary list, [math]O(n)[/math]
  2. Algorithm level Binary search: Finding the position of a target value within a sorted array, [math]O(\log(n))[/math]

2.2 Sorting algorithms

  1. Binary tree sort
  2. Bubble sort
  3. Merge sort (serial and parallel variants)

2.3 Graph algorithms

  1. Graph traversal
    1. Algorithm level Breadth-first search (BFS)
    2. Algorithm level Depth-first search (DFS)
  2. Problem level Single Source Shortest Path (SSSP)
    1. Algorithm level Breadth-first search (BFS) (for unweighted graphs)
    2. Algorithm level Dijkstra's algorithm
    3. Algorithm level Bellman-Ford algorithm
    4. Algorithm level Δ-stepping algorithm
  3. Problem level All Pairs Shortest Path (APSP)
    1. Algorithm level Johnson's algorithm
    2. Algorithm level Floyd-Warshall algorithm
  4. Problem level Transitive closure of a directed graph
    1. Algorithm level Purdom's algorithm
  5. Algorithm level Longest shortest path
  6. Problem level Construction of the minimum spanning tree (MST)
    1. Algorithm level Boruvka's algorithm
    2. Algorithm level Kruskal's algorithm
    3. Algorithm level Prim's algorithm
    4. Algorithm level GHS algorithm
  7. Problem level Search for isomorphic subgraphs
    1. Algorithm level Ullman's algorithm
    2. Algorithm level VF2 algorithm
  8. Problem level Graph connectivity
    1. Algorithm level Shiloach-Vishkin algorithm for finding the connected components
    2. Algorithm level Disjoint set union
    3. Algorithm level Tarjan's strongly connected components algorithm
    4. Algorithm level DCSC algorithm for finding the strongly connected components
    5. Algorithm level Tarjan's biconnected components algorithm
    6. Algorithm level Tarjan-Vishkin biconnected components algorithm
    7. Algorithm level Tarjan's algorithm for finding the bridges of a graph
    8. Algorithm level Vertex connectivity of a graph
    9. Algorithm level Gabow's edge connectivity algorithm
  9. Problem level Finding maximal flow in a transportation network
    1. Algorithm level Ford–Fulkerson algorithm
    2. Algorithm level Preflow-Push algorithm
  10. Problem level Finding minimal-cost flow in a transportation network
  11. Problem level Assignment problem
    1. Algorithm level Hungarian algorithm
    2. Algorithm level Auction algorithm
    3. Algorithm level Hopcroft–Karp algorithm
  12. Betweenness centrality algorithm

3 Computational geometry

  1. Finding the diameter of a point set
  2. Finding the convex hull of a point set
  3. Delaunay triangulation
  4. Voronoi diagram
  5. Point-in-polygon problem
  6. Convex polygon intersection
  7. Star-shaped polygon intersection

3.1 Computer graphics

  1. Line drawing algorithms: Approximating a line segment on discrete graphical media
  2. Determining visible parts of a three-dimensional scene
  3. Ray tracing: Rendering realistic images
  4. Global illumination: Regarding direct illumination and reflection from other objects

4 Computer analysis and modeling

4.1 Computer benchmarks

  1. Algorithm level High Performance Conjugate Gradient (HPCG) benchmark
  2. Algorithm level Linpack benchmark

4.2 Algorithms of quantum system simulation

  1. Algorithms of quantum computation simulation
    1. Algorithm level Single-qubit transform of a state vector
    2. Algorithm level Two-qubit transform of a state vector
    3. Quantum Fourier transform simulation

4.3 Machine learning algorithms

  1. Algorithm level k-means clustering

4.3.1 Neural networks

  1. Pattern recognition
    1. Text recognition
    2. Speech recognition
    3. Algorithm level Face recognition

4.3.2 Game theory algorithms

5 Miscellaneous applied problems

5.1 Optimization algorithms

  1. Linear programming
  2. Simplex algorithm
  3. Branch and bound method
  4. Genetic algorithms
  5. Ant colony algorithms
  6. Hybrid algorithms
  7. Algorithm level Stochastic dual dynamic programming (SDDP)

5.2 Solving systems of nonlinear equations

  1. Algorithm level Newton's method for systems of nonlinear equations

5.3 Numerical quadrature

  1. Algorithm level Cubature rules
  2. Algorithm level Numerical quadrature (cubature) rules on an interval (for a multidimensional cube)
    1. Rectangle rule
    2. Trapezoid rule
    3. Simpson rule
    4. Gauss rule

5.4 Algorithms for solving equations of mathematical physics

  1. Algorithm level Poisson equation, solving with DFT

6 Cryptographic algorithms

  1. Algorithm level Meet-in-the-middle attack

7 Other algorithms