Klinijevo zatvorenje
U matematičkoj logici i računarstvu, Klinijevo zatvorenje (ili Klinijeva zvezda) je unarna operacija, na skupovima niski ili na skupovima simbola ili karaktera. Primena Klinijevog zatvorenja na skup V se zapisuje kao V*. Ovaj operator je u širokoj upotrebi u regularnim izrazima, što je i kontekst u kome ga je uveo Stiven Klini da karakteriše određene automate.
- Ako je V skup niski, onda se V* definiše kao najmanji nadskup od V, koji sadrži ε (praznu nisku) i zatvoren je u odnosu na konkatenaciju niski. Ovaj skup se takođe može opisati kao skup niski koje se mogu dobiti dopisivanjem nula ili više niski iz V.
- Ako je V skup simbola ili karaktera, onda je V* skup svih niski nad simbolima V, uključujući i praznu nisku.
Definicija i notacija
urediDat je skup
rekurzivno definišemo skup
- gde
Ako je formalni jezik, onda -ti stepen skupa predstavlja konkatenaciju skupa sa samim sobom puta. To jest, se može razumeti kao skup svih niski dužine , dobijenih od simbola iz .
Definicija Klinijeve zvezde nad je
To jest, to je kolekcija svih mogućih niski konačne dužine, generisanih od simbola iz .
U nekim istraživanjima formalnih jezika, koristi se varijacije operacije Klinijeve zvezde, operacija Klinijev plus. Klinijev plus isključuje iz gornje unije. Drugim rečima, Klinijev plus nad je
Primeri
urediPrimer Klinijevog zatvorenja skupa niski:
- {"ab", "c"}* = {ε, "ab", "c", "abab", "abc", "cab", "cc", "ababab", "ababc", "abcab", "abcc", "cabab", "cabc", "ccab", "ccc", ...}
Primer Klinijevog zatvorenja skupa karaktera:
- {'a', 'b', 'c'}* = {ε, "a", "b", "c", "aa", "ab", "ac", "ba", "bb", "bc", ...}
Uopštenje
urediKlinijeva zvezda se često generalizuje za bilo koji monoid (M, ), to jest, skup M i binarnu operaciju nad M, takvu da važi
- (zatvorenje)
- (asocijativnost)
- (neutral)