时空权衡的某些结果的早期历史?


14

我对有关通用时空权衡的已发布结果的早期历史很感兴趣。特别是,我想知道谁首先描述了以下类型的算法,该算法使用与数据流图的深度(而非宽度)成正比的空间(加上大小)来评估具有任意度为O(1)的任意数据流图的计算通过对图形进行直接的深度优先评估来实现。更详细地:

令数据流图为G =(V,E),其中V是计算顶点的集合(O(1)大小的数据值),E是边的集合(v_p,v_s),使得后继值顶点v_s \ in V立即取决于先前顶点v_p \ in V的值。令v_f为顶点,没有后继代表计算的最终结果。令我成为输入顶点的规范排序集合(无前任),因为i \ in I给出了x(i)的值。对于其他顶点v \ in S,其值由x(v)= F_v(x(P(v)))定义,其中P(v)是v的前任的规范排序列表,x(P(v))为它们的值的对应列表,F_v是顶点函数,该函数根据其前任值列表确定其值。

有了这种设置,所讨论的算法就非常明显且微不足道:

def eval(v):     (v can be any vertex in the graph)
   let P := P(v), the list of v's predecessors  (has O(1) elements by assumption)
   let val[] := uninitialized array of |P| data values
   for each predecessor p[i] in P (i.e. for i from 1 to |P|):
      if p[i] is in I then
         val[i] = x(p)      (look up a given input)
      else
         val[i] = eval(p[i])   (recursive call)
   return F_v(val[])        (apply vertex's function to list of predecessor values)

这需要递归的O(d)级别,其中d是数据流图的深度,并且由于假设数据流图的入度是恒定的,并且d的大小,每个级别的堆栈空间是恒定的数据值是恒定的。(为简单起见,即使顶点引用的大小实际上是| V |的对数,我也将顶点引用的大小也视为常量。)因此,总空间使用量为O(d + | I |)。数据流图的最大宽度可以成倍地大于此宽度,因此,在最好的情况下,与贪婪地对图进行评估相比(与每个图的贪婪评估相比),该技术可以节省大量空间。步骤,评估所有直接依赖于其值已知的顶点的所有顶点,

无论如何,至少在回想起来,这是一项相当明显的技术,并且它早已为人所知,但是我想知道有关它的文献的发展趋势。任何人都知道这种结果的早期历史(无论是用这些术语描述的,还是其他类似的描述),那么深入研究该主题的最佳参考是什么?

非常感谢-Mike Frank

Answers:


10

我不知道它是否是第一次出现,但是这种构造出现在Borodin [Bor77]的引理1的证明中,它涉及评估布尔电路的空间复杂性。(它不仅包含递归评估的概念,还可以从O(D log S)位减少到O(D + log S)位,从而进一步降低空间复杂度,其中D是电路的深度,S是电路的大小电路。)

[Bor77]艾伦·鲍罗丁。关于时间和空间与大小和深度的关系。 SIAM计算杂志,6(4):733-744,1977年12月。DOI10.1137 / 0206054

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.