字符串的前缀

时间:2016-01-22 00:40:39

标签: string theory prefix computation-theory

  

如果存在xz = y且x是正确的,则X是字符串y的前缀   如果x不等于y,则为前缀。

只是想确保我正确理解这个概念。

例如,如果有一个字符串y =" abracadabra"这是否意味着有很多可能的前缀? 因此,如果x是前缀,那么x可以等于" a"," ab"," abr"甚至到#ab; abracadabra"但在这种情况下,当x = y时,据我所知,它现在称为不正确的前缀。但是,我不确定x = y的最后一部分是否仍然可以被认为是前缀?

  

如果没有成员是另一个成员的正确前缀,则该语言不带前缀   构件。

再次,不确定我是否理解正确。 例如,如果有一种语言=" Hello,World!我的名字是Andrew"我认为,它是无前缀的,因为每个成员的开头都是彼此不同的。但是,如果我们有"你好,世界!你好吗?"这种语言不再是前缀,因为" H"是" Hello"的前缀。和"如何"。我的思维方式是正确的还是我误解了什么?

我正在阅读的书中没有给出任何例子,这似乎是一个简单的话题,所以我想这可能是我无法找到更详细解释的原因。但无论如何,我只是想确保我不会误解任何事情。

我会很感激所有答案。谢谢。

1 个答案:

答案 0 :(得分:5)

是的," abracadabra"是" abracadabra"的前缀,但不是正确的 - " a"," ab"," abr",..., " abracadabr"是" abracadabra"的正确前缀。 你的语言示例有点令人困惑。通常,语言被定义为单词/字符串的,但您只提供一个大字符串作为语言示例。

因此,语言可能是设置L1 = {" a"," b"," ab"}。 但是,这种语言无前缀,因为" a"在L1中,是" ab"的正确前缀,也在L1中。

语言L2 = {" abra"," cada"," bra"}是根据您所定义的无前缀语言的示例鉴于:" abra"不是" cada"的前缀或" bra"," cada"如果" abra"不是前缀或" bra"和" bra"不是" abra"的前缀。或者" cada"。