<menu id="ekugk"></menu>
  • <input id="ekugk"></input><object id="ekugk"></object>
  • <input id="ekugk"><u id="ekugk"></u></input>
    <menu id="ekugk"></menu>
  • <input id="ekugk"></input>
  • <menu id="ekugk"><tt id="ekugk"></tt></menu>
    <object id="ekugk"><acronym id="ekugk"></acronym></object>
    <object id="ekugk"></object>
    <table id="ekugk"><small id="ekugk"></small></table>
  • <input id="ekugk"><u id="ekugk"></u></input>
    <menu id="ekugk"></menu>
  • 矩阵乘法与邻接矩阵

    矩阵乘法与邻接矩阵

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

    相关文章
    相关标签/搜索
    2Cm49cOm招猫49论坛 黔东| 新竹县| 从江县| 松桃| 罗山县| 永宁县| 嘉义市| 彭泽县| 大姚县| 将乐县| 天祝| 成安县| 松潘县| 成都市| 手机| 浏阳市| 汝南县| 四子王旗| 汝南县| 铁岭县| 赤水市| 全南县| 洛隆县| 准格尔旗| 阜南县| 乌什县| 万荣县| 清丰县| 长泰县| 承德市| 陵川县| 社会| 云霄县| SHOW| 乌什县| 平和县| 昌吉市| 闵行区| 陇川县| 杂多县| 达孜县| 全州县| 迁西县| 页游| 阜新市| 稷山县| 腾冲县| 常熟市| 邵武市| 伊春市| 扎鲁特旗| 黄大仙区| 旺苍县| 灵丘县| 天长市| 和龙市| 荥阳市| 开封市| 遂川县| 登封市| 宁化县| 科技| 措勤县| 宁城县| 建湖县| 佛坪县| 长乐市| 揭阳市| 辽阳县| 常熟市| 佛学| 浮梁县| 庄河市| 洪洞县| 棋牌| 盈江县| 南江县| 溧水县| 武隆县| 宁蒗| 衡东县| 北川| 遵义市| 鸡西市| 乐山市| 新平| 泸西县| 监利县| 林州市| 富阳市| 吴桥县| 磴口县| 汉寿县| 洞头县| 沾益县| 托里县| 土默特右旗| 泽普县| 巴青县| 正定县| 侯马市| 宣武区| 南和县| 珲春市| 霍山县| 峨山| 南宫市| 独山县| 涞源县| 连州市| 奈曼旗| 社旗县| 双柏县| 临漳县| 丰县| 桂林市| 利津县| 公安县| 涟水县| 湘西| 文水县| 长宁县| 鸡西市| 遂溪县| 肥乡县| 新邵县| 苍溪县| 平谷区| 嘉荫县| 南丰县| 梓潼县| 光山县| 当阳市| 五峰| 丽水市| 西丰县| 米脂县| 桑植县| 额敏县| 厦门市| 阜宁县| 绥芬河市| 读书| 苏尼特右旗| 洪湖市| 罗甸县| 康定县| 福清市| 苏尼特左旗| 乌拉特中旗| 全州县| 阜新市| 桂阳县| 玉树县| 吉安县| 类乌齐县| 连平县| 麟游县| 皋兰县| 称多县| 丰台区| 印江| 奉化市| 滁州市| 昌图县| 京山县| 唐海县| 正阳县| 乃东县| 肥西县| 广汉市| 黄龙县| 宁夏| 勃利县| 莒南县| 宜州市| 驻马店市| 五台县| 陆川县| 临汾市| 中方县| 北川| 南投市| 德庆县| 东丽区| 缙云县| 邻水| 齐齐哈尔市| 子洲县| 海盐县| 南京市| 原平市| 陵川县| 都兰县| 丹寨县| 尉氏县| 张北县| 龙胜| 福海县| 徐州市| 基隆市| 新民市| 米林县| 贺兰县| 日喀则市| 衡东县| 公安县| 图们市| 兴安盟| 新疆| 自治县| 荆州市| 长治县| 峨边| 平果县| 海城市| 平昌县| 商南县| 二连浩特市| 濮阳县| 安龙县| 延庆县| 永济市| 上虞市| 黄大仙区| 襄垣县| 资源县| 巴彦淖尔市| 怀仁县| 洪雅县| 石河子市| 汶川县| 鹿泉市| 福清市| 青冈县| 茂名市| 荥经县| 北海市| 姜堰市| 曲阳县| 类乌齐县| 德惠市| 普宁市| 团风县| 芜湖县| 荔波县| 尚义县| 阿拉善左旗| 洛南县| 中超| 潍坊市| 虞城县| 鄂州市| 叙永县| 界首市| 扶余县| 海原县| 芦溪县| 花莲县| 团风县| 彭山县| 嘉义县| 石城县| 慈利县| 武隆县| 新源县| 永仁县| 大新县| 鹤峰县| 丰顺县| 抚远县| 天津市| 边坝县| 沛县| 宜春市| 迁安市| 大埔县| 高邑县| 周至县| 板桥市| 常熟市| 新郑市| 大田县| 永定县| 文成县| 镇沅| 无为县| 凌云县| 冷水江市| 酒泉市| 海阳市| 达尔| 庄河市| 砚山县| 万全县| 肇源县| 瑞金市| 宁乡县| 霍城县| 凉城县| 溧水县| 巴彦县| 兴和县| 辽阳市| 桃园县| 乌拉特前旗| 双流县| 大田县| 漠河县| 拉萨市| 旌德县| 宣武区| 海宁市| 新干县| 信丰县| 宜丰县| 泰宁县| 望谟县| 江达县| 丽江市| 伊金霍洛旗| 吐鲁番市| 利辛县| 泸西县| 张家川| 长丰县| 芦溪县| 富顺县| 措美县| 资阳市| 新晃| 瑞丽市| 天全县| 沈丘县| 连云港市| 阳山县| 高雄县| 万载县| 洛扎县| 方正县| 湄潭县| 涿州市| 资溪县| 浦东新区| 邢台县| 双江| 衡山县| 武夷山市| 平阴县| 泰来县| 错那县| 会昌县| 涞源县| 屯昌县| 绥化市| 宜川县| 城固县| 洪泽县| 北海市| 佛冈县| 石渠县| 楚雄市| 容城县| 洪泽县| 根河市| 东乌| 永修县| 明星| 乌拉特前旗| 七台河市| 洪湖市| 衡水市| 柘荣县| 洞口县| 秦皇岛市| 虞城县| 古蔺县| 留坝县| 镇远县| 普格县| 福贡县| 洛川县| 望城县| 东乌珠穆沁旗| 化德县| 凤山市| 临夏县| 弋阳县| 内丘县| 连城县| 开封市| 乳山市| 巴东县| 临潭县| 迁西县| 临漳县| 肇源县| 景宁| 砀山县| 海伦市| 拜城县| 汕尾市| 榆树市| 新邵县| 科技| 尉犁县| 新宾| 高清| 肥乡县| 泗洪县| 阳山县| 博罗县| 封开县| 蒲江县| 邓州市| 平泉县| 固原市| 隆回县| 河间市| 都江堰市| 太仆寺旗| 东明县| 盈江县| 改则县| 红原县| 土默特右旗| 高安市| 阜南县| 鸡东县| 兰溪市| 舟曲县| 大冶市| 南丰县| 泰来县| 台北市| 招远市| 文山县| 三明市| 阳西县| 屯门区| 阳曲县| 崇仁县| 新密市| 卢湾区| 清河县| 杂多县| 天峻县| 娄底市| 遂昌县| 宜兰市| 曲阜市| 峨山| 阳高县| 莱芜市| 自贡市| 子长县| 秦皇岛市| 龙江县| 阿城市| 濉溪县| 盘山县| 清新县| 三门峡市| 南康市| 麦盖提县| 肇庆市| 桐乡市| 杂多县| 理塘县| 东乌珠穆沁旗| 吴堡县| 齐齐哈尔市| 类乌齐县| 苗栗县| 高清| 金塔县| 志丹县| 尼木县| 边坝县| 道孚县| 江津市| 马山县| 炎陵县| 宣化县| 黔江区| 卓资县| 江门市| 宜兰市| 福安市| 洪雅县| 三江| 合作市| 泾源县| 南江县| 鄂州市| 汝州市| 老河口市| 长泰县| 朔州市| 墨江| 和林格尔县| 崇信县| 十堰市| 海口市| 徐汇区| 龙川县| 拉萨市| 西青区| 龙游县| 晋中市| 杨浦区| 锡林郭勒盟| 荥阳市| 宿州市| 即墨市| 库车县| 广河县| 仙桃市| 青阳县| 邵阳县| 千阳县| 鹤岗市| 乡城县| 藁城市| 霍山县| 滕州市| 太湖县| 呈贡县| 碌曲县| 湖南省| 长乐市| 江源县| 黎城县| 永登县| 日土县| 襄城县| 仪征市| 竹北市| 娄底市| 德江县| 天祝| 谢通门县| 镇平县| 岑溪市| 武功县| 资源县| 云安县| 岳阳市| 南充市| 古田县| 龙江县| 巢湖市| 彭水| 望奎县| 牟定县| 象山县| 呼图壁县| 龙江县| 美姑县| 隆德县| 民丰县| 沙田区| 二手房| 通化市| 阳曲县| 瑞丽市| 平原县| 合肥市| 高雄市| 平阴县| 宜川县| 柳林县| 海丰县| 成安县| 宁国市| 确山县| 卢氏县| 金沙县| 南充市| 漯河市| 鄂尔多斯市| 丰县| 行唐县| 中西区| 安仁县| 兴城市| 宁夏| 永新县| 甘洛县| 如皋市| 广汉市| 华亭县| 庐江县| 尼勒克县| 文水县| 阿拉善盟| 渝北区| 澄迈县| 洛浦县| 旬邑县| 拉孜县| 惠东县| 连江县| 刚察县| 东莞市| 澜沧| 九台市| 云安县| 梨树县| 台山市| 加查县| 历史| 灵台县| 东辽县| 固阳县| http://3g.jx1870effectv.fun http://wap.jx1870discoverv.fun http://wap.jx1870earthv.fun http://wap.jx1870backgroundv.fun http://www.jx1870contestv.fun http://3g.jx1870cruisev.fun http://www.jx1870editv.fun http://wap.jx1870believev.fun http://3g.jx1870bagv.fun http://3g.jx1870attendv.fun http://3g.jx1870corev.fun http://wap.jx1870aidv.fun http://3g.jx1870coverv.fun http://3g.jx1870busv.fun http://m.jx1870basev.fun http://wap.jx1870cardv.fun http://wap.jx1870bushv.fun http://www.jx1870datev.fun