关于算法那些事
文章平均质量分 77
在自然语言、语音,深度学习,AI新闻一点一滴的见解。
极客范儿
技术决定下限,审美决定上限
展开
-
利用Ransac算法进行平面拟合
RANSAC算法是“Random Sample Consensus”的缩写,它的全称是随机抽样一致性算法。算法可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。RANSAC算法是不确定的算法——它是由一定的概率得出一个合理的结果,为了提高概率必须提高迭代次数。首先对算法进行学习,然后根据理论在Unity实践中实现平面拟合。RANSAC的基本假设是:(1)数据由“局内点”组成,例如:数据的分布可以用一些模型参数来解释;(2)“局外点”是不能适应该模型的数据;原创 2023-12-07 16:21:25 · 983 阅读 · 0 评论 -
如何有效阅读文献
作为研究生要保持看文献的能力,以《面向大规模图像定位的高效优先匹配(Efficient & Effective Prioritized Matching for Large-Scale Image-Based Localization)》文献为例,本文记录了自己在学习过程中如何阅读文献技巧。首先看到一篇论文的情况下,先去从标题看一下内容做的是什么,第一个做的是匹配(Matching),匹配是方法,目标作用于定位(Localization),场景是大规模(Large-Scale)。标题需要仔细斟酌……原创 2023-07-14 18:01:52 · 562 阅读 · 0 评论 -
详谈ORB-SLAM2代码运行流程
ORB-SLAM2可谓是经典中的经典,知道代码里有哪些函数,这些函数做了什么还不够,这只能让你读懂代码,只有搞懂这些函数合适被调用,类和类之间如何发生关系才能会改的动代码。原创 2022-09-28 21:55:21 · 1730 阅读 · 0 评论 -
浅谈大数据算法
大数据算法大家已经不陌生了,到研究生阶段听到最多的就是什么是大数据、大数据的特点,在这个大数据的背景下的算法有什么特点,是不是就是把spark、flink跑起来就叫大数据了,其实并不是这样的。所涉及的数据量规模巨大到无法通过人工,在合理时间内达到截取、管理、处理、并整理成为人类所能解读的信息不用随机分析法(抽样调查)这样的捷径,而采用所有数据的方法“大数据”是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。在给定的资源约束下,以大数据为输入,在给定时间约束原创 2022-06-23 21:23:22 · 6289 阅读 · 2 评论 -
智能算法之遗传算法
众所周知传统的五大类的算法设计是最基础需要掌握的,算法前沿的知识,比如智能优化算法、大数据背景下的算法设计分析和普通的算法设计分析有没有区别,怎么去做。智能优化算法已经演化出很多了,以遗传算法为例,本文从遗传算法的概念、特点、发展历程和应用来介绍。给种群设置一个适应性设置,适应度函数,在优化问题,做最大最小就可以把最大值和最小值最为适应度函数来设置,适应度函数通常越高越好,如果做神经网络的拟合,拟合的越好,误差越小,认为到学习到更多的知识,所以把学习的更好怎么变为一种度量,Fitness函数误差的导数倒过来原创 2022-06-06 12:41:24 · 973 阅读 · 3 评论 -
动态规划算法的递归实现
动态规划算法的递归实现,由于被多次的计算,所以时间复杂度比较高,想的办法是每个子问题只算一次,后面用到的时候,把那个值拿过来就可以把时间降下来,这个就是动态规划算法的迭代实现。长度1:只含1个矩阵,有n个子问题(不需要计算)长度2:含2个矩阵,n-1个子问题长度3:含3个矩阵,n-2个子问题…长度n-1:含n-1个矩阵,2个子问题长度n:原始问题,只有1个长度为1:初值,m[i, i] = 0长度为2:1…2, 2…3, 3…4, … , n-1…n长度为3:1…3, 2…4, 3…原创 2022-06-01 22:10:10 · 981 阅读 · 0 评论 -
矩阵链相乘(动态规划法)
矩阵链乘法是耳熟能详的问题了,有很多矩阵,排列成矩阵链,矩阵链的要求是相邻的两个是可以相乘的,可以相乘是有条件的,两个矩阵能够相乘的条件就是行、列之间是有关系的,两个矩阵如果能够相乘,就是前面矩阵的列号和后面矩阵的行号是一致的。 如何确定矩阵的乘法顺序,使得元素相乘的总次数最少。一、问题描述1、问题设A1 _,A2 , … ,An为矩阵序列, Ai为 Pi-1 X Pi 阶矩阵,i = 1, 2, … , n. 试确定矩阵的乘法顺序,使得元素相乘的总次数最少。2、输入:向量P=<P0,P原创 2022-05-30 17:01:35 · 4296 阅读 · 0 评论 -
动态规划算法的例子
如果是计算及科班出身的话,动态规划可能已经听过,研究生的课程和本科生的课程的区别在于采用的教材难度更加大一些。更强调一些经典问题和在此基础上升级的问题。动态规划和分治算法有很多地方是相像的。一、引子1、最短路径问题问题:输入:起点集合S1,S2,...,Sn,终点集合T1,T2,...,Tm,起点集合 { S_1, S_2, ..., S_n } , 终点集合{T_1, T_2, ... , T_m}, 起点集合S1,S2,...,Sn,终点集合T1,T2,...原创 2022-05-28 09:34:47 · 4585 阅读 · 0 评论 -
动态规划算法的一些思考
动态规划是一类的方法的称呼,是一种思想,在很多问题上会用到这类方法。其中典型的动态规划应用的特点就是可以变成一个多阶段决策的过程。比如在寻找路径的时候从最左边走到最右边其实是一个多阶段的过程,以及矩阵链的过程,也可以看作是矩阵链的子问题链条更小一点的问题,然后构成链条更大一点的子问题一直到原问题。这个时候更像是一个阶段的决策,更像是阶段性决策,可以转化成阶段性决策,另外一个重要的特点最优子结构,这句话说起来在《算法导论》里面也很多地方也写了这句话,最优解就是包含了子问题的最优解,也就是说什么是原问题什么是原创 2022-05-27 21:10:00 · 403 阅读 · 0 评论 -
分支限界及其应用
分支限界是回溯方法的一种改进,从另一个角度来看背包问题可以理解为它是一个组合优化的问题,在搜索解空间中找到满足约束条件的解,使得目标函数达到极大极小,这个地方在搜索的时候,其实是可以考虑对回溯的空间做一个约束。除了满足约束以外,还可以做一点事情:对求最大和求最小这种优化问题(前提必须是优化问题,如果是判定问题不适用于分支限界),在做分支的时候,往下进行空间展开的时候,可以做早先的判定,判定可能性和潜力。以背包问题为例,背包问题是要找到一个价值的最大化,背包问题和剩余的空间量有关,什么是代价函数,什么是潜原创 2022-05-26 09:41:23 · 1106 阅读 · 0 评论 -
搜索树结点数的估计(回溯法)
在做复杂性分析的时候,采取的都是上界,但是要做实际的估计就不是这样的。比如在搜索的时候着色问题根据图的结构的不同,真正在做调色的时候调色空间大小其实是不太好估计的,搜索空间的树,到底有多少个搜索结点需要搜索,到底有多大,因为中间有剪枝,剪枝又与图有关系,所以这个时候不太好做精确的估计的,这个时候可以采取的办法叫做蒙特卡洛搜索法。一、Monte Carlo方法随机的选择一些路径,随机的进行赋值,然后找到一条路径(不一定非得到达叶结点中间也可能结束掉),然后随机的找出路径来进行采样,然后看一看它们的概率是多原创 2022-05-25 20:28:09 · 1767 阅读 · 0 评论 -
着色问题(回溯算法)
着色问题是很经典的一个问题,就是地图上的着色,首先有一个图用颜色着色,着色的要求就是任何的一条边,它的两个顶点是不能够才用同一个颜色的,要采用不同的颜色,图是无向的连通图(从一个顶点可以到达另外一个顶点,不存在过不去的情况),这里面的每一条边将两个顶点连起来,这个时候找所有的着色方案。一、问题描述输入:无向连通图G和m 种颜色的集合用这些颜色给图的顶点着色,每个顶点一种颜色. 要求是:G 的每条边的两个顶点着不同颜色.输出:所有可能的着色方案。 如果不存在着色方案,回答“No”二、实例n=7原创 2022-05-22 17:00:10 · 8124 阅读 · 0 评论 -
旅行商问题(回溯算法)
回溯问题适合于解由向量的形式来构成的,这个向量空间中使用搜索的方法进行搜索,搜索使用宽度优先的方法。货郎问题又名旅行商问题,但其实更多教科书中更通用的叫法叫旅行商问题,下面来对旅行商问题使用回溯算法证明。文章目录一、问题描述二、数学建模三、实例1、传统经典做法2、回溯算法四、总结一、问题描述有n个城市,已知任两个城市之间的距离,求一条每个城市恰好经过一次的回路,使得总长度最小 。分析:有n个城市,城市与城市之前有距离的,任意两个城市之间的距离是已知的,现在需要找一条回路,经过每一个城市1次,使得总原创 2022-05-18 15:21:19 · 16810 阅读 · 0 评论 -
0-1背包问题(回溯法)
0-1背包问题是动态规划、贪心策略的一个子问题。回溯算法同样可以适用于0-1背包问题。下面使用回溯算法解0-1背包问题。文章目录一、问题描述二、算法设计三、实例1、输入:2、2个可行解:3、最优解:<0,1,1,1>四、搜索空间1、子集树的运行2、实例:V={12,11,9,8}, W={8,6,4,3}, B=133、搜索空间:子集树,2^n片树叶4、可行解50、最优解五、代码实现一、问题描述有n种物品,每种物品只有1个。 第i种物品价值为vi , 重量为wi, i=1,2,…, n。问原创 2022-05-15 16:19:51 · 19594 阅读 · 9 评论 -
四皇后问题(回溯算法)
一开始想到的最简单的办法就是去尝试,用暴力破解的办法依次去放每个皇后,最后这个问题得到的解是一个四维的向量。在依次进行搜索的过程后,只有限的一些路径能够走到最后,走到最后的路径为找到了正确的放法。4叉树里找能够走通的路径有多少条,变成了4叉树的搜索过程,找到最后就找到了解。在树的搜索过程中用到了回溯策略。原创 2022-05-14 11:15:12 · 13652 阅读 · 0 评论 -
深入理解最小生成树的几种贪心算法
在数据结构中比较熟知的最小生成树的几种算法,知道可以这样去做,但是正确性却没有特别强调,也没有重点验证,下面从理论证明最小生成树的几种算法还有它们正确性的验证。一、概念对一个带权重的无向连通图,有权重以后生成树的所有的权才有大小,如果权重都为1的话那就没有必要去比较了。生成树的概念是首先有一个图,从图里面要找到一颗树来,这个树要包含所有顶点,树是连通的,从图里找出一些边来构造这个树,这个树的选择就有很多种,要包含这些点的路径就有很多种,但是其中有一个是最小的,比较的是最小的生成树的权重,所最小的生成树原创 2022-05-11 16:32:05 · 902 阅读 · 0 评论 -
哈夫曼算法在文件归并方面的应用
哈夫曼编码除了在编码上我们来寻找最优的不定长的前缀码的最小的码长,在文件归并上也有应用。现有一组长度不相同的已经排好序的文件,文件内部是排好序的,这些文件构成一个集合,把这些文件合并起来,合并成一个最大的文件,这个文件包含了所有文件,也就是这些所有的小文件,那么归并的时候,采用归并排序的方法相当于首先把它对应一个二叉树来进行操作,其实就和哈夫曼编码很像了,可以对集合中最小的两个做归并,归并完之后,再对小的两个做归并,这样操作完之后,归并之后比较的次数是最少的。一、问题描述问题:给定一组不同长度的排好序文原创 2022-05-01 15:45:45 · 1818 阅读 · 1 评论 -
探讨最优前缀码问题
首先看一下平均传输位数,定义如下:设定好的每一个码字给一个频率f(x),每一个频率乘码字的长度原创 2022-04-30 17:07:04 · 2068 阅读 · 0 评论 -
关于最小延迟调度问题算法的一些思考
贪心算法正确性的证明上是很有难度的,算法分析很重要的一个部分就是算法的正确性,算是一个思维的训练,尤其在贪心算法上是一定要证明的。一、问题描述最小延迟调度是这样的问题:有很多的客户要进行安排,活动有一个服务时间还有一个要求完成的时间,有两个量来刻画每一个活动,这些活动是客户发起的,接下来有一个执行的人,执行的人他需要把这些活动做一个合理的安排,这个安排也就是调度,比如先给谁服务,再给谁服务,服务的时候是不能停歇的没有空闲时间,一直在工作的。但是有的安排可以让一部分客户满意,让另外一些客户多等待一下,现在原创 2022-04-29 17:01:06 · 1005 阅读 · 0 评论 -
关于最优装载问题算法的一些思考
最优装载问题和背包问题有些相似,有很多集装箱要装到轮船上去,但是轮船是有载重限制的,不能无限制的装进去,轮船有承重量,不能够吃水太多,现在的问题是怎么才能让集装箱的个数最多,而不是达到重量最大,这个是和背包问题的区别,你可以这样认为,集装箱的价值为1,不管集装箱重还是轻,装进去价值就加1了,所以可以看成0-1背包的子问题。一、问题描述:n 个集装箱1, 2, … , n装上轮船,集装箱i的重量wi, 轮船装载重量限制为C,无体积限制. 问如何装使得上船的集装箱最多?不妨设每个箱子的重量wi≤C. 该问原创 2022-04-28 11:17:25 · 697 阅读 · 0 评论 -
动态规划算法解背包问题的一些想法
背包问题是这样的:背包有一个重量的约束,不能无限制的装入物品,被装的物品是不可以切割的,整体的装或者不装。另外如果物品数量没有限制的话,那其实就是一个完全背包问题,如果数量有限制,只能装进去1次或者不装进去那这就是零一背包问题,现在我们研究完全背包问题。一、实例分析现在我们看这个实例,有一个物品重量是:2,价值是:1(省去单位),第二个物品重量是:3,价值是:3(省去单位)。总限制b是:10。所以现在就是装第三个物品W3,就可以装第一个和第二个物品(4+3+2<10),而不能装第四个物品(原创 2022-04-22 21:01:34 · 704 阅读 · 0 评论 -
关于投资问题建模的一些思考
一、问题m 元钱,n项投资, fi (x): 将 x 元投入第 i 个项目的效益. 求使得总效益最大的投资方案。二、分析这个问题是一个优化问题,我们要找到一种投资方案(组合方式),这种方案就是你可以把一个钱拆开,所有的钱都是整数,把钱拆开成若干份,每一份都是大于等于0,并且是整数范围内的,所有的前的总数是不变的,所以所有的总数约束条件不变,总数不变的前提下,如何把钱分配的更加合理三、建模问题的解是向量 < x1, x2, …, xn >, xi 是投给项目i 的钱数,i =1,原创 2022-04-11 22:27:33 · 770 阅读 · 0 评论 -
平面点对问题的算法思考
输入:平面点集P中有n个点,n>1输出:P中的两个点,其距离最小蛮力算法:C(n,2)个点对,计算最小距离O(n²)分之策略:P划为大小相等的P(L)和P®1、分别计算P(L)、P®中最近点对2、计算P(L)和P®中个一个点的最近点对3、上述情况下的最近点对是解划分实例:n=10算法伪代码MinDistance(P,X,Y)输入:点集P,X和Y为横、纵坐标数组输出:最近的两个点集距离MinDistance(P(L),X(L),Y(L))MinDistance(P(R),原创 2022-03-29 22:35:42 · 482 阅读 · 0 评论 -
芯片测试问题的一些理解
一、一次测试过程:测试方法:将2片芯片(A和B)置于测试台上,互相进行测试,测试报告是“好”或“坏”,只取其一。就是这份报告是针对对方而言的,也就是说A芯片说B芯片是好的,B芯片说A是坏的假设:好芯片的报告一定是正确的,坏芯片的报告是不确定的(可能会出错)如果A芯片本来就是好的,那么它说的话就是可靠可信的,而且它一定说真话,如果它说B芯片是好的,那B芯片就一定是好的,因为A不会说假话的;如果B芯片说A是坏的,那么它的话是不可靠的二、测试结果分析A报告B报告结论B是好的A原创 2022-03-26 22:22:10 · 2674 阅读 · 0 评论 -
浅谈算法的复杂性
对时间复杂度进行估计的时候,从区域规模为充分大的时候,做一个估计量就可以了,所以在这里引入三种表示方法:上界、下限,等同阶的表示法。渐进性态的阶设f(n)和 g (n) 是定义在正整数集上的正函数Notes:这里的“=”并不是数学上的那个等于,而是一种表示方法(1)大O表示法 (算法运行时间的上限 )若正常数c和 自然数N0 使得当 n N0 时,有f(n) cg (n) 则称函数 f(n )在n充分大时有上界, 且 g(n)是它一个上界.记为 f(n) =O(g (n)) , 也称 f原创 2022-03-14 17:42:33 · 521 阅读 · 0 评论 -
递归树的求和问题
求解方程:T(n)=T(n/3)+T(2n/3)+n方程T(n)=T(n/3)+T(2n/3)+n,递归树层数 k,每层O(n) ,计算T(n)。这个问题是递归树应用的实例。第一层为n,第二层为n/3、2n/3,第三层是n/9、2n/9、2n/9、4n/9,以此类推递归树上所有项恰好是迭代之后产生和式中的项。递归树成熟为k,每层为O(n),最后使用对数的换底公式求出结果。递归树层数 k,每层O(n)n(2/3)k =1→(3/2)k = n→k = O(log3/2n)一般说取2为底∴T原创 2022-03-08 22:43:51 · 4606 阅读 · 0 评论 -
使用asyncio实现并发
一、实验内容采用Pytorch完成手写数字识别程序,数据集为MNIST,分别采用全连接神经网络和卷积神经网络进行实验,经过调试参数,查看训练误差曲线的变化。画出卷积神经网络的特征层,并保存为图片。二、运行结果2.1 全连接神经网络实现(1)代码实现:import torchimport numpy as npfrom torchvision.datasets import mnistfrom torch import nnfrom torch.autograd import Variabl原创 2022-02-14 15:30:25 · 977 阅读 · 0 评论 -
多线程编程计算 π 的值
一、实验内容使用 For 循环制导语句计算π 的值二、运行结果1、代码实现:#include <stdio.h>#include <omp.h>#include <cmath>#include <iostream>#include <stdlib.h>#include <time.h>#include "PrecisionNum.cpp"#include "stdint.h"void calculatePi3原创 2021-12-17 20:00:03 · 1452 阅读 · 0 评论 -
2020年度学习总结
疫情暂时让我从研发岗位转型到为团队做自媒体。自媒体不是能在短时间有很大成效的东西,想要做好,需要不停得学习和坚持。大学多媒体设计与制作已经不单纯从网络三剑客开始,不过平面设计,之前数码摄影后期的一些photoshop的功底还是足够应付,而学习影视后期,必须在学习理论知识之余掌握很多不同的视频编辑加工软件。最开始接触视频剪辑Edius,对计算机配置要求不高,简单易上手,实践中发现不太能满足需求。原创 2020-12-31 20:24:05 · 680 阅读 · 0 评论 -
内部排序算法的比较
最近对内部排序进行复习,深入掌握各种排序算法的思想、排序过程和特征,对一些常用排序算法的关键代码进行比较,最终为了在工作中看到特定序列有选择最优排序算法的能力。一、直接插入排序这种排序的思想是,在待排序的数组中,设置一段排序区间让他始终保持有序并不断增大,直到覆盖整个数组,就完成了对数组的排序。这就是最简单的直接插入排序,它的时间复杂度 是 O(N)~O(N^2)当待排序集合本身接近有序时,它的时间复杂度最小,当待排序集合本身时逆序集合时,它的时间复杂度最大具体代码如下:void Direct原创 2020-10-08 14:55:04 · 984 阅读 · 0 评论 -
2018腾讯广告算法大赛竞赛记录
深度学习的火热带动了各种大数据以及算法的发展。第一次参加与kaggle相似大平台的数据挖掘比赛。 从4月18号开始对相关文献进行大量的阅读,仔细研究了腾讯内部员工发布的baseline。在Kaggle比赛过程得到感受就是清晰领会到了ML和DM之间的不同:ML一般从模型或者算法出发,讲的是模型或者算法本身存在的不合理的地方,然后提出新的假设,从而去优化模型或算法。而DM是从数据本身问题本身...原创 2018-05-20 18:13:49 · 3497 阅读 · 0 评论 -
大数据云端实验室项目实战-微博舆情大数据分析有感
大数据开发、只能硬件和图形图像需求增长最快,需求人员最多。对微博数据分析平台搭建,以及微博数据分析平台数据存储模块设计与实现。需要有Java功底,还应该有 Linux与Java基础 Java实现文件操作 Java实现数据库操作 Java多线程文件操作 JStask访问Hadoop服务 VisualVm访问Hadoop服务 Hadoop生态体系 大数据当前应用现状 Hadoop2....原创 2018-09-06 09:16:21 · 1542 阅读 · 1 评论 -
Python全栈数据工程师养成攻略
近年来大数据(BigData)的概念获得不行,python已经成为机器学习热门的工具。anaconda把与python有关的库(numpy,scipy等等)都打成一个包。pycaffe 的安装以及 notebook 环境配置是为了更方便的去使用深度学习框架。notebook 使用浏览器作为界面使用,可以编写和执行 python 代码。 从个人角度出发,在时间有限和资源有限的条件下,实现一...原创 2018-08-03 14:30:27 · 1411 阅读 · 0 评论 -
再战C语言
现在开始学习数据结构,真的抽象的很,老师使用的给我们用C和类C讲解的,数据结构的学习反过来可以加强理解C,所以有必要在重温一下C语言。 以前一直奇怪各类编程软件盛行,为什么还有一部分代码要求我们在纸上书写,其实直到现在我才明白老师的用心。大牛告诉我就连面试都是纸上谈代码,还有什么理由不好好书写呢? 虽然库已经完全封装了很多底层实现,方便使用,促进了开发效率,但这并不能代表我们不需要去了解算法本身的作用。所以这原创 2016-09-28 07:33:15 · 729 阅读 · 0 评论 -
关于DB存储过程剖析与设计的一些感受
关系型数据库管理系统最重要的一个目标就是,确保表或者索引中的数据是随时可以用的。那么为了尽可能的实现这个目标,会使用内存中的缓冲池来最小化磁盘活动。通过具体的项目了解关于DB存储过程剖析与设计,以项目驱动,提升理解数据的读取和存储方式。 一、音乐播放器设计 (1) 外观:图片和图标 (2) 最小化-&gt;实现窗体的最小化 (3) 关闭-&gt;托盘-&gt;菜单-&gt;播放音乐或者是直...原创 2018-08-09 07:18:48 · 479 阅读 · 0 评论