您的位置:首页 > 其它

一些重要的算法(转)

2010-07-23 21:29 323 查看
A*搜寻算法

俗称A星算法。这是一种在图形平面上,
有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或线上游戏的BOT的移动计算上。该算法像Dijkstra算法
一样,可以找到一条最短路径;也像BFS
一样,进行启发式
的搜索。

Beam Search

束搜索(beam
search) 方法是解决优化问题的一种启发式方法,它是在分枝定界方法基础上发展起来的,它使用启发式方法估计k 个最好的路径,仅从这k
个路径出发向下搜索,即每一层只有满意的结点会被保留,其它的结点则被永久抛弃,从而比分枝定界法能大大节省运行时间。束搜索于20 世纪70
年代中期首先被应用于人工智能领域,1976 年Lowerre
在其称为HARPY的语音识别系统中第一次使用了束搜索方法,他的目标是并行地搜索几个潜在的最优决策路径以减少回溯,并快速地获得一个解。

二分取中查找算法

一种在有序数组中查找某一特定元素
的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小
于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。这种搜索算法每一次比较都使搜索范围缩小一半。

Branch and bound

分支定界
(branch and bound)
算法是一种在问题的解空间树上搜索问题的解的方法。但与回溯算法不同,分支定界算法采用广度优先或最小耗费优先的方法搜索解空间树,并且,在分支定界算法
中,每一个活结点只有一次机会成为扩展结点。

数据压缩

数据压缩是通过减少计算机中所存储数据或者通
信传播中数据的冗余度,达到增大数据密度,最终使数据的存储空间减少的技术。数据压缩在文件存储和分布式系统领域有着十分广泛的应用。数据压缩也代表着尺
寸媒介容量的增大和网络带宽的扩展。

Diffie–Hellman密钥协商

Diffie–Hellman
key exchange,简称“D–H”,
是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内
容。

Dijkstra’s 算法

迪科斯彻算法
(Dijkstra)是由荷兰计算机科学家艾
兹格·迪科斯彻
(Edsger Wybe
Dijkstra)发明的。算法解决的是有向图中单个源点到其他顶点的最短路径问题。举例来说,如果图中的顶点表示城市,而边上的权重表示著城市间开车行
经的距离,迪科斯彻算法可以用来找到两个城市之间的最短路径。

动态规划

动态规划是一种在数学和计算机科学中使用
的,用于求解包含重叠子问题的最优化

题的方法。其基本思想是,将原问题分解为相似的子问题,在求解的过程中通过子问题的解求出原问题的解。动态规划的思想是多种算法的基础,被广泛应用于计算
机科学和工程领域。比较著名的应用实例有:求解最
短路径
问题,背
包问题
,项
目管理
网络流

化等。这里也有一篇文章
说得比较详细。

欧几里得算法

在数学中,辗转相除法,又称欧几里得算
法,是求最
大公约数
的算法。辗转相除法首次出现于欧
几里得
的《几
何原本
》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九
章算术
》。

最大期望(EM)算法

在统计计算中,最大期望
(EM)算法是在概率
probabilistic

模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variable
)。
最大期望经常用在机
器学习
和计
算机视觉
的数
据聚类
Data Clustering

领域。最大期望算法经过两个步骤交替进行计算,第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;第二步是最大化(M),最大
化在 E 步上求得的最大似然值来计算参数的值。M 步上找到的参数估计值被用于下一个 E 步计算中,这个过程不断交替进行。

快速傅里叶变换

(FFT)


速傅里叶变换(Fast Fourier Transform,FFT),是离
散傅里叶变换
的快速算法,也可用于计算离散傅里叶变换的逆变换。快速傅里叶变换有广泛的应用,如数
字信号处理
、计算大
整数乘法
、求解偏
微分方程
等等。本条目只描述各种快速算法,对于离散傅里叶变换的性质和应用,请参见离
散傅里叶变换


哈希函数

Hash
Function是一种从任何一种数据中创建小的数字“指纹”的方法。该函数将数据打乱混合,重新创建一个叫做散列值的指纹。散列值通常用来代表一个短的
随机字母和数字组成的字符串。好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。

堆排序

Heapsort

指利用堆
积树


这种数据结构所设计的一种排序算法。堆积树是一个近似完
全二叉树
的结构,并同时满足堆积属性
:即子结点的键值或索引总是小于(或者大于)它的父结点。

归并排序

Merge sort

建立在归并操作上的一种有效的排序
算法

该算法是采用分治法
(Divide
and Conquer)的一个非常典型的应用。

RANSAC
算法


RANSAC 是”RANdom SAmple
Consensus”的缩写。该算法是用于从一组观测数据中估计数学模型参数的迭代方法,由Fischler and Bolles在1981
提出,它是一种非确定性算法,因为它只能以一定的概率得到合理的结果,随着迭代次数的增加,这种概率是增加的。
该算法的基本假设是观测数据集中存在”inliers”(那些对模型参数估计起到支持作用的点)和”outliers”(不符合模型的点),并且这组观测
数据受到噪声影响。RANSAC 假设给定一组”inliers”数据就能够得到最优的符合这组点的模型。

RSA加密演算法

这是一个公钥加密算法,也是世界上
第一个适合用来做签名的算法。今天的RSA已经专利失效,其被广泛地用于电子商务加密,大家都相信,只要密钥足够长,这个算法就会是安全的

并查集Union-find

并查集是一种树型的数据结
构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。

Viterbi algorithm

寻找最可能的隐
藏状态序列(Finding most probable sequence of hidden states)

附录

关于这个世界上的算法,你可以看看Wikipedia的这个网页:http://en.wikipedia.org/wiki/List_of_algorithms

关于排序算法,你可以看看本站的这几篇文章《一个显示排序过程的Python脚本
》、
《一个排
序算法比较的网站
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: