6

スプレッドシートはとても美しいです!セルは相互にリンクすることができ、セルの 1 つで式 / 値 / が変更された場合、すべてが正しく更新されます。

スプレッドシートがこれを行う方法に関する一般的な概念を知っている人はいますか? 私が話しているのは、A1 = 1、A2 = 2、A3 = A1+A2 の場合です。次に、A1またはA2を変更すると、A3は更新することを認識し、正しく実行します。もちろん、この例では間違って更新することはできませんが、より複雑な例では、その上に構築されたものを更新する前に、まず「下位」のセルを更新する必要があります。

自分でプログラミングするとき、基礎となるデータが変更された後にすべてを正しく更新するのにとても苦労しています。すべてを更新する必要がない場合もあるため、すべてを更新したくありません。それはただの混乱です。

私のタグが正しいこと、そしてこのような議論が許されることを願っています。ありがとう!

4

1 に答える 1

6

スプレッドシートが実際にこれをどのように行うかはわかりません。しかし、ここでの私のアイデアは、グラフのトポロジカル ソートから着想を得ています。式を考えてみましょうA3 = A1+A2。セルはグラフのノードになります。フォーミュラがエッジを支配します。エッジは依存関係を表します。たとえば、A3 は A1 に依存します。したがって、A3 から A1 および A3 から A2 への 2 つのエッジがあります。上のグラフの位相的な並べ替えにより、正確な評価順序が得られます。つまり、A1 A2 と A3 です。

また、このアルゴリズムを使用する場合、このグラフは有向非巡回グラフ (DAG) である必要があることに注意してください。つまり、サイクルは含まれていません。私の知る限り、Excelはその式で循環依存を検出します。

topo-sort の基礎となるアルゴリズムは、サイクルも検出できる DFS (深さ優先検索) を使用します。したがって、そのようなサイクルを報告できます。

于 2012-10-18T18:24:31.880 に答える