]> mj.ucw.cz Git - ga.git/commitdiff
APSP: Doplneno povidani o (zobecnenem) nasobeni matic
authorMartin Mares <mj@ucw.cz>
Thu, 20 Jan 2011 17:24:54 +0000 (18:24 +0100)
committerMartin Mares <mj@ucw.cz>
Thu, 20 Jan 2011 17:24:54 +0000 (18:24 +0100)
14-floyd/14-floyd.tex
ga.bib

index f3371b3209b748ec5f4174f6b757dee24f6a4bd1..c2b16b45acec9206d1657d847dc610c4cf6600e2 100644 (file)
@@ -157,7 +157,67 @@ regul
 ze~stavu~$u$ do stavu~$v$ po pøechodech z~mno¾iny $S(\psi)$. Vyhodnocování funkce~$f$
 odpovídá pøímoèarým operacím s~øetìzci.
 
-\h{Dosa¾itelnost pomocí násobení matic}
+\h{Násobení matic}
+
+Øe¹íme-li grafové problémy pomocí matic, nabízí se pou¾ít známé subkubické algoritmy
+pro lineárnì algebraické úlohy. Ty jsou obvykle zalo¾eny na efektivním násobení
+matic -- dvì matice $n\times n$ mù¾eme vynásobit v~èase $\O(n^2.808)$ Strassenovým
+algoritmem~\cite{strassen:matmult}, pøípadnì asymptoticky nejrychlej¹ím známým algoritmem od Coppersmithe
+a Winograda~\cite{coppersmith:matmult} v~èase $\O(n^{2.376})$. Slavná hypotéza øíká,
+¾e pro ka¾dé $\omega>2$ existuje algoritmus násobící matice se slo¾itostí $\O(n^\omega)$
+(blí¾e o~tomto fascinujícím tématu viz \cite{szegedy:matmult}). Oznaème tedy~$\omega$
+nejni¾¹í exponent, kterého jsme schopni dosáhnout.
+
+Co se stane, kdy¾ mocníme matici sousednosti~$A$ grafu? V~matici $A^k$ se na pozici
+$i,j$ nachází poèet sledù délky~$k$, které vedou z~vrcholu~$i$ do vrcholu~$j$.
+(Snadný dùkaz indukcí vynecháváme.) Pro libovolné $k\ge n-1$ jsou tedy v~$(A+E)^k$
+(kde $E$ znaèí jednotkovou matici; doplnili jsme tedy do grafu smyèky) nenuly
+pøesnì tam, kde z~$i$ do~$j$ vede cesta.
+
+To nám dává jednoduchý algoritmus pro výpoèet matice dosa¾itelnosti~$R$ ($R_{ij}$
+je 1 nebo~0 podle toho, zda z~$i$ do~$j$ vede cesta). Do~matice~$A$ doplníme
+na diagonálu jednièky a poté ji $\lceil \log_2 n\rceil$-krát umocníme na~druhou.
+Abychom se vyhnuli velkým èíslùm, nahradíme po ka¾dém umocnìní nenuly jednièkami.
+Celkem tedy provedeme $\O(\log n)$ násobení matic obsahující polynomiálnì velká
+èísla, co¾ trvá $\O(n^\omega\log n)$.
+
+Na~tento postup se mù¾eme dívat i~obecnìji:
+
+\s{Definice:} {\I $(\oplus,\otimes)$-souèin} matic~$A,B \in X^{n\times n}$
+kde $\oplus$ a~$\otimes$ jsou dvì asociativní binární operace na~mno¾inì~$X$,
+je matice~$C$ taková, ¾e
+$$
+C_{ij} = \bigoplus_{k=1}^n A_{ik}\otimes B_{kj}.
+$$
+Klasické násobení matic je tedy $(+,\cdot)$-souèin.
+
+Uva¾ujme nyní podobnì jako v~pøedchozí sekci nìjakou funkci~$f$, která pøiøazuje
+mno¾inám sledù nìjaké hodnoty. Nech» $\oplus$ a $\otimes$ jsou operace,
+pro nì¾ platí $f(\alpha\alt\beta) = f(\alpha) \oplus f(\beta)$
+a $f(\alpha\beta) = f(\alpha) \otimes f(\beta)$.
+
+Mìjme nyní pro ka¾dé $i,j$ nìjakou mno¾inu $\alpha_{ij}$ sledù z~$i$ do~$j$
+a matici~$A$ takovou, ¾e $A_{ij} = f(\alpha_{ij})$. Podobnì mìjme mno¾iny $\beta_{ij}$
+a pøíslu¹nou matici~$B$. Potom $(\oplus,\otimes)$-souèin matic $A$ a~$B$ je nìjaká
+matice~$C$, pro ní¾ platí:
+$$
+C_{ij} = f(\alpha_{i1}\beta_{1j} \alt \alpha_{i2}\beta_{2j} \alt \ldots \alt \alpha_{in}\beta_{nj}).
+$$
+Jinými slovy, matice~$C$ popisuje ohodnocení v¹ech sledù, které vznikly spojením
+sledu z~$\alpha$ se sledem z~$\beta$.
+
+Pokud tedy zaèneme maticí popisující sledy délky 0 nebo~1 (to je obdoba matice sousednosti),
+staèí $\O(\log n)$ $(\oplus,\otimes)$-souèinù k~tomu, abychom znali ohodnocení v¹ech
+sledù délky právì~$k$ pro nìjaké $k\ge n$.
+
+S~$(\lor,\land)$-souèiny a maticí sousednosti získáme algoritmus pro výpoèet dosa¾itelnosti
+(ka¾dý souèin pøitom mù¾eme provést jako násobení matic následované pøepsáním nenul na
+jednièky).
+
+Aplikujeme-li $(\min,+)$-souèiny na~matici délek hran doplnìnou nulami na~diagonále,
+získáme matici vzdálenosti. Jediný zádrhel bohu¾el je, ¾e zatím $(\min,+)$-souèiny
+neumíme poèítat rychleji ne¾ v~èase $\Theta(n^3)$.
+(XXX: Jde to v~$\O(n^3/\log n)$, popsat, jak.)
 
 \h{Seidelùv algoritmus}
 
diff --git a/ga.bib b/ga.bib
index c56121fadc94a5bcb431d0f6d61015aed1cc4d4e..5985c58382213ac3f98e5c7f2cd15aa2c1d961e4 100644 (file)
--- a/ga.bib
+++ b/ga.bib
   year={1972},
   publisher={ACM}
 }
+
+@article{ coppersmith:matmult,
+  title={{Matrix multiplication via arithmetic progressions}},
+  author={Coppersmith, D. and Winograd, S.},
+  journal={Journal of symbolic computation},
+  volume={9},
+  number={3},
+  pages={251--280},
+  issn={0747-7171},
+  year={1990},
+  publisher={Elsevier}
+}
+
+@article{ strassen:matmult,
+  title={{Gaussian elimination is not optimal}},
+  author={Strassen, V.},
+  journal={Numerische Mathematik},
+  volume={13},
+  number={4},
+  pages={354--356},
+  issn={0029-599X},
+  year={1969},
+  publisher={Springer}
+}
+
+@article{ szegedy:matmult,
+    author = {Cohn, Henry and Kleinberg, Robert and Szegedy, Balazs and Umans, Christopher},
+    citeulike-article-id = {8349164},
+    citeulike-linkout-0 = {http://doi.ieeecomputersociety.org/10.1109/SFCS.2005.39},
+    citeulike-linkout-1 = {http://dx.doi.org/10.1109/SFCS.2005.39},
+    doi = {10.1109/SFCS.2005.39},
+    isbn = {0-7695-2468-0},
+    journal = {Foundations of Computer Science, Annual IEEE Symposium on},
+    keywords = {algebraic, complexity, matrix, multiplication},
+    pages = {379--388},
+    posted-at = {2010-12-02 18:55:57},
+    priority = {3},
+    publisher = {IEEE Computer Society},
+    title = {{Group-theoretic Algorithms for Matrix Multiplication}},
+    url = {http://dx.doi.org/10.1109/SFCS.2005.39},
+    year = {2005}
+}