Tag: 图论

关联矩阵与节点的度

摘要: 树的相关概念和定理,参考徐俊明《图论及其应用》 【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:潮汐朝夕我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们来看一个算法导论中比较有意思的一个习题,具体见第三版 22. 1-7,

含集合级信息的并查集

摘要: 带集合级信息的并查集的原理与代码模板 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 并查集 中我们学习了并查集的原理和代码模板,本文介绍带集合级信息的并查集。 我们知道并查集的结构是

树上差分

摘要: 树上差分算法 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 前缀和与差分,我们对一个序列定义了前缀和序列和差分序列,根据差分序列的前缀和序列是原序列,原序列区间上的增减转化为了前缀和

Floyd算法

摘要: Floyd算法的原理与代码模板 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 历届图灵奖得主基本上都有高学历、高学位,绝大多数有博士头衔。这是可以理解的,因为创新型人才需要有很好的文化素养

迪杰斯特拉算法(Dijkstra)

摘要: 迪杰斯特拉算法原理与代码模板 【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:潮汐朝夕我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 迪杰斯特拉(Edsger Wybe Dijkstra)在一个充满科学气息的家庭背景中长大,父亲

力扣952-按公因数计算最大组件大小

摘要: 本文详细拆解 力扣952-按公因数计算最大组件大小。分解质因数+并查集 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 各位好,本文我们来看一个数论与并查集结合的问题,综合性比较强。 $1 题

【树形DP】树的直径

摘要: 力扣 1245, 1522,树的直径,最经典的树形 DP 题目 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 各位好,我们继续研究力扣秋季赛的题目。在十一之前参加了力扣秋季赛个人赛,

力扣1162-多源BFS与多源最短路径

摘要: 力扣 1162,最基础的多源 BFS 题目 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 上个周日照例参加了力扣秋季赛的个人赛,在文章 2022力扣秋季赛个人赛战报 中记录的战报,并

【DP难题】力扣1595-连通两组点的最小成本

摘要: 力扣 1575,比较难的图论题,抽象之后是最小边覆盖问题,有状态压缩DP和二分图最大匹配两种解法。 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 今天我们来看一个比较难的图论题,力扣

二分图匹配-最大匹配

摘要: 二分图最大匹配的算法:匈牙利算法 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 对于一个无向图 G,有 N 个节点(N >= 2),可以发分成 A, B 两个非空集合,其中 $A \c

用数组模拟链表的方式实现【带权有向图的邻接表】

摘要: 数组模拟链表的方式实现图的邻接表,代码模板 【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:潮汐朝夕我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 邻接表 中,我们学习了邻接表及其应用,在文章 用数组模拟双向循环链表 中,

LCP04-覆盖

摘要: LCP04,状态压缩DP和二分图匹配两种解法 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 今天我们来看一个比较难的图论题,力扣 LCP04。有状态压缩 DP 和二分图最大权匹配两种解法。之

大学基础算法笔记

摘要: 大学算法课笔记 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 大学基础算法笔记,2017年,共 52 页。 算法基础 基本特性 计数与渐进 分治与递归 算法设计 动态规划 贪心 随机化

图论导引

摘要: 《图论导引》West 【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:潮汐朝夕我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文介绍一本偏数学的图论的书,研究生时期关注过,但是看了一章多就烂尾了。但是这本书还是非常好的,这里放

最优化算法(运筹学)的内容

摘要: 运筹学的主要内容 【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:潮汐朝夕我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 最优化算法,也就是优化计算,也是运筹学。关注点在于最优化问题的算法及其应用。主要内容包括规划论、库存论、图

图论算法理论,实现与应用

摘要: 《图论算法理论,实现与应用》 【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:潮汐朝夕我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 图论算法理论-实现及应用

图论题目汇总

本文总结了力扣上 2000 题以内的关于图论的 40 道题。将场景相同的放到了一起。 图论是数学的一个分支,以图为研究对象。图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。 在计算机中,图论算法提供的是一种对很多问题都有效的一种简单而系统的建模方式。很多问题都可以转化为图论问题,然后用图论的基

【Puzzle】用户一次游戏带来的收入

摘要: 来自朋友的面试的概率题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 写在前面概率面试题连载已经写了几期了,目前的题目主要是《Fifty challenging problems i

并查集-加边过程中维护具体连通分量

摘要: 并查集在加边过程中维护具体连通分量 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 问题背景对于用含集合级信息并查集解决加边连通性的问题,我们之前处理过以下几类问题: 加边过程中动态地处理【

力扣1722-执行交换操作后的最小汉明距离

摘要: 加边过程中动态查询具体连通分量 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章并查集-加边过程中维护具体连通分量中我们了解了用并查集在加边过程中动态查询具体连通分量的原理。 本文我们看

【搜索难题】力扣1258-近义词句子

大杂烩:DFS + 哈希表 + 并查集 + 排序 $1 题目题目链接1258. 近义词句子 题目描述给你一个近义词表 synonyms 和一个句子 text , synonyms 表中是一些近义词对 ,你可以将句子 text 中每个单词用它的近义词来替换。 请你找出所有用近义词替换后的句子,按 字典序排序 后返回。 提示:123450 <= synonyms.length &

【搜索难题】力扣465-最优账单平衡

DFS 回溯 剪枝 $1 题目题目链接465. 最优账单平衡 题目描述一群朋友在度假期间会相互借钱。比如说,小爱同学支付了小新同学的午餐共计 10 美元。如果小明同学支付了小爱同学的出租车钱共计 5 美元。我们可以用一个三元组 (x, y, z) 表示一次交易,表示 x 借给 y 共计 z 美元。用 0, 1, 2 表示小爱同学、小新同学和小明同学(0, 1, 2 为人的标号),上述交易可以

二次扫描与换根DP

摘要: 无根树上的树形DP,二次扫描与换根的处理方法 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 树形DP 中,我们简要介绍了树形 DP 的思想,以及列举了很多可以解决的问题。 在有的问题

有向图上的DP(HMM前向后向计算)

$0 有向图上的 DP (HMM前向后向计算)一些表现形式为有向图 D 上的动态规划的问题,其阶段的推导是在 G 上进行的,如果本阶段在节点 u,u, v 之间没有有向边,则下一个阶段是无法到 v 的。 一般情况下图的节点不直接作为阶段,而是作为阶段持有的状态。而阶段另有一个维度表示,并且具有例如长度,时间这样的意义。DP 方程具有以下形式 12dp[v][i] = f(v, i, dp

无向图上的DP(CRF前向后向计算)

$0 无向图上的 DP (CRF前向后向计算)一些表现形式为无向图 G 上的动态规划的问题,其阶段的推导是在 G 上进行的,如果本阶段在节点 u,u, v 之间没有无向边,则下一个阶段是无法到 v 的。 一般情况下图的节点不直接作为阶段,而是作为阶段持有的状态。而阶段另有一个维度表示,并且具有例如长度,时间这样的意义。DP 方程具有以下形式 12dp[v][i] = f(v, i, dp

DAG判定

$0 场景给定有向图 D,判定 D 是否为 DAG 分析等价于判定有向图 D 中有没有环,因此判定 DAG 的算法与有向图判定环的算法相同。以下为复习。 有向图判定环的方法:有向图的环 BFS (拓扑排序) 如果拓扑排序后的排序列表长度小于 n,则无法拓扑排序,即 D 不是 DAG。 代码模板1234567891011121314151617181920212223242526class

并查集维护平面点的横纵坐标

摘要: 并查集的原理与代码模板 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 此前我们详细学习过并查集的原理,比如 并查集、带边权的并查集、含集合级信息的并查集。 本文我们学习并查集的一个常见应用技

删边连通性:并查集+逆向思维

摘要: 并查集+逆向思维处理删边连通性问题 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 对于维护加边连通性的过程,并查集是非常有力的。 但是由于并查集合并后一般是不支持回滚的,仅仅可以通过开栈的方

下标索引堆优化Prim

1135. 最低成本联通所有城市 邻接表 + 二叉堆 Prim 最小生成树 $O(E\log E)$ 邻接表 + 下标索引堆 Prim 下标索引堆 在下标索引堆模板的基础上的修改 $O(E\log V)$ 完整代码 $0 1135. 最低成本联通所有城市$1 邻接表 Prim 参考: 最小生成树 123456将 0 加入集合 Twhile 尚有点没有进入集合 T 从剩下的点中

邻接表

摘要: 邻接表的应用:桶、开散列表、树和图的存储 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们总结一下邻接表的各种应用。包括桶、开散列表、树和图的存储。 $0 邻接表邻接表可以看成带有索引

用并查集中各集合的代表元建图,处理集合级信息

摘要: 只用并查集中各集合的代表元建图 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们来看一个并查集的高级应用,先用并查集将节点分类并维护集合级信息。然后只用集合的代表元建图,对集合级信

下标索引堆

背景 - 哈希索引堆及其优化 二叉堆 堆的标记删除 哈希索引堆 哈希索引堆的索引优化 下标索引堆 内部树形索引 外层哈希索引 代码 测试: 239. 滑动窗口最大值 索引堆优化邻接矩阵 Prim $0 背景(1) 支持按 key 删除的堆一般的堆不支持按key操作,例如按 key 删除,按 key 修改。 现实中这种需求是常见的,例如进程调度的时候,进程 ID 和进程优先级在一个堆中

【设计难题】力扣631-设计Excel求和公式

基于图论的设计 $1 题目题目链接631. 设计 Excel 求和公式 题目描述你的任务是实现 Excel 的求和功能,具体的操作如下: Excel(int H, char W): 这是一个构造函数,输入表明了 Excel 的高度和宽度。H 是一个正整数,范围从 1 到 26,代表高度。W 是一个字符,范围从 ‘A’ 到 ‘Z’,宽度等于从 ‘A’ 到 W 的字母个数。Excel 表格是一个

DAG上的DP

拓扑序(DFS 序 / BFS 序) 转移 dp[u] = f(dp[v]), u, v 是拓扑序的关系 按照 BFS 拓扑序推导还是按照 DFS 拓扑序推导需要根据需求来分析。 BFS 拓扑序 DP dp[v] := 以 v 为终点... 拓扑序: 计算 dp[v] 时,所有父节点 u 的 dp[u] 已经计算完 DFS 拓扑序 DP (记忆化搜索) dp[u] := 以 u 为起点...

最小生成树2

摘要: 最小生成树的一些衍生问题,比较难。 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 最小生成树方案数 题目: P4208 最小生成树计数算法: Kruskal题解参考: 力扣1489-找

力扣1489-找到最小生成树里的关键边和伪关键边

第 194 场周赛 D 题 枚举所有边分类 必出现在 MST 可以出现在 MST 不会出现在 MST 分类算法 step1: 删除边,跑 Krudkal,如果不连通(返回-1)或者 MST 变大,为必选边 step2: 选该边再跑 Krudkal,若 MST 变大,为必不选边,否则为可选边 优化: 在 Kruskal 基础上,将相同权的边放在一起考虑 Trajan算法: 无向图的桥

DAG典型应用-活动网络

活动网络 AOV 网络 拓扑排序 AOE 网络 关键路径算法 建图,超级源,超级汇 超级源到超级汇的单源单汇最长路径 BFS 拓扑序 DP 预处理各节点信息求关键活动 【模板: AOE 网络求关键活动】 PTA 7-11 关键活动 $0 活动网络活动网络(activity network)是一种 DAG,可以用来描述生产计划、施工过程、生产流程、程序流程等工程中各子工程的安

有向图的必经点,支配树

摘要: 有向图的必经点,支配树 【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:潮汐朝夕我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们看一个从业务场景中抽象出来的图论的问题:有向图的必经点。给定有向图上的两个点 S 和 T,从

最近公共祖先问题

摘要: 最近公共祖先问题的三种解法,以及一些应用 【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:潮汐朝夕我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 树上倍增 中,我们学习了树上倍增的思想。树上倍增主要解决从某个节点向上找第

k短路

K 短路 178. 第K短路 问题给定一张N个点(编号1,2…N),M条边的有向图,求从起点S到终点T的第K短路的长度,路径允许重复经过点或边。 注意: 每条最短路中至少要包含一条边。 数据格式 第一行包含两个整数N和M。接下来M行,每行包含三个整数A,B和L,表示点A与点B之间存在有向边,且边长为L。最后一行包含三个整数S,T和K,分别表示起点S,终点T和第K短路。 12341 <&

基于 Floyd 搜索有向图的所有最小环

搜索有向图最小环长度并返回一个最小环 无向图的环 有向图的环 Floyd 搜索有向图所有的最小环 应用:854. 相似度为 K 的字符串 注: 最小环的问题也可以用 dijkstra 求解 $1 求有向图最小环长度并返回一个最小环有向图的环的基本概念参考:有向图的环 无向图 Floyd 求最小环的过程参考 无向图的环,有向图的情况类似。 考虑 Floyd 的过程: 在最外层 k 在迭代过

【搜索难题】力扣854-相似度为K的字符串

有向图的环 建图 Ref: 官解 一个有重边和自环的图,按照规则改变内部的边,使得所有的边都是自环 规则:当某个位置的字符不相等时,需要一步交换,这步交换涉及到图中两条边的改动 长为 l 的环可以用 l - 1 次按照规则对边的修改得到 l 个自环(Ref: 置换群中的一个 l 循环 $(1,2,…,l)$ 可以用 l - 1 次对换变为 $(1),(2),(3),…,(l)$) 将图分解为多个

双向搜索

双向搜索的思想 双向BFS 双向迭代加深 $1 双向搜索的思想在一些问题中,初态和终态都是确定的,并且从初态想终态搜索,并且两个方向的搜索是等效的,和从终态向初态搜索都可以覆盖整个搜索空间,相当于搜索路径可逆。此时可以采用双向搜索。 在搜索过程中对状态染色,一共有三种: 未访问过 属于初态搜索树 属于终态搜索树 当属于初态的搜索树和属于终态的搜索树在某个状态相遇了,则搜索到了答案,此时根

建图的CornerCase

摘要: 建图的各种 Corner Case 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 本文我们通过一个拓扑排序的应用问题,看一下在建图时可能遇到的各种 Corner Case。此外本题还有一个值

【搜索难题】力扣126-两次搜索,搜索路径

搜索过程记录路径的方法 两次搜索 双向 BFS 优化: 枚举点找边改成枚举边找点 $1 题目题目链接126.单词接龙 II 题目描述给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则: 每次转换只能改变一个字母。 转换过程中的中间单词必须是字典中的单词。 说明: 1234

遍历序的概念与性质

摘要: 图的几种遍历序及其应用 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 对于一棵树,我们知道从根节点出发有 DFS 和 BFS 两类方法可以把树种的节点遍历一遍。如果是二叉树的话,基于 DFS

二分图判定

摘要: 本文介绍欧拉路径的判定定理、算法、代码模板和例题。 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 在文章 图论1-基本概念 中我了解了二分图的定义和一些性质。 本文我们以力扣第 785 题为

差分约束

差分约束模型问题差分约束系统是一种特殊的 N 元一次不等式组,有 N 个变量 $X_{1} ~ X_{N}$ 以及 M 个约束条件。 每个约束条件室友两个变量做差得到的: X_{i} - X_{j} \leq c_{k} \\ c_{k} 为常数,1 \leq i,j \leq N, 1 \leq k \leq M问题:求出一组解 $X_{i} = a_{i}, i=1,2,…,N$,使得 M

负环

摘要: 负环 【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】我的网站:潮汐朝夕的生活实验室我的公众号:算法题刷刷我的知乎:潮汐朝夕我的github:FennelDumplings我的leetcode:FennelDumplings 负环在图论中,如果一条边的权值是负数,则为负权,如果图中存在一个环,还上各个边的权值之和为负数,则为负环。 在 带权图最短路径 中,各种单

基环树

基环树概念 基环树常见处理方式 N 个点的树有 N - 1 条边,在树上任意加一条边,会形成一个环,除了环之外,其余部分由若干子树构成。 这种 N 个点 N 条边的连通无向图称为基环树。若干基环树组成的森林,为基环树森林。 有向图也有类似概念,N 个点,N 条边: 每个节点有且仅有一条入边的有向图,称为外向树。 每个节点有且仅有一条出边的有向图,称为内向树。 基环树结构在图论中也算比较