# SMAWK algorithm

The SMAWK algorithm is an algorithm for finding the minimum value in each row of an implicitly-defined totally monotone matrix. It is named after the initials of its five inventors, Peter Shor, Shlomo Moran, Alok Aggarwal, Robert Wilber, and Maria Klawe.[1]

For the purposes of this algorithm, a matrix is defined to be monotone if each row's minimum value occurs in a column which is equal to or greater than the column of the previous row's minimum. It is totally monotone if the same property is true for every submatrix (defined by an arbitrary subset of the rows and columns of the given matrix). Equivalently, a matrix is totally monotone if there does not exist a 2×2 submatrix whose row minima are in the top left and bottom right corners. Every Monge array is totally monotone, but not necessarily vice versa.

For the SMAWK algorithm, the matrix to be searched should be defined as a function, and this function is given as input to the algorithm (together with the dimensions of the matrix). The algorithm then evaluates the function whenever it needs to know the value of a particular matrix cell. For a matrix with r rows and c columns, its running time and number of function evaluations are both O(c(1 + log(r/c))), much faster than the O(rc) time of a naive algorithm that evaluates all matrix cells.

The main applications of this method presented in the original paper by Aggarwal et al. were in computational geometry, in finding the farthest point from each point of a convex polygon, and in finding optimal enclosing polygons. Subsequent research found applications of the same algorithm in breaking paragraphs into lines,[2] RNA secondary structure prediction,[3] DNA and protein sequence alignment,[4][5] the construction of prefix codes,[6] and image thresholding,[7] among others.

## References

1. ^ Aggarwal, Alok; Klawe, Maria M.; Moran, Shlomo; Shor, Peter; Wilber, Robert (1987), "Geometric applications of a matrix-searching algorithm", Algorithmica 2 (2): 195–208, doi:10.1007/BF01840359, MR 895444.
2. ^ Wilber, Robert (1988), "The concave least-weight subsequence problem revisited", Journal of Algorithms 9 (3): 418–425, doi:10.1016/0196-6774(88)90032-6, MR 955150
3. ^ Larmore, Lawrence L.; Schieber, Baruch (1991), "On-line dynamic programming with applications to the prediction of RNA secondary structure", Journal of Algorithms 12 (3): 490–515, doi:10.1016/0196-6774(91)90016-R, MR 1114923.
4. ^ Russo, Luís M. S. (2012), "Monge properties of sequence alignment", Theoretical Computer Science 423: 30–49, doi:10.1016/j.tcs.2011.12.068, MR 2887979.
5. ^ Crochemore, Maxime; Landau, Gad M.; Ziv-Ukelson, Michal (2003), "A subquadratic sequence alignment algorithm for unrestricted scoring matrices", SIAM Journal on Computing 32 (6): 1654–1673 (electronic), doi:10.1137/S0097539702402007, MR 2034254.
6. ^ Bradford, Phil; Golin, Mordecai J.; Larmore, Lawrence L.; Rytter, Wojciech (2002), "Optimal prefix-free codes for unequal letter costs: dynamic programming with the Monge property", Journal of Algorithms 42 (2): 277–303, doi:10.1006/jagm.2002.1213, MR 1895977.
7. ^ Luessi, M.; Eichmann, M.; Schuster, G.M.; Katsaggelos, A.K. (2006), "New results on efficient optimal multilevel image thresholding", IEEE International Conference on Image Processing, pp. 773–776, doi:10.1109/ICIP.2006.312426.