6

电子表格太漂亮了!单元格可以相互链接,如果任何公式/值/其中一个单元格发生任何变化,一切都会正确更新!

有谁知道电子表格如何做到这一点的一般概念?我所说的是如果 A1 = 1、A2 = 2 和 A3 = A1+A2。然后我更改 A1 或 A2 并且 A3 知道要更新并正确执行。当然,在这个例子中它不能错误地更新它,但在更复杂的例子中,它必须先更新“较低”的单元格,然后再更新建立在它之上的东西。

在自己编程时,在基础数据更改后,我很难正确更新所有内容。有时并非所有内容都必须更新,所以我不想更新所有内容。这只是一团糟。

我希望我的标签是正确的,并且允许这样的讨论。谢谢!

4

1 回答 1

6

我不知道电子表格在实践中如何做到这一点。但我的想法是从图上的拓扑排序中得到启发的。考虑公式A3 = A1+A2。单元格将成为图形的节点。公式将支配边缘。边代表依赖。例如,A3 取决于 A1。因此,我们有两条边从 A3 到 A1 和 A3 到 A2。现在,上图的拓扑排序将为您提供准确的评估顺序。即 A1 A2 和 A3。

另请注意,如果使用此算法,则此图需要是有向无环图 (DAG)。即它不包含任何循环。据我所知,excel 确实在其公式中检测到循环依赖。

拓扑排序的底层算法使用 DFS(深度优先搜索),它也可以检测循环。因此,人们可以报告这样的周期。

于 2012-10-18T18:24:31.880 回答