【问题标题】:can an algorithm be a single instruction? [closed]算法可以是一条指令吗? [关闭]
【发布时间】:2021-03-27 19:06:57
【问题描述】:

算法这个词最常见的定义是:

“算法是一组有限有序的明确指令

这样说对吗

“算法是一组明确的指令/指令的有限有序集合”

一个算法可以只是一条指令吗?

【问题讨论】:

    标签: algorithm definition


    【解决方案1】:

    你引用的定义说算法是一个“有限有序集”,它不仅允许算法是单个指令(即具有一个元素的集合),它甚至允许让算法具有指令(即空集)。

    也就是说,我们不应该把“有限有序集合”理解得太严格,因为集合不能有重复的元素,而算法可以有重复的指令。此外,“相同”算法可能有多个不同的“实现”,它们不会严格来说是完全相同的有序指令集;参见例如Rosetta Code,其中列出了冒泡排序算法的许多不同实现,它们在严格的数学意义上都是不同的“指令集”,但在程序员和计算机科学家通常理解的意义上它们是相同的“算法” .

    所以真正的答案是,如果您定义“算法”一词来允许算法可以是一条指令,并且大多数定义要么允许它,不明确排除它,要么并不意味着严格无论如何都是数学定义。

    作为语法说明,为了包含集合大小为 1 的可能性,不必说 “指令集/指令集”;如果您想排除这种可能性,则必须说“至少包含两条指令”

    【讨论】:

      【解决方案2】:

      可以说是的,例如,您可能有一个添加两个值的算法(或者更有趣的是vectors of values?)

      这可能既是您的编程语言中的一条指令,也可能是处理器中的一条指令!

      处理器可能会做大量工作来执行指令(并且肯定会有自己的算法来执行此操作!),但它只有一个指令


      然而,你如何定义这样的东西有些模糊(所以我不会太担心),例如,如果你为自定义处理器编译(比如写给FPGA board的处理器),您可以使用极其复杂的算法制作自己的指令。

      .. 或者在逻辑处理器(例如著名的JVM)或中间表示(例如LLVM IR)上,您可能会遇到代码中的一条指令变成逻辑系统上的指令集合的情况,但是然后由现代处理器上的单个操作支持(我不知道这种情况的真实情况,但它肯定会发生在 LLVM 中)

      【讨论】:

        【解决方案3】:

        在这种情况下,您通常会将其称为指令,但我想这也是正确的。归根结底,这只是解释的问题,例如询问水是否湿。

        【讨论】:

          猜你喜欢
          • 2013-02-19
          • 1970-01-01
          • 2020-05-12
          • 1970-01-01
          • 1970-01-01
          • 2017-05-25
          • 1970-01-01
          • 1970-01-01
          • 2021-06-17
          相关资源
          最近更新 更多