Définition de l'exposant de multiplication matricielle

15

Familièrement, la définition de l'exposant de multiplication matricielle est la plus petite valeur pour laquelle il existe un algorithme de multiplication matricielle connu . Ce n'est pas acceptable comme définition mathématique formelle, donc je suppose que la définition technique est quelque chose comme l'infimum sur tout tel qu'il existe un algorithme de multiplication matricielle dans .ωnωtnt

Dans ce cas, on ne peut pas dire qu'il existe un algorithme de multiplication matricielle dans ou même , simplement que pour tout il existe un algorithme dans . Souvent, cependant, les articles et les résultats qui utilisent la multiplication matricielle rapportent leur coût simplement comme .nωnω+o(1)ϵ>0nω+ϵO(nω)

Existe-t-il une autre définition de qui permet cette utilisation? Y a-t-il des résultats garantissant l'existence d'un algorithme de temps ou ? Ou l'utilisation simplement bâclée?ωnωnω+o(1)O(nω)

David Harris
la source
2
Si vous voulez simplement utiliser la multiplication matricielle comme une boîte noire, la façon la plus simple est de dire "Soit être tel que nous pouvons multiplier -matrices avec opérations arithmétiques". Bien sûr, n'est pas alors l'exposant de la multiplication matricielle, mais peut être arbitrairement proche. Si vous souhaitez indiquer l'exposant de votre exécution finale en représentation décimale, vous devez actuellement arrondir de toute façon, car toutes les estimations non triviales pour que je connais sont des nombres irrationnels ou des séquences infinies. n × n O ( n ω ) ω ωωn×nO(nω)ωω
Markus Bläser
2
ω est généralement défini comme l'infimum sur tous les réels pour allant à telle sorte qu'il existe un algorithme de temps qui multiplie deux matrices (où le temps est le nombre d'additions, de multiplications et divisions dans le domaine sous-jacent). Cela signifie également que techniquement, nous devons toujours écrire mais cela devient désordonné, donc quand vous voyez vous devriez penser où est le temps d'exécution d'un algorithme de multiplication matricielle. n O ( n k ) n × n n ω + o ( 1 ) O ( n ω ) O ( M ( n ) ) M ( n )knO(nk)n×nnω+o(1)O(nω)O(M(n))M(n)
virgi

Réponses:

20

L'exposant de multiplication matricielle étant ne garantit pas qu'il existe un algorithme qui s'exécute dans le temps , mais seulement que pour chaque , il existe un algorithme qui s'exécute dans . En effet, si vous pouvez trouver un algorithme qui s'exécute dans le temps , cela montre que .O ( n ω ) ϵ > 0 O ( n ω + ϵ ) O ( n 2 p o l y l o g ( n ) ) ω = 2ωO(nω)ϵ>0O(nω+ϵ)O(n2polylog(n))ω=2

Vous pouvez trouver la définition formelle dans le livre The Algebraic Complexity Theory de Peter Bürgisser, Michael Clausen, Amin Shokrollahi.

MCH
la source
7

Un petit commentaire trop long pour être un commentaire:

Parfois, lorsque vous avez un problème pour lequel il existe un algorithme avec le temps d'exécution pour chaque ϵ > 0 , il existe un algorithme avec le temps d'exécution n k + o ( 1 ) .O(nk+ϵ)ϵ>0nk+o(1)

Par exemple, parfois vous obtenez des algorithmes qui vont comme pour une fonction f à croissance rapide (comme 2 2 1 / ϵ ). Si vous définissez f ( 1 / ϵ ) sur (disons) log n , alors ϵ sera o (1). Dans l'exemple avec f ( 1 / ϵ ) étant 2 2 1 / ϵ , vous pouvez choisir 1 / ϵf(1/ϵ)nk+ϵf221/ϵf(1/ϵ)lognϵf(1/ϵ)221/ϵ1/ϵêtre , ce qui donne ϵ = 1 / ( log log log n ) , qui est o (1). Ainsi, le temps d'exécution final de cet algorithme sera n k + o ( 1 ) , car log n est également n o ( 1 ) .JournalJournalJournalnϵ=1/(logloglogn)nk+o(1)lognno(1)

Robin Kothari
la source
J'imagine que l'algorithme Coppersmith-Winograd tombe dans cette catégorie?
David Harris
2
@DavidHarris: Je n'en sais rien. Peut-être que quelqu'un qui comprend l'algorithme pourrait éclairer cela. Je voulais juste dire que souvent n'est pas aussi mauvais qu'il n'y paraît. O(nk+ϵ)
Robin Kothari
5

Le résultat de Coppersmith et Winograd est bien connu: le temps ne peut pas être réalisé par un seul algorithme. Mais j'ai lu qu'ils se limitaient à des algorithmes basés sur des identités bilinéaires de type Strassen, donc je ne suis pas sûr car le document est derrière un mur payant.O(nω)

Diego de Estrada
la source
3

Je ne suis pas d' accord avec votre déclaration dans la question que est pas bien définie par « la plus petite valeur pour laquelle il est connu n ω algorithme matrice multiplication. » Lorsque les gens utilisent cette constante, c'est parce que leur algorithme repose sur une multiplication matricielle, et par une complexité n ω , ils signifient "la complexité optimale de notre algorithme est donnée par l'algorithme optimal de multiplication matricielle".ωnωnω

Je ne dis pas qu'il n'est pas possible de définir autrement (par exemple en disant que ω est la meilleure complexité réalisable).ωω

Btw, la borne supérieure la plus connue pour la multiplication matricielle vient d'être améliorée à si je ne me trompe pas. 2.3737

Bruno
la source
3
Je ne vois pas comment la connaissance humaine peut faire partie d'une définition mathématique
David Harris
2
L'expérience récente montre qu'il est beaucoup plus facile de quantifier sur tous les algorithmes que sur tous les algorithmes actuellement connus par l'humanité ;-)
Markus Bläser