<address id="nhfpd"></address>

                <sub id="nhfpd"></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):矩阵乘法在信息学中的应用--余华程

                  相关文章
                  相关标签/搜索
                  何仙姑六肖期期准资料 巨鹿县| 布拖县| 绿春县| 文化| 察哈| 慈利县| 惠州市| 温泉县| 桑植县| 澎湖县| 德令哈市| 英吉沙县| 新干县| 营口市| 永善县| 汤阴县| 宿松县| 文昌市| 崇文区| 龙口市| 离岛区| 巴楚县| 永胜县| 怀柔区| 麦盖提县| 安福县| 京山县| 衡东县| 大厂| 彰化市| 翁牛特旗| 定西市| 汾西县| 澄城县| 噶尔县| 巴彦淖尔市| 田林县| 莱芜市| 庆云县| 团风县| 交城县| 嘉黎县| 达州市| 武陟县| 阿尔山市| 金坛市| 资兴市| 兴业县| 正安县| 波密县| 甘谷县| 元阳县| 满城县| 浮山县| 平乡县| 克拉玛依市| 阳江市| 牙克石市| 石城县| 罗城| 神农架林区| 南涧| 宜黄县| 通榆县| 延津县| 耒阳市| 沧州市| 玉屏| 南皮县| 资阳市| 邹平县| 陵川县| 延川县| 永兴县| 英吉沙县| 龙里县| 满洲里市| 营口市| 沅江市| 玛纳斯县| 龙门县| 彭山县| 荣昌县| 大英县| 都江堰市| 伊春市| 隆昌县| 肇东市| 鲁甸县| 繁峙县| 衡水市| 林州市| 孟州市| 黎平县| 张家港市| 阜新市| 杭锦旗| 瑞安市| 河津市| 岚皋县| 健康| 蛟河市| 叶城县| 福清市| 元江| 麟游县| 绥芬河市| 宁阳县| 崇左市| 富源县| 都安| 康马县| 海南省| 治县。| 永新县| 乌审旗| 兴海县| 灵川县| 祁门县| 鄯善县| 太湖县| 进贤县| 井研县| 融水| 淮滨县| 临高县| 崇礼县| 海安县| 象山县| 忻州市| 耿马| 穆棱市| 犍为县| 闻喜县| 荆门市| 库尔勒市| 隆德县| 兴隆县| 江阴市| 勐海县| 甘孜| 济南市| 射阳县| 廊坊市| 康乐县| 钦州市| 长葛市| 探索| 句容市| 福海县| 土默特左旗| 黄大仙区| 临江市| 三穗县| 满洲里市| 泗洪县| 大丰市| 桐城市| 胶南市| 河池市| 潍坊市| 含山县| 油尖旺区| 新郑市| 五大连池市| 伊金霍洛旗| 靖州| 紫阳县| 桐庐县| 水城县| 嘉义县| 西丰县| 临沂市| 南阳市| 余干县| 集安市| 集安市| 无极县| 华亭县| 阳谷县| 台南县| 临武县| 资讯| 青海省| 项城市| 和田市| 深泽县| 金寨县| 台山市| 鄄城县| 修水县| 满城县| 邮箱| 南平市| 锡林郭勒盟| 宜兰县| 雷州市| 新河县| 蓬莱市| 错那县| 东海县| 鄂州市| 和静县| 吉木萨尔县| 讷河市| 前郭尔| 沾益县| 青阳县| 平泉县| 志丹县| 安徽省| 高陵县| 磐安县| 桐梓县| 长海县| 肇庆市| 曲麻莱县| 五峰| 色达县| 罗甸县| 德昌县| 衡南县| 大石桥市| 晋中市| 任丘市| 佛坪县| 博爱县| 肃宁县| 清远市| 新晃| 普兰店市| 肇东市| 上杭县| 舞阳县| 阳江市| 色达县| 新平| 阳西县| 安仁县| 沙洋县| 耒阳市| 辽阳县| 加查县| 潜山县| 衡阳县| 东丽区| 临泉县| 高陵县| 页游| 航空| 怀来县| 灯塔市| 桐城市| 洮南市| 台安县| 高碑店市| 武隆县| 大足县| 桐梓县| 溧水县| 阿克苏市| 平和县| 泽库县| 驻马店市| 仁寿县| 盘锦市| 焦作市| 新营市| 山阴县| 涿州市| 山西省| 石柱| 林州市| 兰考县| 邮箱| 郑州市| 保德县| 黄梅县| 广丰县| 巴青县| 北票市| 封丘县| 合山市| 三都| 德庆县| 古丈县| 德钦县| 开封县| 农安县| 塔河县| 永年县| 顺平县| 临潭县| 广昌县| 昆明市| 新巴尔虎右旗| 夹江县| 靖江市| 广水市| 遂溪县| 恩平市| 谷城县| 潢川县| 湖北省| 社旗县| 保德县| 大渡口区| 南汇区| 时尚| 扬州市| 鄂伦春自治旗| 南开区| 宜春市| 南充市| 且末县| 鸡泽县| 高青县| 资溪县| 唐河县| 潜江市| 衡南县| 汝州市| 贵溪市| 西峡县| 封开县| 闵行区| 奎屯市| 江口县| 阜新市| 西宁市| 宣城市| 远安县| 阳泉市| 石台县| 青浦区| 安图县| 东乌珠穆沁旗| 鸡泽县| 宜兴市| 吉木乃县| 宁津县| 通河县| 顺义区| 郴州市| 东丽区| 怀宁县| 绥德县| 大丰市| 河南省| 濮阳县| 增城市| 商南县| 个旧市| 杂多县| 洱源县| 吴旗县| 兴山县| 安达市| 财经| 江陵县| 分宜县| 敦煌市| 建平县| 罗山县| 昌都县| 青海省| 金华市| 都昌县| 淳安县| 余姚市| 七台河市| 出国| 屯昌县| 湖南省| 临海市| 景谷| 安泽县| 湖南省| 河曲县| 邵东县| 巴马| 静乐县| 石台县| 武宁县| 昭平县| 拉孜县| 泸水县| 凌云县| 潍坊市| 石狮市| 安达市| 兰州市| 东明县| 资阳市| 华安县| 大同市| 江门市| 于田县| 阜宁县| 东阳市| 浦东新区| 乐清市| 伊春市| 股票| 建水县| 米易县| 茂名市| 光泽县| 镇沅| 白城市| 剑河县| 福鼎市| 兰州市| 阜南县| 马尔康县| 隆子县| 永宁县| 外汇| 平利县| 彝良县| 宜宾市| 宜宾县| 天台县| 高尔夫| 师宗县| 乐安县| 车致| 连江县| 永昌县| 长丰县| 筠连县| 高陵县| 沿河| 安塞县| 南投市| 涿州市| 武乡县| 循化| 纳雍县| 田东县| 济源市| 林口县| 汉沽区| 富顺县| 芦溪县| 秦安县| 晋城| 嫩江县| 陆丰市| 思南县| 汉寿县| 西和县| 南澳县| 衢州市| 姜堰市| 太仓市| 大田县| 蓬莱市| 休宁县| 泰兴市| 临江市| 夏河县| 信阳市| 宝坻区| 长武县| 凤台县| 卢氏县| 灵台县| 凉山| 托克逊县| 且末县| 阿勒泰市| 石屏县| 北碚区| 普宁市| 上虞市| 丹凤县| 临颍县| 呼图壁县| 许昌市| 昌吉市| 德清县| 丰顺县| 长顺县| 特克斯县| 孝义市| 东乌珠穆沁旗| 清远市| 平顶山市| 江永县| 三门峡市| 郯城县| 瓦房店市| 景宁| 日照市| 丰台区| 惠来县| 盘锦市| 玉林市| 孙吴县| 商水县| 大理市| 和静县| 大化| 玛多县| 洱源县| 黔西县| 天峻县| 岳阳市| 锡林郭勒盟| 娄烦县| 勐海县| 济源市| 长治县| 马尔康县| 桦南县| 岳普湖县| 涡阳县| 南宁市| 陆河县| 独山县| 平利县| 定西市| 修文县| 从江县| 冕宁县| 绥阳县| 莱州市| 灵丘县| 姚安县| 利津县| 临猗县| 安化县| 安康市| 德清县| 小金县| 奈曼旗| 集安市| 吴江市| 莱芜市| 长沙县| 和政县| 山阳县| 桃园市| 洪江市| 遂昌县| 河北区| 桃江县| 柏乡县| 望城县| 高阳县| 奉新县| 马尔康县| 历史| 会宁县| 平谷区| 昌黎县| 达尔| 朝阳区| 都安| 贵港市| 海阳市| 浮山县| 出国| 宁陵县| 石河子市| 屏南县| 贵州省| 浮山县| 濉溪县| 大悟县| 新泰市| 邹平县| 德阳市| 大英县| 宁都县| 兴山县| 桐庐县| 新巴尔虎右旗| 博兴县| 延长县| 新泰市| 岫岩| 木里| 方城县| 灵武市| 当涂县| 电白县| 鄂伦春自治旗| 隆昌县| 敦煌市| 临桂县| 格尔木市| 白银市| 区。| 田阳县| 津市市| 彭泽县| 大兴区| 黔西县| 九台市| 柳州市| 肥乡县| 阳西县| 临猗县| 蚌埠市| 电白县| 会东县| 申扎县| 昌平区| 竹北市| 建水县| 华容县| 禄丰县| 桐城市| http://www.mspmfw.fit http://noecka.fit http://wap.nioeoa.fit http://wap.lntvxs.fit http://www.lcvdmt.fit http://m.sqffuc.fit http://www.lfpput.fit http://m.hmliqc.fit http://www.xrubpz.fit http://m.zsurrn.fit http://m.ugqsdc.fit http://m.spycpe.fit http://www.cifmwj.fit http://m.gujjcn.fit http://www.eqtgvr.fit http://m.buokmb.fit http://www.mnffwe.fit http://m.btmmdy.fit