Понимание Σ* и Σ в формальных языках
Если у меня есть Σ={a}
какие слова делают Σ*
имеет?
Σ*= {a,aa,aaa,aaaa.....}
?
Спасибо
4 ответа
Если ваш алфавит Σ={a}
затемΣ*= {#, a,aa,aaa,aaaa.....}
означает все возможное n* a
включая пустую строку # (phi)
, Другой способ создать эту последовательность - использовать грамматики:
S -> S
S -> aS
S -> #
где #
пустая строка
У него есть пустая строка, которую вы не упомянули, она также содержит последовательности a, любой длины.
Вы можете найти больше информации на http://en.wikipedia.org/wiki/Kleene_star.
*
в Σ*
обычно обозначает ноль или много раз. Так Σ*
будет иметь пустую строку и любую комбинацию букв из алфавита Σ
,
(Так как ваш алфавит имеет только a
, затем Σ*
будет иметь любую комбинацию a
s и пустая строка.)
Если ваш алфавит имел больше значений, т.е. Σ = {a,b}
тогда у вас будет любая комбинация a
с и b
с и пустая строка. т.е. Σ* = {phi, a, b, aa, ab, ba, bb, bab, ...(etc)}
Σ*
это набор строк любой длины, который вы можете сделать, конкатенируя любое количество символов, взятых из Σ
(включая нет).
Вот один из способов определения Σ*
:
Позволять Σ^n
быть набором строк длины n над Σ
,
Тогда Σ* = Σ^0 объединение Σ^1 объединение...
Σ^0 = {phi}
так как фи является единственной строкой длины 0
, Поэтому фи всегда в Σ*
не важно что Σ
является.