Algorithm classification

From Algowiki
Jump to: navigation, search

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. Algorithm 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. Method level 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. Algorithm level Givens (rotations) method for the QR decomposition of a (real) Hessenberg matrix
      2. Algorithm 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. Method level Householder (reflections) method for reducing 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) method for reducing to tridiagonal form
        1. Algorithm level Householder (reflections) method for reducing a symmetric matrix to tridiagonal form
        2. Algorithm level Householder (reflections) method for reducing a complex Hermitian matrix to symmetric 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. Algorithm level Stone doubling algorithm for solving bidiagonal SLAEs
          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. Algorithm level Horners 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