2022.11.23 闲话

UPD. 紧急添加 SoyTony:

搁浅

久未放晴的天空
依旧留着你的笑容
哭过 却无法掩埋歉疚
风筝在阴天搁浅
想念还在等待救援
我拉着线 复习你给的温柔
曝晒在一旁的寂寞
笑我给不起承诺
怎么会 怎么会
你竟原谅了我
我只能永远读着对白
读着我给你的伤害
我原谅不了我
就请你当作我已不在
我睁开双眼看着空白
忘记你对我的期待
读完了依赖 我很快就离开
久未放晴的天空
依旧留着你的笑容
哭过 却无法掩埋歉疚
风筝在阴天搁浅
想念还在等待救援
我拉着线 复习你给的温柔
曝晒在一旁的寂寞
笑我给不起承诺
怎么会 怎么会
你竟原谅了我
我只能永远读着对白
读着我给你的伤害
我原谅不了我
就请你当作我已不在
我睁开双眼 看着空白
忘记你对我的期待
读完了依赖 我很快就
我只能永远读着对白
读着我给你的伤害
我原谅不了我
就请你当作我已不在
我睁开双眼看着空白
忘记你对我的期待
读完了依赖 我很快就离开


广义矩阵乘法:

对于矩阵 \(A_{n\times m},B_{m\times k}\)\((\oplus,\otimes)\) 矩阵乘法:

\[(A\times B)_{i,j}=\bigoplus_{l=1}^mA_{i,l}\otimes B_{l,j} \]

\(A_{n\times m}\)\(B_{m\times k}\)\(C_{k\times l}\)\((\oplus,\otimes)\) 矩阵乘法:

\[\begin{aligned}(A\times B\times C)_{i,j}&=\bigoplus_{k_1=1}^k\left(\bigoplus_{k_2=1}^mA_{i,k_2}\otimes B_{k_2,k_1}\right)\otimes C_{k_1,j}\\&=\bigoplus_{k_2=1}^mA_{i,k_2}\otimes\left(\bigoplus_{k_1=1}^kB_{k_2,k_1}\otimes C_{k_1,j}\right)\\&=(A\times(B\times C))_{i,j}\end{aligned} \]

于是 \((\oplus,\otimes)\) 矩阵乘法有结合律当且仅当:

  • \(\otimes\)\(\oplus\) 有左分配律和右分配律 . 形式化的,\(a\otimes(b\oplus c)=(a\otimes b)\oplus(a\otimes c)\)\((b\oplus c)\otimes a=(b\otimes a)\oplus(c\otimes a)\) .
  • \(\otimes\) 有结合律 . 形式化的,\(a\otimes b\otimes c=a\otimes(b\otimes c)\) . .
  • \(\oplus\) 有交换律,形式化的,\(a\oplus b=b\oplus a\) .

这玩意还挺好玩的,有一个 GCD 相关性质:\(\gcd(am,bm)=m\gcd(a,b)\) .

因为乘和 \(\gcd\) 显然都有交换律,所以 \((\gcd,\times)\) 矩阵乘法有结合律 .

矩阵乘法的一个常见应用是描述定长路径计数:

Sample

给一个 \(n\) 点无权图,问 \(u\)\(v\) 长度为 \(k\) 的路径有多少条 .

\(n\le 50\)\(k\le 10^{18}\) .

令原图邻接矩阵为 \(G\) .

考虑 DP,\(dp_{u,v,k}\)\(u\to v\) 长度为 \(k\) 的路径条数,则显而易见有转移

\[dp_{u,v,k}=\sum_{w=1}^mdp_{u,w,k-1}G_{w,v} \]

可以发现矩阵乘法形式:\(dp_k=dp_{k-1}\times G\) .

于是 \(dp_k=G^k\),矩阵快速幂计算,时间复杂度 \(\Theta(n^3\log k)\) .

尝试推广一下,首先试试最平凡的推广:\((\min,+)\) 矩乘:

\((\min,+)\) Sample

给一个 \(n\) 点带权图,问 \(u\)\(v\) 长度为 \(k\) 的最短路 .

\(n\le 50\)\(k\le 10^{18}\) .

也是一样的,令原图邻接矩阵为 \(G\)\(dp_{u,v,k}\)\(u\to v\) 长度为 \(k\) 的路径条数,则

\[dp_{u,v,k}=\min_{w=1}^m\{dp_{u,w,k-1}G_{w,v}\} \]

于是 \(dp_k=G^k\),矩乘为 \((\min,+)\) 矩乘,直接算即可 \(\Theta(n^3\log k)\) .

那么就可以整一些活:

\((\min,\max)\) Sample

给一个 \(n\) 点带权图,问 \(u\)\(v\) 长度为 \(k\) 的最小瓶颈路 .

\(n\le 50\)\(k\le 10^{18}\) .

\((\gcd,\times)\) Sample

定义一条路径的权值为它经过的每一条边的边权之积 .

给一个 \(n\) 点带权图,问 \(u\)\(v\) 长度为 \(k\) 的所有路径权值之 GCD .

\(n\le 50\)\(k\le 10^{18}\) .

咍咍真好玩

更花一点看 Det Query I,不过这个冷饭炒太多次了所以就不炒了 .

UPD. 好像互素的 \((\times,\gcd)\) 也行……

posted @ 2022-11-23 19:01  Jijidawang  阅读(148)  评论(2编辑  收藏  举报
😅​