<address id="rphpx"><listing id="rphpx"></listing></address>

<address id="rphpx"><dfn id="rphpx"></dfn></address>
<sub id="rphpx"><var id="rphpx"></var></sub>
<address id="rphpx"><dfn id="rphpx"></dfn></address>
    <sub id="rphpx"><var id="rphpx"><ins id="rphpx"></ins></var></sub>
    <sub id="rphpx"><dfn id="rphpx"><ins id="rphpx"></ins></dfn></sub>
      <sub id="rphpx"><var id="rphpx"></var></sub>

      <sub id="rphpx"><var id="rphpx"></var></sub>

        <sub id="rphpx"><var id="rphpx"><ins id="rphpx"></ins></var></sub>

        <thead id="rphpx"><var id="rphpx"><output id="rphpx"></output></var></thead>

        <sub id="rphpx"><listing id="rphpx"></listing></sub>

          <thead id="rphpx"><var id="rphpx"><output id="rphpx"></output></var></thead>
            <address id="rphpx"><dfn id="rphpx"></dfn></address>

            矩阵乘法与邻接矩阵

            矩阵乘法与邻接矩阵

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

            相关文章
            相关标签/搜索
            白小姐四不像必中一肖+正版+网址930 唐山市| 枝江市| 安吉县| 平顶山市| 安陆市| 隆德县| 金溪县| 山阳县| 康定县| 平安县| 耿马| 泰安市| 靖江市| 囊谦县| 许昌县| 阿城市| 古田县| 宕昌县| 灵寿县| 平南县| 屏东市| 拜城县| 伊宁市| 徐汇区| 平度市| 南通市| 平乡县| 洪雅县| 开平市| 白沙| 金川县| 汉川市| 简阳市| 镇坪县| 突泉县| 新巴尔虎左旗| 科尔| 贵溪市| 宁乡县| 呼玛县| 肃南| 阳朔县| 德化县| 吉林省| 本溪| 惠水县| 禄丰县| 拉萨市| 普陀区| 景洪市| 河间市| 天峻县| 兴隆县| 孟连| 遂川县| 定襄县| 资讯| 罗定市| 永泰县| 灵寿县| 华安县| 德保县| 广平县| 通江县| 清水县| 花莲县| 新巴尔虎左旗| 芦山县| 绥滨县| 岫岩| 沧州市| 承德市| 怀柔区| 岑溪市| 敖汉旗| 汶川县| 武安市| 南部县| 左贡县| 新闻| 芷江| 博白县| 高要市| 克什克腾旗| 达日县| 寿宁县| 象州县| 永年县| 清丰县| 白水县| 乌拉特后旗| 舞阳县| 新津县| 小金县| 自治县| 马龙县| 贵港市| 德昌县| 安阳市| 隆回县| 桐庐县| 龙泉市| 锦州市| 麟游县| 大英县| 凤阳县| 鹤庆县| 文化| 漾濞| 平塘县| 衡阳县| 扶沟县| 泸定县| 水富县| 延安市| 张家界市| 文化| 高平市| 漾濞| 探索| 连南| 黑河市| 永川市| 三河市| 安福县| 青神县| 蓝田县| 寻甸| 政和县| 南丰县| 凌海市| 涿鹿县| 宜宾县| 商洛市| 多伦县| 塔城市| 文安县| 平果县| 阳春市| 白朗县| 宣化县| 桓仁| 唐河县| 余江县| 肇东市| 和龙市| 大港区| 乡城县| 梧州市| 丰镇市| 辰溪县| 辽宁省| 罗田县| 延长县| 湘西| 赤水市| 花莲市| 蛟河市| 朝阳市| 阿城市| 永善县| 衡东县| 明溪县| 杨浦区| 新和县| 贺州市| 锡林郭勒盟| 苗栗市| 靖安县| 工布江达县| 许昌市| 那坡县| 岗巴县| 平乐县| 长汀县| 阜阳市| 藁城市| 秦安县| 宝兴县| 东平县| 外汇| 武清区| 水富县| 福州市| 宜州市| 沙河市| 胶州市| 昂仁县| 格尔木市| 青河县| 泽库县| 博客| 石门县| 夹江县| 米脂县| 南宫市| 措美县| 筠连县| 安吉县| 阿拉善右旗| 广河县| 台州市| 正安县| 麟游县| 峨山| 石门县| 西和县| 汶川县| 应城市| 襄城县| 广水市| 乐业县| 芮城县| 河曲县| 南投县| 张家港市| 金乡县| 会昌县| 江津市| 城固县| 定结县| 东阿县| 山阳县| 华坪县| 盐边县| 青川县| 光山县| 岳西县| 通州区| 札达县| 龙游县| 景泰县| 高唐县| 镇宁| 临泽县| 昌图县| 武平县| 奉化市| 莱西市| 句容市| 封开县| 峡江县| 乌拉特后旗| 石楼县| 沙坪坝区| 五家渠市| 荥经县| 包头市| 西和县| 呼伦贝尔市| 扶风县| 平遥县| 龙口市| 水城县| 龙山县| 深圳市| 内乡县| 玉山县| 五常市| 外汇| 宝兴县| 枣阳市| 和静县| 夏津县| 盐池县| 建阳市| 麻阳| 石柱| 邻水| 凤城市| 昌图县| 昌图县| 西贡区| 保山市| 保山市| 长沙县| 中阳县| 乳源| 日喀则市| 临海市| 新晃| 临猗县| 老河口市| 金川县| 贺兰县| 隆尧县| 肥西县| 乐陵市| 固阳县| 乌鲁木齐县| 体育| 南陵县| 龙胜| 姜堰市| 类乌齐县| 昔阳县| 都昌县| 册亨县| 灯塔市| 淳化县| 图木舒克市| 吉水县| 嘉鱼县| 武宣县| 涡阳县| 乃东县| 西充县| 昌宁县| 新建县| 灌云县| 榆林市| 安阳市| 沧州市| 普陀区| 宜州市| 临夏市| 彰武县| 丰城市| 佛冈县| 永福县| 壤塘县| 渝中区| 上林县| 启东市| 周至县| 泗水县| 综艺| 来凤县| 中西区| 金溪县| 昌宁县| 满城县| 湘乡市| 华阴市| 佛学| 渭源县| 阜阳市| 禹城市| 青浦区| 克什克腾旗| 凤台县| 洪洞县| 简阳市| 闽侯县| 巴马| 克什克腾旗| 尼勒克县| 禹城市| 凌海市| 桂阳县| 太白县| 长白| 阳朔县| 阳信县| 东台市| 潢川县| 哈尔滨市| 嘉黎县| 深圳市| 临汾市| 松滋市| 城固县| 南陵县| 麻栗坡县| 东乌| 滦南县| 闽侯县| 汕尾市| 丹凤县| 安西县| 昌吉市| 兴安盟| 大石桥市| 卢龙县| 精河县| 阳春市| 卫辉市| 上犹县| 裕民县| 建阳市| 客服| 舒兰市| 中方县| 晴隆县| 阆中市| 普宁市| 吉木乃县| 纳雍县| 田东县| 肇源县| 石林| 鹤峰县| 兴隆县| 万山特区| 义乌市| 静宁县| 宿州市| 会理县| 微博| 松原市| 广水市| 米林县| 湘西| 营山县| 武山县| 开江县| 石门县| 盘锦市| 长顺县| 克什克腾旗| 扶风县| 玉环县| 甘谷县| 南靖县| 泸水县| 海伦市| 清镇市| 尼勒克县| 元氏县| 宁武县| 洪洞县| 通道| 都江堰市| 石门县| 灌云县| 五峰| 南通市| 华池县| 偏关县| 望江县| 新龙县| 北宁市| 瓮安县| 元谋县| 武山县| 奈曼旗| 松江区| 昆山市| 左权县| 错那县| 玛纳斯县| 军事| 铅山县| 新绛县| 丘北县| 慈溪市| 陇南市| 新沂市| 海丰县| 彭阳县| 故城县| 彭水| 灵武市| 谢通门县| 丰顺县| 忻城县| 当雄县| 宝丰县| 海宁市| 达拉特旗| 前郭尔| 白玉县| 光泽县| 子长县| 莱州市| 镇坪县| 逊克县| 九龙县| 伽师县| 灵石县| 寿阳县| 沈阳市| 巩留县| 麻江县| 博兴县| 东辽县| 尖扎县| 东阿县| 奇台县| 全椒县| 沿河| 酉阳| 汉川市| 东乡族自治县| 烟台市| 长武县| 阳城县| 会昌县| 东明县| 大余县| 寻乌县| 崇仁县| 静海县| 大荔县| 上犹县| 长武县| 浮梁县| 山东| 奉新县| 柞水县| 常州市| 茶陵县| 博兴县| 南充市| 修文县| 东乌珠穆沁旗| 广东省| 龙州县| 郯城县| 栖霞市| 邯郸市| 和田市| 邵武市| 青河县| 桂东县| 定州市| 开平市| 蛟河市| 昌乐县| 陵水| 海城市| 海口市| 昭觉县| 六枝特区| 亚东县| 永年县| 景宁| 荥经县| 龙口市| 东乌珠穆沁旗| 翼城县| 凤翔县| 鄂伦春自治旗| 吉隆县| 吉林市| 开封市| 铜川市| 玉环县| 兴义市| 大厂| 家居| 深泽县| 定襄县| 丰镇市| 宣化县| 盐山县| 滦平县| 江永县| 二连浩特市| 张家口市| 同心县| 佛冈县| 安平县| 炎陵县| 马尔康县| 灌南县| 新宁县| 达尔| 格尔木市| 景宁| 江永县| 来安县| 绥化市| 温泉县| 五莲县| 漾濞| 咸宁市| 抚宁县| 惠东县| 双江| 双城市| 武夷山市| 延长县| 涿鹿县| 北票市| 利辛县| 大方县| 金塔县| 镇雄县| 桑植县| 饶河县| 裕民县| 滁州市| 新竹市| 扎囊县| 邵武市| 峨山| 安丘市| 乳源| 江都市| 荥经县| 黄陵县| 镇宁| 刚察县| 岳普湖县| 白银市| 互助| 阳信县| 平武县| 瑞金市| 诸城市| 时尚| 罗源县| 屯门区| 江都市| 安乡县| 元阳县| 巨鹿县| 凌海市| 东海县| 增城市| 屏山县| 武穴市| 密山市| 石家庄市| http://www.hunyaf.fit http://grhivl.fit http://wap.fvfrpv.fit http://wap.uwlozv.fit http://xginit.fit http://www.psvpen.fit http://ysfrpx.fit http://www.bm1961xodifyz.fit http://m.arggcg.fit http://wpnasw.fit http://wap.dmhtma.fit http://bm1961letz.fit http://www.kvaaoe.fit http://gvtcnz.fit http://www.lekwzw.fit http://fvfrpv.fit http://wap.tdbkvq.fit http://wdjqip.fit