算法
文章平均质量分 68
UQI-LIUWJ
这个作者很懒,什么都没留下…
展开
-
算法笔记:空间填充曲线
六次迭代的希尔伯特曲线:原创 2024-08-17 08:45:02 · 386 阅读 · 0 评论 -
算法笔记:样条插值
假设第一段和第二段函数的三阶导在端点处相等;第n-1段和第n段函数的三阶导在端点处也相等。最后一个分段函数的一阶段和二阶导于第一个分段的一阶导和二阶导相等。这种假设特别适合用在周期函数中,尤其是第一点与最后一点相等时。若想求得这4n个未知系数,需要构建4n个方程。强制第一个与最后一个分段函数的第一个系数为0。假设第1个和最后一个端点的二阶导为0。是已知的n+1个数据点,整个函数有。下面以三次样条插值为例,假设。在每两点间画一条直线。原创 2023-12-05 14:40:45 · 3408 阅读 · 0 评论 -
数据结构笔记:R+树
参考内容:R+树-CSDN博客原创 2023-11-15 12:46:21 · 174 阅读 · 0 评论 -
数据结构笔记:R树
R树可以看作B树再高维空间的扩展。它很好的解决了在高维空间搜索等问题。采用了B树分割空间的思想,并在添加、删除操作时采用合并、分解结点的方法,保证树的平衡性R树就是一棵用来存储高维数据的平衡树。原创 2023-11-15 11:46:40 · 1459 阅读 · 0 评论 -
数据结构笔记 B 树 B+树
Balanced 树,多路平衡搜索树。原创 2023-11-15 09:33:34 · 115 阅读 · 0 评论 -
空间数据结构笔记:层次包围盒树(Bounding Volume Hierarchy Based On Tree)
参考内容:空间数据结构(四叉树/八叉树/BVH树/BSP树/k-d树) - KillerAery - 博客园 (cnblogs.com)原创 2023-11-14 10:54:04 · 1023 阅读 · 0 评论 -
GIS 数据结构整理:网格索引
在二维网格下是这样的。原创 2023-10-24 22:38:46 · 1425 阅读 · 1 评论 -
算法笔记:堆
结构性:符合完全二叉树的结构有序性:满足父节点小于子节点(最小化堆)或父节点大于子节点(最大化堆)原创 2023-09-06 13:07:17 · 426 阅读 · 0 评论 -
算法笔记:哈夫曼树、哈夫曼编码
可能看这个描述不太好理解,我们看一个例子:原创 2023-09-06 00:42:07 · 324 阅读 · 0 评论 -
数据结构笔记:MX四叉树 VS PR 四叉树
个人理解,不一定对,还望批评指教!有数据的区域划分到一样的划分方式。比如我们分别建一个数。有节点的区域同步区划。有节点的区域同步区划。原创 2023-09-05 22:09:45 · 271 阅读 · 0 评论 -
算法笔记:点四叉树
查询一个区域内的所有点时,从根节点开始,检查该区域与每个节点(象限)的交集,并递归地进入与查询区域有交集的节点。初始时,有一个[0, 16) x [0, 16)的正方形作为根节点。创建一个根节点,该节点代表整个二维空间区域。D在以B为中心的右下方,不用再分割空间。原创 2023-09-05 10:35:31 · 587 阅读 · 0 评论 -
算法笔记 近似最近邻查找(Approximate Nearest Neighbor Search,ANN)
也就是说,如果两个点 p 和 q 距离很近,那么它们被哈希到同一个桶的概率应该很高。也就是说,如果两个点 p 和 q 距离很远,那么它们被哈希到同一个桶的概率应该很低。: 如果 distance(p,q)≤r,则 h(p)=h(q) 的概率较高。: 如果distance(p,q)≥R,则 h(p)=h(q) 的概率较低。在搜索过程中,一旦找到一个与查询点距离在某个阈值范围内的点,就停止搜索。这样可以加速查找过程,但可能会错过更近的点。原创 2023-09-04 23:32:10 · 2681 阅读 · 1 评论 -
算法笔记:平衡二叉树
左子树高度小于右子树高度,将右子树中最小的那个元素赋给当前根节点,然后删除右子树中元素值最小的那个节点。左子树高度大于右子树高度,将左子树中最大的那个元素赋给当前根节点,然后删除左子树中元素值最大的那个节点。双旋转代码的核心思想在于:在创建二叉树的过程中,每次添加新的节点,都要判断一下该二叉树是否需要旋转。同插入操作一样,删除结点时也有可能破坏平衡性,这就要求我们删除的时候要判断是否进行平衡性调整。2.对α的左儿子的右子树进行一次插入。4.对α的右儿子的右子树进行一次插入。于是得到了一棵二叉树。原创 2023-09-04 14:21:01 · 481 阅读 · 0 评论 -
算法笔记 二叉搜索树
否则,如果要查找的值比当前节点小,就往当前节点的左子树找。如果要查找的值比当前节点值大,就往当前节点的右子树找。如果要插入的值比当前节点小,就往当前节点的左子树查找插入的位置。如果要插入的值比当前节点大,就往当前节点的右子树查找插入的位置。若右子树不空,则右子树上所有节点的值都大于根节点的值;否则,如果当前节点的值等于要查找的值,则直接返回。如果当前节点为空,直接创建一个新的节点返回。直接删除的缺点就是会严重破坏树的平衡性。首先找到他需要插入的位置,然后再插入。如果当前节点为空,则搜索失败。原创 2023-09-04 10:21:42 · 508 阅读 · 0 评论 -
算法笔记:二叉树
除了最后一层外,每一层都是完全填满的,并且所有节点都尽量向左填充。创建线索二叉树通常需要。的从根节点开始,每层。原创 2023-09-03 23:43:22 · 830 阅读 · 0 评论 -
算法笔记:球树
【代码】算法笔记:球树。原创 2023-08-26 21:43:56 · 1288 阅读 · 0 评论 -
算法笔记:KD树
假设我们要查询的点是2,4.5。搜索(2.1,3.1)原创 2023-08-26 18:23:29 · 823 阅读 · 0 评论 -
算法笔记:A*算法
A*算法是一种很常用的路径查找和图形遍历算法。它有较好的性能和准确度。原创 2023-08-18 16:26:41 · 464 阅读 · 1 评论 -
算法笔记\python 笔记: 相似性度量
先将数据标准化(减去的均值两两抵消)原创 2023-07-11 15:05:15 · 571 阅读 · 0 评论 -
算法笔记:A2-A4-RSRQ切换算法
A2-A4-RSQ原创 2023-05-21 12:10:21 · 1094 阅读 · 0 评论 -
算法笔记:字符串编辑距离(Edit Distance on Real sequence,EDR)/ Levenshtein距离
红色的是还没有考虑的两个轨迹部分;黑色是已经考虑过的两个轨迹部分。原创 2023-04-10 15:11:54 · 914 阅读 · 0 评论 -
算法笔记:Frechet距离度量
曲线之间相似性的度量,它考虑了沿曲线的点的位置和顺序。原创 2023-04-09 11:34:57 · 3748 阅读 · 1 评论 -
算法笔记:KM算法(Kuhn-Munkres Algorithm)
问题。原创 2023-04-07 21:00:01 · 1240 阅读 · 1 评论 -
算法笔记:匈牙利算法
结果和前面的手动推导是一样的。原创 2023-04-07 20:31:16 · 756 阅读 · 0 评论 -
算法笔记:鸡尾酒排序算法
鸡尾酒排序算法是对冒泡排序算法的优化,它的复杂度和稳定性和冒泡排序算法是一致的,时间复杂度为O(N^2),空间复杂度为O(1)【虽然轮次减少,所以所需时间会比冒泡算法稍微少一些】需要7轮(即使2~8已经排序完成了,但也需要一个一个冒泡到相应的位置去)那么鸡尾酒算法第二轮结束的时候已经排序完成了,比冒泡排序少了很多轮。第二轮,则从右向左进行比较、交换。原创 2022-10-26 23:11:35 · 290 阅读 · 0 评论 -
算法笔记:冒泡排序
冒泡排序(Bubble Sort)是排序算法里面比较简单的一个排序。它重复地遍历要排序的数列,一次比较两个数据元素,如果顺序不对则进行交换,并一直重复这样的走访操作,直到没有要交换的数据元素为止。原创 2022-10-26 22:05:16 · 443 阅读 · 0 评论 -
算法/论文笔记 Fluid Communities: A Competitive, Scalable and Diverse Community Detection Algorithm (2017)
如果是同步算法的话,每个community的density无法保证值就是公式(1)求得的值。每一轮superstep,每一条边会被考虑两次(分别是它的两个节点被更新时的情况)——>这个算法可以保证没有一个community最终会没有点(也就是至少一个点)一个community中点越多,density越小。——>有可能出现某个community 最终没有点。FluidC算法是异步算法,一步一个一个点更新。所以时间复杂度是O(E)......原创 2022-08-29 23:42:32 · 738 阅读 · 0 评论 -
欧几里得算法(辗转相除法)
计算两个非负数(不同时为0)m,n的最大公约数gcd(m,n)gcd(60,24)=gcd(24,12) 【60模24,为12】 =gcd(12,0) 【24模12,为0】 =12 【第二项为0,结束算法】原创 2022-06-20 19:39:19 · 166 阅读 · 0 评论 -
算法笔记 HITS算法
Hyperlink-induced Topic Search(注:个人觉得公式7写错了,应该是【最简单的验证方法,你令k=1,算出来也是不对的)个人感觉可以看成是李宏毅线性代数笔记 10: PageRank_UQI-LIUWJ的博客-CSDN博客_pagerank 举例更进一步的算法...原创 2022-05-10 00:03:42 · 160 阅读 · 0 评论 -
DTW 笔记: Dynamic Time Warping 动态时间规整 (&DTW的python实现) 【DDTW,WDTW】
0 总述DTW可以计算两个时间序列的相似度,尤其适用于不同长度、不同节奏的时间序列(比如不同的人读同一个词的音频序列)DTW将自动扭曲(warping)时间序列(即在时间轴上进行局部的缩放),使得两个序列的形态尽可能的一致,得到最大可能的相似度。DTW采用了动态规划的方法来进行时间规整的计算1 欧几里得距离的局限性描述两个序列之间的相似性,欧氏距离是一种十分简单且直观的方法,但对于序列之间步调不统一的情况,计算欧氏距离得到...原创 2022-01-18 18:58:09 · 8221 阅读 · 1 评论 -
算法导论习题(1):摔杯子
选自第二章第8题1 题目描述 你正在对各种型号的玻璃罐进行一些压力测试,以确定它们可以跌落且不会破裂的高度。在特定类型的玻璃罐上,此实验的设置如下:你有一个有 n 个梯级的梯子,你想找到最高的梯级,你可以从那里放下一个罐子,罐子不会摔碎。我们称之为最高的安全梯级。尝试二进制搜索可能很自然:从中间的梯级中放一个罐子,看看它是否损坏,然后根据结果从梯级 n/4 或 3n/4 递归尝试。但这有一个缺点,即你可能会在寻找答案时打破很多罐子。...原创 2021-09-12 12:10:32 · 1552 阅读 · 0 评论 -
算法导论 答案勘误(ing)
第二章 第四题这个应该是错的,如果(logn)^3是n的幂,那确实g5在g3前面。但现在是两个同时取log,logg3(n)=logn+3loglognlogg5(n)=(logn)^2应该是g3小通过画图佐证之:import mathimport matplotlib.pyplot as pltx=range(1,100)y=[]z=[]for i in x: y.append(i*pow(math.log(i),3)) z.append(.原创 2021-09-12 11:48:35 · 239 阅读 · 0 评论 -
关联规则(Association Rules)笔记
1 关联规则产生的原因:购物篮问题关联规则最初是为了解决购物篮问题而产生。上世纪九十年代,美国的沃尔玛超市发现,啤酒和尿布这两种完全不着边际的商品竟然有很高的概率一起被购买。在一段时间之后,他终于分析出了原因:在美国有婴儿的家庭中,一般是母亲在家中照看婴儿,年轻的父亲去超市买尿布。父亲在购买尿布的同时,往往会顺便为自己购买啤酒。所以尿布和啤酒一起出现的概率就很高。2 关联规则 关联规则是形如X→Y的蕴涵式,其中, X和Y分别称...原创 2021-09-08 19:31:22 · 4113 阅读 · 0 评论 -
算法笔记:并查集
1 并查集介绍并查集主要用于解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作:合并(Union):把两个不相交的集合合并为一个集合。 查询(Find):查询两个元素是否在同一个集合中。2 用比武的方式解释并查集并查集的重要思想在于,用集合中的一个元素代表集合。我们不妨把集合比喻成帮派,而代表元素则是帮主。接下来我们利用这个比喻,看看并查集是如何运作的。最开始,所有大侠各自为战。他们各自的帮主自然就是...原创 2021-09-01 14:23:02 · 333 阅读 · 0 评论 -
龙格库塔法
1基本思想我们求解常微分方程的时候,某些常微分方程有解析方法,但是大多数的常微分方程只能用数值解法来求解。数值解法的一个基本特点就是“递进式”,顺着节点的顺序一步一步向前推进。龙格库塔法的基本思想就是利用f(x,y)在某些特殊点上的函数值的线性组合,来估算高阶单步法的平均斜率。1.1 平均斜率对于常微分方程,有一个初始解y=y(x),用泰勒展开式有(其中,h=x(n+1)-x(n)):根据拉格朗日中值定理,存在一个θ∈(0,1),使得所以对于,有y'(x+θ...原创 2021-07-09 21:56:57 · 15711 阅读 · 3 评论 -
算法整理:Boyer-Moore 投票算法
1,基本思想Boyer-Moore 投票算法的基本思想是:在每一轮投票过程中,从数组中删除两个不同的元素,直到投票过程无法继续,此时数组为空或者数组中剩下的元素都相等。如果数组为空,则数组中不存在主要元素;如果数组中剩下的元素都相等,则数组中剩下的元素可能为主要元素。(可能的原因是,如果是这样的一个数组[1,2,3],那么剩下的元素是3,但是3并不是数量超过一半的元素。)2,主要步骤Boyer-Moore 投票算法的步骤如下:维护一个候选主要元素 candidate 和候选主要元素的转载 2021-07-09 10:34:42 · 1882 阅读 · 0 评论 -
二分查找详解
1 二分查找的基本框架def binarySearch(nums,target): left=0 right=... while(...): mid=left+(right-left)//2 #防止溢出 if(nums[mid]==target): ... elif(nums[mid]<target): ..原创 2021-06-15 10:06:58 · 268 阅读 · 0 评论 -
生成N个0~1的随机数,同时这些随机数的和为1
先随机生成N-1个随机0-1小数 (x1,x2,x3......), 从小到大排序。然后对于结果数组 A:A1=x1,A2=x2-x1......以此类推直到An-1,然后An = 1 - x(n-1)。import randomn=7lst=[]for i in range(n-1): lst.append(random.random())lst.sort()formal=[]for i in range(n-2): formal.append(lst[i+1]-ls原创 2021-05-22 16:37:40 · 1479 阅读 · 0 评论