一个计算机算法必须具备五个特征?

计算机算法是在计算机上执行的计算过程的具体描述。计算机算法的五个特征:

1.有贫穷。

2.确定性。

3.输入。

4.可出口性。

5.有效性。

算法必须具有以下属性:

(1)算法首先必须是正确的,即对于任何一组输入,包括合理输入和不合理输入,总能得到期望的输出。如果一个算法对于合理的输入只能得到期望的输出,而不能预测异常情况下的输出结果,那么它就是不正确的。

(2)算法必须由一系列具体的步骤组成,每一步都可以被计算机理解和执行,而不是抽象模糊的概念。

(3)每一步都有明确的执行顺序,即前一步在哪里;下一步是什么,必须清楚明确。

(4)算法再复杂,也必须在有限步后结束并停止运行;也就是说,算法的步骤必须是有限的。在任何情况下,算法都不能陷入无限循环。

一个问题的解决方案可以用多种方式表达;但只有满足以上四个条件的解才能称为算法。

重要算法

折叠搜索算法

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

折叠波束搜索

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

折叠二分法中的搜索算法

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

折叠分支和绑定

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

折叠数据压缩

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

折叠式DiffieHellman密钥协商

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专利已经过期,在电商加密中被广泛使用。大家都相信,只要密钥足够长,这个算法就会是安全的。

折叠并集

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

折叠viterbi算法

寻找最可能的隐藏状态序列。