`
gwmwhu
  • 浏览: 63246 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

【转载】一些重要的算法

阅读更多

 

原文地址:http://coolshell.cn/articles/2583.html

下面是一些比较重要的算法,原文 罗列了32个,但我觉得有很多是数论里的,和计算机的不相干,所以没有选取。下面的这些,有的我们经常在用,有的基本不用。有的很常见,有的很偏。不过了解一下也是好事。也欢迎你留下你觉得有意义的算法。(注:本篇文章并非翻译,其中的算法描述大部份摘自Wikipedia,因为维基百科描述的很专业了)

  1. A*搜寻算法
     
    俗称A星算法。这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或线上游戏的BOT的移动计算上。该算法像Dijkstra算法 一样,可以找到一条最短路径;也像BFS 一样,进行启发式的搜索。
  2. Beam Search 
    束搜索(beam search) 方法是解决优化问题的一种启发式方法,它是在分枝定界方法基础上发展起来的,它使用启发式方法估计k 个最好的路径,仅从这k 个路径出发向下搜索,即每一层只有满意的结点会被保留,其它的结点则被永久抛弃,从而比分枝定界法能大大节省运行时间。束搜索于20 世纪70 年代中期首先被应用于人工智能领域,1976 年Lowerre 在其称为HARPY的语音识别系统中第一次使用了束搜索方法,他的目标是并行地搜索几个潜在的最优决策路径以减少回溯,并快速地获得一个解。
  3. 二分取中查找算法 
    一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。这种搜索算法每一次比较都使搜索范围缩小一半。
  4. Branch and bound 
    分支定界 (branch and bound) 算法是一种在问题的解空间树上搜索问题的解的方法。但与回溯算法不同,分支定界算法采用广度优先或最小耗费优先的方法搜索解空间树,并且,在分支定界算法中,每一个活结点只有一次机会成为扩展结点。
  5. 数据压缩 
    数据压缩是通过减少计算机中所存储数据或者通信传播中数据的冗余度,达到增大数据密度,最终使数据的存储空间减少的技术。数据压缩在文件存储和分布式系统领域有着十分广泛的应用。数据压缩也代表着尺寸媒介容量的增大和网络带宽的扩展。
  6. Diffie–Hellman密钥协商 
    Diffie–Hellman key exchange,简称“D–H”, 是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。
  7. Dijkstra’s 算法 
    迪科斯彻算法(Dijkstra)是由荷兰计算机科学家艾兹格·迪科斯彻 (Edsger Wybe Dijkstra)发明的。算法解决的是有向图中单个源点到其他顶点的最短路径问题。举例来说,如果图中的顶点表示城市,而边上的权重表示著城市间开车行经的距离,迪科斯彻算法可以用来找到两个城市之间的最短路径。
  8. 动态规划 
    动态规划是一种在数学和计算机科学中使用的,用于求解包含重叠子问题的最优化 问题的方法。其基本思想是,将原问题分解为相似的子问题,在求解的过程中通过子问题的解求出原问题的解。动态规划的思想是多种算法的基础,被广泛应用于计算机科学和工程领域。比较著名的应用实例有:求解最短路径 问题,背包问题 ,项目管理 ,网络流 优化等。这里也有一篇文章 说得比较详细。
  9. 欧几里得算法 
    在数学中,辗转相除法,又称欧几里得算法,是求最大公约数 的算法。辗转相除法首次出现于欧几里得 的《几何原本 》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术 》。
  10. 最大期望(EM)算法 
    在统计计算中,最大期望(EM)算法是在概率 (probabilistic )模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variable )。最大期望经常用在机器学习 和计算机视觉 的数据聚类 (Data Clustering )领域。最大期望算法经过两个步骤交替进行计算,第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;第二步是最大化(M),最大化在 E 步上求得的最大似然值来计算参数的值。M 步上找到的参数估计值被用于下一个 E 步计算中,这个过程不断交替进行。
  11. 快速傅里叶变换  (FFT)
    快速傅里叶变换(Fast Fourier Transform,FFT),是离散傅里叶变换 的快速算法,也可用于计算离散傅里叶变换的逆变换。快速傅里叶变换有广泛的应用,如数字信号处理 、计算大整数乘法 、求解偏微分方程 等等。本条目只描述各种快速算法,对于离散傅里叶变换的性质和应用,请参见离散傅里叶变换 。
  12. 哈希函数 
    Hash Function是一种从任何一种数据中创建小的数字“指纹”的方法。该函数将数据打乱混合,重新创建一个叫做散列值的指纹。散列值通常用来代表一个短的随机字母和数字组成的字符串。好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。
  13. 堆排序 
    Heapsort 是指利用堆积树 ( )这种数据结构所设计的一种排序算法。堆积树是一个近似完全二叉树 的结构,并同时满足堆积属性:即子结点的键值或索引总是小于(或者大于)它的父结点。
  14. 归并排序 
    Merge sort是建立在归并操作上的一种有效的排序 算法 。该算法是采用分治法 (Divide and Conquer)的一个非常典型的应用。
  15. RANSAC 算法 
    RANSAC 是”RANdom SAmple Consensus”的缩写。该算法是用于从一组观测数据中估计数学模型参数的迭代方法,由Fischler and Bolles在1981 提出,它是一种非确定性算法,因为它只能以一定的概率得到合理的结果,随着迭代次数的增加,这种概率是增加的。 该算法的基本假设是观测数据集中存在”inliers”(那些对模型参数估计起到支持作用的点)和”outliers”(不符合模型的点),并且这组观测数据受到噪声影响。RANSAC 假设给定一组”inliers”数据就能够得到最优的符合这组点的模型。
  16. RSA加密演算法 
    这是一个公钥加密算法,也是世界上第一个适合用来做签名的算法。今天的RSA已经专利失效,其被广泛地用于电子商务加密,大家都相信,只要密钥足够长,这个算法就会是安全的
  17. 并查集Union-find 
    并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。
  18. Viterbi algorithm 
    寻找最可能的隐藏状态序列(Finding most probable sequence of hidden states)

附录

分享到:
评论

相关推荐

    阵列信号处理中DOA算法分类总结(大全)

    ​ 阵列信号处理作为信号处理的一个重要分支,在通信、雷达、声纳、地震勘探和射电天文等领域内获得了广泛应用和迅速发展。阵列信号处理将一组传感器按一定方式布置在空间不同位置上,形成传感器阵列。用传感器阵列...

    人工智能之KNN算法.pdf

    ⼈⼯智能之 ⼈⼯智能之KNN算法 算法 转载⾃: 转载⾃: 基于python实现的KNN算法 邻近算法(k-NearestNeighbor) 是机器学习中的⼀种分类(classification)算法,也是机器学习中最简单的算法之⼀了。虽然很简单, 但...

    [最新整理公布][汇总II]微软等数据结构+算法面试100题[第1-80题]

    而,对你更重要的是,我自个还提供了答案下载,提供思路,呵。 所以,这份资料+答案,在网上是独一无二的。 ------------------------------------ 整理资源,下载地址: 答案系列: 1.[最新答案V0.3 版]微软等数据...

    论文研究-星形2-hub选址问题的多项式时间算法.pdf

    Hub作为特殊的设备在交通运输、邮政和电信网络中承担着交换、转载和整理的重要角色。研究一般网络中最小费用星形2-hub选址问题和最小时延星形2-hub选址问题,分别给出多项式时间算法,计算出2个hub的最佳位置。

    网络转载matlab格式 羊了个羊.rar

    通过Matlab实现"羊了个羊"游戏,不仅展示了Matlab强大的图形处理能力,也为编程爱好者和学生提供了一个有趣的学习平台,让他们能够在开发和玩耍中掌握编程逻辑、数据结构以及图形用户界面设计等重要概念。...

    蓄水池算法leetcode-LeetCode:个人学习的代码,做的LeetCode的题目

    蓄水池算法 leetcode leetcode中的标签有: 栈: 转载博客园中的一篇关于栈的文章: 通常程序开发中内存管理是非常重要的,而内存主要分为栈内存和堆内存。那么栈和堆内存有什么区别呢?希望在这篇文章里能带你找到...

    leetcode下载-Algo-notes:算法学习

    算法学习:后天的刻意练习掌握的一种能力 :hear-no-evil_monkey: 说明 本项目题目来源:力扣(LeetCode),少部分来源acwing。 题解来源于讨论区和个人理解后手打,仅用于个人复习和朋友间讨论。 题目著作权归力扣...

    人工智能AI、机器学习模型理解.pdf

    所以构建机器学习模型就显得⼗分的重要了。以线性回归为例⼦,⼤家可以看⼀下下⾯的图。 在寻找⽬标函数时,假如函数集范围太⼩,正如图左所⽰只是⼀次式项,那么很有可能⽬标函数不在函数集⾥⾯,也就说bias(偏差)...

    java8源码-fmiles:飞来飞去

    java8 源码 :thumbs_up:推荐 (Github 访问速度比较慢可能会导致部分图片无法刷新出来) :thumbs_up:推荐 书单已经被移动到 这个仓库。 介绍:关于 ...算法这部分内容非常重要,如果你不知道如何学习算法

    java8源码-JavaGuide:指南

    java8 源码 :thumbs_up:推荐 (Github 访问速度比较慢可能会导致部分图片无法刷新出来) :thumbs_up:推荐 书单已经被移动到 这个仓库。 介绍:关于 ...算法这部分内容非常重要,如果你不知道如何学习算法

    java8源码-mvp:MVP

    java8 源码 :thumbs_up:推荐 (Github 访问速度比较慢可能会导致部分图片无法刷新出来) :thumbs_up:推荐 书单已经被移动到 这个仓库。 介绍:关于 ...算法这部分内容非常重要,如果你不知道如何学习算法

    基于MATLAB的车道线/车辆/障碍物检测

    利用图像处理算法实时获取视频图像进行车道线检测,但现实行车环境复杂,比如存在视角遮挡、道路阴影、道路裂痕以及邻近车辆压线干扰等情况,以至于车道线不易提取且容易造成误检、漏检,因此如何实时、准确地检测出...

    机器人学中的状态估计 state estimation for robotics(英文版)

    这本书不只介绍了一些传统的经典算法,也涉及了最新的行业进展和应用,同时还传授了一些基础的数学工具。本书使用严谨的数学语言,同时又深入浅出,是初学者不可多得的良师益友。 ——自动驾驶公司AutoX创始人,原...

    改进三维网格分析和分割的马尔可夫随机场

    为了提高压缩、水印或简化等常见处理操作的效率,网格分析和聚类已成为重要问题。在此背景下,我们提出了一种新的聚类/标记三维网格的方法,给定任何与其顶点相关的标量值域(曲率,密度,粗糙度等)。我们的算法是...

    leetcode下载-leetcode-master:leetcode大师

    重要通知! 攻略里每篇文章都是公众号的文章链接,之前是为了方便,可随着star和fork的同学越来越多,发现文章链接的话没有办法及时修改题解,大家也没法参与进来,所以近期我会陆续将题解换回Markdown文件。 感谢每...

    计算机二级C语言考试题预测

    (16) 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(A) 注:P67 A. 控制流 B. 加工 C. 数据存储 D. 源和潭 (17) 软件需求分析阶段的工作...

    leetcode下载-leetcode:leetcode练习

    数据结构对于算法重构极其重要 目录 1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组...

    Android应用的反编译.pdf

    随着计算机软件的广泛应用,反编译已成为软件逆向工程的重要研究领域,文章给出了一种反编译Android应用的方法。通过对Android应用的反编译,可以推导出他人的思路、原理、结构、算法、处理过程、运行方法等设计要素,...

    seo教程培训四部曲.docx

    博客对于外链资源的增加起着重要的作用,容易添加外链、容易保存、不易被搜索引擎k掉。 第三:利用论坛签名:通过在论坛账号资料中设置自己的签名,每当在回复帖子、发表帖子的时候都将为自己增加外链。在选择论坛...

Global site tag (gtag.js) - Google Analytics