来源: 深度学习与机器视觉

奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)的Christoph Koutschan博士在自己的页面上发布了一篇文章,提到他做了一个调查,参与者大多数是计算机科学家,他请这些科学家投票选出最重要的算法,以下是这次调查的结果,按照英文名称字母顺序排序。

1、A* 搜索算法——图形搜索算法,从给定起点到给定终点计算出路径。其中使用了一种启发式的估算,为每个节点估算通过该节点的最佳路径,并以之为各个地点排定次序。算法以得到的次序访问这些节点。因此,A*搜索算法是最佳优先搜索的范例。

公式表示为: f(n)=g(n)+h(n)

其中,f(n) 是从初始状态经由状态n到目标状态的代价估计,

g(n) 是在状态空间中从初始状态到状态n的实际代价,

h(n) 是从状态n到目标状态的最佳路径的估计代价。

2、集束搜索(又名定向搜索,Beam Search)一种启发式图搜索算法,通常用在图的解空间比较大的情况下,为了减少搜索所占用的空间和时间,在每一步深度扩展的时候,剪掉一些质量比较差的结点,保留下一些质量较高的结点。这样减少了空间消耗,并提高了时间效率。最佳优先搜索算法的优化。使用启发式函数评估它检查的每个节点的能力。不过,集束搜索只能在每个深度中发现最前面的m个最符合条件的节点,m是固定数字——集束的宽度。

3、二分查找(Binary Search)——在线性数组中找特定值的算法,每个步骤去掉一半不符合要求的数据。也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

4、分支界定算法(Branch and Bound)——在多种最优化问题中寻找特定最优化解决方案的算法,特别是针对离散、组合的最优化。

把全部可行解空间反复地分割为越来越小的子集,称为分支;并且对每个子集内的解集计算一个目标下界(对于最小值问题),这称为定界。在每次分枝后,凡是界限超出已知可行解集目标值的那些子集不再进一步分枝,这样,许多子集可不予考虑,这称剪枝。这就是分枝定界法的主要思路。

5、Buchberger算法——一种数学算法,可将其视为针对单变量最大公约数求解的欧几里得算法和线性系统中高斯消元法的泛化。

6、数据压缩——采取特定编码方案,使用更少的字节数(或是其他信息承载单元)对信息编码的过程,又叫来源编码。

7、Diffie-Hellman密钥交换算法——一种加密协议,允许双方在事先不了解对方的情况下,在不安全的通信信道中,共同建立共享密钥。该密钥以后可与一个对称密码一起,加密后续通讯。

8、Dijkstra算法——针对没有负值权重边的有向图,计算其中的单一起点最短算法。从一个顶点到其余各顶点的最短路径算法,它应用了贪心算法模式,是目前公认的较好的求解最短路径的方法。

9、离散微分算法(Discrete differentiation)

f'(x)=(f(x + h)-f(xh))/2h

10、动态规划算法(Dynamic Programming)——展示互相覆盖的子问题和最优子架构算法

11、欧几里得算法(Euclidean algorithm)——计算两个整数的最大公约数。最古老的算法之一,出现在公元前300前欧几里得的《几何原本》。

12、期望-最大算法(Expectation-maximizationalgorithm,又名EM-Training)——在统计计算中,期望-最大算法在概率模型中寻找可能性最大的参数估算值,其中模型依赖于未发现的潜在变量。EM在两个步骤中交替计算,第一步是计算期望,利用对隐藏变量的现有估计值,计算其最大可能估计值;第二步是最大化,最大化在第一步上求得的最大可能值来计算参数的值。

13、快速傅里叶变换(Fast Fourier transform,FFT)——计算离散的傅里叶变换(DFT)及其反转。该算法应用范围很广,从数字信号处理到解决偏微分方程,到快速计算大整数乘积。

14、梯度下降(Gradient descent)——一种数学上的最优化算法。

梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。在机器学习中,基于基本的梯度下降法发展了两种梯度下降方法,分别为随机梯度下降法和批量梯度下降法。

15、哈希算法(Hashing)

哈希是一种加密算法,也称为散列函数或杂凑函数。哈希函数是一个公开函数,可以将任意长度的消息M映射成为一个长度较短且长度固定的值H(M),称H(M)为哈希值、散列值(Hash Value)、杂凑值或者消息摘要。它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。

16、堆排序(Heaps)

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

17、Karatsuba乘法——需要完成上千位整数的乘法的系统中使用,比如计算机代数系统和大数程序库,如果使用长乘法,速度太慢。该算法发现于1962年。

18、LLL算法(Lenstra-Lenstra-Lovaszlattice reduction)——以格规约(lattice)基数为输入,输出短正交向量基数。LLL算法在以下公共密钥加密方法中有大量使用:背包加密系统(knapsack)、有特定设置的RSA加密等等。

19、最大流量算法(Maximum flow)——该算法试图从一个流量网络中找到最大的流。它优势被定义为找到这样一个流的值。最大流问题可以看作更复杂的网络流问题的特定情况。最大流与网络中的界面有关,这就是最大流-最小截定理(Max-flow min-cut theorem)。Ford-Fulkerson 能找到一个流网络中的最大流。

20、合并排序(Merge Sort)

合并排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。合并排序也叫归并排序。

21、牛顿法(Newton's method)——求非线性方程(组)零点的一种重要的迭代法。

22、Q-learning学习算法——这是一种通过学习动作值函数(action-value function)完成的强化学习算法,函数采取在给定状态的给定动作,并计算出期望的效用价值,在此后遵循固定的策略。Q-leanring的优势是,在不需要环境模型的情况下,可以对比可采纳行动的期望效用。

23、两次筛法(Quadratic Sieve)——现代整数因子分解算法,在实践中,是目前已知第二快的此类算法(仅次于数域筛法Number Field Sieve)。对于110位以下的十位整数,它仍是最快的,而且都认为它比数域筛法更简单。

24、RANSAC——是“RANdom SAmple Consensus”的缩写。该算法根据一系列观察得到的数据,数据中包含异常值,估算一个数学模型的参数值。其基本假设是:数据包含非异化值,也就是能够通过某些模型参数解释的值,异化值就是那些不符合模型的数据点。

25、RSA——公钥加密算法。首个适用于以签名作为加密的算法。RSA在电商行业中仍大规模使用,大家也相信它有足够安全长度的公钥。

26、Schönhage-Strassen算法——在数学中,Schönhage-Strassen算法是用来完成大整数的乘法的快速渐近算法。其算法复杂度为:O(N log(N) log(log(N))),该算法使用了傅里叶变换。

27、单纯型算法(Simplex Algorithm)——在数学的优化理论中,单纯型算法是常用的技术,用来找到线性规划问题的数值解。线性规划问题包括在一组实变量上的一系列线性不等式组,以及一个等待最大化(或最小化)的固定线性函数。

28、奇异值分解(Singular value decomposition,简称SVD)——在线性代数中,SVD是重要的实数或复数矩阵的分解方法,在信号处理和统计中有多种应用,比如计算矩阵的伪逆矩阵(以求解最小二乘法问题)、解决超定线性系统(overdetermined linear systems)、矩阵逼近、数值天气预报等等。

29、求解线性方程组(Solving a system of linear equations)——线性方程组是数学中最古老的问题,它们有很多应用,比如在数字信号处理、线性规划中的估算和预测、数值分析中的非线性问题逼近等等。求解线性方程组,可以使用高斯—约当消去法(Gauss-Jordan elimination),或是柯列斯基分解( Cholesky decomposition)。

30、Strukturtensor算法——应用于模式识别领域,为所有像素找出一种计算方法,看看该像素是否处于同质区域( homogenous region),看看它是否属于边缘,还是是一个顶点。

31、合并查找算法(Union-find)——给定一组元素,该算法常常用来把这些元素分为多个分离的、彼此不重合的组。不相交集(disjoint-set)的数据结构可以跟踪这样的切分方法。合并查找算法可以在此种数据结构上完成两个有用的操作:

查找:判断某特定元素属于哪个组。

合并:联合或合并两个组为一个组。

32、维特比算法(Viterbi algorithm)——寻找隐藏状态最有可能序列的动态规划算法,这种序列被称为维特比路径,其结果是一系列可以观察到的事件,特别是在隐藏的Markov模型中。

维特比算法是一种动态规划算法用于寻找最有可能产生观测事件序列的-维特比路径-隐含状态序列,特别是在马尔可夫信息源上下文和隐马尔可夫模型中。术语“维特比路径”和“维特比算法”也被用于寻找观察结果最有可能解释相关的动态规划算法。例如在统计句法分析中动态规划算法可以被用于发现最可能的上下文无关的派生(解析)的字符串,有时被称为“维特比分析”。

未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。

未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

计算机、数学、运筹学等领域32个重要算法相关推荐

  1. 两个矩阵是否相交的算法_收藏 | 计算机、数学、运筹学等领域的32个重要算法...

    来源:大数据 本文约2500字,建议阅读5分钟. 本文为你分享计算机.数学.运筹学等领域的32个重要算法. [ 导读 ] 奥地利符号计算研究所(Research Institute for Symbo ...

  2. 计算机、数学、运筹学等领域的32个重要算法

    奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)的Christoph Koutschan博士在自己的页面上发布了一篇文章,提 ...

  3. 计算机数学专业是应用数学专业吗,大学数学系的数学与应用数学专业学什么课程内容?...

    数学,现在大多分为纯数学和应用数学,但最终都是应用数学. 数学与应用数学是计算机专业的基础和上升的平台,是与计算机科学与技术联系最为紧密的专业之一,在计算机领域做出很好的成果的,大多是数学专业背景.在 ...

  4. 计算机的数学思想源头(回复“计算机数学”可下载PDF典藏版)

    计算机的数学思想源头(回复"计算机数学"可下载PDF典藏版) 2018-04-16 数据简化DataSimp 数据简化DataSimp导读:前篇<计算机诞生的详细历史> ...

  5. 计算机数学与数学文化-定义

    计算机数学与数学文化-定义-2020-5-10 目录 一.函数模型 二.极限思想 三.变化率思想-导数 四.导数的应用 五.不定积分 六.定积分及其运用 七.线性代数 八.趣味图论 一.函数模型 定义 ...

  6. 游安军编著的计算机数学答案,计算机数学

    前言 作为计算机数学的入门教材,本书主要介绍计算机技术.信息科学中所涉及的最基础的数学知识.其目的是不仅展示数学的应用性,而且通过数学知识的扩展来培养学生的逻辑思维和抽象能力,为计算机专业学生的可持续 ...

  7. 【历史上的今天】3 月 28 日:EPROM 的发明者出生;计算机进入艾滋病研究领域

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 3 月 28 日,1897 年 3 月 28 日,意大利数学家布拉里·福蒂在巴洛摩数学会上提出了的悖 ...

  8. 计算机数学课程标准,小学数学课程标准

    导语:小学数学是义务教育的一门重要学科.从小给学生打好数学的初步基础,发展思维能力,培养创新意识.实践能力和学习数学的兴趣,养成良好的学习习惯,以下小编为大家介绍小学数学课程标准课件文章,欢迎大家阅读 ...

  9. 本科学计算机数学吗,计算机科学本科核心课程教材·计算机数学

    计算机科学本科核心课程教材·计算机数学 语音 编辑 锁定 讨论 上传视频 <计算机科学本科核心课程教材·计算机数学>是2010年清华大学出版社出版的图书,作者是梅金森.本书主要介绍了计算机 ...

最新文章

  1. NeHe OpenGL教程 第二十三课:球面映射
  2. 硬核! 逛了4年Github ,一口气把我收藏的 Java 开源项目分享给你
  3. Intel VT学习笔记(五)—— 调试技巧
  4. centos7 安装 oracle 11G
  5. OpenStack组件
  6. [转]了解ASP.NET MVC几种ActionResult的本质:EmptyResult ContentResult
  7. 前端学习(2421):项目反馈
  8. spark union 会引起shuffle吗_脑鸣不是耳鸣 会引起听力下降吗?
  9. [杂]实用工具与链接
  10. 电子招投标:采购全方位提速、助推全程电子化交易
  11. 我解决了net framework 4安装失败,提示找不到指定文件的问题
  12. 阿里云服务器Discuz论坛程序安装
  13. 一个医院院长的信息化建设感悟:信息化条件下的流程再造
  14. 计划招收300人,复旦大学计算机学院2022年夏令营来袭
  15. 深度学习入门(一)快速建立自己的图片数据集
  16. Tita绩效宝:在360度评估中要问的10个最佳问题
  17. 一文教你看懂Fama-French三因子模型
  18. matlab commsrc.pn,poly2trellis
  19. 【比赛向】东京证卷交易所预测-赛题理解(Kaggle_2022_Structured Data)
  20. js实现html网页页面多语言化

热门文章

  1. 【经典书】图论,322页pdf
  2. 推荐一个 Python 手绘图形库(附代码)
  3. 福布斯2021年十大最佳人工智能硕士课程,清华、港大入选
  4. 独家 | 秘籍:10个Python字符串处理技巧(附代码)
  5. 姚期智、MJ、吴建平等5位大咖对话速记:10年后人们还能保持对AI的热忱吗?
  6. 手把手教你安装深度学习软件环境(附代码)
  7. 来看看几篇Nature上的GNN吧~
  8. 跳转Activity闪退
  9. 2020年必学的 10 大算法
  10. SAP RETAIL 特征参数文件(Characteristic Profile) II