
算法笔记
文章平均质量分 63
基本算法的总结
kgduu
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
强化学习笔记
Exploration:尝试新的方法来更新当前的模型。Exploitation:使用模型直接处理。原创 2025-04-12 18:48:31 · 407 阅读 · 0 评论 -
文化算法初探
文化算法(cultural algorithm, CA)是根据文化对人类进化的影响而提出的一种双层进化机制。由群体空间和信念空间组成,两者之间通过协议来完成彼此之间的交流。原创 2025-04-04 19:00:23 · 264 阅读 · 0 评论 -
人工免疫算法初探
人工免疫算法(artificial immune algorithm,AIA)是模拟生物免疫系统的随机优化方法,通过模拟生物免疫系统的学习、记忆等功能在动态变化的环境处理中表现出自适应学习、记忆和识别的功能。原创 2025-03-30 10:32:29 · 1499 阅读 · 0 评论 -
蚁群算法初探(ACO)
蚁群算法是模拟蚂蚁觅食的一种算法。原创 2025-03-22 13:18:30 · 586 阅读 · 0 评论 -
粒子群优化算法初探(PSO)
粒子群优化算法PSO(particle swarm optimization)是模拟自然界生物群体行为的算法。原创 2025-03-08 14:42:33 · 661 阅读 · 0 评论 -
模拟退火算法浅尝
其是模拟物理退火过程而演升出的算法,物理退火过程包含加温过程,等温过程,冷却过程。原创 2025-03-02 22:13:15 · 978 阅读 · 0 评论 -
遗传算法初探
分为二进制编码、实数编码和顺序编码。原创 2025-02-23 13:10:46 · 736 阅读 · 0 评论 -
最优化方法初探
确定型算法包含线性规划,非线性规划等。概率型算法是通过引入搜索中的随机性,使得搜索跳出局部最优解。其包含进化类算法(遗传算法,进化规划,进化策略,遗传编译,基因表达编程),随机搜索,模拟退火,禁忌搜索。分为确定型算法和概率型算法。原创 2025-02-23 10:26:08 · 154 阅读 · 0 评论 -
运动规划算法
● Dijkstra● A*● D*● LPA*● D* lite● Theta*● 跳点搜索算法(jps)原创 2024-10-09 09:24:51 · 1108 阅读 · 0 评论 -
Kruskal算法
【代码】Kruskal算法。原创 2024-01-21 12:00:16 · 444 阅读 · 0 评论 -
BellmanFord算法
【代码】BellmanFord算法。原创 2023-11-19 22:18:30 · 355 阅读 · 1 评论 -
车辆调度算法
有什么车辆调度算法的最新研究,比如用强化学习的方法?策略算法工程师之路-图优化算法(一)(二分图&最小费用最大流)模拟退火(SA)算法求解容量受限的车辆路径(CVRP)问题世界冠军之路:菜鸟车辆路径规划求解引擎研发历程VRP相关知识整理vrp算法有哪些?原创 2023-10-12 13:50:05 · 1385 阅读 · 0 评论 -
图论中边的概念
前向边:上图中左边的红线表示的边,由结点指向子孙节点。交叉边:上图中右边的绿线表示 的边。反向边:上图中的虚线表示的边。树边:上图中的黑色的边。原创 2023-08-31 10:35:20 · 511 阅读 · 0 评论 -
Dijkstra算法
结点分为两个集合,已确定最短路径的点集合S和未确定最短路径的点集合T,使用。表示从起点s到终点u的最短路径。原创 2023-08-29 19:22:37 · 232 阅读 · 0 评论 -
Floyd_warshall算法
原理是使用动态规划算法。的距离,并且中间只经过。原创 2023-08-13 23:02:15 · 303 阅读 · 0 评论 -
算法思维导图
fill:#333;color:#333;color:#333;fill:none;算法图算法最短路径Dijkstra。原创 2023-08-12 11:19:26 · 359 阅读 · 0 评论 -
并查集学习理解
并查集原创 2023-04-02 11:23:31 · 284 阅读 · 0 评论 -
数字转中文
数字转中文原创 2023-03-25 14:05:41 · 165 阅读 · 0 评论 -
环形队列实现
循环队列实现原创 2023-03-17 17:57:03 · 156 阅读 · 0 评论 -
动态规划算法
1、基础动态规划应用于子问题重叠的情况:要去刻画最优解的结构特征; 尝试递归地定义最优解的值(就是我们常说的考虑从转移到); 计算最优解; 利用计算出的信息构造一个最优解。2、原理2.1 最优子结构具有最优子结构也可能是适合用贪心的方法求解。注意要确保我们考察了最优解中用到的所有子问题。证明问题最优解的第一个组成部分是做出一个选择; 对于一个给定问题,在其可能的第一步选择中,你界定已经知道哪种选择才会得到最优解。你现在并不关心这种选择具体是如何得到的,只是假定已经知道...原创 2022-04-09 19:47:20 · 452 阅读 · 0 评论 -
算法相关资源
The Ultimate Topic List (with Resources, Problems and Templates) - CodeforcesI compiled a list of almost all useful blogs ever published on Codeforces [update: till 09.06.2021] - Codeforces原创 2021-12-04 21:12:42 · 146 阅读 · 0 评论 -
模乘逆算法
求满足于下面条件的x:其并不是总是存在,只要在a和m是互质的才存在,即1、扩展欧几里德算法实现如下:int x, y;int g = extended_euclidean(a, m, x, y);if (g != 1) { cout << "No solution!";}else { x = (x % m + m) % m; cout <&...原创 2021-10-31 17:03:56 · 385 阅读 · 0 评论 -
后缀数组学习笔记
1、基本定义子串:字符串原创 2014-10-09 22:57:08 · 781 阅读 · 0 评论 -
算法(第4版)学习笔记
1、概要原创 2021-10-14 12:06:29 · 221 阅读 · 0 评论 -
迭代加深搜索
每次限制搜索深度的深度优先搜索。本质还是深度优先搜索,只不过在搜索的同时带上了一个深度d,当d达到设定的深度时就返回,一般用于最优解。如果一次搜索没有找到合法的解,就让设定的深度加1,重新从要开始。因为BFS的基础是一个队列,队列的空间复杂度很大,当状态比较多或者单个状态比较大时,使用队列的BFS就显出了劣势。事实上,迭代加深类似于用DFS方式实现的BFS,它的空间复杂度相对较小。当搜索树的分支比较多时,每增加一层的搜索复杂度会出现指数级爆炸式增长,这时前面重复进行的部分所带来的复杂度几乎可以忽略,这也原创 2021-10-12 20:37:04 · 831 阅读 · 0 评论 -
前缀函数及kmp算法
1、字符串基础1.1字符集一个字符集是一个建立了全序关系的集合,也就是说中的任意两个不两只的元素和都可以比较大小,要么,要么。字符集中的元素称为字符。1.2字符串一个字符串S是将n个字符顺次排列形成的序列,n称为S的长度,表示为。S的第i个字符表示为S[i]。1.3子串字符串S的子串S[i..j],,表示S串中从i到j这一段,也就是顺次排列S[i], S[i+1],...,S[j]形成的字符串。1.4子序列字符串S的子序列是从S中将若干元素提取出来并不改变相对位置形成...原创 2021-09-25 17:30:53 · 725 阅读 · 0 评论 -
扫描线填充算法
1、基本思想用水平扫描线从上到下(或者从下到上)扫描由多条首尾相连的线段构成的多边形,每根扫描线与多边形的某些边产生一系列交点。将这些交点按照x坐标排序,将排序后的点两两成对,作为线段的两个端点,以所填的颜色画水平直线。多边形被扫描完毕后,颜色填充也完成了。包含4个步骤求交,计算扫描线与多边形的交点 交点排序,对第2步得到的交点按照x值从小到大进行排序。 颜色填充,对排序后的交点两两组成一个水平线段,以画线段的方式进行颜色填充。 是否完成多边形扫描?如果是结束算法,否则改变扫描线,然后转第1步原创 2021-08-23 22:33:22 · 5382 阅读 · 0 评论 -
字符串的第n个排列的算法
1、next_permutation算法直接使用STL中的2、阶乘数制法直接计算第n个排列,不需要找到所有的排列再找到第n个。阶乘数系统使用阶乘值而不是数的幂来表示位值。位值有5!=120 4!=24 3!=6 2!=1 1!=1 0!=10阶位值总是为0,1阶位值可以是0或者1,2阶位值可以是0,1,2,依此类推。前几个数用阶乘数系统表示如下0 -> 0 = 0 * 0!1 -> 10 = 1 * 1! + 0 * 0!2->...原创 2021-08-08 15:35:50 · 570 阅读 · 0 评论 -
算法中的一些技巧
1、输入输出优化ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);原创 2021-08-01 22:03:45 · 260 阅读 · 0 评论 -
字符串hash算法
字符串s的哈希定义为原创 2021-04-18 21:11:58 · 1981 阅读 · 0 评论 -
minimax search算法
局面估价函数:给每个局面(state)规定一个估价函数值f,评价它对于己方的有利程度。胜利的局面的估价函数值为,而失败的局面的估价函数为-Max局面:假设这个局面轮到己方走,有多种决策可以选择,其中每种决策都导致一个子局面(sub-state)。由于决策权在我们手中,当然是选择估价函数值f最大的子局面。因此,该局面的决策函数等于子局面f值的最大值,把这样的局面称为max局面。Min局面:假设这个局面轮到对方走,它也有多种决策可以选择,其中每种决策都也会导致一种子局面,但由于决策权在对方手中,在最坏的原创 2020-12-13 13:10:49 · 735 阅读 · 0 评论 -
Floyd cycle算法
问题:对一个链表,判断是否有环。存在环时,求出环的起始位置及环长度使用快慢指针1、判断是否有环,快指针移动两步,慢指针每次移动一步,看快慢指针是否会相遇2、环的起始位置如上图所示,假设快慢指针相遇点为离环起始位置 b,快指针移动距离为a+(b+c)n+b,慢指针移动距离为a+b,则有a+(b+c)*n+b=2(a+b) => a = (n-1)(b+c) + c。为什么慢指针在第一圈时就相遇?因为假设在环起始位置时,环长度为L,快指针在环上位置为b',慢指针经过c'相遇,则有c'原创 2020-10-11 20:11:07 · 243 阅读 · 0 评论 -
Fisher_Yates算法
有两种方式,一种是从头到尾形式,另外一种是从尾到头形式从尾到头形式就是首先在数组中的任何位置选择一个随机元素,然后使用数组中的最后一个元素进行交换。在下一步中,它从数组中除最后一个元素之外的任何位置选择一个随机元素,并将其与倒数第二个元素交换。它一直持续到交换每个元素为止。从头到尾形式是首先在数组中的任何位置选择一个随机元素,然后使用数组中的第一个元素进行交换。在下一步中,它从数组中除第一个元素之外的任何位置选取一个随机元素,将其与第二个元素交换,直到交换每个无素为止。...原创 2020-05-16 20:37:09 · 899 阅读 · 1 评论 -
蓄水池抽样算法
简介蓄水池抽样算法随机算法的一种,用来从 N 个样本中随机选择 K 个样本,其中 N 非常大(以至于 N 个样本不能同时放入内存)或者 N 是一个未知数。要求选取的概率一样定理:该算法保证每个元素以 k / n 的概率被选入蓄水池数组。证明:首先,对于任意的 i,第 i 个元素进入蓄水池的概率为 k / i;而在蓄水池内每个元素被替换的概率为 1 / k; 因此在第 i 轮第j个元素被替换的概率为 (k / i ) * (1 / k) = 1 / i。 接下来用数学归纳法来证明,当循环结束时每个原创 2020-05-15 23:14:27 · 381 阅读 · 0 评论 -
Stern-Brocot树
Stern-Brocot树是一个维护分数的树,由两个简单的分数开始0/1,1/0,在两邻的两个分数a/b,c/d之间插入新的分数(a+c)/(b+d)其有两个性质,一个是单调性,另外一个是最简性。...原创 2020-05-03 16:25:51 · 868 阅读 · 0 评论 -
LIS
最长上升子序列问题1、动态规划,时间复杂度为O(n^2)用 d(i)表示从0到i时的最长上升子序列的长度,动态转移方程为d(i)=max{d(j)} + 1,其中0<=j<0并且nums[i] > nums[j]。伪代码如下function LIS() ans = 0 d[0]=1 for i in 1 to n ...原创 2020-05-03 10:39:49 · 300 阅读 · 0 评论 -
LCA问题
在一棵有根树中,两个结点u和v的最近公共祖先是指这样的一个结点 w,是u和v的祖先,并且在树T中具有最在深度。tarjan离线算法 ,伪代码如下:LCA(u) MAKE-SET(u) ancestor[FIND-SET(u)] = u for each child v of u in T LCA(v) UNIO...原创 2020-04-28 23:55:28 · 295 阅读 · 0 评论 -
拓扑排序
拓扑排序解决的问题是有向图的节点排序。在有向无环图中,将图中的顶点以线性方式进行排序,使得对于任何的顶点u到v的有向边(u,v),都可以u在v的前面。1、Kahn算法首先将所有入度为0的点组成一个集合S,每次从S里面取出一个顶点u放入L,然后遍历u的所有边(u,v1),(u,v2),...,并删除,并判断该边的另一个顶点,如果在移除这一条边后入度为0,则将这个顶点放入集合S中。不断的重复上...原创 2020-04-24 12:09:50 · 477 阅读 · 0 评论 -
flood fill算法
flood fill算法实现有三种形式1、depth first search2、breadth first search3、breadth first scan基本思想是找到还没有分配component的结点,并且计算哪个componetn包含此结点。深度优先搜索算法是通过当前结点的所有邻接结点查找一步,对于还没有分配component的结点,赋值相应的component,然...翻译 2020-02-13 22:17:18 · 573 阅读 · 0 评论 -
约瑟夫环问题
n 个人标号 。逆时针站一圈,从 号开始,每一次从当前的人逆时针数 个,然后让这个人出局。问最后剩下的人是谁?设J(n,k)表示n,k时约瑟夫环问题的答案。有如下递归式J(n,k)=(J(n-1,k) + k) mod nint josephus(int n, int k){ int res = 0; for (int i = 1; i <= n; ++i)............原创 2019-11-17 15:38:00 · 374 阅读 · 0 评论