有关最小堆自动机的定义的一些说明,请参见文章末尾。
可以想象使用各种数据结构来存储供状态机使用的信息。例如,下推式自动机将信息存储在堆栈中,而图灵机使用磁带。已经证明,使用队列的状态机以及使用两个多个堆栈或磁带的状态机在功率上与图灵机相同。
想象一下一个最小堆机器。它的工作原理完全类似于下推式自动机,但以下情况除外:
- 不必查看添加到堆中的最后一件事,而只需查看堆中当前的最小元素(按机器定义顺序)。
- 不必删除当前添加到堆中的最后一个东西,而仅删除当前堆中最小的元素之一(按机器定义顺序)。
- 只能将元素的位置根据堆中的其他元素确定(以在每台计算机上定义的顺序),而不是在堆顶部添加元素。
只需不使用堆,该机器就可以接受所有常规语言。它也可以接受的语言通过加入一个 “S到堆,并除去一个 ”从堆S.当它读取b的。它可以接受多种其他无上下文语言。但是,它不能接受,例如,{ w ^ ∈ { 一,b } * | w ^ = w ^ [R }(未经证明陈述)。编辑:还是可以?我不认为这可以,但是我以前很惊讶,而且我敢肯定,当我的假设使我变得...很好时,我会一直感到惊讶。
它可以接受任何上下文相关或图灵完备的语言吗?
更一般而言,朝着这个方向进行了哪些研究(如果有的话)?有什么结果(如果有)?我还对其他种类的奇异状态机感兴趣,可能是那些使用其他数据结构进行存储或各种访问限制(例如,如何限制LBA的TM)的机器。参考被赞赏。如果这个问题表明无知,我先向您道歉。
正式定义:
我在这里提供了最小堆自动机的一些更详细的定义,以阐明参考该材料的问题中的进一步讨论。
我们将类型1不确定的最小堆自动机定义为7元组,其中...
- 是一组有限的非空状态;
- 是初始状态;
- 是一组接受状态;
- 是一个有限的非空输入字母;
- 是一个有限的,非空输入字母表,其中符号的重量 γ ∈ Γ,瓦特(γ )∈ Ñ,使得瓦特(γ 1)= 瓦特(γ 2) ;
- 是特殊底部的最堆符号;
- 为转换函数。
过渡函数的工作原理是假设最初只有空堆。转换函数可以添加到堆的任意集合(有限的,但可能是空的或者用重复)的元素γ 1,γ 2,。。。,γ ķ∈ Γ。或者,转换函数可以删除权重w (γ )最低的元素γ的实例。堆上剩余的所有元素(即堆顶部的元素)的大小。过渡函数在确定任何给定过渡时只能使用最顶部(即,权重最小)的符号实例。
此外,定义了一个类型1的确定性最小堆自动机是一种1型非确定性最小堆自动机,其满足以下特性:对于所有字符串使得| x | = Ñ和σ ∈ Σ ,| δ Ñ + 1(q 0,X σ ÿ ,Ž 0)| ≤ 1。
还定义与第1类非确定性最小堆自动机完全相同的第2类非确定性最小堆自动机,除了以下更改之外:
- 是一个有限的,非空输入字母表,其中的符号的重量 γ ∈ Γ,瓦特(γ )∈ Ñ,使得瓦特(γ 1)= 瓦特(γ 2),并不一定意味着 γ 1 = γ 2 ; 换句话说,不同的堆符号可以具有相同的权重。
- 将具有相同权重的不同堆符号的实例添加到堆时,它们的相对顺序将根据后进先出(LIFO)类似于堆栈的顺序保留。
感谢Raphael指出了这个更自然的定义,该定义捕获(并扩展了)上下文无关的语言。
到目前为止,已显示一些结果:
- Type-1最小堆自动机可识别既不是上下文无关语言的子集也不是其超集的语言集。[ 1,2 ]
- 根据其定义,类型2最小堆自动机识别一组语言,这些语言是上下文无关语言的适当超集,以及类型1最小堆自动机接受的语言的适当超集。
- 类型1最小堆自动机接受的语言在联合,串联和Kleene星号下似乎是封闭的,但在补语[ 1 ],交集或差额下则不是;
- 类型1确定性最小堆自动机接受的语言似乎是类型1确定性最小堆自动机接受的语言的适当超集。
我可能还错过了其他一些结果。可能会有更多结果。
后续问题
- 倒退关闭?-开放
- 封闭之下互补?-不!
- 不确定性会增加力量吗?-是的?
- 添加堆会增加类型1的功能吗?- 对于(?)的
- 添加堆栈会增加Type-1的功率吗?-开放