是的,计算机算法

计算机算法(Computer algorithm)是一种按部就班的方式,详细描述计算机如何将输入转换成所需的输出,或者说算法是在计算机上执行的计算过程的具体描述。

编辑本段算法性质一个算法必须具有以下性质:(1)算法首先必须是正确的,即对于任何一组输入,包括合理输入和不合理输入,总能得到期望的输出。如果一个算法对于合理的输入只能得到期望的输出,而不能预测异常情况下的输出结果,那么它就是不正确的。(2)算法必须由一系列具体的步骤组成,每一步都可以被计算机理解和执行,而不是抽象模糊的概念。(3)每一步都有明确的执行顺序,即前一步在哪里,下一步是什么,必须明确无误。(4)算法再复杂,也必须在有限步数后结束并停止运行,即算法的步骤必须是有限的。在任何情况下,算法都不能陷入无限循环。一个问题的解可以有很多种表达方式,但只有满足以上四个条件的解才能称之为算法。编辑这个重要的算法A*搜索算法。

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

波束搜索

波束搜索法是一种求解优化问题的启发式方法。它是在分枝定界法的基础上发展起来的。它采用启发式方法估计k条最佳路径,只从这k条路径向下搜索,即只保留每层中满意的节点,其他节点永久丢弃,与分枝定界法相比可以大大节省运行时间。波束搜索在20世纪70年代中期首次应用于人工智能领域。1976年,Lowerre在其名为HARPY的语音识别系统中首次使用了波束搜索法。他的目标是并行搜索几个潜在的最优决策路径,以减少回溯并快速获得解决方案。

二分搜索算法

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

分支定界

分支定界算法是在问题的解空间树中搜索问题的解的方法。但与回溯算法不同的是,分支定界算法采用广度优先或最小代价优先的方法搜索解空间树,在分支定界算法中,每个活节点只有一次机会成为扩展节点。

数据压缩

数据压缩是通过减少存储在计算机中的数据或通信中的数据的冗余来增加数据密度并最终减少数据存储空间的技术。数据压缩广泛应用于文件存储和分布式系统中。数据压缩也代表了媒体容量大小的增加和网络带宽的扩大。

Diffie-Hellman密钥协商

Diffie-Hellman密钥交换(简称D–H)是一种安全协议。它允许双方通过不安全的通道建立密钥,而不需要对方的任何先验信息。该密钥可用作对称密钥,以在后续通信中加密通信内容。

Dijkstra算法

Dijkstra算法是荷兰计算机科学家Edsger Dijkstra发明的。该算法解决了有向图中单个源点到其他顶点的最短路径问题。例如,如果图中的顶点表示城市,边上的权重表示城市之间的行驶距离,则Dikoscher算法可用于查找两个城市之间的最短路径。

动态规划

动态规划是数学和计算机科学中用于解决具有重叠子问题的优化问题的方法。基本思想是将原问题分解成相似的子问题,在求解的过程中,通过子问题的求解得到原问题的解。动态规划的思想是许多算法的基础,并广泛应用于计算机科学和工程。著名的应用实例包括:求解最短路径问题、背包问题、项目管理、网络流量优化等。这里还有一篇文章更详细。

欧几里德算法

在数学中,传递除法又称为欧几里德算法,是一种求最大公约数的算法。相的划分最早出现在欧几里得的《几何原本》(第七卷,命题一、命题二),而在中国则可以追溯到《九章算术》,出现在东汉时期。

最大期望算法

在统计计算中,最大期望(EM)算法是寻找概率模型中参数的最大似然估计的算法,其中概率模型依赖于一个不可观测的隐藏变量。最大期望常用于机器学习和计算机视觉的数据聚类领域。最大期望算法分两步交替计算。第一步,计算期望(e),利用已有的估计值计算隐变量的最大似然估计值;第二步是最大化(m),最大化步骤e中得到的最大似然值来计算参数的值。在步骤m中找到的参数的估计值被用于下一个步骤e的计算中,并且该过程交替进行。

快速傅立叶变换

快速傅立叶变换(FFT)是离散傅立叶变换的一种快速算法,也可以用来计算离散傅立叶变换的逆。快速傅立叶变换有着广泛的应用,如数字信号处理、计算大整数乘法、解偏微分方程等。

散列函数

HashFunction是一种从任何类型的数据创建小型数字指纹的方法。这个函数对数据进行加扰,并重新创建一个称为哈希值的指纹。哈希值通常用于表示一个由随机字母和数字组成的短字符串。好的哈希函数在输入域很少出现哈希冲突。在哈希表和数据处理中,不抑制冲突来区分数据会使数据库记录更难找到。

堆排序

Heapsort是指利用堆树(heap)的数据结构设计的一种排序算法。堆树是一种近似的完全二叉树结构,它也满足堆属性:即子节点的键值或索引总是小于(或大于)其父节点。

合并分类

归并排序是一种基于归并操作的有效排序算法。这个算法是分而治之的一个非常典型的应用。

RANSAC算法

RANSAC是“RANdom SAmpleConsensus”的缩写。该算法是由Fischler和Bolles在1981提出的一种由一组观测数据估计数学模型参数的迭代方法。它是一种非确定性算法,因为它只能以一定的概率得到合理的结果,而且这个概率随着迭代次数的增加而增加。该算法的基本假设是观测数据集中存在“内点”(支持模型参数估计的那些点)和“离群点”(不符合模型的点),这组观测数据受到噪声的影响。RANSAC假设给定一组“内联者”数据,可以获得最佳模型。

RSA加密算法

这是一个公钥加密算法,也是世界上第一个适合签名的算法。如今的RSA专利已经过期,在电商加密中被广泛使用。大家都相信,只要密钥足够长,这个算法就会是安全的。

联合搜索

并集是一种树状数据结构,用于处理不相交集合的合并和查询。它通常用森林来表示。

维特比算法

寻找最可能的隐藏状态序列。编辑这段算法特征1。有有限性。一个算法应该包含有限的运算步骤,而不是无限的。事实上,“穷”往往意味着“在合理范围内”。如果让计算机执行一个持续了1000年的算法,虽然很差,但超过了合理的极限,人们也不把它当成有效的算法。2.确定性。算法中的每一步都应该是明确的,不应该含糊不清。算法中的每一步都不应该被解读成不同的意思,而应该非常清晰。换句话说,算法的意义应该是唯一的,不应该产生“歧义”。3.有零个或多个输入,所谓输入是指在执行算法时需要从外界获取必要的信息。4.有一个或多个输出。算法的目的是求解,没有输出的算法是没有意义的。5.有效性。算法中的每一步都要有效执行。并得到明确的结果。虽然编辑这一段的算法和程序与计算机程序密切相关,但两者也有区别:计算机程序是算法的实例,是通过某种计算机语言表达算法的具体形式;同样的算法可以用任何计算机语言来表达。算法列表图论路径问题0/1边权最短路径BFS非负边权最短路径(Dijkstra)可用于解决问题的特征负边权最短路径贝尔曼-福特贝尔曼-福特的Yen- Shi优化微分约束系统弗洛伊德广义路径问题传递闭包极大极小距离/欧拉路径/游哈密尔顿路径/游欧拉路径的混合图的构造/游陷阱算法哈密尔顿路径/游特殊图生成树问题最小生成树k最小生成树最优比率生成树0/ 1分式规划度约束生成树连通性问题强大的DFS算法无向图连通性切割点切割边两个连通分支有向图连通性强连通分支2-SAT最小点基有向无环图拓扑排序关系有向无环图与动态规划二部匹配问题一般图问题与二部图问题的转换思路最大匹配有向图最小路径覆盖0/ 网络流模型的简单特征最小覆盖完全匹配最优匹配稳定婚姻网络流问题1矩阵及其与线性规划的关系最大流最小割定理最大流问题带上下界的最大流问题最大流问题圈流的性质最小费用最大流/最大费用最大流弦图及组合数学中常用的思想的确定解决组合数学问题的近似递归/ 动态规划概率问题的Polya定理计算几何/解析几何计算几何的核心:叉积/面积解析几何的主力:复杂基点直线、线段多边形的凸多边形/凸包算法介绍、体积包裹法Graham扫描法的水平顺序介绍。 * * * Patch完美凸包算法相关任意多边形中两条直线和两条线段交点的确定凸多边形中点的确定经典问题最小外接圆近似O(n)最小外接圆算法点集直径旋转堵塞, 三角剖分数学/跟多边形最大公约数的数论欧几里德算法扩展欧几里德算法同余方程/高斯消去法解线性方程组解线性方程组解同余方程组解二元不定方程组解线性方程组解模2域上整系数方程组解矩阵行列式的计算利用矩阵乘法快速计算递归关系分数树联系分数逼近数论计算N的除数求phi(N), 求除数和快速数论变换...素数问题概率因子分解算法数据结构组织结构二叉堆左部部分树二叉树赢家树跳转表样式图标斜堆收割统计结构树数组虚拟二叉树线段树矩形区域并集圆形区域并集关系结构哈希表并集路径压缩思想数据结构向量在STL中的应用。德奎集合/映射动态规划/内存搜索动态规划与内存搜索思维方式的区别最长子序列系列问题最长非下降子序列最长常见* * *动态规划子序列树的一类NP问题的求解动态规划背包问题的动态规划优化四边形不等式的凸凹状态设计函数规划方向线性规划的常用思想二进制最小表示串KMPtree结构后缀树/后缀数组LCA/RMQ有限状态自动机理论排序选择/冒泡快速排序堆排序归并排序基数排序拓扑排序网络

延伸阅读:

1

《计算机算法设计与分析导论》,朱庆新等主编,人民邮电出版社。

开放分类:

计算机、算法