字符串的前缀

Prefix of a string

X is a prefix of a string y if there exists xz = y and x is a proper prefix if x is not equal to y.

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

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

A language is prefix-free if no member is a proper-prefix of another member.

再次,不确定我是否理解正确。 例如,如果有一个 language = "Hello, World! My name is Andrew" ,我认为它是无前缀的,因为每个成员的开头彼此不同。但是,如果我们有 "Hello, World! How are you?",这种语言就不再是无前缀的了,因为 "H" 是 "Hello" 和 "How" 的前缀。是我的思路正确还是我理解错了什么?

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

如果能得到所有答案,我将不胜感激。谢谢你。

是的,“abracadabra”是“abracadabra”的前缀,但不是专有前缀 - “a”、“ab”、“abr”、...、“abracadabr”是“abracadabra”的专有前缀”。 您的语言示例有点令人困惑。通常,一种语言被定义为 个单词/字符串,但您只给出一个大字符串作为语言示例。

所以,一种语言可能是集合 L1 = {"a", "b", "ab"}。 但是,这种语言不是 prefix-free,因为“a”在L1中,并且是“ab”的适当前缀,而“ab”也在L1中。

根据您给出的定义,语言 L2 = {"abra", "cada", "bra"} 是 prefix-free 语言的一个示例:“abra”不是“的前缀” cada”或“bra”,“cada”不是“abra”或“bra”的前缀,“bra”也不是“abra”或“cada”的前缀。