Kleene星(Kleene star)运算是否要求对应语言的元素有序?
关于Kleene星运算的两个基础问题解答
Kleene星运算是否要求语言元素具备有序性?
不需要。
首先要明确,形式语言理论中,语言本身就是集合类型,集合的核心特性就是元素无序、唯一,所以Kleene星的运算对象从定义上就不涉及顺序要求。
Kleene星的标准定义是:对任意语言L,L*是所有满足以下条件的字符串的集合:
- 可以表示为0个或多个L中元素的拼接(0个拼接的结果就是空串ε)
- 字符串长度有限
ba、bba、baa这类元素是否属于L={a,b}对应的L*?
完全属于。
你日常看到的{e, a, b, aa, ab, bb, aaa, aab, abb, ...}这类示例,只是人为按「字符串长度从小到大+同长度按字典序升序」排列后的部分展示,不是L*的完整枚举,没列出来的同长度串(比如长度2的ba、长度3的baa、bba、bab、bbb)都属于L*的范畴。
简单说:只要是由a、b两个字符组成的任意有限长度的字符串,都在L={a,b}的L*集合里,和字符的排列顺序没有关系。
内容的提问来源于stack exchange,提问作者cprieto
相关产品推荐
相关产品推荐

