Matrix multiplication algorithmBecause matrix multiplication is such a central operation in many numerical algorithms, much work has been invested in making matrix multiplication algorithms efficient. Applications of matrix multiplication in computational problems are found in many fields including scientific computing and pattern recognition and in seemingly unrelated problems such as counting the paths through a graph. Many different algorithms have been designed for multiplying matrices on different types of hardware, including parallel and distributed systems, where the computational work is spread over multiple processors (perhaps over a network).
Matrice (mathématiques)thumb|upright=1.5 En mathématiques, les matrices sont des tableaux d'éléments (nombres, caractères) qui servent à interpréter en termes calculatoires, et donc opérationnels, les résultats théoriques de l'algèbre linéaire et même de l'algèbre bilinéaire. Toutes les disciplines étudiant des phénomènes linéaires utilisent les matrices. Quant aux phénomènes non linéaires, on en donne souvent des approximations linéaires, comme en optique géométrique avec les approximations de Gauss.
Produit matricielLe produit matriciel désigne la multiplication de matrices, initialement appelé la « composition des tableaux ». Il s'agit de la façon la plus fréquente de multiplier des matrices entre elles. En algèbre linéaire, une matrice A de dimensions m lignes et n colonnes (matrice m×n) représente une application linéaire ƒ d'un espace de dimension n vers un espace de dimension m. Une matrice colonne V de n lignes est une matrice n×1, et représente un vecteur v d'un espace vectoriel de dimension n. Le produit A×V représente ƒ(v).
Complexité de la multiplication de matricesEn informatique théorique, la complexité de la multiplication de matrices est le nombre d'opérations requises pour l'opération de produit matriciel. Les algorithmes de multiplication de matrices constituent un sujet central dans les algorithmes théoriques et numériques en algèbre linéaire numérique et en optimisation, donc déterminer la complexité en temps du produit est d'une importance pratique. L'application directe de la définition mathématique de la multiplication de matrices donne un algorithme qui nécessite opérations sur le corps de base pour multiplier deux matrices d'ordre .
Complexité en tempsEn algorithmique, la complexité en temps est une mesure du temps utilisé par un algorithme, exprimé comme fonction de la taille de l'entrée. Le temps compte le nombre d'étapes de calcul avant d'arriver à un résultat. Habituellement, le temps correspondant à des entrées de taille n est le temps le plus long parmi les temps d’exécution des entrées de cette taille ; on parle de complexité dans le pire cas. Les études de complexité portent dans la majorité des cas sur le comportement asymptotique, lorsque la taille des entrées tend vers l'infini, et l'on utilise couramment les notations grand O de Landau.
Multiplication par un scalairevignette|320x320px|Exemple de multiplication d'un vecteur par un scalaire En mathématiques, la multiplication par un scalaire est l'une des lois externes de base définissant un espace vectoriel en algèbre linéaire (ou plus généralement, un module en algèbre générale). Si K est un corps commutatif, la définition d'un espace vectoriel E sur K prescrit l'existence d'une loi de composition externe, une application de K × E dans E. L'image d'un couple (λ, v), pouvant être notée λv ou λ∙v, est la multiplication du vecteur v par le scalaire λ.
Classe de complexitéEn informatique théorique, et plus précisément en théorie de la complexité, une classe de complexité est un ensemble de problèmes algorithmiques dont la résolution nécessite la même quantité d'une certaine ressource. Une classe est souvent définie comme l'ensemble de tous les problèmes qui peuvent être résolus sur un modèle de calcul M, utilisant une quantité de ressources du type R, où n, est la taille de l'entrée. Les classes les plus usuelles sont celles définies sur des machines de Turing, avec des contraintes de temps de calcul ou d'espace.
Matrice diagonaleEn algèbre linéaire, une matrice diagonale est une matrice carrée dont les coefficients en dehors de la diagonale principale sont nuls. Les coefficients de la diagonale peuvent être ou ne pas être nuls. Une matrice diagonale est une matrice qui correspond à la représentation d'un endomorphisme diagonalisable dans une base de vecteurs propres. La matrice d'un endomorphisme diagonalisable est semblable à une matrice diagonale. Toute matrice diagonale est symétrique, normale et triangulaire.
P (complexité)La classe P, aussi noté parfois PTIME ou DTIME(nO(1)), est une classe très importante de la théorie de la complexité, un domaine de l'informatique théorique et des mathématiques. Par définition, un problème de décision est dans P s'il est décidé par une machine de Turing déterministe en temps polynomial par rapport à la taille de l'entrée. On dit que le problème est décidé en temps polynomial. Les problèmes dans P sont considérés comme « faisables » (feasible en anglais), faciles à résoudre (dans le sens où on peut le faire relativement rapidement).
Diviser pour régner (informatique)thumb|652x652px|Trois étapes (diviser, régner, combiner) illustrées avec l'algorithme du tri fusion En informatique, diviser pour régner (du latin , divide and conquer en anglais) est une technique algorithmique consistant à : Diviser : découper un problème initial en sous-problèmes ; Régner : résoudre les sous-problèmes (récursivement ou directement s'ils sont assez petits) ; Combiner : calculer une solution au problème initial à partir des solutions des sous-problèmes.
Computational complexityIn computer science, the computational complexity or simply complexity of an algorithm is the amount of resources required to run it. Particular focus is given to computation time (generally measured by the number of needed elementary operations) and memory storage requirements. The complexity of a problem is the complexity of the best algorithms that allow solving the problem. The study of the complexity of explicitly given algorithms is called analysis of algorithms, while the study of the complexity of problems is called computational complexity theory.
Scalaire (mathématiques)En algèbre linéaire, les nombres réels qui multiplient les vecteurs dans un espace vectoriel sont appelés des scalaires. Cette multiplication par un scalaire, qui permet de multiplier un vecteur par un nombre pour produire un vecteur, correspond à la loi externe de l'espace vectoriel. Plus généralement, dans un K-espace vectoriel, les scalaires sont les éléments de K, où K peut être l'ensemble des nombres complexes ou n'importe quel autre corps.
Algorithme de Strassenvignette|Algorithme de Strassen où sont représentés les matrices Ci,j ainsi que les 7 nouvelles matrices Mi En mathématiques, plus précisément en algèbre linéaire, l’algorithme de Strassen est un algorithme calculant le produit de deux matrices carrées de taille n, proposé par Volker Strassen en 1969. La complexité de l'algorithme est en , avec pour la première fois un exposant inférieur à celui de la multiplication naïve qui est en . Par contre, il a l'inconvénient de ne pas être stable numériquement.
NP (complexité)La classe NP est une classe très importante de la théorie de la complexité. L'abréviation NP signifie « non déterministe polynomial » (« en »). Un problème de décision est dans NP s'il est décidé par une machine de Turing non déterministe en temps polynomial par rapport à la taille de l'entrée. Intuitivement, cela revient à dire qu'on peut vérifier « rapidement » (complexité polynomiale) si une solution candidate est bien solution.
Vector multiplicationIn mathematics, vector multiplication may refer to one of several operations between two (or more) vectors. It may concern any of the following articles: Dot product – also known as the "scalar product", a binary operation that takes two vectors and returns a scalar quantity. The dot product of two vectors can be defined as the product of the magnitudes of the two vectors and the cosine of the angle between the two vectors. Alternatively, it is defined as the product of the projection of the first vector onto the second vector and the magnitude of the second vector.
Matrice inversibleEn mathématiques et plus particulièrement en algèbre linéaire, une matrice inversible (ou régulière ou encore non singulière) est une matrice carrée A pour laquelle il existe une matrice B de même taille n avec laquelle les produits AB et BA sont égaux à la matrice identité. Dans ce cas la matrice B est unique, appelée matrice inverse de A et notée B = A. Cette définition correspond à celle d’élément inversible pour la multiplication dans l’anneau des matrices carrées associé.
Théorie de la complexité (informatique théorique)vignette|Quelques classes de complexité étudiées dans le domaine de la théorie de la complexité. Par exemple, P est la classe des problèmes décidés en temps polynomial par une machine de Turing déterministe. La théorie de la complexité est le domaine des mathématiques, et plus précisément de l'informatique théorique, qui étudie formellement le temps de calcul, l'espace mémoire (et plus marginalement la taille d'un circuit, le nombre de processeurs, l'énergie consommée ...) requis par un algorithme pour résoudre un problème algorithmique.
Complexité paramétréeEn algorithmique, la complexité paramétrée (ou complexité paramétrique) est une branche de la théorie de la complexité qui classifie les problèmes algorithmiques selon leur difficulté intrinsèque en fonction de plusieurs paramètres sur les données en entrée ou sur la sortie. Ce domaine est étudié depuis les années 90 comme approche pour la résolution exacte de problèmes NP-complets. Cette approche est utilisée en optimisation combinatoire, notamment en algorithmique des graphes, en intelligence artificielle, en théorie des bases de données et en bio-informatique.
Matrice par blocsvignette|Un matrice présente une structure par blocs si l'on peut isoler les termes non nuls dans des sous-matrices (ici la structure « diagonale par blocs » d'une réduite de Jordan). On appelle matrice par blocs une matrice divisée en blocs à partir d'un groupement quelconque de termes contigus de sa diagonale. Chaque bloc étant indexé comme on indicerait les éléments d'une matrice, la somme et le produit de deux matrices partitionnées suivant les mêmes tailles de bloc, s'obtiennent avec les mêmes règles formelles que celles des composantes (mais en veillant à l'ordre des facteurs dans les produits matriciels!).
Norme matricielleEn mathématiques, une norme matricielle est un cas particulier de norme vectorielle, sur un espace de matrices. Dans ce qui suit, K désigne le corps des réels ou des complexes. Certains auteurs définissent une norme matricielle comme étant simplement une norme sur un espace vectoriel M(K) de matrices à m lignes et n colonnes à coefficients dans K. Pour d'autres, une norme matricielle est seulement définie sur une algèbre M(K) de matrices carrées et est une norme d'algèbre, c'est-à-dire qu'elle est de plus sous-multiplicative.