Алгоритм поиска циклических ссылок в электронной таблице

У меня есть приложение для работы с электронными таблицами с формулами. Ищу лучший алгоритм для обнаружения циклических ссылок среди формул. Текущий подход, который у меня есть, медленный и использует слишком много памяти, когда с формулами используются длинные цепочки вычислений. Это включает в себя хранение наборов всех иждивенцев для каждой формулы. Поэтому, если в каждом первом столбце ячеек была формула со ссылкой на ячейку перед ней, набор первых ячеек был бы пуст. Набор 2-й ячейки будет содержать только первую ячейку, набор 3-й ячейки будет содержать ячейки 1 и 2, ..., набор 1000-й ячейки будет содержать 999 ячеек перед ним. Когда вводится новая формула, строится набор зависимых от нее формул, и если набор содержит новую формулу, появляется циклическая ссылка. Но очевидно, что для этого сценария требуемые время и память растут экспоненциально.

5
задан Carl Manaster 20 April 2011 в 16:47
поделиться