Difference between revisions of "Algorithm classification"
Jump to navigation
Jump to search
[quality revision] | [quality revision] |
Nebaruzdin (talk | contribs) (Add levels of classification.) |
|||
Line 1: | Line 1: | ||
# <div id="Vector operations">'''Vector operations'''</div> | # <div id="Vector operations">'''Vector operations'''</div> | ||
## {{level|Pairwise summation}} | ## {{level|Pairwise summation}} | ||
+ | ### {{level|Summing an array by pairwise summation}} | ||
+ | ### {{level|Finding partial sums of an array by pairwise summation}} | ||
+ | ## {{level|Uniform norm of a vector: Real version, serial-parallel variant}} | ||
## {{level|Dot product}} | ## {{level|Dot product}} | ||
+ | ## {{level|Serial-parallel summation method}} | ||
# <div id="Matrix-vector operations">'''Matrix-vector operations'''</div> | # <div id="Matrix-vector operations">'''Matrix-vector operations'''</div> | ||
## {{level|Dense matrix-vector multiplication}} | ## {{level|Dense matrix-vector multiplication}} | ||
# <div id="Matrix operations">'''Matrix operations'''</div> | # <div id="Matrix operations">'''Matrix operations'''</div> | ||
## {{level|Dense matrix multiplication}} | ## {{level|Dense matrix multiplication}} | ||
− | # <div id="Matrix | + | # <div id="Matrix decompositions">'''Matrix decompositions'''</div> |
− | ## ''Triangular | + | ## ''Triangular decompositions'' |
+ | ### Gaussian elimination (finding the LU decomposition) | ||
### {{level|Gaussian elimination}} | ### {{level|Gaussian elimination}} | ||
+ | ##### LU decomposition via Gaussian elimination | ||
+ | ##### Compact scheme for Gaussian elimination and its modifications | ||
+ | ###### Compact scheme for Gaussian elimination: Dense matrix | ||
+ | ###### {{level|Compact scheme for Gaussian elimination and its modifications: Tridiagonal matrix}} | ||
+ | ####### {{level|Compact scheme for Gaussian elimination: Tridiagonal matrix, serial variant}} | ||
+ | ####### {{level|Stone doubling algorithm for the LU decomposition of a tridiagonal matrix}} | ||
+ | ####### {{level|Serial-parallel algorithm for the LU decomposition of a tridiagonal matrix}} | ||
+ | #### Gaussian elimination with pivoting | ||
+ | ##### Gaussian elimination with column pivoting | ||
+ | ##### Gaussian elimination with row pivoting | ||
+ | ##### Gaussian elimination with diagonal pivoting | ||
+ | ##### Gaussian elimination with complete pivoting | ||
### {{level|Cholesky method}} | ### {{level|Cholesky method}} | ||
#### {{level|Cholesky decomposition}} | #### {{level|Cholesky decomposition}} | ||
− | ## ''Unitary-triangular | + | ### {{level|Available triangular decompositions for matrices of special form}} |
+ | ## ''Unitary-triangular decompositions'' | ||
### {{level|Givens method}} | ### {{level|Givens method}} | ||
− | ## '' | + | ### {{level|Householder method (reflection method) for the QR-decomposition of a matrix}} |
− | ## '' | + | ## ''Unitary Hessenberg decompositions'' |
− | # <div id=" | + | ### {{level|Householder method (reflection method) for reducing a matrix to Hessenberg (bidiagonal) form}} |
+ | ### {{level|Givens method (rotation method) for reducing a matrix to Hessenberg (bidiagonal) form}} | ||
+ | ## ''Unitary-diagonal decompositions'' | ||
+ | ### {{level|Eigenvalue decomposition (finding eigenvalues and eigenvectors)}} | ||
+ | ### {{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> | ||
## ''Direct methods'' | ## ''Direct methods'' | ||
### ''Linpack benchmark'' | ### ''Linpack benchmark'' | ||
Line 22: | Line 45: | ||
##### {{level|Forward substitution}} | ##### {{level|Forward substitution}} | ||
##### {{level|Backward substitution}} | ##### {{level|Backward substitution}} | ||
+ | #### ''Bidiagonal matrices'' | ||
+ | ###### {{level|Forward and backward substitution for bidiagonal matrices}} | ||
+ | ###### {{level|Stone doubling algorithm for solving bidiagonal matrices}} | ||
+ | ###### {{level|Serial-parallel variant of the backward substitution}} | ||
#### ''Tridiagonal matrices'' | #### ''Tridiagonal matrices'' | ||
− | ##### ''LU decomposition'' | + | ##### ''Methods based on the conventional LU decomposition'' |
###### ''Thomas algorithm'' | ###### ''Thomas algorithm'' | ||
####### {{level|Thomas algorithm, pointwise version}} | ####### {{level|Thomas algorithm, pointwise version}} | ||
− | ## ''Iterative methods'' | + | ####### {{level|Repeated Thomas algorithm, pointwise version|Thomas algorithm repeated for a new right-hand side: Classical scheme}} |
+ | ###### {{level|Stone doubling algorithm}} | ||
+ | ###### {{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}} | ||
+ | ###### Two-sided Thomas algorithm | ||
+ | ####### {{level|Two-sided Thomas algorithm, pointwise version|Classical two-sided scheme}} | ||
+ | ####### {{level|Repeated two-sided Thomas algorithm, pointwise version|Thomas algorithm repeated for a new right-hand side: Two-sided scheme }} | ||
+ | ###### {{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)|Block forward substitution}} | ||
+ | ##### {{level|Block backward substitution (real version))|Block backward substitution}} | ||
+ | ##### 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}} | ||
+ | # <div id="Solving eigenvalue problems">'''Solving eigenvalue problems'''</div> | ||
+ | ## {{level|Eigenvalue decomposition (finding eigenvalues and eigenvectors)}} | ||
+ | ### {{level|QR algorithm}} | ||
+ | ### {{level|Givens method (rotation method) for solving the symmetric eigenvalue problem}} | ||
+ | ## {{level|Singular value decomposition (finding singular values and singular vectors)}} | ||
# <div id="Computer benchmarks">'''Computer benchmarks'''</div> | # <div id="Computer benchmarks">'''Computer benchmarks'''</div> | ||
+ | ## {{level|High Performance Conjugate Gradient (HPCG) benchmark}} | ||
+ | ## {{level|Linpack benchmark}} | ||
# <div id="Fourier transform">'''Fourier transform'''</div> | # <div id="Fourier transform">'''Fourier transform'''</div> | ||
## {{level|Cooley–Tukey Fast Fourier Transform, radix-2 case}} | ## {{level|Cooley–Tukey Fast Fourier Transform, radix-2 case}} | ||
# <div id="Algebra of polynomials">'''Algebra of polynomials'''</div> | # <div id="Algebra of polynomials">'''Algebra of polynomials'''</div> | ||
## {{level|Horners method}} | ## {{level|Horners method}} | ||
− | # <div id="Numerical | + | # <div id="Numerical quadrature">'''Numerical quadrature'''</div> |
+ | ## {{level|Cubature rules}} | ||
+ | ## {{level|Numerical quadrature (cubature) rules on an interval (for a multidimensional cube)}} | ||
+ | ### [[Numerical quadrature (cubature) rules on an interval (for a multidimensional cube)#Rectangle rule|Rectangle rule]] | ||
+ | ### [[Numerical quadrature (cubature) rules on an interval (for a multidimensional cube)#Trapezoid rule|Trapezoid rule]] | ||
+ | ### [[Numerical quadrature (cubature) rules on an interval (for a multidimensional cube)#Simpson rule|Simpson rule]] | ||
+ | ### [[Numerical quadrature (cubature) rules on an interval (for a multidimensional cube)#Gauss rule|Gauss rule]] | ||
# <div id="Graph algorithms">'''Graph algorithms'''</div> | # <div id="Graph algorithms">'''Graph algorithms'''</div> | ||
+ | ## Traversing a graph | ||
+ | ### {{level|Breadth-first search (BFS)}} | ||
+ | ### {{level|Depth-first search (DFS)}} | ||
## {{level|Single Source Shortest Path (SSSP)}} | ## {{level|Single Source Shortest Path (SSSP)}} | ||
+ | ### {{level|Breadth-first search (BFS)}} (for unweighted graphs) | ||
+ | ### {{level|Dijkstra's algorithm}} | ||
+ | ### {{level|Bellman-Ford algorithm}} | ||
+ | ### {{level|Δ-stepping algorithm}} | ||
## {{level|All Pairs Shortest Path (APSP)}} | ## {{level|All Pairs Shortest Path (APSP)}} | ||
+ | ### {{level|Johnson's algorithm}} | ||
+ | ### {{level|Floyd-Warshall algorithm}} | ||
## {{level|Transitive closure of a directed graph}} | ## {{level|Transitive closure of a directed graph}} | ||
+ | ### {{level|Purdom's algorithm}} | ||
+ | ## {{level|Longest shortest path}} | ||
## {{level|Construction of the minimum spanning tree (MST)}} | ## {{level|Construction of the minimum spanning tree (MST)}} | ||
+ | ### {{level|Boruvka's akgorithm}} | ||
+ | ### {{level|Kruskal's algorithm}} | ||
+ | ### {{level|Prim's algorithm}} | ||
+ | ### {{level|GHS algorithm}} | ||
## {{level|Search for isomorphic subgraphs}} | ## {{level|Search for isomorphic subgraphs}} | ||
+ | ### {{level|Ullman's algorithm}} | ||
+ | ### {{level|VF2 algorithm}} | ||
## {{level|Graph connectivity}} | ## {{level|Graph connectivity}} | ||
+ | ### {{level|Shiloach-Vishkin algorithm for finding the connected components}} | ||
+ | ### {{level|Disjoint set union}} | ||
+ | ### {{level|Tarjan's strongly connected components algorithm}} | ||
+ | ### {{level|DCSC algorithm for finding the strongly connected components}} | ||
+ | ### {{level|Tarjan's biconnected components algorithm}} | ||
+ | ### {{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|Finding maximal flow in a transportation network}} | ||
+ | ### {{level|Ford–Fulkerson algorithm}} | ||
+ | ### {{level|Preflow-Push algorithm}} | ||
+ | ## {{level|Finding minimal-cost flow in a transportation network}} | ||
## {{level|Assignment problem}} | ## {{level|Assignment problem}} | ||
+ | ### {{level|Hungarian algorithm}} | ||
+ | ### {{level|Auction algorithm}} | ||
+ | ### {{level|Hopcroft–Karp algorithm}} | ||
+ | ## {{level|Betweenness centrality algorithm|Finding the betweenness centrality of vertices}} | ||
# <div id="Search algorithms">'''Search algorithms'''</div> | # <div id="Search algorithms">'''Search algorithms'''</div> | ||
+ | ## {{level|Binary search: Finding the position of a target value within a sorted array}}, <math>O(log(n))</math> | ||
# <div id="Sorting algorithms">'''Sorting algorithms'''</div> | # <div id="Sorting algorithms">'''Sorting algorithms'''</div> | ||
+ | ## {{level|Binary tree sort}} | ||
+ | ## {{level|Bubble sort}} | ||
+ | ## {{level|Merge sort (serial and parallel variants)}} | ||
# <div id="Computational geometry">'''Computational geometry'''</div> | # <div id="Computational geometry">'''Computational geometry'''</div> | ||
+ | ## {{level|Finding the diameter of a point set}} | ||
+ | ## {{level|Finding the convex hull of a point set}} | ||
+ | ## {{level|Delaunay triangulation}} | ||
+ | ## {{level|Voronoi diagram}} | ||
+ | ## {{level|Point-in-polygon problem}} | ||
+ | ## {{level|Convex polygon intersection}} - complexity <math>O(n_1 + n_2)</math> | ||
+ | ## {{level|Star-shaped polygon intersection}} - complexity <math>O(n_1 * n_2)</math> | ||
# <div id="Computer graphics">'''Computer graphics'''</div> | # <div id="Computer graphics">'''Computer graphics'''</div> | ||
+ | ## {{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}} | ||
# <div id="Cryptographic algorithms">'''Cryptographic algorithms'''</div> | # <div id="Cryptographic algorithms">'''Cryptographic algorithms'''</div> | ||
# <div id="Neural networks">'''Neural networks'''</div> | # <div id="Neural networks">'''Neural networks'''</div> | ||
# <div id="Optimization algorithms">'''Optimization algorithms'''</div> | # <div id="Optimization algorithms">'''Optimization algorithms'''</div> | ||
+ | ## {{level|Linear programming}} | ||
+ | ## {{level|Simplex algorithm}} | ||
+ | ## {{level|Branch and bound method (serial and parallel variants)}} | ||
+ | ## {{level|Genetic algorithms}} | ||
+ | ## {{level|Ant colony algorithms}} | ||
+ | ## {{level|Hybrid algorithms}} | ||
+ | ## {{level|Finding extrema of a function}} | ||
# <div id="Game theory algorithms">'''Game theory algorithms'''</div> | # <div id="Game theory algorithms">'''Game theory algorithms'''</div> | ||
# <div id="Algorithms of quantum system simulation">'''Algorithms of quantum system simulation'''</div> | # <div id="Algorithms of quantum system simulation">'''Algorithms of quantum system simulation'''</div> | ||
## ''Algorithms of quantum computation simulation'' | ## ''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}} | ||
# <div id="Algorithms for solving equations of mathematical physics">'''Algorithms for solving equations of mathematical physics'''</div> | # <div id="Algorithms for solving equations of mathematical physics">'''Algorithms for solving equations of mathematical physics'''</div> | ||
## {{level|Poisson equation, solving with DFT}} | ## {{level|Poisson equation, solving with DFT}} |
Revision as of 15:51, 10 May 2016
- Vector operations
- Matrix-vector operations
- Matrix operations
- Matrix decompositions
- Triangular decompositions
- Gaussian elimination (finding the LU decomposition)
- Gaussian elimination
- LU decomposition via Gaussian elimination
- Compact scheme for Gaussian elimination and its modifications
- Compact scheme for Gaussian elimination: Dense matrix
- Compact scheme for Gaussian elimination and its modifications: Tridiagonal matrix
- 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
- Available triangular decompositions for matrices of special form
- Unitary-triangular decompositions
- Unitary Hessenberg decompositions
- Unitary-diagonal decompositions
- Triangular decompositions
- Solving systems of linear algebraic equations
- Direct methods
- Linpack benchmark
- Matrices of a special form
- Triangular matrices
- Bidiagonal matrices
- Tridiagonal matrices
- Methods based on the conventional LU decomposition
- Other methods
- Reduction method
- Two-sided Thomas algorithm
- Cyclic reduction
- Bordering method
- 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
- Direct methods
- Solving eigenvalue problems
- Computer benchmarks
- Fourier transform
- Algebra of polynomials
- Numerical quadrature
- Graph algorithms
- Traversing a graph
- 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
- Search algorithms
- Binary search: Finding the position of a target value within a sorted array, [math]O(log(n))[/math]
- Sorting algorithms
- 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 - complexity [math]O(n_1 + n_2)[/math]
- Star-shaped polygon intersection - complexity [math]O(n_1 * n_2)[/math]
- Computer graphics
- Cryptographic algorithms
- Neural networks
- Optimization algorithms
- Game theory algorithms
- Algorithms of quantum system simulation
- Algorithms of quantum computation simulation
- Algorithms for solving equations of mathematical physics
- Other algorithms