Звезда́ Кли́ни
(или
замыка́ние Кли́ни
) в
математической логике
и
информатике
—
унарная операция
над
множеством
строк
либо
символов
. Замыкание Клини множества
V
обозначается
V
*. Широко применяется в
регулярных выражениях
.
Если
V
— множество строк
то
V
* — минимальное
надмножество
множества
V
, которое содержит ε (
пустую строку
) и
замкнуто
относительно
конкатенации
. Это также множество всех строк, полученных конкатенацией нуля или более строк из
V
.
Если
V
— множество символов
то
V
* — множество всех строк из символов из
V
с добавлением пустой строки.
Определение
Степень множества
i
{\displaystyle i}
-я степень множества
V
{\displaystyle V}
— это конкатенация множества
V
{\displaystyle V}
с самим собой
i
−
1
{\displaystyle i-1}
раз.
Нулевая степень любого множества неизменна:
V
0
=
{
ε
}
{\displaystyle V^{0}=\left\{\varepsilon \right\}}
.
Остальные степени определяются
рекурсивно
:
V
i
=
V
i
−
1
V
=
{
w
v
|
w
∈
V
i
−
1
∧
v
∈
V
}
{\displaystyle V^{i}=V^{i-1}V=\left\{wv\left|\,w\in V^{i-1}\land v\in V\right.\right\}}
, где
i
∈
N
{\displaystyle i\in \mathbb {N} }
.
Если
V
{\displaystyle V}
— множество символов
то
V
i
{\displaystyle V^{i}}
— множество строк длиной
i
{\displaystyle i}
символов, взятых из
V
{\displaystyle V}
.
Звезда Клини
Замыкание Клини множества
V
{\displaystyle V}
есть
V
∗
=
⋃
i
=
0
∞
V
i
{\displaystyle V^{*}=\bigcup _{i=0}^{\infty }V^{i}}
.
То есть это множество всех строк конечной длины́, порождённое элементами множества
V
{\displaystyle V}
.
Плюс Клини
Есть операция, аналогичная звезде Клини, —
плюс Клини
:
V
+
=
⋃
i
=
1
∞
V
i
{\displaystyle V^{+}=\bigcup _{i=1}^{\infty }V^{i}}
.
Как видим, отличается тем, что пропущено
V
0
{\displaystyle V^{0}}
, содержащее пустую строку.
Свойства
Связь операций:
V
+
=
V
∗
V
{\displaystyle V^{+}=V^{*}V}
V
+
=
V
∗
⇔
ε
∈
V
{\displaystyle V^{+}=V^{*}\Leftrightarrow \varepsilon \in V}
Идемпотентность
:
V
∗
=
V
∗
∗
{\displaystyle V^{*}={V^{*}}^{*}}
.
Замыкание Клини включает в себя порождающее множество:
V
⊆
V
∗
{\displaystyle V\subseteq V^{*}}
.
Замыкание Клини всегда содержит пустую строку:
ε
∈
V
∗
{\displaystyle \varepsilon \in V^{*}}
.
|
V
∗
|
=
|
V
+
|
=
ℵ
0
⇐
∅
≠
V
≠
{
ε
}
{\displaystyle \left|V^{*}\right|=\left|V^{+}\right|=\aleph _{0}\Leftarrow \varnothing \neq V\neq \{\varepsilon \}}
.
Примеры
Для множества строк
{"Go", "Russia"}* = {ε, "Go", "Russia", "GoGo", "GoRussia", "RussiaGo", "RussiaRussia", "GoGoGo", "GoGoRussia", "GoRussiaGo", …}.
Для множества символов
{'a', 'b', 'c'}* = {ε, "a", "b", "c", "aa", "ab", "ac", "ba", "bb", "bc", "ca", "cb", "cc", "aaa", …}.
Для множества из пустой строки
{
ε
}
∗
=
{
ε
}
+
=
{
ε
}
{\displaystyle \left\{\varepsilon \right\}^{*}=\left\{\varepsilon \right\}^{+}=\left\{\varepsilon \right\}}
.
Для пустого множества
∅
∗
=
{
ε
}
{\displaystyle \varnothing ^{*}=\left\{\varepsilon \right\}}
.
∅
+
=
∅
∗
∅
=
∅
{\displaystyle \varnothing ^{+}=\varnothing ^{*}\varnothing =\varnothing }
.
Обобщение
Стро́ки образуют
моноид
по конкатенации с нейтральным элементом
ε
{\displaystyle \varepsilon }
.
Таким образом, определение звезды́ Клини можно распространить на любой моноид.
См. также
Литература
John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman.
Introduction to Automata Theory, Languages, and Computation. — 3rd Edition. — 2006. — 535 p. —
ISBN 0321462254
.
Katrin Erk, Lutz Priese.
Theoretische Informatik: eine umfassende Einführung. — 2., erw. — Springer-Verlag, 2002. — С. 27—29. —
ISBN 3-540-42624-8
.