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
Répondre
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)
.
Merci. Mais j'ai besoin de l'exprimer avec n. Donc, la complexité temporelle sera n + (n-1) et l'espace 2n? –
big-theta cache aussi des constantes (dans ce cas, O = big-theta). Vous voulez dire peut-être un * équivalent *. –
@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
- 1. produit scalaire en python
- 2. Produit scalaire optimisé en Python
- 3. exercice complexité de calcul
- 4. calcul de temps en xslt
- 5. Big-O complexité du temps
- 6. Complexité du temps entier dans Haskell
- 7. calcul vectoriel 3D dans WPF
- 8. Tableau Espace complexité
- 9. Produit scalaire fragmenté dans SQL
- 10. TreeMap - Complexité du temps de recherche
- 11. Complexité du temps de l'algorithme simple Question
- 12. Calcul du temps écoulé
- 13. Calcul de la complexité temporelle
- 14. Produit scalaire en C++ utilisant des algorithmes génériques
- 15. calcul du temps d'exécution
- 16. Calcul du temps de parcours des paquets en JavaScript
- 17. Trier les n premiers entiers en temps linéaire et en espace constant
- 18. Calcul du temps décalage relatif
- 19. Diviser algorithme - temps complexité
- 20. Calcul du temps restant pour un événement répété en Python
- 21. calcul du temps avec awk
- 22. Calcul du temps d'exposition EXIF en fraction (Delphi)
- 23. complexité Temps code donné
- 24. Calcul du temps entre deux clics en Javascript
- 25. Calcul Espace d'écran Erreur
- 26. Calcul du segment de temps PL/SQL
- 27. R: manière optimale du calcul du "produit" de deux vecteurs
- 28. temps, la complexité de l'espace et la notation O problème
- 29. Calcul de la durée du temps SQL
- 30. La complexité du temps asymptotique de "get_count" de Cassandra
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))'. –