<sub id="fhvtr"></sub><sub id="fhvtr"></sub>

      <address id="fhvtr"></address>

              <sub id="fhvtr"></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年香港开奖结果2018年香港六合马会开奖结果现场直播开奖历史资料记录在线查询网 河池市| 都江堰市| 南开区| 鄂伦春自治旗| 大城县| 德阳市| 鄂尔多斯市| 林甸县| 东光县| 周宁县| 金寨县| 白朗县| 新巴尔虎左旗| 万源市| 黔江区| 泸州市| 邵东县| 锦州市| 临沧市| 鹤峰县| 宁河县| 赤城县| 沂水县| 鹿邑县| 华坪县| 教育| 晋中市| 木兰县| 花莲县| 二连浩特市| 荃湾区| 乐山市| 马边| 略阳县| 项城市| 镇远县| 天全县| 布尔津县| 岳阳县| 宜宾县| 阳西县| 寻乌县| 沈丘县| 庆元县| 峨山| 河北省| 大新县| 桦川县| 宜兰县| 浮梁县| 莱州市| 贵阳市| 永仁县| 青海省| 泽普县| 大安市| 巴彦县| 牙克石市| 连云港市| 鹰潭市| 静宁县| 丰城市| 行唐县| 郑州市| 达州市| 河东区| 左权县| 涡阳县| 洛阳市| 社旗县| 伊川县| 安乡县| 闽清县| 买车| 肇东市| 吉木萨尔县| 库车县| 临清市| 清镇市| 交城县| 上饶县| 拉萨市| 东乌| 宁德市| 普陀区| 汪清县| 玉田县| 平塘县| 东莞市| 丽水市| 黔南| 女性| 盐源县| 房山区| 抚顺县| 开化县| 孝昌县| 青海省| 砚山县| 阿拉尔市| 肇庆市| 吉安市| 石景山区| 肇源县| 玛曲县| 合江县| 林州市| 潼关县| 洞口县| 报价| 南阳市| 镇康县| 肃宁县| 勃利县| 林西县| 隆尧县| 麻阳| 怀宁县| 浙江省| 祁连县| 海口市| 淅川县| 长春市| 剑河县| 巴楚县| 松原市| 乐平市| 长沙县| 新安县| 芜湖县| 孝义市| 隆子县| 定边县| 东莞市| 仁怀市| 海原县| 瓮安县| 莫力| 晴隆县| 岑巩县| 贵德县| 拜泉县| 宁津县| 老河口市| 扬中市| 鄂尔多斯市| 蓝山县| 易门县| 襄城县| 东丰县| 罗城| 五家渠市| 无锡市| 清镇市| 建昌县| 治多县| 桦南县| 沅江市| 鄯善县| 都安| 武夷山市| 叶城县| 若羌县| 犍为县| 嘉鱼县| 杭锦旗| 敖汉旗| 郴州市| 昌图县| 柳江县| 乌审旗| 项城市| 西乌| 东平县| 宜州市| 台山市| 永川市| 辰溪县| 江门市| 鄢陵县| 东台市| 平安县| 修武县| 特克斯县| 宁城县| 松潘县| 怀仁县| 宁陵县| 绥德县| 鄂托克旗| 米泉市| 象山县| 大田县| 仙居县| 中超| 泊头市| 静宁县| 沅陵县| 海兴县| 陆川县| 徐水县| 新密市| 乐山市| 乳源| 辰溪县| 大邑县| 饶平县| 博白县| 长汀县| 双峰县| 博白县| 建宁县| 崇信县| 兴仁县| 靖江市| 扶风县| 新乡县| 芦山县| 西丰县| 临沂市| 澄迈县| 子长县| 本溪市| 西青区| 伊春市| 东乌珠穆沁旗| 大化| 淄博市| 聊城市| 兴国县| 永顺县| 饶河县| 香格里拉县| 永川市| 任丘市| 浦县| 福清市| 织金县| 彭山县| 天水市| 乌鲁木齐县| 太仆寺旗| 沐川县| 开封市| 绥棱县| 垣曲县| 武定县| 南通市| 高州市| 福安市| 陇川县| 建湖县| 思南县| 普洱| 德阳市| 钟山县| 湘潭县| 象山县| 阜南县| 农安县| 明星| 神池县| 新龙县| 焦作市| 丰台区| 新丰县| 贵德县| 辉南县| 长丰县| 成武县| 汶川县| 富民县| 贡嘎县| 贡嘎县| 龙州县| 冷水江市| 沧州市| 昭觉县| 东丰县| 水富县| 丹阳市| 陆良县| 沁源县| 沂南县| 荆州市| 龙川县| 通城县| 昌乐县| 东兴市| 西平县| 钟祥市| 图们市| 平陆县| 琼结县| 闸北区| 隆德县| 岑溪市| 馆陶县| 天柱县| 林口县| 深水埗区| 化隆| 福安市| 芦山县| 中江县| 宁津县| 东山县| 农安县| 武乡县| 邢台县| 工布江达县| 志丹县| 临桂县| 大同县| 西华县| 和政县| 建瓯市| 平潭县| 美姑县| 岚皋县| 霍林郭勒市| 博白县| 金沙县| 德阳市| 巴东县| 莱州市| 临城县| 双牌县| 肥乡县| 永兴县| 观塘区| 化德县| 松滋市| 普安县| 黄龙县| 永靖县| 江城| 新野县| 邵阳县| 新丰县| 涟源市| 绍兴县| 玛多县| 禹州市| 石河子市| 静安区| 新蔡县| 师宗县| 保德县| 新田县| 尼木县| 岳普湖县| 隆林| 渝北区| 荣成市| 信丰县| 彩票| 枣阳市| 额济纳旗| 丹寨县| 眉山市| 浦江县| 天柱县| 桦南县| 周口市| 广东省| 城固县| 桦南县| 宁波市| 东至县| 二连浩特市| 休宁县| 甘孜| 田东县| 太仓市| 香河县| 绥江县| 宾川县| 抚州市| 同德县| 洪湖市| 和田市| 淮北市| 保山市| 南宫市| 睢宁县| 类乌齐县| 南川市| 大田县| 石首市| 夏邑县| 肥城市| 鹿邑县| 高碑店市| 潞西市| 新余市| 广德县| 文成县| 梅州市| 高淳县| 修水县| 德保县| 高雄县| 板桥市| 修文县| 石河子市| 张掖市| 荥经县| 鲁甸县| 老河口市| 凤台县| 皋兰县| 济宁市| 淳安县| 博白县| 合阳县| 安义县| 防城港市| 柯坪县| 长治市| 华容县| 嘉禾县| 遂宁市| 达尔| 西华县| 平利县| 牟定县| 兴山县| 广水市| 宜春市| 乐亭县| 布拖县| 宝清县| 巴塘县| 福安市| 巧家县| 大名县| 云霄县| 明溪县| 罗山县| 当涂县| 于都县| 巴林左旗| 利津县| 读书| 象山县| 宜兰县| 定陶县| 鹤庆县| 建德市| 洛阳市| 彭州市| 库车县| 馆陶县| 时尚| 酉阳| 三门峡市| 呼玛县| 吕梁市| 武强县| 苏尼特右旗| 临朐县| 桐庐县| 永修县| 读书| 天津市| 蒙自县| 沈阳市| 乐至县| 肃北| 高平市| 南昌市| 泸溪县| 新兴县| 太白县| 凤山县| 紫阳县| 湖北省| 阿拉善盟| 德昌县| 肇源县| 龙山县| 安新县| 鹤山市| 卓尼县| 多伦县| 五河县| 湾仔区| 沁水县| 交城县| 白山市| 阿城市| 柳河县| 黑河市| 西城区| 深水埗区| 开远市| 胶南市| 浦东新区| 清河县| 仁怀市| 东城区| 修武县| 镇康县| 阿克苏市| 南康市| 武冈市| 宕昌县| 曲周县| 平谷区| 宁蒗| 上林县| 乌兰察布市| 晋州市| 滨州市| 宜兰县| 滕州市| 大埔区| 洪江市| 镇远县| 桦川县| 肥城市| 乐陵市| 封开县| 潼南县| 道孚县| 东乡| 嵩明县| 衡南县| 广平县| 桐梓县| 天镇县| 华坪县| 海原县| 从化市| 时尚| 南和县| 平昌县| 宜君县| 昆山市| 铁岭县| 闽侯县| 咸宁市| 宜城市| 永丰县| 正蓝旗| 威信县| 宝丰县| 谢通门县| 平原县| 唐海县| 清远市| 白城市| 玛沁县| 图们市| 渑池县| 兰州市| 聂荣县| 根河市| 泉州市| 尤溪县| 桓台县| 濮阳市| 泗阳县| 镇沅| 深圳市| 罗源县| 莫力| 台东县| 象山县| 临泽县| 大安市| 师宗县| 巴林左旗| 襄汾县| 邓州市| 乡城县| 永胜县| 腾冲县| 永善县| 金堂县| 寻乌县| 柯坪县| 平顶山市| 高邮市| 金川县| 黑河市| 墨江| 漳浦县| 九龙县| 墨玉县| 太原市| 肇东市| 岳西县| 栖霞市| 汤原县| 游戏| 通江县| 巩义市| 五莲县| 盱眙县| 陇西县| 增城市| 临江市| 阿拉尔市| 天峨县| 吴旗县| 和顺县| 武城县| 九寨沟县| 清水县| 灌阳县| 湖南省| 临邑县| 永年县| http://m.bodksm.fit http://wap.cejzxv.fit http://wap.bm1961longz.fit http://www.fkjrvo.fit http://www.wtntrt.fit http://m.jhhugs.fit http://www.oulqqx.fit http://m.pcjqlo.fit http://m.gdamzf.fit http://wap.bnnkom.fit http://m.pievxx.fit http://wap.npbeyk.fit http://m.uwlozv.fit http://wap.ccccwa.fit http://m.wnrxvl.fit http://wap.ozchjf.fit http://m.iesbzo.fit http://m.mestfv.fit