当前位置:首页 » 操作系统 » 算法的二义性

算法的二义性

发布时间: 2022-05-31 21:25:51

算法的五大特性是什么

  1. 输入:在算法中可以有零个或者多个输入。

  2. 输出:在算法中至少有一个或者多个输出。

  3. 有穷行:在执行有限的步骤之后,自动结束不会出现无限循环并且每一个步骤在可接受的时间内完成。

  4. 确定性:算法的每一个步骤都具有确定的含义,不会出现二义性。

  5. 可行性:算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限的次数完成。

⑵ 计算机算法的特性包括

1.输入:在算法中可以有零个或者多个输入
2.输出:在算法中至少有一个或者多个输出
3.有穷行:在执行有限的步骤之后,自动结束不会出现无限循环并且每一个步骤在
可接受的时间内完成
4.确定性:算法的每一个步骤都具有确定的含义,不会出现二义性
5.可行性:算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限
的次数完成

⑶ 评价算法的四个标准是什么

评价算法的四个标准:

1.正确性

能正确地实现预定的功能,满足具体问题的需要。处理数据使用的算法是否得当,能不能得到预想的结果。

2.易读性

易于阅读、理解和交流,便于调试、修改和扩充。写出的算法,能不能让别人看明白,能不能让别人明白算法的逻辑?如果通俗易懂,在系统调试和修改或者功能扩充的时候,使系统维护更为便捷。

3.健壮性

输入非法数据,算法也能适当地做出反应后进行处理,不会产生预料不到的运行结果。数据的形式多种多样,算法可能面临着接受各种各样的数据,当算法接收到不适合算法处理的数据,算法本身该如何处理呢?如果算法能够处理异常数据,处理能力越强,健壮性越好。

4.时空性

算法的时空性是该算法的时间性能和空间性能。主要是说算法在执行过程中的时间长短和空间占用多少问题。

算法处理数据过程中,不同的算法耗费的时间和内存空间是不同的。

(3)算法的二义性扩展阅读:

算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。此外,一个算法还具有下列5个重要的特性。

(1)、有穷性

一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。

(2)、确定性

算法中每一条指令必须有明确的含义,读者理解时不会产生二义性。即对于相同的输入只能得到相同的输出。

(3)、可行性

一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。

(4)、输入

一个算法有零个或多个的输入,这些输入取自于某个特定的对象的集合。

(5)、输出

一个算法有一个或多个的输出,这些输出是同输入有着某种特定关系的量。

⑷ 二义性文法G

是二义性的。
二义性定义:“若对于一个文法的某一句子存在两棵不同的语法树,则该文法是二义性文法。”

在本例中,对于句子“abc”有2棵不同的语法树:
S
|
------
| |
A c
|
ab

S
|
------
| |
a B
|
bc

因此这是二义性文法。

“若文法是二义性的,则在编译时就会产生不确定性,遗憾的是在理论上已经证明:文法的二义性是不可判定的,即不可能构造出一个算法,通过有限步骤来判定任一文法是否有二义性。
现在的解决办法是:提出一些限制条件,称为无二义性的充分条件,当文法满足这些条件时,就可以判定文法是无二义性的。
由于无二义性文法比较简单,我们也可以采用另一种解决办法:即不改变二义性文法,而是确定一种编译算法,使该算法满足无二义性充分条件。”

在本例中,例如可以添加限制条件:Ac的优先级高于aB,这样可以消除二义性。

⑸ 算法的重要特性有哪些呢

算法的五个重要的特征:确定性、可行性、输入、输出、有穷性/有限性。
算法是解决“做什么”和“怎么做”的问题。解决一个问题可能有多种不同的算法,从效率上考虑,其中最为核心的还是算法的速度。因此,解决问题的步骤需要在有限的时间内完成,并且操作步骤中不可以有歧义性语句,以免后继步骤无法继续进行下去。通过对算法概念的分析,可以总结出一个算法必须满足如下 5个特性。
(1)有穷性。一个算法在执行有限步骤后,在有限时间内能够实现的,就称该算法具有有穷性。
有的算法在理论上满足有穷性,在有限的步骤后能够完成,但是计算机可能实际上会执行一天、一年、十年等等。算法的核心就是速度,那么这个算法也就没有意义了。总而言之,有穷性没有特定的限度,取决于人们的需要。
(2)确定性。算法中每一个步骤的表述都应该是确定的、没有歧义的语句。在人们的日常生活中,遇到歧义性语句,可以根据常识、语境等理解,然而还有可能理解错误。计算机不比人脑,不会根据算法的意义来揣测每一个步骤的意思,所以算法的每一步都要有确定的含义。
(3)有零个或多个输入。程序中的算法和数据是相互联系的。算法中,需要输入的是数据的量值。输入可以是多个也可以是零个。其实,零个输入并不是这个算法没有输入,而是这个输入没有直观地显现出来,隐藏在算法本身当中。
(4)有一个输出或多个输出。输出就是算法实现所得到的结果,是算法经过数据加工处理后得到的结果。有的算法输出的是数值,有的是图形,有的输出并不是那么显而易见。没有输出的算法是没有意义的。
(5)可行性。算法的可行性就是指每一个步骤都能够有效地执行,并得到确定的结果,而且能够用来方便地解决一类问题。

⑹ 简述什么是二义性文法

如果文法G中的某个句子存在不只一棵语法树,则称该句子是二义性的。如果文法含有二义性的句子,则称该文法是二义性的。

二义性文法认为是一种语言语法的不完善说明,而且也应避免它。幸运的是,二义性文法在后面将介绍到的标准分析算法的测试中总是失败的,而且也开发出了标准技术体系来解决在程序设计语言中遇到的典型二义性。

(6)算法的二义性扩展阅读:

有两个解决二义性的基本方法。其一是:设置一个规则,该规则可在每个二义性情况下指出哪一个分析树(或语法树)是正确的。

在两结点之间,用一条有向边加以连接 (如○m→○n,通常我们把结点m称为结点n的直接前驱或父结点;而将结点n称为结点m的直接后继或子结点),且具有如下的性质:

(1) 在这组结点中,有一个且仅有一个没有任何前驱的结点,称之为“根”;

(2) 除根之外,每一结点都恰好有一个直接前驱;

(3) 对于每一结点,都有一条从根到此结点的通路;

(4) 若一个结点有多个直接后继,则按自左向右的顺序进行排序。

c语言算法中的五个特性是什么

C语言中的算法是指为解决某个特定问题而采取的确定且有限的步,主要的五个特性是:有穷性、确定性、可行性、有0个或多个输入、有一个或多个输出。

⑻ 为什么说不存在一个可以判断文法是否有二义性的算法 如题

二义性是那些模棱两可的语句产生的,所以不能用算法消除 追问: 不是消除,是判断 回答: 那也没有判断的,只能自己判断,因为二义性它不是错误语句,不管怎样它都能运行 追问: 难道不存在一个分析树算法,判断是否有两种分析树? 回答: 说实话我真没有见过有这种算法

⑼ 以下属于算法基本特征的是()A有确切的含义 B可以没有输入 C必须有输入数据 D可以有二义性

多选吧,A,B

算法的基本特征:可行性、确定性、有穷性、拥有足够的情报(有一个或多个输出、有 零个或多个输入) 。
有穷性 : 算法必须在有限时间内完成,必须执行有限个步骤终止。
确定性: 算法的每个步骤必须明确定义,不允许模棱两可的理解,也不允许有多义性。
有零个或多个输入: 所谓输入是指在需要从外界取得必要的信息。一个算法可以有多个输入,也可没有输入。
有一个或多个输出: 算法的目的就是为了求解,“解”就是输出
有效性: 算法的每个步骤都能实现,算法执行的结果能达到预期目的。

⑽ 计算机的算法具有哪些特性

计算机的算法具有可行性,有穷性、输入输出、确定性。

计算机算法特点

1.有穷性。一个算法应包含有限的操作步骤,而不能是无限的。事实上“有穷性”往往指“在合理的范围之内”。如果让计算机执行一个历时1000年才结束的算法,这虽然是有穷的,但超过了合理的限度,人们不把他视为有效算法。

2. 确定性。算法中的每一个步骤都应当是确定的,而不应当是含糊的、模棱两可的。算法中的每一个步骤应当不致被解释成不同的含义,而应是十分明确的。也就是说,算法的含义应当是唯一的,而不应当产生“歧义性”。

3. 有零个或多个输入、所谓输入是指在执行算法是需要从外界取得必要的信息。

4. 有一个或多个输出。算法的目的是为了求解,没有输出的算法是没有意义的。

5.有效性。 算法中的每一个 步骤都应当能有效的执行。并得到确定的结果。

拓展资料:

重要算法

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)。

参考资料:计算机算法

热点内容
centos使用python 发布:2024-05-18 23:39:48 浏览:867
幻影天龙脚本 发布:2024-05-18 23:38:17 浏览:712
编程的py 发布:2024-05-18 23:36:22 浏览:74
安卓系统怎么改序列号 发布:2024-05-18 23:28:16 浏览:783
c语言中实数 发布:2024-05-18 23:21:03 浏览:895
服务器搭建题目 发布:2024-05-18 23:01:29 浏览:28
下载武装突袭后怎么进服务器 发布:2024-05-18 22:56:17 浏览:825
c语言字符串大写变小写 发布:2024-05-18 22:56:16 浏览:438
重启删除的文件夹 发布:2024-05-18 22:34:11 浏览:638
视频软件源码 发布:2024-05-18 22:22:24 浏览:429