Зірочка Кліні

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

В математичній логіці та інформатиці, зірка Кліні (або оператор Кліні, або замикання Кліні) це унарна операція, або на множинах рядків або на множинах символів або букв. Застосування зірки Кліні до множини V записується як V*. Це широко використовується в регулярних виразах, в контексті яких вони були введені Стівеном Кліні для описання деяких автоматів.

  1. Якщо V це набір рядків, тоді V* визначається як найменша надмножина V, яка містить λ (порожній рядок) і є замиканням для операції конкатенації рядків. Ця множина також може бути описана як множина рядків, які можуть бути утворені конкатенацією нуля або більшої кількістю рядків з V.
  2. Якщо V це набір символів або букв, тоді V* це множина всіх рядків над символами з V, включно з порожнім рядком.[1]

Визначення і запис

Дано

V0={λ}

рекурсивно визначимо множину

Vi+1={wvwVi and vV} де i0.

Якщо V — формальна мова, тоді Vi, i-й ступінь множини V, це умовний запис для конкатенації множин V із собою i разів. Тобто, Vi можна розуміти як множину всіх рядків, що можуть бути представлені як конкатенація i рядків з V.

Визначенням зірки Кліні на V є V*=iVi={λ}V1V2V3.

Тобто, це набір всіх можливих рядків скінченної довжини утворених з символів з V.

В деяких дослідженнях формальних мов, використовується різновид операції Кліні званий плюс Кліні. Плюс Кліні упускаєШаблон:Уточнити терм V0 в попередньому об'єднанні. Іншими словами, плюс V це V+=i{0}Vi=V1V2V3.

Додатково, зірка Кліні використовується в теорії оптимальності.

Приклади

Приклад зірки Кліні застосованої до множини рядків:

{"ab", "c"}* = {λ, "ab", "c", "abab", "abc", "cab", "cc", "ababab", "ababc", "abcab", "abcc", "cabab", "cabc", "ccab", "ccc", ...}.

Приклад зірки Кліні застосованої до множини букв:

{'a', 'b', 'c'}* = {λ, "a", "b", "c", "aa", "ab", "ac", "ba", "bb", "bc", "ca", "cb", "cc", ...}.

Приклад зірки Кліні застосованої до порожньої множини:

*={λ}.

Приклад плюса Кліні застосованого до порожньої множини:

+=*={}=.

Зауважимо, що для кожної множини L, L+ дорівнює конкатенації L з L*. І навпаки, L* можна записати як {λ}L+. Оператори L+ і L* описують одну множину тоді і тільки тоді, якщо множина L містить порожнє слово.

Узагальнення

Рядки утворюють моноїд з конкатенацією як бінарною операцією і нейтральним елементом λ. Зірка Кліні визначена для будь-якого моноїда, не тільки рядків. Більш точно, нехай (M,) це моноїд, і SM. Тоді S* — найменший моноїд M, що містить S ; такий, що S* містить нейтральний елемент з M, множину S, і такий, що якщо x,yS*, тоді xyS*.

Див. також

Примітки

Шаблон:Reflist