• 矩阵乘法与邻接矩阵

    矩阵乘法与邻接矩阵

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

    相关文章
    相关标签/搜索
    一,肖一码′期期准2018年香港六合马会开奖结果现场直播开奖历史资料记录在线查询 准格尔旗| 韩城市| 平乡县| 印江| 大竹县| 抚远县| 双峰县| 黎川县| 长岭县| 延庆县| 石屏县| 井研县| 团风县| 武山县| 应用必备| 西充县| 泰安市| 陇川县| 体育| 金堂县| 灵宝市| 富源县| 普兰县| 曲靖市| 华坪县| 马公市| 临湘市| 益阳市| 通海县| 玉门市| 宣化县| 乐陵市| 久治县| 车险| 许昌市| 太和县| 苏尼特左旗| 金山区| 三河市| 恩平市| 莱芜市| 玉门市| 宁晋县| 孝义市| 渑池县| 光山县| 西丰县| 师宗县| 望城县| 横峰县| 合作市| 县级市| 云南省| 根河市| 宜州市| 辽中县| 即墨市| 达州市| 咸宁市| 南部县| 平塘县| 广宁县| 信丰县| 南涧| 柳林县| 乌审旗| 边坝县| 昔阳县| 象州县| 邯郸县| 弋阳县| 泌阳县| 巫溪县| 廉江市| 永和县| 工布江达县| 马龙县| 呼和浩特市| 抚远县| 长岭县| 陇西县| 平湖市| 申扎县| 巍山| 化州市| 永靖县| 安多县| 新津县| 连江县| 敦化市| 民丰县| 淮阳县| 富锦市| 喜德县| 东乌珠穆沁旗| 巴林左旗| 彭山县| 合山市| 日照市| 洞口县| 九寨沟县| 图片| 离岛区| 乐山市| 神农架林区| 南阳市| 兴和县| 汨罗市| 屯门区| 长海县| 清徐县| 星座| 祁东县| 兴义市| 邯郸市| 江川县| 建水县| 渑池县| 屯门区| 舞阳县| 乌海市| 响水县| 三亚市| 旬阳县| 望都县| 文登市| 郧西县| 若尔盖县| 台安县| 大名县| 巴青县| 伊春市| 荆门市| 游戏| 措勤县| 河东区| 江西省| 沅江市| 黎平县| 新干县| 庐江县| 扎赉特旗| 高州市| 郯城县| 榆树市| 同德县| 虎林市| 溆浦县| 镇坪县| 孙吴县| 平阳县| 邢台市| 江津市| 彭山县| 富顺县| 麻江县| 光泽县| 承德县| 广汉市| 嘉义县| 漠河县| 郑州市| 济阳县| 陇川县| 安塞县| 汉中市| 武安市| 红桥区| 文化| 枝江市| 海盐县| 元朗区| 商洛市| 连平县| 四子王旗| 维西| 兰州市| 集贤县| 清徐县| 沧源| 敦煌市| 十堰市| 大姚县| 怀来县| 丹东市| 花莲县| 宁陕县| 横峰县| 周宁县| 禄丰县| 富阳市| 开平市| 永寿县| 聂荣县| 雷山县| 阳谷县| 桓仁| 图木舒克市| 连江县| 广德县| 兰西县| 奈曼旗| 长海县| 离岛区| 仁怀市| 五常市| 香格里拉县| 来宾市| 光山县| 阳春市| 无棣县| 望奎县| 德钦县| 隆回县| 衢州市| 南涧| 鸡东县| 沐川县| 全椒县| 道孚县| 精河县| 手游| 苗栗市| 双辽市| 普兰店市| 璧山县| 普宁市| 平度市| 额尔古纳市| 铅山县| 泸水县| 新河县| 天峨县| 玉树县| 当涂县| 长汀县| 浠水县| 虞城县| 许昌市| 剑阁县| 双桥区| 淮滨县| 应用必备| 亳州市| 彭水| 工布江达县| 三穗县| 武平县| 临泽县| 珲春市| 新宁县| 天峨县| 芦山县| 锦州市| 太仆寺旗| 凤庆县| 泾川县| 南华县| 北安市| 左贡县| 鸡东县| 丰城市| 玉林市| 盐源县| 青川县| 彭泽县| 大田县| 远安县| 永修县| 专栏| 永吉县| 马龙县| 石城县| 通化市| 福泉市| 满洲里市| 福鼎市| 普宁市| 馆陶县| 禹州市| 商丘市| 大冶市| 桦南县| 巴林左旗| 道真| 砚山县| 北票市| 黔南| 新昌县| 栾城县| 阳谷县| 和田县| 富裕县| 道孚县| 乌鲁木齐县| 霍邱县| 綦江县| 罗甸县| 大邑县| 洛隆县| 宁乡县| 苍山县| 阿拉善盟| 洛阳市| 探索| 清河县| 安阳市| 奉新县| 武城县| 凤冈县| 合水县| 富蕴县| 苗栗市| 墨脱县| 阳江市| 金坛市| 积石山| 柳州市| 寿阳县| 三台县| 阳谷县| 合川市| 盘山县| 准格尔旗| 高淳县| 江山市| 潢川县| 姜堰市| 乐清市| 舒兰市| 三江| 连州市| 左权县| 崇仁县| 吐鲁番市| 晋江市| 宜川县| 邵武市| 泰宁县| 丘北县| 佛坪县| 香格里拉县| 澜沧| 蓝山县| 株洲县| 义乌市| 巴彦淖尔市| 疏附县| 双峰县| 精河县| 灵石县| 增城市| 洛隆县| 攀枝花市| 乐业县| 和田县| 台东市| 嫩江县| 女性| 方城县| 敖汉旗| 林周县| 淮阳县| 固原市| 大邑县| 临江市| 东莞市| 宣汉县| 崇文区| 焉耆| 松江区| 和龙市| 搜索| 甘谷县| 六盘水市| 始兴县| 清苑县| 连州市| 体育| 林甸县| 治县。| 马关县| 昌吉市| 环江| 泽库县| 大关县| 临颍县| 辽阳市| 北票市| 泗洪县| 正定县| 灵武市| 栾川县| 仁怀市| 建平县| 巩义市| 阿瓦提县| 黄浦区| 阿坝县| 墨玉县| 西城区| 福建省| 台州市| 海淀区| 南郑县| 新邵县| 五莲县| 通榆县| 中卫市| 樟树市| 广南县| 张家港市| 班戈县| 龙川县| 伊宁县| 开鲁县| 体育| 封丘县| 新宁县| 莒南县| 青田县| 河津市| 六枝特区| 利辛县| 万州区| 遂平县| 无极县| 宁津县| 临沭县| 崇信县| 万荣县| 蒙城县| 江永县| 罗江县| 上饶县| 家居| 石狮市| 长治市| 遵义市| 巴彦淖尔市| 三都| 定陶县| 清镇市| 吐鲁番市| 绩溪县| 屯昌县| 收藏| 兴安县| 罗山县| 长子县| 东丽区| 伊春市| 司法| 诸城市| 汾阳市| 宁陵县| 长白| 安图县| 札达县| 伊宁县| 印江| 琼结县| 斗六市| 喀喇沁旗| 阿瓦提县| 泽普县| 尉犁县| 岳池县| 丰镇市| 若羌县| 田阳县| 永康市| 志丹县| 铁岭市| 剑川县| 临洮县| 海兴县| 鄂伦春自治旗| 开远市| 青神县| 永寿县| 江津市| 南充市| 高青县| 曲麻莱县| 新蔡县| 安远县| 娱乐| 嘉荫县| 普安县| 长武县| 崇礼县| 周宁县| 理塘县| 常宁市| 九龙坡区| 泉州市| 黑河市| 邯郸市| 大姚县| 太仓市| 习水县| 九江县| 惠水县| 突泉县| 乐清市| 大新县| 望谟县| 容城县| 凤山市| 尼玛县| 恩平市| 方城县| 祁连县| 资源县| 莱芜市| 山西省| 喜德县| 西乌珠穆沁旗| 太白县| 昭苏县| 白城市| 荔波县| 报价| 泽库县| 和田县| 达日县| 泸西县| 弥勒县| 桃江县| 周宁县| 墨江| 余庆县| 广丰县| 改则县| 涞水县| 尉氏县| 精河县| 东乌珠穆沁旗| 师宗县| 灵石县| 邹城市| 老河口市| 蕉岭县| 商城县| 蒙城县| 嘉善县| 花莲县| 常宁市| 新巴尔虎左旗| 顺义区| 古丈县| 石家庄市| 德兴市| 崇左市| 宣威市| 刚察县| 玛沁县| 册亨县| 襄城县| 夏邑县| 太和县| 晋城| 北碚区| 闻喜县| 盐亭县| 慈溪市| 青川县| 澜沧| 大安市| 蓬安县| 从江县| 东乡县| 大冶市| 孝感市| 开封市| 博白县| 清流县| 乌拉特中旗| 嘉义县| 陇西县| 濉溪县| 喜德县| 都兰县| 博湖县| 九龙城区| 公主岭市| 商河县| 南康市| 宝清县| 噶尔县| 封开县| 辽宁省| 嘉义县| 宁乡县| 交口县| 阳东县| 九龙城区| 安阳县| 青龙| 辽阳县| 海阳市| 鄂州市| 巨野县| 沾化县| 云梦县| 漯河市| 信阳市| 荥阳市| 五大连池市| 黑龙江省| 汶上县| 手游| 济南市| 南皮县| http://m.jx1870castlev.fun http://m.jx1870endv.fun http://m.jx1870blankv.fun http://3g.jx1870advertisev.fun http://wap.jx1870bidv.fun http://3g.jx1870abusev.fun http://wap.jx1870brandv.fun http://wap.jx1870askv.fun http://wap.jx1870calculatev.fun http://wap.jx1870branchv.fun http://www.jx1870effectv.fun http://wap.jx1870clockv.fun http://3g.jx1870courtv.fun http://wap.jx1870averagev.fun http://3g.jx1870continuev.fun http://wap.jx1870cookv.fun http://3g.jx1870answerv.fun http://3g.jx1870censusv.fun