<address id="nd1x7"></address>
        <address id="nd1x7"></address>

              矩阵乘法与邻接矩阵

              矩阵乘法与邻接矩阵

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

              相关文章
              相关标签/搜索
              蓝月亮天下彩免费资枓大全年香港最快开奖现场直播,2017跑狗图玄机图,东方心经马报资料2017,一肖一主一码2017,香港马会资料一肖中特1 金坛市| 疏附县| 红桥区| 磐安县| 杭锦旗| 团风县| 瑞丽市| 通榆县| 富民县| 白朗县| 封开县| 福海县| 岗巴县| 华容县| 阿荣旗| 科技| 吉林省| 泸州市| 西乌珠穆沁旗| 尤溪县| 崇州市| 太白县| 长武县| 工布江达县| 赞皇县| 哈密市| 聂拉木县| 前郭尔| 和田市| 望城县| 泽州县| 海阳市| 彭山县| 塔河县| 沙坪坝区| 昆山市| 镇平县| 三台县| 临高县| 屯昌县| 湄潭县| 吴川市| 黄大仙区| 鹤岗市| 阜宁县| 万山特区| 越西县| 孝昌县| 中宁县| 咸阳市| 深州市| 哈尔滨市| 壤塘县| 邻水| 昭平县| 富平县| 平原县| 方城县| 禄劝| 白朗县| 饶阳县| 德安县| 罗江县| 苏州市| 江山市| 安丘市| 湄潭县| 腾冲县| 肃北| 秀山| 灯塔市| 洛南县| 揭东县| 建始县| 青海省| 鸡泽县| 定远县| 乐昌市| 富宁县| 普洱| 松阳县| 兰考县| 温州市| 铁力市| 正宁县| 雷波县| 澜沧| 定边县| 大方县| 乌兰察布市| 蒙城县| 凌云县| 富宁县| 泸水县| 宝兴县| 平顺县| 江城| 怀仁县| 正镶白旗| 抚松县| 精河县| 黄冈市| 萍乡市| 都匀市| 临汾市| 大悟县| 昭觉县| 武强县| 上栗县| 玉环县| 星子县| 浠水县| 涟水县| 萝北县| 深水埗区| 黎川县| 廊坊市| 丹棱县| 阿城市| 甘肃省| 诸城市| 类乌齐县| 大埔县| 伊宁县| 含山县| 新沂市| 大同市| 邯郸市| 刚察县| 韶山市| 穆棱市| 读书| 晋州市| 漯河市| 香港| 天长市| 汶川县| 德令哈市| 北碚区| 南雄市| 晋宁县| 南江县| 四平市| 公主岭市| 景洪市| 察隅县| 通山县| 万安县| 台州市| 上高县| 锡林郭勒盟| 西华县| 齐河县| 大关县| 固安县| 兴安县| 远安县| 泰宁县| 宜川县| 吴川市| 阿拉善左旗| 嘉黎县| 西贡区| 元氏县| 武邑县| 洪洞县| 绥芬河市| 富川| 建宁县| 密云县| 蓬安县| 浦江县| 武川县| 麻城市| 临潭县| 宁海县| 永新县| 永城市| 资中县| 突泉县| 泉州市| 滨海县| 肃南| 安吉县| 鞍山市| 府谷县| 焦作市| 军事| 沁阳市| 牡丹江市| 高青县| 芦山县| 枣强县| 顺平县| 普陀区| 保亭| 兰考县| 沾化县| 宝丰县| 全椒县| 通化县| 靖边县| 开平市| 固安县| 绥阳县| 长海县| 老河口市| 汉寿县| 墨玉县| 文安县| 昔阳县| 林西县| 柯坪县| 札达县| 聂荣县| 大足县| 新安县| 民县| 江安县| 吉林省| 西畴县| 平定县| 茶陵县| 晋中市| 永川市| 轮台县| 甘南县| 陆丰市| 洱源县| 宜宾县| 青冈县| 南丰县| 武夷山市| 额敏县| 南和县| 夏河县| 宜章县| 临海市| 措美县| 黔江区| 阜平县| 若尔盖县| 奎屯市| 尚志市| 亳州市| 西峡县| 周口市| 乐陵市| 犍为县| 望谟县| 开江县| 扶绥县| 蕉岭县| 长岛县| 深圳市| 柏乡县| 麻江县| 石台县| 彭阳县| 舟山市| 资中县| 甘德县| 勃利县| 远安县| 新兴县| 登封市| 安乡县| 陆丰市| 浠水县| 沈阳市| 榆林市| 新干县| 大名县| 石屏县| 广汉市| 抚顺县| 玉林市| 太原市| 荥经县| 宣化县| 贵定县| 佛坪县| 清涧县| 太白县| 泸定县| 永城市| 阿拉善右旗| 海宁市| 黎城县| 乌兰县| 陆良县| 上栗县| 广平县| 宜城市| 红桥区| 九龙县| 三江| 萨迦县| 西青区| 颍上县| 平塘县| 姚安县| 乐东| 山东省| 星子县| 兰溪市| 清水河县| 全州县| 松阳县| 昭通市| 上饶市| 白朗县| 正阳县| 尼木县| 台安县| 吉首市| 大邑县| 积石山| 深州市| 方正县| 孙吴县| 林口县| 句容市| 红桥区| 古蔺县| 屏边| 临清市| 衡水市| 莲花县| 荃湾区| 莱州市| 惠水县| 新巴尔虎右旗| 灵山县| 德令哈市| 类乌齐县| 高陵县| 河西区| 怀仁县| 酒泉市| 邛崃市| 禄丰县| 安化县| 西平县| 合山市| 尤溪县| 成都市| 九台市| 正阳县| 太白县| 融水| 噶尔县| 定日县| 同德县| 枣强县| 新绛县| 怀来县| 安义县| 柘荣县| 通州市| 平泉县| 永城市| 林西县| 沈丘县| 姚安县| 东丰县| 治多县| 姜堰市| 观塘区| 泽州县| 南京市| 阜南县| 太和县| 靖宇县| 抚松县| 崇明县| 鹤岗市| 上高县| 呼和浩特市| 体育| 天长市| 延安市| 安吉县| 革吉县| 七台河市| 宜丰县| 奎屯市| 宁晋县| 安吉县| 铁力市| 龙泉市| 高唐县| 河池市| 合山市| 台山市| 万安县| 介休市| 曲靖市| 栖霞市| 连山| 武邑县| 来宾市| 吉林市| 万盛区| 二连浩特市| 丁青县| 石河子市| 巴彦淖尔市| 炎陵县| 雅安市| 涿鹿县| 灵寿县| 阿克陶县| 青铜峡市| 象州县| 吉安市| 涞源县| 那曲县| 汪清县| 峨山| 武冈市| 托克逊县| 鸡东县| 湖北省| 简阳市| 林芝县| 垫江县| 安塞县| 碌曲县| 清涧县| 叙永县| 固始县| 阿鲁科尔沁旗| 和平区| 科尔| 衡东县| 公主岭市| 合川市| 浦东新区| 措美县| 和龙市| 焦作市| 麻江县| 康乐县| 饶河县| 临朐县| 蒙山县| 台山市| 江永县| 龙川县| 彭山县| 大埔县| 颍上县| 林西县| 定边县| 福鼎市| 台中市| 菏泽市| 城固县| 奉化市| 云梦县| 宁安市| 通山县| 水富县| 安西县| 湟中县| 玛沁县| 水富县| 辰溪县| 贵定县| 石棉县| 华容县| 通化市| 栾城县| 周口市| 东城区| 崇仁县| 中宁县| 辉南县| 常熟市| 秭归县| 南溪县| 绵竹市| 千阳县| 新巴尔虎右旗| 德兴市| 安义县| 鞍山市| 新河县| 班戈县| 休宁县| 松原市| 柳林县| 本溪| 舒兰市| 泽普县| 吉水县| 客服| 西贡区| 吉林省| 阳山县| 呼和浩特市| 郓城县| 淅川县| 神农架林区| 新田县| 原阳县| 龙游县| 吴桥县| 玛多县| 珠海市| 崇明县| 镇远县| 内乡县| 民和| 鲁甸县| 大庆市| 陆河县| 阿拉尔市| 鹰潭市| 荥阳市| 汶川县| 融水| 乌恰县| 都安| 老河口市| 五莲县| 分宜县| 石林| 成武县| 乌兰察布市| 依安县| 万荣县| 遂宁市| 南宫市| 沙洋县| 杂多县| 磴口县| 监利县| 蒲江县| 韩城市| 游戏| 蓬溪县| 阳山县| 凤庆县| 谷城县| 普陀区| 基隆市| 百色市| 门源| 会理县| 奈曼旗| 防城港市| 徐水县| 湘阴县| 巫溪县| 仁怀市| 西和县| 万全县| 离岛区| 称多县| 玛沁县| 咸阳市| 洛川县| 宣威市| 永善县| 淮南市| 唐海县| 岳阳县| 镇巴县| 泉州市| 孟村| 靖宇县| 榆中县| 固镇县| 株洲县| 镇雄县| 都匀市| 临泽县| 吐鲁番市| 黑山县| 鄂伦春自治旗| 东乌珠穆沁旗| 哈尔滨市| 杂多县| 陆川县| 西乌珠穆沁旗| 南汇区| 芒康县| 五大连池市| 柯坪县| 铜鼓县| 平南县| 灯塔市| 婺源县| 云南省| 泽普县| 山阴县| 社会| 麦盖提县| 子洲县| 延长县| 德阳市| 柳江县| 东平县| 汾阳市| 会同县| 迁西县| 乐山市| 化德县| 玉溪市| 莱阳市| 奉节县| 横山县| 肥乡县| http://m.anvifb.fit http://www.atmvnk.fit http://wap.gptuvw.fit http://www.bodksm.fit http://m.jwnmti.fit http://m.stthsk.fit http://m.pogjxf.fit http://www.bdkdug.fit http://m.eayrfa.fit http://m.fuyqxs.fit http://wap.bm1961xarchz.fit http://wap.nolxax.fit http://qbxpur.fit http://m.leodek.fit http://wap.bm1961networkz.fit http://www.tayrtw.fit http://jidaxk.fit http://www.bm1961xirrorz.fit