Пространственно-временная сложность вычисления векторного точечного произведения - PullRequest
5 голосов
/ 19 сентября 2010

Какова временная и пространственная сложность алгоритма, который вычисляет скалярное произведение между двумя векторами длиной n?

1 Ответ

11 голосов
/ 19 сентября 2010

Если 2 вектора a = [a1, a2, ... , an] и b = [b1, b2, ... , bn], то

Точечный продукт задается как a.b = a1 * b1 + a2 * b2 + ... + an * bn

Чтобы вычислить это, мы должны выполнить n умножений и (n-1) сложений. (Я предполагаю, что это алгоритм точечного произведения, на который вы ссылаетесь).

Предполагая, что умножение и сложение являются операциями постоянного времени, следовательно, сложность времени составляет O(n) + O(n) = O(n).

Единственное вспомогательное пространство, которое нам требуется во время вычисления, - это удержание «частичного точечного произведения на данный момент» и последнего вычисленного произведения, то есть ai * bi.

Предполагая, что мы можем хранить оба значения в постоянном пространстве, поэтому сложность пространства составляет O(1) + O(1) = O(1).

...