以我的经验,在可计算性理论课程中,上下文相关的语言和线性有界自动机经常被跳过或轻描淡写,甚至在一些著名的教科书中也没有涉及到,尽管有限自动下推自动机受到了很多关注。当然,为什么LBA的关注重点要比同业少呢?
以我的经验,在可计算性理论课程中,上下文相关的语言和线性有界自动机经常被跳过或轻描淡写,甚至在一些著名的教科书中也没有涉及到,尽管有限自动下推自动机受到了很多关注。当然,为什么LBA的关注重点要比同业少呢?
Answers:
通过“适当的”修改,我们可以将这些类转变为复杂性类。有限自动机进入,CFL进入LogCFL,LBA进入PSPACE。
现在应该很清楚了,为什么我们对前两个感兴趣的地方比LBA还要多。前两个自然符合可行计算的通常定义。但是PSPACE却没有。
如今,似乎不仅CSG,而且CFG,也已经过时了。我认为这些天自动机和PDA通常在可计算性/复杂性理论课程中(如果有的话)都考虑在内,它们不是为了自己而被引入,而是为了介绍图灵机。
语法对于编译器理论来说可能很有趣,但对于可计算性/复杂性来说,并没有那么大,因此要纳入基础本科课程。一个话题想讲的话题太多了,但是一个学期的课程太短了,我们必须选择,由于时间限制,我们无法涵盖的许多话题比LBA更有趣。
在实践中,正则表达式和CFG用于解析代码(即,编程语言)。原因是有非常有效的算法来解析它们。另一方面,LBA太强大了,无法在这种情况下实际使用。
自动机理论的一个历史渊源是编译器构建的主题。出于上述原因,只有常规语言和CFG对构造编译器很有用(尽管归因语法不是真正的CFG,而且CFG解析算法不能真正解析整个CFG类)。LBA可能是Chomsky发明的,介于平凡和“英语”之间,介于中间水平。因此,也许教他们的合适地点是语言学课程而不是计算机科学课程!