下面是一些比较重要的算法,原文
罗
列了32个,但我觉得有很多是数论里的,和计算机的不相干,所以没有选取。下面的这些,有的我们经常在用,有的基本不用。有的很常见,有的很偏。不过了解
一下也是好事。也欢迎你留下你觉得有意义的算法。(注:本篇文章并非翻译,其中的算法描述大部份摘自Wikipedia,因为维基百科描述的很专业了)
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),是离散傅里叶变换的快速算法,也可用于计算离散傅里叶变换的逆变换。快速傅里叶变换有广泛的应用,如数字信号处理、计算大
整数乘法、求解偏微分方程等等。本条目只描述各种快速算法,对于离散傅里叶变换的性质和应用,请参见离散傅里叶变换。
哈希函数
HashFunction是一种从任何一种数据中创建小的数字“指纹”的方法。该函数将数据打乱混合,重新创建一个叫做散列值的指纹。散列值通常用来代表
一个短的随机字母和数字组成的字符串。好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找
到。
堆排序
Heapsort是指利用堆积树(堆)这种数据结构所设计的一种排序算法。堆积树是一个近似完全二叉树的结构,并同时满足堆积属性:即子结点的键值或索引总是小于(或者大于)它的父结点。
归并排序
Merge sort是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
RANSAC 算法
RANSAC 是”RANdom
SAmpleConsensus”的缩写。该算法是用于从一组观测数据中估计数学模型参数的迭代方法,由Fischler and
Bolles在1981提出,它是一种非确定性算法,因为它只能以一定的概率得到合理的结果,随着迭代次数的增加,这种概率是增加的。该算法的基本假设是
观测数据集中存在”inliers”(那些对模型参数估计起到支持作用的点)和”outliers”(不符合模型的点),并且这组观测数据受到噪声影响。
RANSAC 假设给定一组”inliers”数据就能够得到最优的符合这组点的模型。
RSA加密演算法
这是一个公钥加密算法,也是世界上第一个适合用来做签名的算法。今天的RSA已经专利失效,其被广泛地用于电子商务加密,大家都相信,只要密钥足够长,这个算法就会是安全的
并查集Union-find
并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。
Viterbi algorithm
寻找最可能的隐藏状态序列(Finding most probable sequence of hidden states)
BTW:
关于这个世界上的算法,你可以看看Wikipedia的这个网页:http://en.wikipedia.org/wiki/List_of_algorithms
关于排序算法,你可以看看本站的这几篇文章《一个显示排序过程的Python脚本
》、《一个排序算法比较的网站
》觉得不错,有兴趣的同学随便看看。
分享到:
相关推荐
matlab经典算法的程序源码 数学建模算法汇总资料: matlab经典算法的程序源码 十大算法讲义.pdf 排队模型.pdf 数学建模算法全收录.pdf 数学建模算法大全.pdf 算法大全第01章__线性规划.pdf 算法大全第02章_整数规划....
"JAVA经典算法90题【含源码】"的资源集合为Java初学者提供了一个绝佳的学习平台,旨在通过实际操作来理解和应用各种基础及进阶算法。下面将详细阐述这些算法题目所涉及的知识点,并建议的学习路径。 首先,"JAVA...
### 更多Windows白话经典算法之七大排序第2版(高清) #### 一、概览 本书《更多Windows白话经典算法之七大排序第2版》是一部深入浅出讲解七种经典排序算法的著作,旨在帮助读者理解并掌握冒泡排序、直接插入排序...
《经典算法大全(中文版)》是一本涵盖了59种常用算法的综合指南,对于学习和理解算法有着极高的参考价值。这本书不仅包含了基础的算法,如河内之塔、费式数列、三色棋、杨辉三角、八皇后问题,还深入探讨了更多高级...
经典算法是任何程序员必备的技能,无论是在解决复杂问题、优化代码性能还是面试中,都发挥着至关重要的作用。在这个名为"AlgorithmGossip"的压缩包文件中,我们可以期待找到一些与Java算法相关的知识点和实践示例。 ...
根据给定的信息,我们可以从标题、描述以及部分代码中提炼出一些重要的C语言经典算法知识点。下面将逐一解析这些知识点: ### C语言100个经典算法 #### 知识点1:斐波那契数列 **描述**:斐波那契数列是一个非常...
C语言的100个经典算法,面试必考,c coder掌握,经典c算法程序讲解
"C 100经典算法 经典案例"这个资源集合了C语言中100个经典算法,对于初学者和进阶者来说都是极具价值的学习材料。下面将详细阐述这些算法的重要性以及它们涵盖的知识点。 1. **排序算法**:包括冒泡排序、选择排序...
本主题提供了100个经典算法,涵盖了从基础到高级的数据结构和算法,非常适合初学者学习。以下是一些主要知识点的详细说明: 1. **河内塔 (Towers of Hanoi)**: 这是一个经典的递归问题,通过三个柱子和若干个大小...
《C语言100个经典算法》是一本深入学习C语言编程技巧与算法实现的宝贵资源,适合准备考试和面试的编程爱好者。该压缩包包含了两份关键文件:《经典算法(C语言).doc》和《C语言100个经典算法.pdf》,它们详细介绍了...
"C++常用经典算法源码"集合了多个核心算法领域的实现,对于学习和提升C++编程技能,以及深入理解算法原理极具价值。 首先,我们来看"第1章 高精度计算"。高精度计算涉及到大整数运算,通常在标准库类型无法满足精度...
【经典算法_C++_很全面】这一资源主要涵盖了在计算机科学和编程领域中常见的算法,这些算法对于提升编程技能和解决实际问题至关重要。C++作为一种高效且强大的编程语言,被广泛用于算法实现,它的面向对象特性使得...
《C语言常见问题与经典算法》是一份宝贵的资源,它涵盖了C语言编程中常见的问题以及一系列重要的算法。C语言作为基础且广泛使用的编程语言,对于理解计算机底层运作和开发高效程序至关重要。这份压缩包文件提供了两...
室内定位是现代技术中的一个重要领域,特别是在物联网(IoT)和智能建筑的背景下。本文将深入探讨三种经典的室内定位算法...在设计和优化室内定位系统时,选择合适的算法至关重要,而这三种经典算法无疑是很好的起点。
【标题】"经典算法题大全"揭示了这个压缩包的核心内容——它是一个包含大量算法问题的集合,专门针对像蓝桥杯这样的编程竞赛。蓝桥杯是中国一项知名的计算机编程比赛,旨在提升参赛者的算法设计与实现能力。这些题目...
《经典算法大全》是一本全面涵盖各种常用算法的宝贵资源,包含了从基础到高级的各种算法实现,旨在帮助读者深入理解并掌握算法的核心概念。这本书以PDF格式提供,方便电子阅读和学习。其中涉及的算法类型广泛,包括...
计算机经典算法是编程和软件开发中的核心组成部分,它们在解决复杂问题时发挥着至关重要的作用。下面将分别介绍这些算法的细节和应用。 1. **分治策略**:这是一种将大问题分解为小问题来解决的方法。典型的分治...
本压缩包文件的主题聚焦于“最短路径经典算法”,它提供了源码,使得开发者可以直接使用并进行开发。 最短路径问题的核心是寻找在给定网络(通常是图)中,两个节点之间具有最小成本或时间的路径。这个问题的解决...
标题中的"C++ 100个经典算法"指的是在学习C++编程时,经常会遇到的一系列重要的算法问题。这些算法涵盖了排序、搜索、图论、动态规划等多个领域,是提升编程能力和解决实际问题的关键。通过学习和理解这些算法,...