最新要闻
- 观热点:《最后生还者》 印象派杰作
- 焦点快报!vivo X Fold2真机亮相:经典华夏红配色、“天圆地方”设计
- 全球今头条!女生爬完泰山发现裤子变成偏大码引热议:网友质疑几乎不可能
- 焦点热议:专家:中国汽车产业进入淘汰赛 将从百家变成十几家
- 资讯推荐:北京出台新政引导光伏发电高质量发展
- 继《孤勇者》之后 小学生开始流行盘手串 网友:这届小朋友不好带了
- 苹果CEO库克造访米哈游:与《原神》创作团队交谈
- 【天天热闻】胜为八类网线7.5米到手23.9元:25Gbps高速传输
- 世界最新:微软建议Office 2016/2019用户升级:10月后将无法访问Microsoft 365
- 热点评!图灵波浪3.30-白银震荡上行格局不改
- 世界观热点:张奔斗:阳光双赛双四强 辛纳状态很“辛辣”
- 今日讯!男孩向女生水杯里放吸铁石 差点被喝下:医生称严重会胃穿孔
- 法国法芙娜脆珠+新鲜奶油 上行斋生巧福团狂促:8枚券后不到15元
- 精选!罗永浩将在淘宝直播间售卖民用卫星:最低200万起步
- ChatGPT也要带货?微软开始在新必应插入广告
- 环球微头条丨长期进食柿子山楂 胃中长出巨大“顽石” 医生巧用无糖可乐辅助尿毒症女子成功碎石
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
世界今日讯!min 与 + 运算转换成类似于矩阵乘法的推导过程
记录下由 $\min$ 与 $+$ 运算转换成类似于矩阵乘法的推导过程,有错误请在评论区指出 qwq。
(资料图片仅供参考)
我们先简单证明一下矩阵乘法的结合律。设有矩阵 $A_{n \times m}$,$B_{m \times p}$,$C_{p \times q}$,要证明 $(AB)C = A(BC)$。等价于证 $\left({(AB)C}\right)_{i,j} = \left({A(BC)}\right)_{i,j}$,其中 ${A}_{i,j}$ 表示矩阵 $A$ 的第 $i$ 行第 $j$ 列的元素。
$$\begin{align*}\left({(AB)C}\right)_{i,j} &= \sum_{u=1}^{p}{(AB)_{i,u}} \times C_{u,j} \\&= \sum_{u=1}^{p} \left( {\sum_{k=1}^{m}{A_{i,k} \times B_{k,u}}} \right) \times C_{u,j} \\&= \sum_{u=1}^{p} \left( {\sum_{k=1}^{m}{A_{i,k} \times B_{k,u} \times C_{u,j}}} \right) \\&= \sum_{k=1}^{m} \left( {\sum_{u=1}^{p}{A_{i,k} \times B_{k,u} \times C_{u,j}}} \right) \\&= \sum_{k=1}^{m}{A_{i,k} \times \left( \sum_{u=1}^{p}{B_{k,u} \times C_{u,j}} \right)} \\&= \sum_{k=1}^{m}{A_{i,k} \times (BC)_{k,j}} \\&= \left({A(BC)}\right)_{i,j}\end{align*}$$
因此根据矩阵乘法的结合律,对于 $\overbrace{A \cdots A}^{n}$ 可以写成 $A^n$,并假设 $n = 2^{b_k} + 2^{b_{k- 1}} + \cdots + 2^{b_0}$,其中 $k = \left\lfloor \log{x} \right\rfloor$,$\forall i \in [0,k], \ b_i \in \{ {0,1} \}$,利用结合律我们就可以通过 $O(\log{n})$ 的复杂度来计算得到
$$A^n = A^{2^{b_k} + 2^{b_{k- 1}} + \cdots + 2^{b_0}} = A^{2^{b_k}} \times A^{2^{b_{k-1}}} \times \cdots \times A^{2^{b_0}}$$
其中上面的证明过程用到的运算包括 $+$ 与 $\times$ 以及对应的交换律、结合律和分配律。对于矩阵乘法
$$(AB)_{i,j} = \sum_{k=1}^{m}{A_{i,k} \times B_{k,j}}$$
为了更一般化,我们用运算符 $\oplus$ 和 $\otimes$ 来代替上面的加法与乘法,得到:
$$(AB)_{i,j} = \bigoplus_{k=1}^{m}{A_{i,k} \times B_{k,j}}$$
其中 $\oplus$ 和 $\otimes$ 满足交换律:
$$\begin{array}{center}a \oplus b = b \oplus a \\a \otimes b = b \otimes a\end{array}$$
结合律:
$$\begin{array}{center}(a \oplus b) \oplus c = a \oplus (b \oplus c) \\(a \otimes b) \otimes c = a \otimes (b \otimes c) \\\end{array}$$
$\otimes$ 对 $\oplus$ 的分配律:
$$a \otimes (b \oplus c) = (a \otimes b) \oplus (a \otimes c)$$
很明显矩阵乘法中的加法 $+$ 和 $\times$ 就分别对应于 $\oplus$ 和 $\otimes$。同时发现把 $\min$ 代入 $\oplus$,$+$ 代入 $\otimes$ ,也满足上面定义的一般形式,只需验证这三个性质均成立即可。
交换律:
$$\begin{array}{center}\min \{ a,b \} = \min \{ b,a \} \\a + b = b + a\end{array}$$
结合律:
$$\begin{array}{center}\min \left\{ \min\{ a,b \}, c \right\} = \min \left\{ a,\min\{ b,c \} \right\} \\(a+b)+c = a+(b+c)\end{array}$$
$+$ 对 $\min$ 的分配律:
$$a + \min \{ b,c \} = \min \{ a+b, a+c \}$$
因此有
$$(AB)_{i,j} = \min_{1 \leq k \leq m} \left\{ A_{i,k} + B_{k,j} \right\}$$
因此对于由 $\min$ 与 $+$ 所构成的运算是具有结合律的,因此对于 $\overbrace{A \cdots A}^{n}$ 同样可以写成 $A^n$,并且有
$$A^n = A^{2^{b_k} + 2^{b_{k- 1}} + \cdots + 2^{b_0}} = A^{2^{b_k}} \times A^{2^{b_{k-1}}} \times \cdots \times A^{2^{b_0}}$$
注意这里的 $A \times B$ 是指两个矩阵间的运算,不是一般意义的矩阵乘法。对于 $\min$ 和 $+$ 有
$$(A \times B)_{i,j} = \min_{1\leq k \leq m} \left\{ A_{i,k} + B_{k,j} \right\}$$
而一般意义的矩阵乘法是
$$(A \times B)_{i,j} = \sum_{k=1}^{m}{A_{i,j} \times B_{j,k}}$$
我们通过Floyd求最短路这道题目对这个性质进行运用。
这里我们不用传统 Flody 的 dp 状态定义,而是定义状态 $f(k,i,j)$ 表示从 $i$ 到 $j$ 且经过不超过 $k$ 条边的所有路径所构成的集合中最短的路径长度。
对于任意两点 $(v, w)$ 间的距离,答案就是 $f(n-1, v, w)$,这是因为题目保证没有负环,因此任意两点间的最短路径不会超过 $n-1$ 条边。
根据从 $i$ 到 $j$ 的路径中所经过的点 $u$ 来把路径分成两段,其中前面一段 $i \to \cdots \to u$ 经过不超过 $k-1$ 条边,后面一段 $u \to \cdots \to j$ 经过不超过 $1$ 条边。这样就得到状态转移方程:
$$f(k,i,j) = \min_{1 \leq u \leq n} \{ f(k-1,i,u) + f(1,u,j) \}$$
这种做法的时间复杂度为 $O(n^4)$。这个时候就可以利用上面的性质来进行优化了。
我们把 $f(k,i,j)$ 看成是矩阵 $F^{k}_{n \times n}$ 第 $i$ 行第 $j$ 的元素,因此上面的状态转移方程就变成了
$$F^{k}_{i,j} = \min_{1 \leq u \leq n}\left\{ F^{k-1}_{i,u} + F^{1}_{u,j} \right\}$$
矩阵间的运算就是 $F^{k} = F^{k-1} \ F^{1}$,通过递推可以发现有 $F^k = \left( F^1 \right)^k$,而我们最终要求的矩阵就是 $F^{n-1} = \left( F^1 \right)^{n-1}$。
这里的 $F^k$ 是一个 $n \times n$ 的矩阵,里面的每一个元素 $F^{k}_{i,j}$ 表示从 $i$ 到 $j$ 经过不超过 $k$ 条边的最短路径。
这里就可以用快速幂来求 $F^1$ 的 $n-1$ 次方来得到 $F^{n-1}$,要注意是由 $\min$ 与 $+$ 所构成的运算规则。
同时根据定义知道矩阵 $F^0$ 中任意一个元素 $F^{0}_{i,j}$ 表示 $i$ 到 $j$ 不经过任何边的最短路径,因此有
$$F^0 = \begin{bmatrix} 0 & \infty & \cdots & \infty \\ \infty & 0 & \cdots & \infty \\ \vdots & \vdots & \ddots & \vdots \\ \infty & \infty & \cdots & 0 \end{bmatrix}$$
$F^{n-1} = F^0 \ \left( F^1 \right)^{n-1}$。
这样时间复杂度就降到了 $O(n^3 \log{n})$,虽然还是不如传统的 Flody 算法,但这种做法给了我们很多启示,比如魔法和牛站就是利用这种思想实现的。
$O(n^3 \log{n})$ 做法的 AC 代码如下:
1 #include2 using namespace std; 3 4 const int N = 210, INF = 0x3f3f3f3f; 5 6 int n, m, k; 7 int f[N][N], g[N][N], tmp[N][N]; 8 9 void mul(int c[][N], int a[][N], int b[][N]) {10 memset(tmp, 0x3f, sizeof(tmp));11 for (int i = 1; i <= n; i++) {12 for (int j = 1; j <= n; j++) {13 for (int k = 1; k <= n; k++) {14 // 类似于矩阵乘法的c[i][j] = sum(a[i][k] * b[k][j])15 // 对于min和+运算有c[i][j] = min{a[i][k] + b[k][j]}16 tmp[i][j] = min(tmp[i][j], a[i][k] + b[k][j]);17 }18 }19 }20 memcpy(c, tmp, sizeof(tmp));21 }22 23 int main() {24 scanf("%d %d %d", &n, &m, &k);25 // 一开始g=F^026 for (int i = 1; i <= n; i++) {27 for (int j = 1; j <= n; j++) {28 f[i][j] = g[i][j] = INF;29 }30 f[i][i] = g[i][i] = 0;31 }32 // 一开始f=F^133 while (m--) {34 int v, w, wt;35 scanf("%d %d %d", &v, &w, &wt);36 f[v][w] = min(f[v][w], wt);37 }38 m = n - 1; // 快速幂求F^{n-1}39 while (m) {40 if (m & 1) mul(g, g, f);41 mul(f, f, f);42 m >>= 1;43 }44 // 这时有g=F^{n-1}45 while (k--) {46 int v, w;47 scanf("%d %d", &v, &w);48 if (g[v][w] > INF >> 1) printf("impossible\n");49 else printf("%d\n", g[v][w]);50 }51 52 return 0;53 }
参考资料
矩阵乘法笔记:https://www.cnblogs.com/wangruidong03/p/15891893.html
关键词:
-
IM跨平台技术学习(七):得物基于Electron开发客服IM桌面端的技术实践
本文要分享的是得物技术团队基于Electron开发客服IM桌面端的技术实践过程,内容包括桌面技术选型、Elect...
来源: -
每日观察!【Visual Leak Detector】配置项 SkipCrtStartupLeaks
使用VLD内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍VLD配置文件中配置项SkipCrtStartupLeaks的使用方法。
来源: IM跨平台技术学习(七):得物基于Electron开发客服IM桌面端的技术实践
世界今日讯!min 与 + 运算转换成类似于矩阵乘法的推导过程
【环球时快讯】HDFS Balancer负载均衡器
每日观察!【Visual Leak Detector】配置项 SkipCrtStartupLeaks
世界快消息!掌握这几个算法题.NET初级面试算法不发愁
观热点:《最后生还者》 印象派杰作
焦点快报!vivo X Fold2真机亮相:经典华夏红配色、“天圆地方”设计
全球今头条!女生爬完泰山发现裤子变成偏大码引热议:网友质疑几乎不可能
焦点热议:专家:中国汽车产业进入淘汰赛 将从百家变成十几家
资讯推荐:北京出台新政引导光伏发电高质量发展
天天即时看!火山引擎 DataTester 推出可视化数据集成方案
速读:全网最详细中英文ChatGPT-GPT-4示例文档-个性化角色智能对话从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/c
继《孤勇者》之后 小学生开始流行盘手串 网友:这届小朋友不好带了
苹果CEO库克造访米哈游:与《原神》创作团队交谈
【天天热闻】胜为八类网线7.5米到手23.9元:25Gbps高速传输
世界最新:微软建议Office 2016/2019用户升级:10月后将无法访问Microsoft 365
热点评!图灵波浪3.30-白银震荡上行格局不改
全球讯息:全网最详细中英文ChatGPT-GPT-4示例文档-读书书单推荐从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/cu
当前热讯:BitMap对象当前正在其他地方使用?加锁也没用?
全球今热点:履约核心引擎低代码化原理与实践
天天快资讯:Linux 修改系统时间的两种方式
快看点丨京东二面:线程池中的线程抛出了异常,该如何处理?大部分人都会答错!
世界观热点:张奔斗:阳光双赛双四强 辛纳状态很“辛辣”
今日讯!男孩向女生水杯里放吸铁石 差点被喝下:医生称严重会胃穿孔
法国法芙娜脆珠+新鲜奶油 上行斋生巧福团狂促:8枚券后不到15元
精选!罗永浩将在淘宝直播间售卖民用卫星:最低200万起步
ChatGPT也要带货?微软开始在新必应插入广告
环球微头条丨长期进食柿子山楂 胃中长出巨大“顽石” 医生巧用无糖可乐辅助尿毒症女子成功碎石
环球百事通!【网络安全软件】上海道宁与Cybereason为您提供未雨绸缪的攻击保护,终结对端点、整个企业以及网络上任何角落的网络攻击
环球速读:1.redis的基本使用
全球简讯:前端设计模式——依赖注入模式
年轻人找工作不看工资看什么?一季度全国平均招聘月薪10101元 学历越高钱越多
世界新消息丨眼科医生自己真的都不做近视手术?
世界观天下!周上险量超5000 理想L系累计交付超10万台:其他新势力难了
热门美剧推动PS5销量大涨
专家提醒:千万不要侧躺玩手机 科普标准姿势
退役军人事务部调研组来洛 常正国带队
天天观热点:Linux的3个文件时间
Cursor,程序员的 AI 代码编辑助手
厚衣服先别收!强冷空气很快就到:今年来最大范围雨雪
“基尼太美” 兰博基尼Revuelto亮相 马力超千匹 2.5秒破百
【独家焦点】Win12 UI设计曝光被苹果用户吐槽:抄袭macOS太明显
2022年房屋的主要卖点是什么
3月份国有大行二级资本债密集发行 专家称大型银行与中小银行发债规模将明显分层
邮储银行450亿元定增落地 中国移动溢价逾40%“通吃”
世界讯息:鹰眼自爆伤情
天天观速讯丨读SQL进阶教程笔记02_三值逻辑和NULL
【全球热闻】结石痛怎么缓解_尿道结石疼痛怎么缓解
汽车雷达在无人陵园内显示全是人影 网友吐槽更智能了:官方回应
观天下!1W字长文:K8S Ingress 原理和实操
简讯:mvc-mvp-mvvm架构调研及实现--分布式课程思考题--zzb
【Visual Leak Detector】配置项 SkipHeapFreeLeaks
Unity 中的存档系统(本地存档)
最新消息:IDEA2023.1破解 永久激活 最新版IDEA激活 亲测可用!
突破10GB/s!影驰首款PCIe 5.0 SSD开卖:2TB售价2499元
热门:2.1s破百!100万的新款特斯拉 快得我差点吐了
世界今亮点!苹果WWDC大会定档6月6日:iOS 17无悬念、MR头显最受期待
达墨国产PCIe 5.0 硬盘2TB 1899元 官方坦诚提醒:谁买谁冤种
当前速看:飞艇事件的背后
世界热文:搞笑动漫日和在线观看(搞笑动漫日和)
天天新资讯:Ubuntu18.04系统安装nginx
天天速递!手撕HashMap(二)
【Visual Leak Detector】配置项 TraceInternalFrames
苹果推出的美国版花呗:被严重低估了
全球聚焦:为什么洗澡时总想“尿尿”?这怀习惯可不好!
环球信息:新一代高贵“亮机卡”!RTX 4050被曝6月发布:弱得不像话
【世界报资讯】 “大号MINI”!五菱缤果正式上市:5.98万元起
国产特有 魔改RTX 3060显卡999元:AMD也做不到的性价比
天天通讯!报告:电信业采购供应链发展呈现四大趋势
【独家】【Visual Leak Detector】配置项 StartDisabled
78.类型转换
环球快报:2023年找工作的心酸历程
全球热议:ASP.NET Core MVC+Quartz实现定时任务可视化管理页面
世界即时看!SSM框架笔记 庆祝学习SSM框架结束!!!
世界速读:【财经分析】债市短期表现向好 机构操作犹存分歧
当前速看:《生化危机4:重制版》阿什莉服装Mod公布 看了把持不住
天天亮点!CPU占用暴降 SSD提速百倍:《暗黑4》将支持微软DX游戏神技
具体如何编写信号与槽
今日热讯:关于大国竞争,“修昔底德陷阱”提出者谈到了“澶渊之盟”
合资轿车雪上加霜!上汽名爵最帅轿跑MG7上市:11.98万起
新动态:ROG游戏手机7跑分首曝:二代骁龙8 134.6万冠绝全球
规模或超90%!流媒体巨头Hulu国内被曝大裁员
JOLED破产 日本OLED面板技术押错宝:弯道超车失败
当前动态:骁龙8cx Gen 4处理器跑分曝光:12核性能大跌眼镜 仅苹果M2 Max 1/3
【世界速看料】76.算术运算符
世界动态:PfSense pfBlockerNG 未授权RCE漏洞(CVE-2022-31814)
热点!Unity中基于EPPLUS的Excel转换以及Json数据读取
全球速讯:c# 对序列化类XMLSerializer 二次封装泛型化方便了一些使用的步骤
新华社权威快报|首次纳入肝素类药品 第八批药品集采平均降价56%
焦点!一排小草怎么画简单好看_一排小草怎么画简笔画
当前快讯:Win12正全力开发!微软重构操作系统底层:模块化设计
【新视野】宣称能跑100公里!男子网购电动车续航打折:法院判退一赔三
全球快资讯:“雪糕刺客”的仁慈!钟薛高用文心一言打造雪糕 仅售3.5元
即时看!口腔溃疡总不好 可能是大病预警!“偏方”都没用!
今日讯!比5G强10倍!工信部:中国已成立6G工作组推动关键技术研究
pthread库实现简单并行程序:Hello
全球焦点!日本央行官员暗示调整YCC政策 日债收益率周三全线回落
全球快资讯:净利润同比增长超62% 中国石油2022年业绩创历史最好水平
全球视点!韩瑟冻干粉怎么样_韩瑟化妆品怎么样
果然来了!电商偷跑索尼PS5 Slim游戏机:新外观 更轻薄