2019年5月31日金曜日

JAG 2013 Day 4 F - Graph Automata Player

JAG 2013 Day 4 F - Graph Automata Player

F2{\mathbb F}_2上の行列積と掃き出し法を実装して通した。

掃き出し法の計算量をちゃんと考えたことがなかったけど、行列ARm×nA \in {\mathbb R}^{m \times n}についてO(mnrankA)O(mnmin(m,n)){\mathcal O}(mn\operatorname{rank}A) \subseteq {\mathcal O}(mn \min(m, n))ってことでいいんだろうか。

64倍高速化

64倍高速化した掃き出し法を4096×40964096 \times 4096の正則行列に適用すると800msくらいで、行列積は同サイズで2200msくらいだった。この辺を限界として覚えておく。SSE使うともう少しいけるのかな。

いわゆるbitset高速化がlog1n\log^{-1} nの改善という見解を見つけて、なるほどとなった。→ というかword-RAMモデルだとそうなるのか。

参考:
http://drken1215.hatenablog.com/entry/2019/03/20/202800