维度 - 时间敏感性

2021-03-11 00:35:02

[本关于与我的博士学生Monem Shenatt和前学生Omar Alaqeeli合作开展的研究报告]

维度是多维lucid的一个大问题 - 它意味着umistud ut尺寸与计算变量的值相关。

这是一个简单的想法,但令人惊讶的微妙。在这篇文章中,我将处理最简单的情况,在'经典的时间后的时间敏感度。计算哪些变量需要知道时间参数t的值。

这是一个简单的程序,用于使用牛顿的方法计算输入(浮点数)的平方根

A ABS(A * a-x)< eps,其中x =首先输入; eps = 0.0001; a = 1 fby(x + a / x)/ 2;结尾

第一步(塔Conceper占用)是将其转换为一组原子方程,其中每个变量被定义为应用于参数的单个运算符。转换涉及引入额外的“临时”变量T00,T01,T02,......。等等:

输出= ASA T00; t00 = t01< EPS; t01 = abs(t02); t02 = t03 - x:t03 = a * a; x =第一个输入; EPS = REAL 0.0001; a = 1 fby t04; t04 = x + t05; t05 = a / x;

算法迭代。它首先假设除了输入之外的变量没有时间敏感,并通过累积变量的时间敏感,因此不能假设是常量的。

在第一次通过中,我们注意到A由FB定义,并且假设任何此类定义是时刻敏感的。 (可能不是,但这是一个最坏的病例分析。)

另一方面,在第一次通过的情况下,我们的列表中没有其他变量添加。例如,EPS被定义为常数,T02是在该阶段仍然假设为常数的两个变量的差异。

在下一个传递上,将A的时间灵敏度传递到T03和T05。同样,要在安全方面,我们必须假设应用于变量的算术运算至少一个是时敏感的时间敏感。

在此阶段,我们可能是时间敏感变量的列表是A,T03,T05。下一个传递在列表中添加T02和T04并在添加T04和T01之后通过通过。另一个通过添加T00,但下一个传球没有变化。

我们完成了,此时我们可以确定不在列表中的变量 - 输出,x和eps - 是时间常数。如果他们不是我们现在就发现了。

这些信息已经很有用。它告诉我们程序的输出是单一的常量。该程序不需要生成连续的输出值,因为它们都将是相同的。

评估步骤的一般规则非常简单。根据操作员传播(或不)传播灵敏度。特别是

如果v = first x,则如果v = next x仍然不敏感,则如果x为敏感,如果v = x fby y变为敏感,那么如果V = x ASA p变为敏感,那么如果V = x + v = x + y保持不敏感x或y是敏感的,然后V变得敏感(乘法,划分和包括If-wey-Fi)输入的任何其他数据操作的敏感性是时刻敏感的

除了允许我们在变量输出常量时简化输出,它允许我们在缓存时节省空间。如上所述的变量值被缓存,因此执行每个值的标记为t坐标的值 - 因为不同的值对应于不同的时间点。但这不是必需的,与众不同的变量是x的x常数。如果我们不考虑此信息,我们将存储许多相同价值的副本。

当我们与时间维度交易时,维度分析很简单。甚至增加一个额外的维度 - Say Space S - 严重复杂化分析,正如我们所看到的那样。