Звезда Клини

Материал из testwiki
Перейти к навигации Перейти к поиску

Звезда́ Кли́ни (или замыка́ние Кли́ни) в математической логике и информатикеунарная операция над множеством строк либо символов. Замыкание Клини множества V обозначается V*. Широко применяется в регулярных выражениях.

Если V — множество строк
то V* — минимальное надмножество множества V, которое содержит ε (пустую строку) и замкнуто относительно конкатенации. Это также множество всех строк, полученных конкатенацией нуля или более строк из V.
Если V — множество символов
то V* — множество всех строк из символов из V с добавлением пустой строки.

Определение

Степень множества

i-я степень множества V — это конкатенация множества V с самим собой i1 раз.

Нулевая степень любого множества неизменна:

V0={ε}.

Остальные степени определяются рекурсивно:

Vi=Vi1V={wv|wVi1vV}, где i.
Если V — множество символов
то Vi — множество строк длиной i символов, взятых из V.

Звезда Клини

Замыкание Клини множества V есть

V*=i=0Vi.

То есть это множество всех строк конечной длины́, порождённое элементами множества V.

Плюс Клини

Есть операция, аналогичная звезде Клини, — плюс Клини:

V+=i=1Vi.

Как видим, отличается тем, что пропущено V0, содержащее пустую строку.

Свойства

V*=V**.
  • Замыкание Клини включает в себя порождающее множество:
VV*.
  • Замыкание Клини всегда содержит пустую строку:
εV*.
|V*|=|V+|=0V{ε}.

Примеры

Для множества строк
{"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", …}.
Для множества из пустой строки
{ε}*={ε}+={ε}.
Для пустого множества
*={ε}.
+=*=.

Обобщение

Стро́ки образуют моноид по конкатенации с нейтральным элементом ε. Таким образом, определение звезды́ Клини можно распространить на любой моноид.

См. также

Литература