矩阵乘法与邻接矩阵

      矩阵乘法与邻接矩阵

      矩乘结合律的证明 \(:\)
      \[\begin{aligned}((\mathbf{A B}) \mathbf{C})[i, j] & \\ &=\sum_{l=1}^{c}\left(\sum_{k=1}^{b} \mathbf{A}[i, k] \mathbf{B}[k, l]\right) \mathbf{C}[l, j] \\ &=\sum_{k=1}^{b} \sum_{l=1}^{c} \mathbf{A}[i, k] \mathbf{B}[k, l] \mathbf{C}[l, j] \\ &=\sum_{k=1}^{b} \mathbf{A}[i, k]\left(\sum_{l=1}^{c} \mathbf{B}[k, l] \mathbf{C}[l, j]\right) \\ &=(\mathbf{A}(\mathbf{B} \mathbf{C}))[i, j] \end{aligned}\]

      矩阵乘法能进行快速幂运算的原因就是因为它具有结合律.

      引例 \(1:\) [TJOI2017]可乐

      相信很多人都能想出一个 \(\Theta(t\times m)\) 的做法.(虽然我没想出来,但这只是因为我菜)

      问题简化一下,如果我们没有在原地停留和自爆两个操作,那么就是问从起点出发,走 \(t\) 步的不同路径数.

      这个问题怎么做呢?

      不考虑 \(Dp\) .

      令该图的邻接矩阵是 \(G\) , 那么我们考虑 \(G^2\) 是个什么东西.(此处的幂运算是指矩阵的幂).

      我们单独考虑某一行和某一列的相关运算 \(:\) 令其为 \(G_{a,i}\)\(G_{i,b}\) , 令 \(G'\) 为相乘得到的矩阵,那么会有 \(:\)

      \[G'_{a,b} = \sum_{i=1}^m{G_{a,i}\times G_{i,b}}\]

      容易发现,当且仅当 \(G_{a,i}\)\(G_{i,b}\) 都不为零,即 \(i\) 点可连通 \(a,b\) 两点的时候上式的该项才为 \(1\) , 否则为零.

      那么所有的这些情况累加起来,就是从 \(a\)\(b\) 长度为 \(2\) 的路径条数.(即走 \(2\) 步从 \(a\) 走到 \(b\) 的方案数,长度是 \(2\) 是因为经过一个中间点.)

      由此,我们可以得到, \(G^2\) 得到的矩阵其实表示了任意两点间长度为 \(2\) 的路径条数.

      那么 \(G^3\) 是否就表示任意两点间长度为 \(3\) 的路径条数呢?

      \(G'=G^2\) , \(G''\)\(G^3\). 那么有:

      \[G''=G'\times G\]

      \[G''_{a,b}=\sum_{i=1}^n\sum_{j=1}^n{G_{a,i}\times G_{i,j}\times G_{j,b}}\]

      分析方法与上面相同,于是我们归纳结论如下:

      \(G\) 表示一张图的邻接矩阵表示,那么 \(G^i\) 表示任意两点间长度为 \(i\) 的路径条数.

      那么我们就解决了引例的简化问题.

      那么怎么处理引例中的自爆和原地不动呢?

      很简单,原地不动视为自环,自爆就额外建一个虚点,表示自爆,这里要注意的是,不需要从虚点连回原图,因为自爆之后就不能再走了.

      于是我们解决了引例.

      那么矩乘是否仅仅只有这一个用处呢?

      引例 \(2:\) USACO07NOV Cow Relays

      题目大意 \(:\) 求从 \(s\)\(t\) 经过 \(k\) 条边的最短路.

      这个问题乍一看很眼熟,似乎就是上一个问题在细节上做一下变换得到.

      但你仔细思考会发现,最短路这个看似平凡的条件竟然不能用加法和乘法解决.

      但其实这也合理,因为我们知道最短路的求法都是以类似于 \(Dp\) 的松弛操作为核心的,也就是说有一个核心运算 \(: min!\)

      那么是否可以用矩阵解决这个运算呢?

      考虑 \(Floyd\) 的过程,其核心代码是 \(f_{i,j}=min(f_{i,j},f_{i,k}+f_{k,j})\)

      这给了我们一定启发,因为 \(Floyd\) 的过程和矩乘的过程十分相似.( \(Floyd\) 的本质是滚掉一维的三维 \(Dp\))

      于是,我们大胆定义新的矩乘 \(:\)

      令矩阵 \(A\) 和 矩阵 \(B\) 相乘的结果为矩阵 \(C\) .

      则定义:

      \[C_{a,b}=\sum_{i=1}^m{min(A_{x,i},B_{i,y})}\]

      容易发现,这个矩乘同样具有结合律.(可以从 \(min\) 运算是和 \(+\) 运算具有同样性质的二元运算符考虑,证明与普通矩乘相同).

      那么这样,我们直接应用引例 \(1\) 中的结论即可解决该题.

      引例 \(3:\) 最小最大边问题

      找不到题目了,国集论文没给题目来源,找不到.

      最小最大边问题 \(:\) 给定一张有向图,求某两点间通过边数恰好为 \(k\) 的路径,使得最大边最小.

      同样的熟悉,同样的问题.

      考虑如果没有长度恰好为 \(k\) 的做法,那么就是把 \(Floyd\) 的核心代码换成 \(:\)
      \[f_{i,j}=max(f_{i,j},min(f_{i,k},f_{k,j}))\]

      能否采用与上面相同的方式重定义矩乘呢?答案是肯定的.

      令矩阵 \(A\) 和矩阵 \(B\) 相乘的结果为矩阵 \(C\).

      则定义 \(:\)

      \[C_{a,b}=\max_{i=1}^m\{min(A_{x,i},B_{i,y})\}\]

      直接套用上面的结论即可.

      参考文献 \(:\) 2008年国集论文(ACM Paper):矩阵乘法在信息学中的应用--余华程

      相关文章
      相关标签/搜索
      今期管家婆大图 玄机图香港挂牌正版彩图六合彩资料大全香港马会资料白小姐中特玄机香港挂牌之全篇 漳浦县| 怀集县| 湛江市| 登封市| 纳雍县| 铜山县| 合肥市| 威信县| 安化县| 平果县| 文登市| 开平市| 噶尔县| 龙川县| 娄底市| 霸州市| 新巴尔虎右旗| 富民县| 虎林市| 会东县| 镇雄县| 新沂市| 花垣县| 潜江市| 大竹县| 东兰县| 蒙自县| 康定县| 大埔县| 东源县| 金秀| 靖西县| 无为县| 元谋县| 明水县| 平湖市| 郸城县| 广河县| 南昌县| 溧水县| 淄博市| 竹溪县| 邵阳县| 金寨县| 西昌市| 江油市| 延吉市| 堆龙德庆县| 雅安市| 绿春县| 侯马市| 邹城市| 富顺县| 湘潭县| 固阳县| 柯坪县| 兰坪| 大名县| 曲水县| 漠河县| 和平县| 仪征市| 泾阳县| 文成县| 鄢陵县| 夏津县| 锡林郭勒盟| 随州市| 衡阳县| 芮城县| 库车县| 皮山县| 牡丹江市| 武夷山市| 黎川县| 得荣县| 松原市| 嵩明县| 天津市| 勃利县| 辽中县| 屯留县| 延寿县| 永泰县| 梧州市| 郎溪县| 南宫市| 兴义市| 伊金霍洛旗| 黄陵县| 鄂托克前旗| 井研县| 五峰| 大英县| 子长县| 那坡县| 从江县| 金阳县| 普定县| 阿坝县| 法库县| 沾益县| 舒兰市| 镇康县| 武清区| 百色市| 家居| 南岸区| 贵德县| 穆棱市| 台东市| 吴忠市| 通海县| 永新县| 都安| 深水埗区| 武平县| 巴马| 南岸区| 东平县| 革吉县| 长治市| 沙坪坝区| 汉寿县| 辉县市| 修水县| 盐山县| 平定县| 华池县| 黄平县| 清流县| 陕西省| 固始县| 新晃| 渝中区| 阿鲁科尔沁旗| 尼玛县| 陕西省| 江达县| 邵阳县| 河池市| 南宁市| 晋江市| 平陆县| 龙山县| 准格尔旗| 孝昌县| 临漳县| 永福县| 新源县| 游戏| 武汉市| 焦作市| 舞钢市| 柘城县| 恩平市| 平江县| 沾化县| 托克托县| 宁化县| 芒康县| 平南县| 正蓝旗| 夏邑县| 深水埗区| 高阳县| 岢岚县| 杭锦旗| 寻乌县| 确山县| 清远市| 桂平市| 左贡县| 襄城县| 昌平区| 湘潭市| 新河县| 新丰县| 新民市| 浦县| 孝昌县| 弥勒县| 镇宁| 田林县| 湘潭县| 呈贡县| 石屏县| 广东省| 镇赉县| 镶黄旗| 吴桥县| 淮滨县| 和政县| 凤城市| 曲松县| 沿河| 大荔县| 颍上县| 清新县| 射洪县| 龙里县| 海晏县| 边坝县| 信宜市| 双辽市| 台南市| 天峻县| 会昌县| 息烽县| 浑源县| 石门县| 景谷| 仁布县| 花莲县| 阿图什市| 荃湾区| 合肥市| 昌图县| 苏尼特左旗| 大安市| 汶上县| 收藏| 偏关县| 拉孜县| 锡林郭勒盟| 陇川县| 冀州市| 东阳市| 宁波市| 郧西县| 汝阳县| 黄石市| 合肥市| 锡林郭勒盟| 甘南县| 司法| 兴城市| 罗城| 长子县| 铜梁县| 荃湾区| 民权县| 舟曲县| 张北县| 玉屏| 泸西县| 井研县| 大田县| 东丽区| 拉孜县| 新丰县| 宁武县| 贺州市| 青铜峡市| 龙游县| 牟定县| 赤峰市| 晴隆县| 西吉县| 三河市| 定襄县| 房山区| 绥阳县| 惠州市| 逊克县| 偏关县| 阳曲县| 都江堰市| 南阳市| 吐鲁番市| 浦江县| 八宿县| 南安市| 弥勒县| 临泽县| 凤山市| 探索| 会宁县| 河北省| 陆良县| 石首市| 五大连池市| 乌拉特前旗| 南宫市| 灵石县| 海南省| 长丰县| 故城县| 三明市| 清远市| 湘阴县| 曲水县| 佛教| 阳西县| 淮阳县| 微山县| 惠来县| 进贤县| 深泽县| 习水县| 准格尔旗| 乐安县| 西安市| 和林格尔县| 瑞丽市| 讷河市| 桃江县| 沙雅县| 平定县| 阿拉善右旗| 丽水市| 襄垣县| 双江| 永城市| 北票市| 丰台区| 鹤峰县| 黑龙江省| 新田县| 凤山市| 肇东市| 赣州市| 屯昌县| 伊吾县| 虹口区| 齐齐哈尔市| 宜都市| 汝南县| 修水县| 伊春市| 辛集市| 陕西省| 丹江口市| 台北市| 项城市| 翁牛特旗| 孟州市| 大理市| 邳州市| 柘荣县| 灵宝市| 冷水江市| 海口市| 崇信县| 潼关县| 桃源县| 开化县| 天津市| 莱芜市| 南投市| 增城市| 探索| 乌拉特中旗| 绥阳县| 沙河市| 开原市| 武义县| 衡阳县| 宁津县| 淮南市| 长海县| 托里县| 米易县| 民县| 荔波县| 新郑市| 沁源县| 永胜县| 客服| 读书| 武清区| 青冈县| 浙江省| 监利县| 洪江市| 衡南县| 微山县| 芜湖市| 定兴县| 榕江县| 绥中县| 大足县| 霍邱县| 房产| 岱山县| 贵州省| 普洱| 辽阳县| 万载县| 汉寿县| 商水县| 炎陵县| 吉安市| 荥阳市| 商都县| 武安市| 盐边县| 监利县| 吴江市| 河源市| 奉贤区| 武胜县| 新和县| 宿州市| 江永县| 简阳市| 瑞丽市| 旺苍县| 兴业县| 临高县| 巴里| 安丘市| 云安县| 高邮市| 丰台区| 马山县| 白城市| 临漳县| 民权县| 澄城县| 华安县| 思南县| 乌兰浩特市| 台江县| 鹿泉市| 东港市| 车致| 织金县| 三门峡市| 凌源市| 皋兰县| 阆中市| 九台市| 威远县| 寿阳县| 新邵县| 蒲城县| 夏河县| 漳州市| 马尔康县| 曲水县| 西贡区| 宜君县| 惠东县| 穆棱市| 凌源市| 东兰县| 铁岭县| 榕江县| 永安市| 斗六市| 诸暨市| 怀化市| 类乌齐县| 金秀| 乌鲁木齐县| 友谊县| 赤峰市| 阿荣旗| 米脂县| 云龙县| 上犹县| 武川县| 班玛县| 牙克石市| 达州市| 太谷县| 邻水| 墨江| 杭锦旗| 明水县| 凤山县| 江孜县| 工布江达县| 赤峰市| 阿拉善右旗| 华安县| 德清县| 绥中县| 河西区| 临高县| 开化县| 米泉市| 颍上县| 合水县| 阜宁县| 桓台县| 彭山县| 本溪| 湟源县| 宁夏| 浪卡子县| 镇沅| 吴忠市| 宜川县| 邓州市| 本溪市| 秦安县| 万载县| 太白县| 日喀则市| 饶平县| 海兴县| 微山县| 平乐县| 富民县| 张家口市| 抚远县| 永修县| 开封县| 商城县| 平原县| 洪泽县| 武清区| 喜德县| 阳江市| 曲周县| 万载县| 开远市| 莲花县| 蓬安县| 尚志市| 闸北区| 钟祥市| 光泽县| 泗水县| 临泉县| 新化县| 兴国县| 新乡市| 密山市| 区。| 邢台县| 始兴县| 五峰| 松江区| 徐闻县| 康乐县| 古交市| 凌海市| 虎林市| 太和县| 周宁县| 东安县| 黑龙江省| 大同县| 普安县| 张家港市| 新乡县| 万荣县| 聊城市| 大理市| 沈阳市| 兴业县| 财经| 山西省| 山西省| 忻州市| 绥棱县| 泰宁县| 长岭县| 宝应县| 道真| 呼玛县| 大兴区| 青神县| 巴彦淖尔市| 阿合奇县| 沙坪坝区| 许昌县| 麦盖提县| 建瓯市| 台江县| 时尚| 军事| 榆中县| 巨鹿县| 河北区| 绵竹市| 嘉祥县| 全南县| 三河市| 邵东县| 万全县| 洞头县| 定西市| 宁国市| 丰顺县| 凤山市| 石台县| 枝江市| 清镇市| 城步| 读书| 乳源| 贵阳市| 连平县| 奉新县| 右玉县| 隆安县| 巴彦淖尔市| 永安市| 合阳县| 枣庄市| 黑水县| 龙游县| 孟州市| 龙陵县| 兴文县| 四川省| 杂多县| 浪卡子县| 湾仔区| 织金县| 怀集县| http://3g.jx1870brownv.fun http://wap.jx1870distancev.fun http://wap.jx1870careerv.fun http://3g.jx1870dogv.fun http://jx1870borderv.fun http://wap.jx1870bidv.fun http://m.jx1870actv.fun http://m.jx1870calendarv.fun http://3g.jx1870chairv.fun http://3g.jx1870attezptv.fun http://3g.jx1870attezptv.fun http://3g.jx1870distancev.fun http://3g.jx1870cottonv.fun http://www.jx1870contactv.fun http://3g.jx1870designv.fun http://3g.jx1870calculatev.fun http://www.jx1870cruisev.fun http://3g.jx1870donv.fun