繁体   English   中英

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

[英]What is the difference between a Turing Machine and an Algorithm?

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

它们非常不同。

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

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

例如,归并排序众所周知是O(n log(n)) 从 1960 年代 Donald Knuth 的人工 MIX 架构到今天的云中高度并行化的分布式实现,它以这种方式扩展。

但是在图灵机中,并行遍历两个 arrays 并写入第三个需要不断地在磁带中两个遥远的地方之间来回寻找以比较它们,然后再次寻找写入 output 的位置。 因此,虽然您可以构建一个实现可识别合并排序的图灵机,但它不会O(n log(n)) 不是一个国家英里。 事实上,它的表现会比冒泡排序差得多。 (因为冒泡排序只比较磁带上接近的事物,所以来回查找的时间更少。)

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

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 

所以在那里,我们已经定义了算法。 甚至还没有讨论过图灵机。

一旦定义了 m 元组,图灵机就只是一种算法。 通过设置磁带的初始 state 来定义输入。 一旦进程停止,算法的 output 是磁带的最终 state 和/或最终 state。 在给定输入的情况下,到达 output 的步骤由 m 元组和车床的一般计算规则决定: https://en.wikipedia.org/wiki/Turing_machine#Formal_definition

现在,确定图灵机是否真的会停止并为您提供“输出”是另一个兔子洞: https://en.wikipedia.org/wiki/Halting_problem

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM