<thead id="lptrh"></thead>

      <sub id="lptrh"></sub>

            <form id="lptrh"></form>
            <sub id="lptrh"></sub>

            <address id="lptrh"></address>
            <sub id="lptrh"></sub>

            <sub id="lptrh"></sub>

              矩阵乘法与邻接矩阵

              矩阵乘法与邻接矩阵

              矩乘结合律的证明 \(:\)
              \[\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):矩阵乘法在信息学中的应用--余华程

              相关文章
              相关标签/搜索
              王中王开奖结果 查2020开奖记录查询结果香港马会开奖结果手机报码现场直播二四六天天好彩免费资料大全历史纪录在线查询网 濮阳市| 临城县| 贵阳市| 鄂州市| 晴隆县| 固镇县| 依安县| 盐边县| 金门县| 凤台县| 平谷区| 华池县| 乐山市| 高陵县| 博罗县| 武安市| 临邑县| 郴州市| 汕尾市| 灵石县| 灵丘县| 凤阳县| 富平县| 三穗县| 汽车| 社会| 息烽县| 陆丰市| 白城市| 天水市| 大方县| 延川县| 尤溪县| 九江县| 长垣县| 横峰县| 海丰县| 昂仁县| 江北区| 临海市| 昂仁县| 永城市| 青铜峡市| 宿州市| 锦屏县| 乌兰浩特市| 建湖县| 宕昌县| 文化| 巴中市| 浠水县| 池州市| 滦平县| 青铜峡市| 桃园市| 太康县| 木里| 万安县| 仁怀市| 竹北市| 搜索| 平定县| 秀山| 吴旗县| 宜丰县| 民权县| 安新县| 永兴县| 东城区| 开平市| 开原市| 南陵县| 子长县| 综艺| 大悟县| 广汉市| 兴城市| 托克逊县| 乌恰县| 湟中县| 龙南县| 湘阴县| 阿坝| 大姚县| 启东市| 商河县| 乐陵市| 合江县| 赤水市| 霍城县| 贡嘎县| 桂平市| 达拉特旗| 永登县| 永兴县| 赤城县| 祁阳县| 基隆市| 望都县| 拜泉县| 会昌县| 方正县| 三河市| 家居| 买车| 苗栗市| 黄冈市| 托克托县| 承德县| 景洪市| 温宿县| 华池县| 柞水县| 特克斯县| 莆田市| 南漳县| 濮阳县| 泰来县| 富锦市| 淳化县| 嫩江县| 潮州市| 宁夏| 宜川县| 扬州市| 青河县| 家居| 平顶山市| 宿迁市| 莲花县| 杭锦旗| 瓦房店市| 菏泽市| 津南区| 花莲县| 枝江市| 沈阳市| 于田县| 安龙县| 方城县| 凉城县| 颍上县| 文登市| 齐齐哈尔市| 阳谷县| 潜山县| 神木县| 泸州市| 瑞金市| 嘉义市| 石屏县| 开化县| 岑溪市| 扎赉特旗| 马龙县| 阿拉善右旗| 兖州市| 盐边县| 玉溪市| 美姑县| 吉木乃县| 南皮县| 芮城县| 贵南县| 凭祥市| 葫芦岛市| 靖远县| 阳信县| 石屏县| 长治市| 新绛县| 武隆县| 玛曲县| 深泽县| 辽宁省| 峨山| 塔城市| 酒泉市| 郁南县| 佛学| 吉隆县| 海阳市| 江川县| 土默特左旗| 宝丰县| 吴忠市| 灵丘县| 青州市| 望江县| 浮山县| 思茅市| 莱州市| 横山县| 芦溪县| 和硕县| 阿荣旗| 广昌县| 钦州市| 咸阳市| 彭阳县| 杂多县| 台江县| 昭苏县| 罗江县| 鄂尔多斯市| 河曲县| 岗巴县| 大关县| 连江县| 大埔区| 金寨县| 临高县| 赞皇县| 铜山县| 滁州市| 温州市| 葫芦岛市| 皮山县| 丘北县| 通城县| 陵川县| 济南市| 岚皋县| 柘荣县| 定西市| 东宁县| 德昌县| 甘南县| 洞口县| 乐昌市| 蒙阴县| 铁岭市| 巩留县| 蒙山县| 崇阳县| 油尖旺区| 环江| 崇左市| 祥云县| 太白县| 周至县| 平安县| 香格里拉县| 无为县| 东台市| 贡山| 海原县| 水富县| 曲水县| 大丰市| 轮台县| 井冈山市| 福清市| 乡城县| 南投县| 澜沧| 利辛县| 郑州市| 新丰县| 枣庄市| 电白县| 长葛市| 绥中县| 新疆| 长治县| 安乡县| 绥德县| 河东区| 沙河市| 瑞安市| 吉水县| 瓦房店市| 三都| 海盐县| 余干县| 花垣县| 邵东县| 通山县| 丰城市| 葫芦岛市| 泸州市| 含山县| 东乡族自治县| 武清区| 南平市| 乡城县| 阿巴嘎旗| 元朗区| 山东| 陈巴尔虎旗| 长兴县| 兴安盟| 望都县| 周至县| 光泽县| 鄂伦春自治旗| 龙里县| 平邑县| 九龙坡区| 彭阳县| 宝清县| 丹棱县| 晴隆县| 德江县| 聂荣县| 上蔡县| 界首市| 扬中市| 西宁市| 鲁山县| 宁南县| 霸州市| 洪湖市| 安国市| 郎溪县| 万安县| 海门市| 乌兰浩特市| 新余市| 东港市| 辛集市| 屏东市| 垫江县| 建瓯市| 保山市| 巢湖市| 罗甸县| 昂仁县| 梅河口市| 资溪县| 万荣县| 蛟河市| 湘潭县| 驻马店市| 林甸县| 湖口县| 金门县| 行唐县| 临漳县| 年辖:市辖区| 涟水县| 宁安市| 三原县| 济宁市| 石屏县| 庆城县| 分宜县| 丹凤县| 台南县| 朔州市| 山阴县| 莫力| 收藏| 淮滨县| 郧西县| 扎兰屯市| 衢州市| 红原县| 清丰县| 广州市| 昔阳县| 马边| 樟树市| 永新县| 广水市| 兴化市| 乌兰浩特市| 蒙城县| 龙游县| 诏安县| 吉木萨尔县| 广元市| 迁安市| 务川| 临夏市| 革吉县| 健康| 绥中县| 鄱阳县| 永川市| 平远县| 志丹县| 白城市| 桓台县| 南澳县| 喜德县| 扶绥县| 东乡县| 响水县| 红桥区| 温宿县| 东莞市| 大洼县| 古蔺县| 文化| 宕昌县| 荆州市| 正宁县| 陆良县| 宜君县| 甘孜县| 边坝县| 柳江县| 柳河县| 涿州市| 仪陇县| 慈溪市| 荔波县| 桦川县| 许昌县| 夹江县| 噶尔县| 昌平区| 长子县| 曲周县| 图片| 平远县| 禹州市| 龙泉市| 新乐市| 平利县| 龙山县| 磐安县| 富顺县| 满城县| 龙山县| 莆田市| 开平市| 贵南县| 开鲁县| 张掖市| 新绛县| 克什克腾旗| 合水县| 彰化市| 石河子市| 柞水县| 沙雅县| 化隆| 八宿县| 诸城市| 邯郸县| 宁德市| 酒泉市| 林口县| 桃源县| 施甸县| 福泉市| 沐川县| 电白县| 红安县| 海丰县| 开阳县| 通城县| 淮南市| 福泉市| 汨罗市| 临西县| 余庆县| 离岛区| 加查县| 休宁县| 陆河县| 东方市| 贵德县| 通辽市| 虎林市| 阜南县| 青岛市| 铜陵市| 南宁市| 龙里县| 新乡县| 巴彦县| 高平市| 大方县| 万安县| 伽师县| 灌南县| 吴堡县| 集贤县| 安溪县| 奉贤区| 山西省| 临城县| 玛纳斯县| 白水县| 黔西县| 连城县| 花莲县| 虞城县| 睢宁县| 崇礼县| 延安市| 青冈县| 湟中县| 邳州市| 西华县| 巫溪县| 景泰县| 朔州市| 岳西县| 崇义县| 蒙阴县| 滕州市| 梅河口市| 子长县| 虎林市| 太白县| 闻喜县| 高要市| 玉树县| 伊川县| 商洛市| 西乌| 印江| 河东区| 故城县| 翼城县| 东乌珠穆沁旗| 漳浦县| 巢湖市| 七台河市| 怀安县| 荔波县| 东山县| 陇西县| 安化县| 棋牌| 龙南县| 合阳县| 河津市| 南澳县| 吴旗县| 湟中县| 绥德县| 腾冲县| 工布江达县| 博客| 富民县| 颍上县| 澳门| 竹山县| 内丘县| 郸城县| 朝阳区| 衢州市| 个旧市| 盖州市| 云南省| 外汇| 饶阳县| 赞皇县| 天镇县| 大洼县| 保定市| 咸阳市| 迭部县| 德钦县| 无为县| 涞源县| 江达县| 光泽县| 保山市| 白山市| 连云港市| 达孜县| 滕州市| 内黄县| 永宁县| 永靖县| 阿拉善左旗| 建宁县| 辽中县| 鄂伦春自治旗| 杨浦区| 灯塔市| 太原市| 昌都县| 赤水市| 平潭县| 台北市| 盱眙县| 泸定县| 靖边县| 耿马| 崇文区| 建昌县| 临江市| 巍山| 綦江县| 遂昌县| 丰县| 鸡泽县| 呼伦贝尔市| 鱼台县| 万年县| 玉树县| 河南省| 闻喜县| 金沙县| 容城县| 宝清县| 湘阴县| 浏阳市| 清涧县| 海淀区| 太原市| 长乐市| 漠河县| 松桃| 汉川市| 高唐县| 乌拉特后旗| 陈巴尔虎旗| http://jx1870frankv.fun http://wap.jx1870heatv.fun http://wap.jx1870frankv.fun http://wap.jx1870insertv.fun http://jx1870hirev.fun http://m.hz0j4r8vo.fun http://jx1870forestv.fun http://m.jx1870findv.fun http://www.jx1870enjoyv.fun http://www.jx1870forestv.fun http://hz0j0r7vo.fun http://jx1870followv.fun http://www.jx1870fightv.fun http://m.jx1870fieldv.fun http://jx1870increasev.fun http://www.jx1870happenv.fun http://m.jx1870exercisev.fun http://www.jx1870initialv.fun