Questions tagged «turing-completeness»


9
为什么图灵的某些编程语言比较完整,但缺乏其他语言的某些功能?
在编写(应该)挂钩到外部程序/函数的解释器时遇到一个奇怪的问题:'C'和'C ++'中的函数不能挂钩可变参数,例如,我无法创建调用'printf'的函数具有与它完全相同的参数,而必须调用采用可变参数的替代版本。这是非常有问题的,因为我希望能够制作一个持有匿名钩子的对象。 因此,我认为这很奇怪,因为Forth,JavaScript和也许其他多种语言都可以很容易地做到这一点,而不必求助于汇编语言/机器代码。由于其他语言可以很容易地做到这一点,这是否意味着每种编程语言可以解决的问题类别实际上也会因语言而有所不同,即使这些语言都已经完成了图灵处理?

9
C实际上是图灵完备的吗?
我试图向某人解释C是图灵完备的,并且意识到我实际上并不知道它在技术上确实是图灵完备的。(C代表抽象语义,而不是实际实现。) 就我所知,“明显”的答案(大致:它可以处理任意数量的内存,因此它可以仿真RAM机器,因此它是图灵完成的)实际上是不正确的,尽管C标准允许要使size_t任意大,必须将其固定为一定的长度,并且无论将其固定为多长都是有限的。(换句话说,尽管您可以给定一台任意停止的图灵机,选择一个size_t的长度以使其能够“正常”运行,但没有办法选择一个size_t的长度,以使所有停止的图灵机都能正常运行) 所以:C99 Turing完成了吗?

5
图灵完善意味着什么?
我看到大多数关于图灵完备的定义在一定程度上都是重言式的。例如,如果您的Google“图灵完全意味着什么”,您将获得: 如果计算机可以解决图灵机可以解决的任何问题,那么图灵计算机就是完整的。 尽管已经很好地定义了不同的系统是否都完成了Turing,但我还没有看到关于Turing完成的含义/后果的解释。 在不存在还可以执行相同任务的非图灵机的情况下,图灵机可以做什么?例如,一台计算机可以执行诸如之类的简单计算(1+5)/3=?,但是普通的计算器也可以执行这些计算,如果我是对的,那是非图灵完整的。 有没有一种方法可以定义Turing Machine的功能而不仅仅是说“能够模拟另一台Turing Machine”?

5
普通语言能否图灵完整?
我在阅读有关Iota和Jot的文章,发现本节令人困惑: 与Iota不同,在Iota中,字符串的语法树可以在左侧或右侧分支,而Jot语法统一在左分支。结果,Iota完全不受上下文限制,但Jot是常规语言。 我的理解是Iota和Jot都完成了。但显然,一个是上下文无关的,另一个是常规的!常规语言肯定不能完善图灵吗?

7
所有图灵语言是否可以互换
注意,虽然我知道如何编程,但我还是CS理论的初学者。 根据这个答案 图灵完整性是可计算性的抽象概念。如果一种语言是图灵完备的语言,那么它就可以进行任何其他图灵完备的语言可以进行的计算。 并写在任何图灵完备的语言的任何程序可以在另一个被改写。 好。这很有道理。我可以将C转换(编译)为Assembly(并且每天都做!),也可以将Assembly转换为C(您可以使用C编写虚拟机)。同样适用于任何其他语言-您可以将任何一种语言编译为Assembly,然后在用另一种其他语言编写的VM中运行它。 但是,可以任意写在一个图灵完备的语言程序重新编写的另一个? 如果我的部件具有LIGHTBUTTON操作码怎么办?在没有灯泡的情况下,我实际上无法在系统(语言)上模拟该语言。 好。因此,您会说,由于我们正在处理计算机理论,因此我们不在讨论物理设备限制。 但是,没有乘法的设备呢?师?据我所知(尽管这更多是关于math.SE的问题),无法模拟加法和减法的乘法(绝对不是除法)[1]。 那么,“图灵完整语言”(可以添加,减去和跳转)如何模仿另一种可以添加,减去,乘法和跳转的语言呢? 编辑 [1]。关于任意实数。

1
do-while循环足以满足图灵完整性吗?
我知道,在命令式编程语言中,while-do循环足以构成使图灵完成的语言的控制流构造(就控制流而言,当然,我们还需要无限制的内存和某些运算符...) 。我的问题的要点是:do-while循环是否具有与while-do-循环相同的计算能力?换句话说,如果不可能完全跳过指令,那么一种语言可以是图灵完备的吗? 我意识到这里的某些语义可能有点模棱两可,所以让我用一个特定的例子来表达实际问题: Brainfuck(BF)是一个图灵tarpit,其中唯一的控制流是while-do循环,表示为[...](问题的底部有一个完整的语言规范,以防您不熟悉Brainfuck。让我们定义一种新的语言BF *,它,.+-<>的语义与BF中的语义相同,但是代替它的[]是{},它具有do-while循环。也就是说,与BF的唯一区别是每个循环至少可以执行一次,然后才能跳过进一步的迭代。 BF *图灵完成了吗?如果是这样,我会对如何将BF转换为BF *感兴趣。如果不是,我该如何证明? 我自己的一些观察: 并非每个BF程序都可以转换为BF *。例如,不可能用BF *编写可能会或可能不会读取或打印值的程序-如果该程序可能打印一个或多个值,它将始终打印至少一个。但是,可能存在BF的图灵完备子集,可以将其转换为BF *。 我们不能简单地将[f](f仅由组成的任意Brainbrauck程序翻译成+-[]<>)(以消除第一次迭代的效果),因为a)并非每个可计算的函数都具有可计算的逆,并且b)即使有,循环次数不一定会比因此少,因此不能保证首先递归地执行此步骤。f-1{f}f-1f 这是Brainfuck语言的快速概述。Brainfuck在无限磁带上操作,其中每个单元包含一个字节值,最初为零。溢出会回绕,因此增加255可得到0,反之亦然。该语言包含8条指令: + Increment the current cell. - Decrement the current cell. > Move tape head to the right. < Move tape head to the left. , Input a character from STDIN into the current cell. . …

5
为什么图灵功能语言完整?
也许我对这个主题的有限理解是错误的,但这是我到目前为止所了解的: 函数式编程基于Alonzo Church制定的Lambda微积分。 命令式编程基于教会学生Alan Turing制作的Turing机器模型。 Lambda演算的功能和图灵机一样强大, 这意味着它们的计算能力相当。 如果函数式编程基于Lambda演算而不是Turing机器,那么为什么其中某些(或全部)描述为Turing完整,而不是Lambda完整或类似的东西?“图灵完备性”一词在图灵机上是否有任何特殊之处,还是仅此一个词? 最后,如果命令式语言基于Turing Machine,而计算机基本上是Turing计算机,没有无限的内存,这是否意味着它们在我们现代PC上的性能优于功能编程语言? 如果是这样的话,那么lambda演算机器的等效条件是什么? 我知道这似乎是3个独立的问题,但它们都是紧密相关的,并且每个问题都取决于前一个问题是否是有效的问题。




2
是什么使PROLOG Turing完整?
我知道可以通过构建一个模拟图灵机的程序来证明PROLOG是图灵完备的: turing(Tape0, Tape) :- perform(q0, [], Ls, Tape0, Rs), reverse(Ls, Ls1), append(Ls1, Rs, Tape). perform(qf, Ls, Ls, Rs, Rs) :- !. perform(Q0, Ls0, Ls, Rs0, Rs) :- symbol(Rs0, Sym, RsRest), once(rule(Q0, Sym, Q1, NewSym, Action)), action(Action, Ls0, Ls1, [NewSym|RsRest], Rs1), perform(Q1, Ls1, Ls, Rs1, Rs). symbol([], b, []). symbol([Sym|Rs], Sym, …

2
与非门之间的连接和图灵完整性
我知道NAND门可用于创建实现每个真值表的电路,现代计算机由NAND门构成。与非门与图灵完整性之间的理论联系是什么?在我看来,“与非”门电路比图灵机更接近有限自动机。我的直觉是,我可以构建触发器,并因此从NAND门之外构建寄存器和存储器,并且无限制的存储器是Turing完整系统的关键属性。我正在寻找更理论或数学上的解释,或关于阅读内容的指导。

1
图灵决定类问题是否有一个完整的问题?
语言,如是在许多一减少。看到也有完整的问题也很简单。S. Schmitz [1]考虑了和\ text {REC}之间的一些类。对于这些类别,在经过特殊设计的缩减下,它们会带来完全的问题。HALTTMHALTTM\text{HALT}_{TM}RE-completeRE-complete\textsf{RE-complete}co-REco-RE\text{co-RE}ELEMELEM\text{ELEM}RECREC\text{REC} 相对于较弱的缩减,(aka)是否存在完整的问题?减少Turing是不合适的,因为它们有能力完成所有工作。我们是否应该期望这种简化是虚构的(例如,仅限于原始递归的多次缩减)?R=RE∩co-RER=RE∩co-RE\textsf{R} = \textsf{RE} \cap \textsf{co-RE}RECREC\textsf{REC} [1] 2013年以后的 Sylvain Schmitz 复杂性层次结构http://arxiv.org/abs/1312.5686

2
高阶函数是否为函数式编程提供了更多功能?
我在cstheory.SE上问过类似的问题。 根据关于Stackoverflow的答案,有一种算法在非惰性纯函数式编程语言上具有复杂度,而在命令式编程中,同一算法是。向FP语言添加惰性可以使算法。Ω (n )Ω (n )Ω (ñ 日志n )Ω(nlog⁡n)\Omega(n \log n)Ω (n )Ω(n)\Omega(n)Ω (n )Ω(n)\Omega(n) 比较带有和不带有高阶函数的FP语言是否存在等效关系?它仍然是图灵完整的吗?如果是这样,那么FP缺少高阶语言是否会使该语言的“功能”或效率降低?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.