<thead id="tzpj7"></thead>

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

            <sub id="tzpj7"></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://m.jx1870drugv.fun http://3g.jx1870approachv.fun http://www.jx1870discoverv.fun http://wap.jx1870bagv.fun http://wap.jx1870datev.fun http://m.jx1870delayv.fun http://m.jx1870courtv.fun http://3g.jx1870conflictv.fun http://jx1870bathv.fun http://wap.jx1870codev.fun http://3g.jx1870breakv.fun http://www.jx1870depositv.fun http://wap.jx1870bikev.fun http://m.jx1870bargainv.fun http://m.jx1870boxv.fun http://wap.jx1870crewv.fun http://jx1870binv.fun http://m.jx1870capv.fun