# 自动计算的实现
要实现自动计算, 关键问题是: 确定一个依赖图
要确定一个依赖图, 当然需要知道一个单元有哪些依赖单元格
分两种情形讨论: 

## 确定的依赖
例如 C1: `=A1+B1`
可以明确 `C1.deps.cells = [A1, B1]`

## 不确定的依赖
三种情形: 
### 单元格坐标变动
插入一行后, A1 => A2
由于单元格均采用id表示, 不用考虑这种情形

### 单元格范围内增减
A1:A5表示一个范围
如果在此范围里插入一行, 公式应当自动变为: A1:A6
由于实际上是采用id表示范围, 所以不用考虑这种情形

### 范围相关的公式
如`C1.numChildren`
第一次运算时, 可以得到依赖单元格 ( 这可以在第一次`parse`时解析得到 ):
  `c1.children = [D1, F1]`;

但如果F1提升一级, 那么理应: 
  `c1.children = [D1]`;

关键在第二步: 如何知道`F1`不在此范围了?

两种方法: 
1. 行变动后, 全部重新求算一次依赖 ( 确定用此方法 )
计算量大, 但到底有多大?

2. 行变动后, 仅使用 `numChildren` 的单元格重新计算依赖
但这样的公式有`numLeft`+`numChildren`+`numSiblings`, 这样一来, 实际上几乎会影响全部单元格
而且还得排除 重复计算的单元格

因此, 需要很认真地看下, 第一种方式到底效率如何, 如果不行, 采用并行方式又怎样
目前, 依赖算法是计算的副产品, 本机测试10000次需要500ms左右, 测试1000次需要50-80ms左右 
按200行计算, 估计最多1000个单元格, 基本满足需求
