2010-09-19 5 views
1

Quelle est la complexité temporelle et spatiale d'un algorithme, qui calcule le produit scalaire entre deux vecteurs de longueur n?Complexité en temps et en espace du calcul vectoriel de produit scalaire

+0

Ce que votre professeur recherche, c'est qu'un produit scalaire est une opération linéaire O (n) 'où n est la longueur des deux vecteurs. Cela suppose que vous considérez la multiplication et l'addition comme des opérations à temps constant. Techniquement '*' et '+' ne sont pas des temps constants. Si vous voulez séparer les cheveux et être très précis avec la complexité du temps de la machine de Turing, définissez 'm' comme la longueur moyenne des nombres multipliés et' a' comme la longueur moyenne des nombres ajoutés. La complexité devient: 'O (n * (m^1.465) + ((n-1) * log (a)))' qui se réduit à: 'O (n * m + n * log (a))'. –

Répondre

7

Si les 2 vecteurs sont a = [a1, a2, ... , an] et b = [b1, b2, ... , bn], puis

Le produit scalaire est donné par a.b = a1 * b1 + a2 * b2 + ... + an * bn

Pour calculer cela, il faut effectuer n multiplications et (n-1) ajouts. (Je suppose que c'est l'algorithme du produit scalaire auquel vous faites référence). En supposant que la multiplication et l'addition sont des opérations à temps constant, la complexité temporelle est donc O(n) + O(n) = O(n).

Le seul espace auxiliaire dont nous avons besoin au cours du calcul est de maintenir le 'point-produit partiel jusqu'à présent' et le dernier produit calculé, c'est-à-dire ai * bi.

En supposant que nous pouvons maintenir les deux valeurs dans l'espace constant, la complexité de l'espace est donc O(1) + O(1) = O(1).

+0

Merci. Mais j'ai besoin de l'exprimer avec n. Donc, la complexité temporelle sera n + (n-1) et l'espace 2n? –

+0

big-theta cache aussi des constantes (dans ce cas, O = big-theta). Vous voulez dire peut-être un * équivalent *. –

+0

@Alexandre C: Je suis d'accord - Dans ce cas, j'ai fourni Big Theta. Je ne suggérais pas cela (bien que je lisais mon commentaire, c'est ce que cela donne), mais simplement si le PO était conscient que c'était en fait un lien étroit. – Ani