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

📅  最后修改于: 2021-04-24 20:53:07             🧑  作者: Mango

确定性算法中,对于给定的特定输入,计算机将始终通过相同的状态产生相同的输出,但是在非确定性算法的情况下,对于相同的输入,编译器可能会在不同的运行中产生不同的输出。实际上,非确定性算法无法在多项式时间内解决问题,也无法确定下一步是什么。非确定性算法可以针对不同执行情况下的相同输入显示不同的行为,并且具有一定程度的随机性。

为了实现非确定性算法,我们有几种语言,例如Prolog,但是它们没有标准的编程语言运算符,并且这些运算符也不是任何标准编程语言的一部分。

与非确定性算法有关的一些术语定义如下

  • choice(X):从集合X中随机选择任何值。
  • failure():表示不成功的解决方案。
  • success():解决方案成功,当前线程终止。

例子 :

Deterministic Algorithm Non-deterministic Algorithm
For a particular input the computer will give always same output. For a particular input the computer will give different output on different execution.
Can solve the problem in polynomial time. Can’t solve the problem in polynomial time.
Can determine the next step of execution. Cannot determine the next step of execution due to more than one path the algorithm can take.