Prova che la moltiplicazione della matrice non è in


39

Si ritiene comunemente che per tutto , sia possibile moltiplicare due matrici nel tempo . Qualche discussione è qui .ϵ>0n×nO(n2+ϵ)

Ho chiesto ad alcune persone che hanno più familiarità con la ricerca se pensano che esista un indipendente da tale che esiste un algoritmo per la moltiplicazione di matrici e sembravano schiacciante intuizione che la risposta è "no" ma non è in grado di spiegare il perché. Cioè, credono che possiamo farlo in tempo , ma non in tempo .k>0nO(n2logkn)O(n2.001)O(n2log100n)

Quali ragioni ci sono per credere che non ci sia un algoritmo su un fisso ?O(n2logkn)k>0

Risposte:


29

C'è un algoritmo per moltiplicare una matrice con una matrice in operazioni aritmetiche. L'identità principale usata per questo proviene dal documento di Coppersmith "Rapida moltiplicazione di matrici rettangolari", ma la spiegazione del perché porta a invece di trova nell'appendice del documento di Williams , "Nuovi algoritmi e limiti inferiori per circuiti con gate di soglia lineari".N×N0.172N0.172×NN2polylog(N)N2polylog(N)N2+ϵ

Questo funziona solo perché l'identità di Coppersmith ha una struttura aggiuntiva che puoi sfruttare e gli algoritmi MM più recenti non sembrano avere questa struttura. Detto questo, non sono sicuro del motivo per cui non si può sperare di estendere questo approccio alla moltiplicazione della matriceN×N×N


11

Bene, una cosa è che penso che tutte le costruzioni che conosciamo - e persino le famiglie di potenziali costruzioni che le persone hanno proposto (ad esempio, approcci di Cohn-Umans, generalizzazioni di Coppersmith-Winograd) - "semplicemente" produrrebbero una famiglia di algoritmi Aϵ esecuzione nel tempo O(n2+ϵ) . Quindi, per avere un singolo algoritmo eseguito in O(n2poly(logn)) , non dovrebbe essere semplicemente pazzo asintoticamente migliore degli approcci attuali, ma dovrebbe apparire davvero diverso.

Grande avvertimento: penso. Non ho mai pensato troppo a quanto si sarebbe dovuto modificare / aggiungere alla già esistente approcci in modo che potessero plausibilmente produrre un unico algoritmo di esecuzione in tempo O(n2poly(logn)) .


3
Non sono sicuro di come avere una famiglia non porti plausibilmente a O (n ^ 2poli (log n)) dal momento che se si potesse descrivere la famiglia abbastanza bene, si potrebbero scegliere membri della famiglia sempre più efficienti per n più grandi. L'unica ragione per cui questo non è plausibilmente O (n ^ 2poli (log N)) è che le costanti coinvolte sarebbero probabilmente molto grandi, ma non è ovvio che sia necessariamente così.
Giosuè

1
O(n2+x)ε>0O(n2+ε)

1
@JoshuaZ Suppongo che un altro modo ancora più strano potrebbe fallire se in qualche modo la scelta / costruzione di un membro della famiglia richiedesse più di O (n ^ 2 poli (log n)) tempo - ad esempio forse è necessario il codice O (1 / e) per implementare l'algoritmo O (n ^ (2 + e)) o qualcosa del genere. Non sarebbe selvaggio ??
Daniel Wagner,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.