Descubrí que si no entiendo la etimología detrás de un término cs / programación, generalmente significa que he perdido o malinterpretado algún concepto subyacente importante.
No entiendo por qué la estrella de Kleene también se llama cierre de Kleene. ¿Está relacionado con los cierres en la programación, una función con variables no locales vinculadas?
... en reflexión, ¿tal vez es porque permite que un conjunto abierto se escriba en una forma de expresión cerrada?
... bueno, en la buena y antigua manera de explicar el pato de goma , ahora supongo que es eso, pero aún así agradecería una respuesta autorizada.
automata
regular-expressions
mallardz
fuente
fuente
Respuestas:
Un conjunto se cierra bajo algún operador si el resultado de aplicar el operador a elementos del conjunto siempre está en el conjunto. Por ejemplo, los números naturales se cierran mediante la suma porque, siempre que y m son números naturales, n + m es un número natural. Por otro lado, los naturales no se cierran bajo sustracción ya que, por ejemplo, 3 - 5 no es un número natural.n m n+m 3−5
El cierre de un conjunto debajo de algún operador es el conjunto más pequeño que contiene S que está cerrado debajo del operador. Por ejemplo, el cierre de los números naturales bajo resta son los enteros; el cierre de los números naturales que se suman son solo los números naturales, ya que el conjunto ya está cerrado.S S
Entonces, "cierre de Kleene" no es un nombre alternativo para "estrella de Kleene". La estrella de Kleene es el operador; El cierre de Kleene de un conjunto es el cierre de ese conjunto bajo el operador.
fuente
En una palabra
El nombre de cierre de Kleene está claramente destinado a significar cierre bajo alguna operación de cadena.
Sin embargo, un análisis cuidadoso (gracias a un comentario crítico del OP Mallardz), muestra que la estrella de Kleene no puede cerrarse bajo concatenación, que más bien corresponde al operador Kleene plus.
El operador estrella de Kleene en realidad corresponde a un cierre bajo la operación de potencia derivada de la concatenación.
El nombre de estrella de Kleene proviene de la representación sintáctica de la operación con una estrella
*
, mientras que el cierre es lo que hace.Esto se explica más adelante a continuación.
Recuerde que el cierre en general, y la estrella de Kleene en particular, es una operación en conjuntos, aquí en conjuntos de cadenas, es decir, en idiomas. Esto se usará en la explicación.
Cierre de un subconjunto bajo una operación siempre definida
Un conjunto es cerrado bajo algunos n operación ary f si y sólo si f siempre se define para cualquier n tupla de argumentos en C y C = { f ( c 1 , ... , c n ) | ∀ c 1 , ... , c n ∈ C } .C n f f n C C={f(c1,…,cn)∣∀c1,…,cn∈C}
Extendiendo a conjuntos de valores de la manera habitual, es decir, f ( S 1 , ... , S n ) = { f ( s 1 , ... , s n ) ∣ ∀ s i ∈ S i . 1 ≤ i ≤ n } podemos reescribir la condición como una ecuación establecida: C = f ( C , ... , C )f
Para un dominio (o conjunto) con una operación f que siempre se define en D , y un conjunto S ⊂ D , el cierre de S bajo f es el conjunto más pequeño S f que contiene S que satisface la ecuación: S f = { f ( s 1 , ... , s n ) ∣ ∀ s 1 , ... , s n ∈ S f } .D f D S⊂D S f Sf S Sf={f(s1,…,sn)∣∀s1,…,sn∈Sf}
Más tersamente con una ecuación establecida, el cierre de bajo f puede definirse por:S f
Este es un ejemplo de definición de punto menos fijo, a menudo usado en semántica, y también usado en lenguajes formales. Una gramática libre de contexto se puede ver como un sistema de ecuaciones de idiomas (es decir, ecuaciones de conjuntos de cadenas), donde las no-terminales representan variables de lenguaje. La solución con menos punto fijo asocia un lenguaje a cada variable, y el lenguaje así asociado al símbolo inicial es el definido por la gramática CF.
Extendiendo el concepto
El cierre como se definió anteriormente solo tiene la intención de extender un subconjunto en un conjunto mínimo S f tal que la operación f siempre esté definida.S Sf f
Como señalado por el mallardz OP, esto no es una explicación suficiente, ya que no incluirá la palabra vacía en S f cuando no está ya en S . De hecho, este cierre corresponde a la definición de Kleene plus y no a la estrella de Kleene .ϵ Sf S
+
*
En realidad, la idea de cierre puede extenderse o considerarse de diferentes maneras.
Extensión a otras propiedades algebraicas
En la forma de extenderlo (aunque ya no se llama cierre ) considera más generalmente una extensión a un conjunto tiene propiedades algebraicas específicas con respecto a la operación f .Sf f
Si define como el conjunto más pequeño que contiene S que es un Monoide para la función binaria f , entonces necesita tanto el cierre como un elemento neutro que es la palabra vacía ϵ .Sf S f ϵ
Extensión a través de una operación derivada
Hay una segunda forma, que es más adecuadamente un problema de cierre. Cuando define el cierre de , puede considerarlo con respecto a algunos de los argumentos, mientras permite valores de todo el conjunto D para los otros argumentos.S⊂D D
Considerando (por simplicidad) una función binaria sobre D , puede definir S f , 1 como el conjunto más pequeño que contiene S que satisface la ecuación: S f , 1 = { f ( s 1 , s 2 ) ∣ ∀ s 1 ∈ S f , 1 ∧ ∀ s 2 ∈ D }f D Sf,1 S
o con ecuaciones establecidas:
Esto también tiene sentido cuando los argumentos no pertenecen al mismo conjunto. Entonces puede cerrar con respecto a algunos argumentos en un conjunto, mientras considera todos los valores posibles para los otros argumentos (son posibles muchas variaciones).
Y esto nos da la operación en estrella de Kleene cuando la construcción se aplica a la operación de concatenación del monoide de cadenas libre.
Para ser completamente honesto, no estoy seguro de que no haya estado haciendo trampa. Pero una definición es solo lo que haces, y esa fue la única forma en que encontré convertir la estrella de Kleene en un cierre. Puede que me esté esforzando demasiado.
Comentarios son bienvenidos
Cerrar un conjunto bajo una operación que no siempre está definida
Esta es una visión y uso ligeramente diferentes del concepto de cierre. Este punto de vista no responde realmente a la pregunta, pero parece bueno tenerlo en cuenta para evitar posibles confusiones.
Así es como se construyen los enteros a partir de números naturales, considerando el conjunto de pares de números naturales cotizados por una relación de equivalencia (dos pares son equivalentes si los dos elementos están en el mismo orden y tienen la misma diferencia).
Así también se pueden construir racionales a partir de los enteros.
Y así es como los reales clásicos se pueden construir a partir de los racionales, aunque la construcción es más compleja.
fuente
Otro significado de cierre , que es más general que el significado explicado por David Richerby, es cualquier operador∗ : X→ X en un poset X que satisface los siguientes axiomas:
El ejemplo clásico es el cierre topológico , que también satisface⊥∗= ⊥ y ( x ∨ y)∗= x∗∨ y∗ , two properties not satisfied by the Kleene star.
The poset in the case of the Kleene star is the poset of all sets of words:X=2Σ∗ . If x,y⊆Σ∗ then x≤y if x⊆y . The axioms of closure then state that
The Kleene plus operator also satisfies these axioms, so is also a closure operator under this definition.
fuente