FSA可以计数吗?


11

这可能是一个愚蠢的问题。显然,FSA由于是有限的,因此只能对输入字符串中的符号数进行计数,最多不能超过其状态数所限制的数字。但是现在假设我们为FSA配备了输出(例如打印)功能。这样,构造一台能够为每个读取的符号打印一个符号的机器将非常容易。那算作计数吗?如果没有,为什么不呢?

用FST代替:我认为不可能构造能够将任意长度的字符串映射到其长度的二进制表示形式(即,以2为底的数字系统中的数字)的FST。但是,构造一个FST能够将任意长度的字符串映射到相同长度的零(或一个)字符串的过程当然是微不足道的。但这可以算作计数,是否可以算,因为FST所做的是建立其输入长度的表示。有点古怪的表示,但仍然是表示,不是吗?


1
因此,您实际上是在问“什么在计数?”这个问题。在我看来,这听起来不像计算机科学。如果您的问题是“对于计数的这种定义,FSA可以计数吗?”将是计算机科学。
Sasho Nikolov

Answers:


8

这个问题有点含糊,所以这是一个含糊的答案:将一元转换为一元并不完全正确,因为机器实际上并不“知道”输入的大小是“最后”。

您当然意识到了这一点,这就是为什么您质疑它确实很重要的事实。

但是,从一元到二进制的转换似乎是一种更高级的操作,因为它不仅涉及计数,还涉及算术。

因此,也许要比较而不是计数,是要比较精确的概念。也就是说,给定两个数字(一元)和,确定。1 m n = m1n1mn=m

进行这种比较的能力就是产生著名的非常规语言。NFA无法计数是导致这种语言不正常的原因。{anbn:n0}

有趣的是,这种语言是CFL。实际上,相应的自动机模型-PDA确实具有进行有限比较的能力。

当您谈论比较时,换能器不再为您提供任何额外的功率,因此从这个意义上讲,问题得到了解决。

补充说明:完全非正式地,比较两个数字的能力通常可以用来模拟2计数器的机器Minsky Machine,它与TM等效。


4

有限状态自动机不计。他们可能会做一些看起来像的事情,但无法计数。他们甚至可以进行一些(硬连线)计算(例如确定二进制数是否可以被3整除),但是这并不算数。

一个小故事。您在著名城市的矩形大广场上。当地人告诉你广场实际上是广场。如果可以计数,则可以通过计算正方形边沿上的图块来检查图块的水平和垂直数字是否匹配。如果您无法计数,您仍然可以验证索赔:从一个角落开始,然后对角走。如果您正好到达对角,您将获得一个正方形。

在您的示例中,fsa 通过将这些数字分别记录到两个不同的输出磁带上,来测试字符串是否具有相同数量的和。除非您有技巧来成对地处理字母和,然后将一个字母与另一个字母分开,否则另一台设备必须进行最终比较。就像在广场上一样。b a babab

现在可以比较正式的模型。根据Chomsky–Schützenberger定理,每种无上下文语言都是两括号上Dyck语言的有限状态转换的逆 (不是这样说的)在维基百科上,但您必须相信我)。现在,有限状态换能器可以如下“接受”其上下文无关的语言(对于每种语言,它都是自己的换能器)。在输入将字符串转换为的pda的(猜测的)爆破声和推压序列,然后测试结果是否为下推行为,即,结果为Ť d 2大号= Ť - 1d 2Ť 大号Ť 大号d 2瓦特Ť - 1d 2ţ 瓦特d 2LTD2L=T1(D2)TLTLD2。(省略了技术细节,但这是Ch-Sch定理所主张的:一个且)wT1(D2)T(w)D2

我的意思是,换能器完成了一些“计算”,但是在的测试中隐藏了很多功率。同样,您的示例是在两个磁带上将两个字母排序。 D2


我可以构造一个DFA,它的计数范围是到(对于固定的),甚至是。这比任何人或真正的计算机管理的要多。你叫什么计数?2 n ñ ñ02n!nN
拉斐尔

@Raphael。当然。轻松地获得比这更大的数字。别再说上下文无关的语言比常规语言更强大:它们是相同的(至少对于长度不超过字符串)。开玩笑吧 像这样的真实的计算机语言使任何有限状态不是吗?有限状态自动机不算!它们仅区分有限数量的状态,尽管该数量可能非常大。2n!
Hendrik

但是,通常以FSA表示的方式,只能“允许”说“是”(接受)或“否”(不接受)。鉴于此,没有人能够构建一个重要的FSA。如果我们允许它报告(例如打印)终止时处于的(状态)状态,则它可以计数,但只能达到状态数给定的范围。但是,如果我们允许它打印,那么构造一个单状态FSA就是很简单的,它每次在从输入字符串中读取一个符号时就打印(比如说)1,从而以计数表示形式报告计数。这个想法有什么问题?
Torbjörn

而且,如果我们忘记了报告/打印,而是考虑内部表示形式,那么FSA可以计算字符串中的符号,但不能计算任意长的符号。那么,单状态FSA当然根本无法计数。
Torbjörn

亨德里克,我认为我们正在“辩论”一个语义问题:对我来说,“计数”可以是FA 可以做到的“从一到十” 。例如,当与Büchi自动机相交时,我们计算有多少(固定的)自动机达到了最终状态,而其他自动机却继续进行。因此,我认为“无法计数”的说法过于强烈。(唯一的)真实的说法是“不能比常数计数更多”。k
拉斐尔

1

@Shaull:谢谢您的回答!我是StackExchange的新手,并且不知道如何对答案发表评论,所以我选择写一个答案,以期得到原谅。

嗯,在我看来,牧羊人通过在纸条上为每只见到的绵羊写一个记号来数他的羊,或者一个囚犯在墙上写下记号来数他入狱的日子。为什么在纸条或墙壁上的n个标记都不能算作数字n的表示形式?这不是所谓的理货代表吗?在AFAICS中,除了使用更多空间外,它在任何方面都不比(例如)二进制表示逊色。

我想对于您来说,“知道”意味着它最后具有计数的内部表示。那么,当然,很明显,FST的FSA无法计算任意字符串的长度。但是,如果我们不需要那种意义上的知识,而只要求FSA或FST应该能够将结果告诉外部观察者,那么在我看来,以计数格式显示计数应该是可以的。

此外,如果FSA同时配备了增量输入和输出,则FSA原则上应该能够将其外部环境用作读/写存储器,因此具有与图灵机一样强大的功能。对?

感谢您提出比较的案例。现在看来,如果我们取消了内部表示的要求,而只要求机器能够将结果呈现给外部观察者,那么我们可以轻松构建可以产生某种形式的FSM的情况。结果的图形表示。假设FSM在读完“ aaaaaabbbbbb”后写道

000000
000000

然后,由于这些条的长度相同,因此FSM接受了字符串“ aaaaaabbbbbb”。长度相同的两个条表示“是”,长度不同的条表示“否”。

我想我正在改变规则,但这就是我想要的,因为我对数学语言学领域中或多或少地隐含的假设感兴趣。


也许您的“模型”可以看作是FSA,具有有限数量(等于字母大小)的只写计数器,以及一个特殊的最终状态,可以比较两个(或多个)计数器,并根据它们是否相等来接受或拒绝或不。这样的“ ”比FSA更强大;但是在识别 即进行算术运算。 { a n | n  是素数  }FSAWOC{an|n is prime }
2013年

我认为您提供的示例与FST输出之间的区别在于,牧羊人可以在编写后读取行,而FSM无法读取。比较也一样。
Shaull

您可以通过点击任何帖子下方的“添加评论”链接来发表评论。
拉斐尔

任何构造为计算羊群的FSA都可以计算该羊群。没有构造好的FSA可以计算任何羊群。基本的问题是,牧羊人是否只知道如何计数到至少足以计数自己的羊群,还是可以使用全部自然数。以我的经验,我们人类必须在数学教育中的某个时候明确地在两种能力之间进行转换。
reinierpost

1

FSM可以在状态范围所表示的有限范围/步骤数内“计数”。但是,它们不能超过有限的步数。

在某种意义上,类似于FSA的机器可以计数。密切相关的机器称为有限状态传感器。换能器确实可以在“管道式”输入和输出的意义上进行计数。单个传感器可以采用一个输入序列(例如二进制),并将其“转换”为递增的输出序列。然后一个“链接”(相同的)“ 1”计数传感器,每个传感器将其输入加1并输出。它也像基本的“流算法”


更详细:换能器可以使用类似于EE Full加法器的逻辑以“ lsb”到“ msb”的顺序递增工作,即从“最低sig位”到“最大sig位” 。
vzn

有限状态传感器似乎还没有被研究很多。对于collat​​z猜想,还有另一个有趣的应用程序,它创建了一个计算迭代的机器。任何对进一步理论/讨论感兴趣的人都可以通过聊天或在我的博客上与我联系。
vzn
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.