Descobri que, se não entendo a etimologia por trás de um termo cs / programação, isso geralmente significa que perdi ou entendi mal algum conceito subjacente importante.
Não entendo por que a estrela Kleene também é chamada de encerramento Kleene. Está relacionado a fechamentos na programação, uma função com variáveis não locais ligadas?
... na reflexão, talvez seja porque permite que um conjunto aberto seja escrito em uma expressão fechada?
... bem, na boa e velha moda explicativa do pato de borracha , agora acho que é isso, mas ainda assim gostaria de receber uma resposta autorizada.
automata
regular-expressions
mallardz
fonte
fonte
Respostas:
Um conjunto é fechado sob algum operador se o resultado da aplicação do operador a itens do conjunto estiver sempre no conjunto. Por exemplo, os números naturais são fechados em adição porque, sempre que e m são números naturais, n + m é um número natural. Por outro lado, os naturais não são fechados por subtração, pois, por exemplo, 3 - 5 não é um número natural.n m n+m 3−5
O fechamento de um conjunto sob algum operador é o menor conjunto que contém que é fechado sob o operador. Por exemplo, o fechamento dos números naturais sob subtração é o número inteiro; o fechamento dos números naturais em adição é apenas os números naturais, uma vez que o conjunto já está fechado.S S
Portanto, "fechamento Kleene" não é um nome alternativo para "estrela Kleene". A estrela Kleene é a operadora; o fechamento Kleene de um conjunto é o fechamento daquele conjunto sob o operador.
fonte
Em poucas palavras
O nome de fechamento Kleene pretende claramente significar fechamento sob alguma operação de cadeia.
No entanto, uma análise cuidadosa (graças a um comentário crítico do OP mallardz) mostra que a estrela Kleene não pode ser fechada sob concatenação, o que corresponde ao operador Kleene plus.
O operador estrela Kleene realmente corresponde a um fechamento sob a operação de energia derivada da concatenação.
O nome estrela Kleene vem da representação sintática da operação com uma estrela
*
, enquanto fechamento é o que ela faz.Isso é explicado mais abaixo.
Lembre-se de que o fechamento em geral, e a estrela Kleene em particular, é uma operação em conjuntos, aqui em conjuntos de strings, ou seja, em idiomas. Isso será usado na explicação.
Fechamento de um subconjunto em uma operação sempre definida
Um conjunto é fechada sob alguns n operação -ary f sse f é sempre definida para qualquer n -tuple de argumentos em C e C = { f ( c 1 , ... , c n ) | ∀ c 1 , ... , c n ∈ C } .C n f f n C C={f(c1,…,cn)∣∀c1,…,cn∈C}
Ao estender para conjuntos de valores da maneira usual, isto é, f ( S 1 , ... , S n ) = { f ( s 1 , ... , s n ) | ∀ s i ∈ S i . 1 ≤ i ≤ n } podemos reescrever a condição como uma equação definida: C = f ( C , … , C )f
Para um domínio (ou conjunto) com uma operação f que é sempre definida em D e um conjunto S ⊂ D , o fechamento de S sob f é o menor conjunto S f que contém S que satisfaz a equação: 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}
De maneira mais concisa com uma equação definida, o fechamento de sob f pode ser definido por:S f
Este é um exemplo de definição de ponto menos fixo, geralmente usada em semântica e também em linguagens formais. Uma gramática livre de contexto pode ser vista como um sistema de equações de idiomas (isto é, equações de conjunto de strings), onde os não-terminais representam variáveis de idioma. A solução com menos pontos fixos associa um idioma a cada variável, e o idioma assim associado ao símbolo inicial é aquele definido pela gramática CF.
Ampliando o conceito
Fecho tal como definido acima só foi concebido para estender um subconjunto em um conjunto mínimo S f de tal modo que a operação de f é sempre definida.S Sf f
Como observado pelo mallardz OP, esta não é uma explicação suficiente, uma vez que não irá incluir a palavra vazia em S f quando ele não estiver em S . De fato, esse fechamento corresponde à definição do Kleene plus e não à estrela Kleene .ϵ Sf S
+
*
Na verdade, a ideia de fechamento pode ser estendida ou considerada de maneiras diferentes.
Extensão a outras propriedades algébricas
Extensão através de uma operação derivada
ou com equações definidas:
Isso também faz sentido quando os argumentos não pertencem ao mesmo conjunto. Em seguida, você pode encerrar com relação a alguns argumentos em um conjunto, considerando todos os valores possíveis para os outros argumentos (muitas variações são possíveis).
E isso nos dá a operação em estrela Kleene quando a construção é aplicada à operação de concatenação do Monoid livre de strings.
Para ser completamente honesto, não tenho certeza se não traí. Mas uma definição é apenas o que você faz, e foi a única maneira que encontrei para transformar a estrela Kleene em um fechamento. Eu posso estar tentando demais.
Comentários são bem-vindos.
Fechar um conjunto em uma operação que nem sempre é definida
Essa é uma visão e uso ligeiramente diferentes do conceito de fechamento. Essa visão não está realmente respondendo à pergunta, mas parece bom manter isso em mente para evitar possíveis confusões.
É assim que números inteiros são construídos a partir de números naturais, considerando o conjunto de pares de números naturais quociente por uma relação de equivalência (dois pares são equivalentes se os dois elementos estiverem na mesma ordem e tiverem a mesma diferença).
É também assim que os racionais podem ser construídos a partir dos números inteiros.
E é assim que os reais clássicos podem ser construídos a partir dos racionais, embora a construção seja mais complexa.
fonte
O operador Kleene plus também satisfaz esses axiomas, também é um operador de fechamento sob essa definição.
fonte