Для вектора X размера L, где каждый скалярный элемент из X является бинарным множеством {0,1}, он должен найти точечное произведение z = dot (X, Y), если вектор Y размера L состоит из целочисленных элементов. Я предлагаю, должен существовать очень быстрый способ сделать это.
Скажем, мы имеем L=4; X[L]={1, 0, 0, 1}; Y[L]={-4, 2, 1, 0}
, и нам нужно найти z=X[0]*Y[0] + X[1]*Y[1] + X[2]*Y[2] + X[3]*Y[3]
(что в этом случае даст нам -4
).
Очевидно, что X может быть представлено с использованием двоичных цифр, например. целочисленный тип int32 для L = 32. Тогда все, что нам нужно сделать, это найти точечный продукт этого целого числа с массивом из 32 целых чисел. Есть ли у вас какие-либо идеи или предложения, как это сделать очень быстро?