随笔分类 -  algorithm

摘要:一 简介 与 Dijkstra 不同的是,A*算法是source 到 target 的最短路径,Dijkstra 是source 到所有点的最短路径。A*算法的核心是评估函数 f(n) = g(n) + h(n)。 g(n) 从起点到节点 n 的实际代价 h(n) 从节点 n 到终点的估计代价(启发 阅读全文
posted @ 2025-12-08 17:55 ylxn 阅读(17) 评论(0) 推荐(0)
摘要:一、作用 求源点到终点的最短路径,k条。无环无负权 根路径:最短路径 偏离路径:计算从偏离节点(即根路径的最后一个节点)到汇点的最短路径,这就是偏离路径。 算法的基本思路是: 首先找到最短路径(使用 Dijkstra 等算法) 然后系统地生成第 2、3、...、k 条最短路径 通过 "偏移路径"(d 阅读全文
posted @ 2025-12-05 15:26 ylxn 阅读(21) 评论(0) 推荐(0)
摘要:简介 KD-Tree 用来组织表示K维空间点集合。这是一种带有约束条件的二分查找树,KD树对于邻域搜索十分有用。KD-Tree 在除了叶子结点外,每一维分裂都是在某一个维度进行分裂。 建树算法流程 KD-Node value split,分裂维度编号 left,KD-Node left right, 阅读全文
posted @ 2025-09-09 22:41 ylxn 阅读(19) 评论(0) 推荐(0)
摘要:一、灵感来源 蚂蚁在选择路径的时候会留下信息素,信息素浓度较高的路径为大多数蚂蚁行走过的路径,则效率相对较高。 二、核心要素 蚂蚁个体,每个蚂蚁代表一个解决方案 信息素,用于记录路径的优劣程度 启发信息,与问题相关的先验知识 信息素更新规则,信息素的挥发,信息素的添加,平衡探索与利用 三、蚁群算法基 阅读全文
posted @ 2025-09-03 17:10 ylxn 阅读(106) 评论(0) 推荐(0)
摘要:一、树 1、遍历 2、寻找根节点到目标节点的路径 找到根节点到该节点的路径,反向标记根节点和父节点。 标记到目标节点的方向是左孩子,还是右孩子。 if(node.val == tartget){ backTrace.add(node); return true; } if(findTarget(no 阅读全文
posted @ 2022-08-29 10:31 ylxn 阅读(65) 评论(0) 推荐(0)
摘要:一、柯尼斯堡七桥问题 图论的起源 在柯尼斯堡(今俄罗斯加里宁格勒)有一条河流,普列戈利亚河。河与陆地有七座桥相连。旅客进行游玩的时候,怎么才能走完所有的桥,并且一个桥只走一次? 1735年,欧拉指出这是一个无解的问题。将桥视为线,将陆地视为点,欧拉将这个实际问题抽象成点与线的组合问题,因此问题变成从 阅读全文
posted @ 2020-03-18 19:40 ylxn 阅读(1329) 评论(0) 推荐(0)
摘要:一、解决问题 从图中的某个顶点出发到达另一个顶点的最短路径。 二、算法思路 Shortest Path Faster Algorithm (SPFA)。一般认为是队列优化的贝尔曼-福特算法。是一个用于求有向带权图单源最短路径的算法,并且适用于有负权重的图。如果一个顶点被加入了超过顶点的个数,则这个图 阅读全文
posted @ 2020-02-05 14:09 ylxn 阅读(569) 评论(0) 推荐(0)
摘要:一、解决问题 在无权二分图中,使得两两匹配对数最多。 例如:如果虚线表示暧昧关系,则男女能配多少对 二、思想 匈牙利算法的思想就是让。二分图右侧节点与之匹配的左侧节点如果能让出来,则移动左侧节点的匹配。否则寻找本次左侧节点的新匹配。 尽可能多的去让出来。例如: 男1与女a匹配。 男2与女a有暧昧,但 阅读全文
posted @ 2020-02-03 12:43 ylxn 阅读(636) 评论(0) 推荐(0)
摘要:摘自:http://www.cnblogs.com/skywang12345/p/3561803.html 一、双向链表 双向链表是链表的一种。它的每一个结点都有两个指针,一个指向前一个结点,一个指向后一个结点。因此可以从双向链表的任意结点开始可以很方便的访问链表的任意位置。 双向链表示意图 1、双 阅读全文
posted @ 2019-02-26 20:36 ylxn 阅读(260) 评论(0) 推荐(0)
摘要:一、思想 堆的初始化,由最底层逐渐向上一层方向,把最大值向上移动,且$heap(parent) >= max(heap(leftchild), heap(rightchild))$ 将最大值移到数组的尾部,将数组尾部的值移动到堆顶。左右孩子的结点各自比较,向上把最大结点的值移动上去。 父节点为n,$ 阅读全文
posted @ 2019-02-19 15:56 ylxn 阅读(220) 评论(0) 推荐(0)
摘要:一、问题描述 对数组进行排序 二、方法 每次对两个小数组进行排序 将整个大数组一直切分成小数组 三、思想 分治。 四、code 1 package algorithm; 2 3 /** 4 * Created by adrian.wu on 2019/2/14. 5 */ 6 public clas 阅读全文
posted @ 2019-02-14 17:13 ylxn 阅读(119) 评论(0) 推荐(0)
摘要:一、问题描述 用来对数组进行排序。 二、实现方法 记一个数组为 int num[n]; num[0]记作base。 l为左指针 r为右指针 num[l] <= base num[r] > base 然后不断将num[]细化为, num[0] ~ num[l-1], num[r+1] ~ num[n] 阅读全文
posted @ 2019-02-14 11:42 ylxn 阅读(169) 评论(0) 推荐(0)
摘要:一、问题描述 解决最短路径问题。 对于内网图而言(边带权值),最短路径是指两顶点之间经过的边上权值之和最小的路径。 对于非内网图而言(边不带权值),最短路径就是经过的边数和最小的路径。 路径中,第一个顶点为源点,最后一个顶点为终点。所求得是源点到终点的最短路径。 二、Dijkstra算法思想 图可以 阅读全文
posted @ 2019-02-12 15:28 ylxn 阅读(269) 评论(0) 推荐(0)
摘要:一、问题 解决图中最短路径问题 二、解法 1、思想总结: 从i到j的最短路径有两种情况,要么ij直连结果即为D(i,j),要么经过若干个中间点k,即D(i, k) + D(k, j),然后哪个小结果就是哪个 下一次遍历中间点时要保证之前的中间点都已经便利过。 2、需要的参数 i顶点 j目标点 k中间 阅读全文
posted @ 2019-02-08 23:56 ylxn 阅读(280) 评论(0) 推荐(0)
摘要:一、位运算符简介: 1.按位与&。如果两个整形数据 a、b 对应位都是1,则结果位才为1,否则为0,(int 最大值0x7fffffff ): 1 int a = 0x7fffffff; 2 int b = 12; 3 int c = 0; 4 int aAndB = a&b; // aAndB i 阅读全文
posted @ 2019-02-06 18:07 ylxn 阅读(987) 评论(0) 推荐(0)