see title.
An algorithm is 'good' if it is able to distinguish between zero Eigenvalues and nonzero Eigenvalues.
see title. An algorithm is 'good' if it is able to distinguish between zero Eigenvalues and nonzero Eigenvalues. 


One method is to reduce the computation to that of computing matrix multiplication of $n \times n$ matrices. In particular, the determinant of a symbolic matrix can be computed in $O(n^{\omega})$ arithmetic operations, where $\omega < 2.376$ is the matrix multiplication exponent, and from a symbolic determinant of course one can recover all eigenvalues. However, since the operations here will be over polynomials of degree $n$ with coefficients in $m$ bits, this method would take about $O(n^{1+\omega} m)$ time to get $m$ bits of the eigenvalues. More complex methods can get you the eigenvalues in $O(n^3 + n^2 \log^2 n \log b)$ time, where the eigenvalues are approximated to within $2^{b}$. For some structured matrices you can get about $O(n^{\omega})$. See
(Actually it appears this paper never appeared in a journal form, so study it very carefully if you are serious about this problem.) I don't see a simple way to exploit the fact that (a) it is symmetric and (b) you just want to find the smallest nonzero eigenvalue. It seems doubtful to me that you could do this much faster than $O(n^{\omega})$ (without finding all nonzero eigenvalues faster than this), but this is just based on intuition, not fact. 


Tao and Vu (1) have shown that the distribution of the smallest singular value of a random matrix is "universal", i.e. independent of the particular random variable populating the matrix. They are interested in analyzing distributions, not particular matrices, but it appears that it might be possible to use their machinery for addressing this problem. First, several caveats. Now that the pussyfooting is out of the way, the basic idea is as follows: We wish to find the smallest eigenvalue $\lambda_n$ of a matrix $A$. Suppose that $A$ is invertible. Then the largest eigenvalue of $A^{1}$ is $1/\lambda_n$. Since finding the largest eigenvalue is a much easier problem (by, e.g. the power method), we might be in a better position. But computing $A^{1}$ is (generically) as difficult as computing all the eigenvalues! Tao and Vu dodge this problem by taking random subsets of the columns of $A$ and considering the orthogonal complement; this is inspired by "property testing" arguments in complexity theory. Then with high probability one can estimate the largest eigenvalue of $A^{1}$ from these restrictions, and we are done. (1) Terence Tao and Van Vu. "Random matrices: the distribution of the smallest singular values". March, 2009. http://arxiv.org/abs/0903.0614v1 


First, a disclaimer: I know absolutely nothing about numerical algorithms for finding the eigenvalue of a matrix, symmetric or not. So my feelings will not be hurt if my answer gets downvoted into oblivion. It seems to me that an obvious but perhaps overly naive approach is the following: Let $A$ be the symmetric matrix in question. a) Use some standard minimization algorithm (maybe the conjugate gradient method?) to minimize $$\frac{x\cdot Ax}{x\cdot x}$$ over nonzero $x$ (an obvious thing to do is to restrict to $x = 1$ but you might save some arithmetic if you don't bother with this normalization). b) See what eigenvalue you get. If it's the eigenvalue you want, then you're done. If not, save the eigenvector you found and proceed to c) c) Repeat a), except restrict to the subspace orthogonal to all of the eigenvectors you've found so far. See what eigenvalue you get. If it's the one you want, you're done. Otherwise, save the eigenvector and repeat this step again. Eventually, you'll have all of the eigenvalues and eigenvectors. Depending on what "smallest" means, you may or may not be able to stop before you have found all of the eigenvectors. Actually, if "smallest" means "eigenvalue with the smallest nonzero absolute value", then just do the steps above with $A^2$ instead of $A$. For small matrices this seems like a practical approach to me. But, as I said, I don't know anything about this stuff. 


The QR algorithm gives quite rapidly a good approximation of the eigenvalues of a real symmetric (or complexHermitian). But overall, it gives first the smallest eigenvalues. The reason is that the ratio $\lambda_{n1}/\lambda_n$ is the convergence rate. 


This is the method they use with LaPACK, which is usually the fastest for general problems (fastest noncommercial anyway) http://www.netlib.org/lapack/lug/node48.html and here's a discussion regarding this computation http://www.netlib.org/lapack/lug/node30.html#subsecdriveeigSEP I honestly am not sure if you can hunt down the smallest eigenvalue without finding all of them. However, I would not under any circumstances do the symbolic determinant. So far as I know if you're doing a numerical calculation, an introduction of symbols will give you a major slowdown. I don't have the time at the moment to look up the exact computation, but I think that outside of quantum computing symbolic factorization is NPhard/NPcomplete. In the multivariate case (using Groebner Bases) it's doubly exponential. 


Probably still your best bet, after of course reducing your original symmetric matrix to tridiagonal form, would be either bisection (with the help of Gerschgorin bounds) or an appropriate modification of the dqd/MRRR algorithm of Parlett, Fernando, and Dhillon. If your matrix has additional structure apart from symmetry (e.g. it is a Toeplitz or arrowhead matrix), there of course may be even more slick apporaches. I suggest looking at the references given in LAPACK and other numerical linear algebra books. 


If smallest means closest to zero, than Rayleigh quotient iterations gives cubic convergence, but still requires matrix inverse, or actually to solve the system of linear equations. 


A quick search led me to this paper, which deals specifically with sparse symmetric matrices, although some of its references might be useful.
A PDF copy is available here: http://www.mathnet.or.kr/mathnet/kms_tex/986075.pdf I should also mention that "best" is a difficult superlative to qualify without knowing the structure of your matrices. Probably the best algorithm for a sparse symmetric matrix is not the best algorithm for a symmetric Toeplitz matrix. 


Here is a simple idea, with no complexity analysis. Compute a basis $v_1$, ..., $v_{nr}$ for the kernel of $A$; this can be done with exact arithmetic in $n^3$ operations by Gaussian elimination. Compute a basis $w_1$, ..., $w_{r}$ for the othogonal complement: Again, doable in exact arithmetic with $n^3$ operations. $\mathrm{Span}(w_1, ..., w_r)$ is the orthogonal complement to the $0$eigenspace of $A$ and hence, since $A$ is symmetric, it is the span of the nonzero eigenspaces of $A$. So $A$ maps $\mathrm{Span}(w_1, \ldots, w_r)$ to itself. Let $X$ be the $r \times r$ matrix of this map. This is again a matrix of rational numbers, computable with exact arithmetic in reasonable time, whose eigenvalues are the same as the nonzero eigenvalues of $A$. Note, however, that $X$ is not symmetric. Invert $X$ and find its largest eigenvalue by one of the standard methods. What I am gambling here is that the advantages of working in exact arithmetic are greater than the disadvantages of passing to a nonsymmetric matrix. 

