【发布时间】:2019-10-04 04:19:34
【问题描述】:
CLSR 说算法是一个“定义明确的过程”。“定义明确”究竟是什么意思。这是否意味着它不应该是模棱两可或不确定的。如果是,算法模棱两可或非确定性可能意味着什么。
【问题讨论】:
标签: algorithm turing-machines ambiguity non-deterministic
CLSR 说算法是一个“定义明确的过程”。“定义明确”究竟是什么意思。这是否意味着它不应该是模棱两可或不确定的。如果是,算法模棱两可或非确定性可能意味着什么。
【问题讨论】:
标签: algorithm turing-machines ambiguity non-deterministic
“定义明确的程序”只是意味着它应该包含一系列处理每个可能的输入变化的步骤。
例如,在决策树中,您需要考虑所有情况,直到到达叶子节点。以查找列表最大值的算法为例:
只遇到整数怎么办?你如何比较它们?如果您尝试比较数组中不同类型的两个元素会发生什么?数组中的元素可以取的值是否有限制?数组的大小如何?
因此,您可以在这些方面找到大量其他问题。算法需要能够回答所有这些问题,因此是“定义明确的”。
非确定性算法实际上是 CS 中一个非常大的领域。查看此维基百科链接以获取更多示例 Non-deterministic algorithms。这些算法可以在后续运行中为相同的输入生成不同的输出。例如使用硬币翻转打印“正面”或“尾部”的东西。因此,根据您的随机数,输出将在多次运行中发生变化。
将此与确定性算法进行比较,后者每次为相同的输入产生相同的输出
【讨论】: