我是靠谱客的博主 自然大门,最近开发中收集的这篇文章主要介绍经典算法的流程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


RANSAC算法流程

RANSAC(random sample consensus,随机采样一致)算法是从一组含有“外点”的数据集中正确估计数据模型参数的迭代算法。“外点”一般指数据中的噪声点,比如说匹配中的误匹配和估计曲线中的离群点。RANSAC算法是一种不确定算法,它只能在一种概率下产生结果,并且这个概率会随着迭代次数的增加而加大。

RANSAC是通过反复选择数据集去估计模型,一直迭代到估计出认为比较好的模型。流程如下:

1.选择出可以估计出模型的最小数据集(例如对于直线拟合来说就是两个点);

2.使用这个数据集来计算出数据模型;

3.将所有数据带入这个模型中,计算出“内点”的数目;(累加在一定误差范围内的适合当前迭代推出模型的数据);

4.比较当前模型和之前推出的最好的模型的“内点”的数量,记录最大“内点”数的模型参数和“内点”数;

5.重复1~4步,直到迭代结束或者当前模型已经足够好为止。


哈希算法

散列表(hash table,也叫哈希表),是根据键(key)而直接访问在内存存储位置的数据结构。它通过一个关于键值的函数,将所需查询的数据映射到表中的一个位置来访问记录,为了加快查找速度。这个映射函数称作为散列函数,存放记录的数组称作为散列表。

散列函数,可以定义为hash(key),其中Key表示元素的键值,则hash(key)的值表示经过散列函数计算得到的散列值。其特点:

1.确定性。如果两个散列值是不相同的(根据同一函数),那么这两个散列表的原始输入也是不相同的。

2.散列碰撞。散列函数的输入和输出不是唯一对应关系,如果两个散列值相同,两个输入值很可能是相同的,但是也可能不同。

3.不可逆性。一个哈希值对应无数个明文,理论上你并不知道哪个是。

4.混淆特性。输入一些数据计算出散列值,然后部分改变输入值,一个具有强混淆特性的散列函数会产生一个完全不同的散列值。

常见的散列函数有MD5,MD5是输入不定长信息,输出固定长度128bits算法,基本方式为求余、取余、调整长度、与链接变量进行循环运算,得出结果。SHA-1是一种密码散列函数,SHA-1可以生成一个称为消息摘要的160位散列值,散列值通常的呈现形式为40个十六进制数。

哈希计算的计算复杂度几乎是O(1),不会随着数据量增加而增加。


PCA算法

PCA(principle component analysis,主成分分析),步骤包括:去中心化、求协方差矩阵、对H进行SVD分解,并且特征向量按照由大到小排列、主要方向就是U中的列向量。


极大似然估计算法

极大似然估计是一种概率论在统计学的应用,它是参数估计的方法之一。已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,通过若干次试验,观察其结果,利用结果推出参数的大概值。


最后

以上就是自然大门为你收集整理的经典算法的流程的全部内容,希望文章能够帮你解决经典算法的流程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部