Algorithm 图灵机和算法有什么区别?

Algorithm 图灵机和算法有什么区别?,algorithm,math,infinite,automata,turing-machines,Algorithm,Math,Infinite,Automata,Turing Machines,根据我的理解,图灵机只是一个算法的机器表示。算法和图灵机之间有什么区别吗?算法比图灵机要广泛得多。一个算法实际上只是由一些输入和一组跟随这些输入的指令组成。下面是一个非常简单的算法: Algorithm SumNumbers Input: A list of numbers L. Output: The sum of all numbers in L. if L.size = 0 return null sum <- 0 for each item in L, do

根据我的理解,图灵机只是一个算法的机器表示。算法和图灵机之间有什么区别吗?

算法比图灵机要广泛得多。一个算法实际上只是由一些输入和一组跟随这些输入的指令组成。下面是一个非常简单的算法:

Algorithm SumNumbers
  Input: A list of numbers L.
  Output: The sum of all numbers in L.
  if L.size = 0 return null
  sum <- 0
  for each item in L, do
    sum <- sum + item
  return sum 
算法
输入:数字列表L。
输出:L中所有数字的总和。
如果L.size=0,则返回null

sum它们非常不同

算法就是一个过程。它可以用多种方式指定,通常是用某种编程语言编写程序。相比之下,图灵机描述了一个适合在非常特定和不现实的机器上运行的过程

然而,算法的特性取决于它所运行的机器。图灵机看起来和现实世界中的任何机器都不一样。因此,虽然每个算法都可以用图灵机表示,但图灵机不是首选的表示。图灵机表示法掩盖了算法最有趣的特性

例如,众所周知,合并排序是
O(n log(n))
。从20世纪60年代Donald Knuth的人工混合体系结构到今天高度并行化的云计算分布式实现,它都以这种方式扩展


但在图灵机中,并行遍历两个数组并写入第三个数组需要不断地在磁带中两个遥远的位置之间来回寻找以比较它们,然后再次寻找写入输出的位置。因此,虽然您可以构建实现可识别合并排序的图灵机,但它不会是
O(n log(n))
。一英里也没有。事实上,它的表现要比泡沫式的糟糕得多。(因为气泡排序只比较磁带上相近的内容,所以来回搜索的时间更少。)

是的。我可以在不提供执行该算法的图灵机的情况下陈述一个算法。你能详细说明一下吗?非常感谢你这么好的解释。这对TMs来说有点苛刻,关键是它试图成为能够进行有效计算的最简单的系统,而不是运行时效率最高的系统。为什么不把重点放在答案中最好的部分——算法是问题的解决方案,TMs是这些解决方案的实现。