Мене цікавить рання історія опублікованих результатів щодо загальноприйнятих просторово-часових компромісів. Зокрема, я хочу знати, хто вперше описав наступний тип алгоритму оцінки обчислень, що мають довільний графік потоку даних із ступенем O (1), використовуючи простір, пропорційний глибині (не ширині) графіка потоку даних (плюс розмір вхідних даних), виконуючи пряму глибину першої оцінки графіка. Більш детально:
Нехай графік потоку даних буде G = (V, E), де V - сукупність обчислювальних вершин (O (1) -значні значення даних), а E - сукупність ребер (v_p, v_s), таких, що значення наступника вершина v_s \ in V негайно залежить від значення попередньої вершини v_p \ in V. Нехай v_f - вершина без наступників, що представляють кінцевий результат обчислення. Нехай я є канонічно впорядкованою сукупністю вхідних вершин (без попередників), для i \ в 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 - глибина графіка потоку даних, а простір стека на кожному рівні є постійним через припущення, що ступінь графіка потоку даних є постійною і що розмір значення даних постійні. (Для простоти тут я також розглядаю розмір посилань на вершини як постійний, навіть якщо вони справді логарифмічні у | V |). Таким чином, загальне використання простору становить O (d + | I |). Максимальна ширина графіка потоку даних може бути експоненціально більшою, ніж ця, тому в кращому випадку ця методика може забезпечити досить екстремальну економію місця в порівнянні, скажімо, з жадібною форвардною оцінкою графіка (що може бути для кожного крок, оцініть усі вершини, які безпосередньо залежать лише від вершин, значення яких уже відомі,
У всякому разі, це досить очевидна техніка, принаймні, в ретроспективі, і це, безумовно, давно відома, але мені було цікаво, як повертається література про неї. Хтось знає ранню історію результатів подібного роду (будь то описані в цих термінах чи інші аналогічні), і що може бути корисним посиланням для вивчення цього питання?
Велике спасибі, - Майк Френк