Это слишком долго для публикации в комментарии, но это может быть полезно знать.
Предположим, у вас есть:
w_0*v_n + ... w_n*v_0
(мы будем называть это w[0..n]*v[n..0]
для краткости)
Тогда следующий шаг:
w_0*v_n1 + ... w_n1*v_0
(для краткости это w[0..n1]*v[n1..0]
)
Это означает, что нам нужен способ для вычисления w[1..n1]*v[n..0]
из w[0..n]*v[n..0]
.
Конечно, возможно, что v[n..0]
- это 0, ..., 0, z, 0, ..., 0
, где z находится в некотором месте x.
Если у нас нет «дополнительного» хранилища, тогда f(z*w(x))=z*w(x + 1)
, где w(x)
- вес для местоположения x.
Перестановка уравнения, w(x + 1) = f(z*w(x))/z
. Ну, w(x + 1)
лучше быть постоянным для константы x, поэтому f(z*w(x))/z
лучше быть постоянным. Следовательно, f
должен позволить z
размножаться, то есть f(z*w(x)) = z*f(w(x))
.
Но и здесь у нас проблема. Обратите внимание, что если z
(это может быть любое число) может распространяться через f
, то w(x)
, безусловно, может. Итак f(z*w(x)) = w(x)*f(z)
. Таким образом f(w(x)) = w(x)/f(z)
.
Но для постоянной x
, w(x)
является постоянной величиной, и поэтому f(w(x))
также лучше быть постоянной. w(x)
является постоянным, поэтому f(z)
лучше быть постоянным, чтобы w(x)/f(z)
было постоянным. Таким образом, f(w(x)) = w(x)/c
, где c
- константа.
Итак, f(x)=c*x
, где c
- константа, когда x
- значение веса.
Итак w(x+1) = c*w(x)
.
То есть каждый вес кратен предыдущему. Таким образом, веса принимают вид w(x)=m*b^x
.
Обратите внимание, что предполагается, что единственная информация, которую f
имеет, - это последнее агрегированное значение. Обратите внимание, что в какой-то момент вы будете сведены к этому случаю, если только вы не захотите хранить непостоянное количество данных, представляющих ваш ввод. Вы не можете представлять вектор бесконечной длины действительных чисел действительным числом, но вы можете аппроксимировать их каким-либо образом в постоянном, ограниченном объеме памяти. Но это было бы лишь приближением.
Хотя я не доказал это строго, я пришел к выводу, что то, что вы хотите, невозможно сделать с высокой степенью точности, но вы можете использовать log (n) пространство (которое также может быть O (1) для многих практических применений) для генерации качественного приближения. Вы можете использовать еще меньше.