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",我认为它是无前缀的,因为每个成员的开头都不同。但是,如果我们有“你好,世界!你好吗?”这种语言不再是无前缀的,因为“H”是“Hello”和“How”的前缀。我的思维方式是正确的还是我误解了什么?
我正在阅读的书中没有给出示例,这似乎是一个简单的主题,所以我想这可能是我找不到更详细解释的原因。但无论如何,我只是想确保我没有误解任何事情。
我将不胜感激所有的答案。谢谢你。
最佳答案
是的,“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”的前缀。
关于string - 字符串的前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34937067/