当前位置: 首页 > 编程笔记 >

确定性和非确定性算法之间的差异

越信鸥
2023-03-14
本文向大家介绍确定性和非确定性算法之间的差异,包括了确定性和非确定性算法之间的差异的使用技巧和注意事项,需要的朋友参考一下

在编程的上下文中,“算法”是依次执行一组明确定义的指令,以执行特定任务并获得所需的输出。在这里,我们说一组定义的指令,这意味着如果某个指令以预期的方式执行,那么某个地方的用户就会知道这些指令的结果。

根据有关指令结果的知识,有两种算法,即-确定性算法和非确定性算法。以下是两种算法之间的主要区别-

序号 确定性算法 非确定性算法
1 定义 唯一定义每个算法结果的算法称为确定性算法。换句话说,我们可以说确定性算法是执行固定步数并始终以相同结果接受或拒绝状态完成的算法。
另一方面,不是每个算法的结果都唯一定义并且结果可能是随机的算法被称为非确定性算法。
2 执行 在确定性算法执行中,目标计算机执行相同的指令并产生相同的结果,这与执行指令的方式或过程无关。 另一方面,在非确定性算法的情况下,允许执行每个操作的机器根据确定条件选择这些结果对象中的任何一个,以待稍后定义。
3 类型 基于确定性算法的执行和结果,对于机器将始终提供相同输出的特定输入指令,它们也被归类为可靠算法。 另一方面,对于特定的输入,非确定性算法被归类为非可靠算法,机器在不同的执行过程中会给出不同的输出。
4 执行时间处理时间 由于结果是已知的并且在不同的执行中是一致的,因此确定性算法需要多项式时间来执行它们。 另一方面,由于结果未知,并且在不同的执行中不一致,因此无法在多项式时间内执行非确定性算法。
5 执行路径 在确定性算法中,算法的执行路径在每次执行中都是相同的。 另一方面,在非确定性算法的情况下,每次执行中算法的执行路径都不相同,并且可以采用任意随机路径执行。
 类似资料:
  • 在形式语言的乔姆斯基分类中,我需要一些非线性、无歧义和非确定性上下文自由语言(N-CFL)的例子? > 线性语言:线性语法是可能的(⊆ 例如 L1={anbn|n≥ 0 } 确定性上下文自由语言(D-CFG):可以使用确定性推下自动机(D-PDA),例如 L2={anbncm|n≥0,m≥0} L2是明确的。 非线性的CF语法是非线性的 Lnl={w:na(w)=nb(w)}也是一个非线性CFG。

  • 介绍 非确定性是一种通过仅定义问题来解决问题的算法。非确定性程序自动选择符合条件的选项。这项技术很适合逻辑编程。 例如,以下代码返回一对数,其和是一个质数。其中一个数从'(4 6 7)选取,另一个从'(5 8 11)选取。 (let ((i (amb 4 6 7)) (j (amb 5 8 11))) (if (prime? (+ i j)) (list i j)

  • 程序设计语言让我们得以从烦冗的细节中脱身而出。Lisp 是一门优秀的语言,其原因在于它本身就帮我们处理如此之多的细枝末节,同时程序员对复杂问题的容忍是有限度的,而 Lisp 让程序员能从他们有限的耐受度中发掘出最大的潜力。 本章将会解说宏是怎么样帮助 Lisp 解决另一类重要的细节问题的:即,将非确定性算法转换为确定性算法的问题。 本章共分为五个部分。 第一部分 阐述了什么是非确定性。 第二部分

  • 或者也许有更好的框架专门为这类场景设计? 谢了。

  • 我是Scala的新手,我正在通过创建一些重试方案来练习Futures lib。这样做我得到了以下代码: 每次运行这段代码,我都会得到不同的结果。我得到的结果示例如下 产出1 产出2 欧普特 3 结果并不总是在成功和失败之间交替。在成功出现之前,可能会有不止几次失败的运行。 据我所知,应该只有4个“我是线程x”的日志这将失败。重试计数 x“,这些应如下所示: 不一定是按这个顺序——因为我不知道Sca

  • 我们对特使的电路断路进行的实验表明,结果并不确定。我们尝试使用如下设置故意跳闸电路,证明了这一点: 该服务是一个简单的Web服务器,它返回具有2秒时间延迟的(该时间延迟确保服务器在异步请求之间保持忙碌)。我们特使Sidecar配置的快照显示,我们启用断路(超文本传输协议/1.1),最多1个连接和1个挂起的请求: 接下来,我们通过向服务发送单个请求来测试这一点,它会像预期的那样可靠地响应。 但是,如