I have a spreadsheet application with formulas. I am looking for the best algorithm for detecting circular references among the formulas. The current approach I have is slow and
Perhaps you have motives for checking on your own, but Excel already checks for circular references automatically. You can use the Worksheets.CircularReference
property in VBA to access this information.
Represent the dependencies between cells as a directed graph, and use Tarjan's strongly connected components algorithm (each strongly connected component of size 2 or larger contains cycles).
You need to do a topological sorting of the cells anyway in order to be able to rapidly calculate the values of cells when something is changed. The topological sorting procedure also detect cycles as a byproduct.
See http://en.wikipedia.org/wiki/Topological_sorting