Clausura de Kleene

De testwiki
La revisió el 12:54, 26 juny 2020 per imported>Rebot (neteja i estandardització de codi)
(dif.) ← Versió més antiga | Versió actual (dif.) | Versió més nova → (dif.)
Salta a la navegació Salta a la cerca

En lògica matemàtica i en informàtica, la clausura de Kleene (també anomenada estel Kleene) és una operació unària que s'aplica sobre un conjunt de cadenes de caràcters o un conjunt de símbols o caràcters (alfabet), i representa el conjunt de les cadenes que es poden formar prenent qualsevol nombre de cadenes del conjunt inicial, possiblement amb repeticions, i concatenant-les entre si.

L'aplicació de la clausura de Kleene a un conjunt V es denota com a V*. És molt usada en expressions regulars i va ser introduïda en aquest context per Stephen Kleene (1909-1994) per caracteritzar un cert autòmat.

Definició i notació

Donat

V0={λ}

es defineix recursivamente

Vi+1={wv:wVi and vV} on i0.

Si V és un llenguatge formal, aleshores la i-ésima potència de V és l'abreviatura de la concatenació de V amb si mateix i vegades. Això és, Vi pot entendre's com el conjunt de tots els strings de longitud i, format a partir dels símbols en V.


La definició de clausura Kleene en V és V*=iVi={λ}V1V2V3.

És a dir, és la recopilació de tots els possibles strings de longitud finita generats a partir dels símbols en V.

En alguns estudis de llenguatge formal, usen Kleene plus que és una variació de l'operació clausura de Kleene. Kleene plus omet el terme V0 en la unió. En altres paraules, Kleene plus en V és V+=iVi=V1V2V3.

Exemples

Exemple de clausura de Kleene aplicada a un caràcter:

{"a"}* = {ε, "a", "aa", "aaa", "aaaa", "aaaaa", "aaaaaa",...}

Exemple de clausura de Kleene aplicada a un conjunt de cadenes:

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

Exemple de clausura de Kleene aplicada a un conjunt de caràcters:

{'a', 'b', 'c'}* = {ε, "a", "b", "c", "aa", "ab", "ac", "ba", "bb", "bc",...}