Perché l'operatore stella Kleene è anche chiamato l'operatore di chiusura Kleene?


13

Ho scoperto che se non capisco l'etimologia dietro un termine cs / programmazione, di solito significa che ho perso o frainteso alcuni importanti concetti di base.

Non capisco perché la stella di Kleene sia anche chiamata la chiusura di Kleene. È legato alle chiusure in programmazione, una funzione con variabili non locali associate?

... riflettendo, forse è perché permette a un insieme aperto di essere scritto in una forma di espressione chiusa?

... beh, nella buona vecchia maniera di spiegare l'anatra di gomma , ora sto indovinando, ma accetterei comunque una risposta autorevole.


3
Il tuo nome utente è il motivo per cui vuoi una buona vecchia moda che spieghi l'anatra di gomma ?
babou,

@babou Sì. Ma oggi ho fallito :(
mallardz,

La tua osservazione che la chiusura sotto concatenazione definita nella mia risposta (e nella risposta di @David Richerby, implicitamente in quanto non menziona mai esplicitamente alcuna operazione di stringa, tranne in un commento) non includerà la parola vuota ϵ è abbastanza accurata. Grazie. Di conseguenza, l'operatore stella Kleene non può rappresentare la chiusura sotto concatenazione: l'operatore Kleene + lo fa. Tuttavia, l'operatore stella Kleene può rappresentare la chiusura sotto l'operazione di potenza derivata dalla concatenazione. Completo la mia risposta per coprire questo aspetto. Era più sottile del previsto.
babou,

La risposta è abbastanza leggibile o devo aggiungere una sezione in gomma più morbida?
babou,

Risposte:


15

Un set viene chiuso sotto alcuni operatori se il risultato dell'applicazione dell'operatore alle cose nel set è sempre nel set. Ad esempio, i numeri naturali vengono chiusi in aggiunta perché, ogni volta che e m sono numeri naturali, nnm è un numero naturale. D'altra parte, i naturali non sono chiusi sotto sottrazione poiché, ad esempio, 3 - 5 non è un numero naturale.n+m35

Il chiusura di un set sotto un operatore è il set più piccolo contenente S chiuso sotto l'operatore. Ad esempio, la chiusura dei numeri naturali sotto sottrazione è i numeri interi; la chiusura dei numeri naturali in aggiunta è solo i numeri naturali, poiché l'insieme è già chiuso.SS

Pertanto, "chiusura Kleene" non è un nome alternativo per "stella Kleene". La star di Kleene è l'operatore; la chiusura di Kleene di un set è la chiusura di quel set sotto l'operatore.


Ok grazie, la tua spiegazione di una chiusura di un set è molto facile da capire. Ma vuoi dire che la stella di Kleene è un operatore (come plus è un operatore) e la chiusura di Kleene è un'operazione (come un'aggiunta)? Anche la risposta di Babou secondo cui il nome deriva dal fatto che l'operazione rappresenta essenzialmente la chiusura del set sotto concatenazione ha molto senso. Sebbene epsilon non
rovini

1
@mallardz Giustamente parlando, la chiusura è il set; l'operazione di formazione della chiusura è normalmente chiamata "chiusura".
David Richerby,

@DavidRicherby: Potresti chiamare l'insieme dei numeri naturali sotto sottrazione come una chiusura ? Vuoi dire che poiché l'insieme delle espressioni regolari chiuse sotto l'operatore kleene * produce un'espressione regolare, la chiamiamo chiusura?
appena il

@justin Per definizione, la chiusura di qualsiasi set nell'ambito di un'operazione deve essere chiusa da sola nell'ambito di tale operazione. Dal momento che i naturali non vengono chiusi sotto sottrazione, non possono essere la chiusura di nulla sotto sottrazione. L'insieme di espressioni regolari è già chiuso sotto la stella di Kleene e la chiusura dell'insieme di espressioni regolari sotto alcune operazioni è, per definizione, un insieme di cose, non una singola espressione regolare. Quindi non capisco davvero le tue domande.
David Richerby,

@DavidRicherby: Sì, è proprio così. Per sbaglio ho preso la serie di numeri naturali sotto sottrazione come un numero naturale intero. La stella kleene è collegata a set o automi finiti o entrambi?
appena l'

7

In poche parole

Il nome di chiusura di Kleene è chiaramente inteso come chiusura con alcune operazioni di stringa.

Tuttavia, un'attenta analisi (grazie a un commento critico dell'OP mallardz), mostra che la stella di Kleene non può essere chiusa sotto concatenazione, il che corrisponde piuttosto all'operatore Kleene plus.

L'operatore stella Kleene corrisponde effettivamente a una chiusura sotto l'operazione di potenza derivata dalla concatenazione.

Il nome stella di Kleene deriva dalla rappresentazione sintattica dell'operazione con una stella *, mentre chiusura è ciò che fa.

Questo è ulteriormente spiegato di seguito.
Richiamare che la chiusura in generale, e la stella di Kleene in particolare, è un'operazione sui set, qui sui set di stringhe, cioè sulle lingue. Questo sarà usato nella spiegazione.

Chiusura di un sottoinsieme in un'operazione sempre definita

Un insieme viene chiuso con un'operazione n -ary f iff f è sempre definito per qualsiasi n -tupla di argomenti in C e C = { f ( c 1 , , c n ) c 1 , , c nC } .CnffnCC={f(c1,,cn)c1,,cnC}

Estendendo agli insiemi di valori nel solito modo, cioè f ( S 1 , ... , S n ) = { f ( s 1 , ... , s n ) s iS i . 1 i n } possiamo riscrivere la condizione come un'equazione impostata: C = f ( C , , C )f

f(S1,,Sn)={f(s1,,sn)siSi.1in}


C=f(C,,C)

Per un dominio (o insieme) con un'operazione f che è sempre definita su D e un insieme S D , La chiusura di S sotto f è l' insieme più piccolo S f contenente S che soddisfa l'equazione: S f = { f ( s 1 , , s n ) s 1 , , s nS f } .DfDSDSfSfSSf={f(s1,,sn)s1,,snSf}

Più tersamente con un'equazione impostata, la chiusura di sotto f può essere definita da:Sf

Sf is the smallest set such that SSf and Sf=f(Sf,,Sf)

Questo è un esempio di definizione a virgola fissa, spesso usata in semantica e usata anche in linguaggi formali. Una grammatica senza contesto può essere vista come un sistema di equazioni linguistiche (cioè equazioni di stringhe), in cui il non terminale rappresenta le variabili linguistiche. La soluzione a virgola fissa associa una lingua a ciascuna variabile e la lingua così associata al simbolo iniziale è quella definita dalla grammatica CF.

Estendere il concetto

La chiusura come sopra definita ha il solo scopo di estendere un sottoinsieme in un insieme minimo S f tale che l'operazione fSSff sia sempre definita.

Come sottolineato dal mallardz OP, questa non è una spiegazione sufficiente, poiché non comprende la parola vuota in S f quando non è già in S . In effetti questa chiusura corrisponde alla definizione del Kleene plus e non alla stella KleeneϵSfS+* .

In realtà, l'idea di chiusura può essere estesa o considerata in diversi modi.

  1. Estensione ad altre proprietà algebriche

    Sulla strada per estenderlo (anche se non è più chiamato chiusura ) considera più in generale un'estensione a un insieme con proprietà algebriche specifiche rispetto all'operazione f .Sff

    Se definisci come l'insieme più piccolo contenente S che è un Monoide per la funzione binaria f , allora hai bisogno sia della chiusura che di un elemento neutro che è la parola vuota ϵ .SfSfϵ

  2. Estensione attraverso un'operazione derivata

    C'è un secondo modo, più propriamente un problema di chiusura. Quando definisci la chiusura di , puoi considerarla rispetto ad alcuni degli argomenti, mentre consenti i valori dell'intero set DSDD per gli altri argomenti.

    Considerando (per semplicità) una funzione binaria su D , puoi definire S f , 1 come l'insieme più piccolo contenente S che soddisfa l'equazione: S f , 1 = { f ( s 1 , s 2 ) s 1S f , 1s 2D }fDSf,1S

    Sf,1={f(s1,s2)s1Sf,1s2D}

    o con equazioni impostate:

    Sf,1 is the smallest set such that SSf,1 and Sf,1=f(Sf,1,D)

    Questo ha senso anche quando gli argomenti non appartengono allo stesso set. Quindi potresti avere la chiusura rispetto ad alcuni argomenti in un set, considerando tutti i possibili valori per gli altri argomenti (sono possibili molte varianti).

    Dato un Monoide - ad esempio il monoide di stringhe con concatenazione - dove f è un'operazione binaria associativa sugli elementi dell'insieme M con un elemento di identità ϵ , è possibile definire i poteri di un elemento u M come: u M .(M,f,ϵ) fMϵuM

    uM.u0=ϵ and nNun=f(u,un1)

    unMN0

    MnUn={unuU}unf

    {U0={u0uU}={ϵ}nN,Un=f(U,Un1)
    fM .

    U,1UM

    U,1 is the smallest set suchthat UU,1 and U,1=f(U,1,N0)

    E questo ci dà l'operazione a stella di Kleene quando la costruzione viene applicata all'operazione di concatenazione del Monoide libero di stringhe.

    Ad essere sincero, non sono sicuro di non aver tradito. Ma una definizione è solo ciò che la crei, ed è stato l'unico modo in cui ho scoperto di trasformare la stella di Kleene in una chiusura. Forse sto provando troppo.
    I commenti sono ben accetti

Chiudere un set in un'operazione che non è sempre definita

Questa è una visione e un uso leggermente diversi del concetto di chiusura. Questo punto di vista non risponde realmente alla domanda, ma sembra bene tenerlo a mente per evitare alcune possibili confusioni.

fD

  • Df

  • DDf

  • DDff

DfDf

È così che gli interi sono costruiti da numeri naturali, considerando l'insieme di coppie di numeri naturali quotate da una relazione di equivalenza (due coppie sono equivalenti se i due elementi sono nello stesso ordine e hanno la stessa differenza).

Questo è anche il modo in cui i razionali possono essere costruiti dagli interi.

Ed è così che i reali classici possono essere costruiti dai razionali, sebbene la costruzione sia più complessa.


Ehi grazie, la chiusura sotto la spiegazione della concatenazione ha molto senso, ma esiste epsilon nella chiusura sotto la concatenazione?
mallardz,

ϵ

@DavidRicherby In realtà quello che volevo dire era se hai un set S = {m}, allora la chiusura sotto concatenazione di S contiene epsilon? Perché m * fa bene? Altrimenti immagino che la chiusura di Kleene non sia del tutto equivalente alla chiusura sotto concatenazione, anche se posso ancora vedere come è nato il nome. Inoltre mi sembra di ricordare di aver letto da qualche parte come inizialmente la star di Kleene fosse un operatore binario ed evitasse di produrre epsilon?
mallardz,

@DavidRicherby Ho completato la mia risposta nel tentativo di soddisfare l'obiezione giusta di @ mallardz.
babou

6

:XXX

  1. xx
  2. xyxy
  3. (x)=x

=(xy)=xy

X=2Σx,yΣxyxy

  1. LL
  2. L1L2L1L2
  3. (L)=L

Anche l'operatore Kleene plus soddisfa questi assiomi, quindi anche un operatore di chiusura secondo questa definizione.


Non sta rimuovendo il requisito di minimalità? Voglio dire, se rimuovi questo requisito, sia la risposta di David Richerby, sia la mia risposta iniziale sono OK per la stella di Kleene.
babou,

Rispondendo al mio commento. La minimalità viene mantenuta, ma viene definita rispetto all'insieme di insiemi chiusi. Nessuna relazione diretta con un'operazione su stringhe come la concatenazione. Kleene star e plus sono quindi entrambe le operazioni di chiusura, ma definite usando la minimalità rispetto ai diversi set di set chiusi. Questa è una visione molto più astratta. (Almeno ho la soddisfazione di vedere quel ragionamento al livello stabilito come ho fatto alla fine era la strada giusta da percorrere :). Interessante. Grazie.
babou,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.