这个问题是关于是否存在已知的可逆图灵tarpit,其中“可逆”在Axelsen和Glück的意义上是指“ tarpit”是一个更为非正式的概念(可能不是一个很好的词选择),但我会尽力解释我的意思。
我所说的“焦油”
一些计算模型被设计为以某种方式有用。其他人恰好是图灵完整的,实际上并没有任何特别有用的属性。这些被称为“ Turing tarpits”。例子包括Brainfuck语言,Rule 110细胞自动机语言和Bitwise Cyclic Tag语言(我喜欢它,因为它很容易实现并且任何二进制字符串都是有效程序)。
“ Turing tarpit”没有正式的定义,但是对于这个问题,我用它来表示一个相当简单的系统(就少量“规则”而言),“发生”是图灵完整的,没有其内部状态具有任何明显的语义含义。对我而言,最重要的方面是规则的简单性,而不是缺乏明显的语义。基本上,我们谈论的是斯蒂芬·沃尔夫拉姆(Stephen Wolfram)曾经写过的一本非常大的书,尽管他没有使用“ tarpit”一词。
我所说的“可逆”
我对可逆计算感兴趣。特别是,我对Axelsen和Glück所说的r-Turing完整的语言感兴趣,这意味着它们可以计算每个可计算的内射函数,并且只能计算内射函数。现在,从这个意义上讲,有许多可逆的计算模型,例如Axelsen的可逆通用图灵机或高级可逆语言Janus。(文献中还有许多其他示例;这是一个活跃的研究领域。)
应该注意的是,由于Bennett,Axelsen和Glück对r-Turing完整性的定义是与通常方法不同的可逆计算方法。在Bennett的方法中,允许系统产生“垃圾数据”,这些数据在计算结束时就被丢弃了。在这种情况下,可逆系统可以成为图灵完整的系统。但是,在Axelsen和Glück的方法中,不允许该系统生成此类“垃圾数据”,这限制了它可以计算的问题类别。(因此,“ r-Turing完成”而不是“ Turing完成”。)
注意:Axelsen和Glück纸位于付费专线后面。不幸的是-据我所知,目前还没有关于r-Turing完整性的任何非付费资源。如果有时间,我将尝试启动Wikipedia页面,但没有任何承诺。
我在寻找什么
上面提到的可逆计算的例子都相当“充满语义”。在大多数情况下,这是一件好事,但这意味着在每个时间步更新其状态所需的规则相当复杂。我正在寻找可逆计算的“目标”。也就是说,具有相当简单规则的任意系统或多或少会“恰好”成为r-Turing完整语言。我重申,对于我要寻找的内容没有正式定义,但是当我看到它时就会知道,而且我认为这是合理的事情。
我知道有很多事情符合要求,但并不完全符合要求。有几种可逆的细胞自动机已被证明是图灵完整的。 兰顿的蚂蚁(一种具有相当任意和非常简单的可逆状态转换功能的二维图灵机)只要其初始条件包含无限的重复模式,它也是图灵完备的。但是,对于这些系统,以不丢弃任何垃圾数据的方式定义从其状态到“输出”的映射并非易事。我对系统特别感兴趣,可以将其视为输入,对它执行一系列(可逆)转换,然后(如果终止)返回一些输出。
(我希望这个问题比我以前的有关可逆等效于lambda微积分的问题更容易回答。)