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 .
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 .
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?
la source
Réponses:
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ω) ϵ>0 O(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.
la source
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+ϵ) ϵ>0 nk+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+ϵ f 221/ϵ 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) logn no(1)
la source
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ω)
la source
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
la source