En realidad, aún puede derivar fórmulas de conteo para expresiones regulares inequívocas con estrellas de Kleene dentro.
Dada la definición inductiva de una expresión regular como:
e ∈ R e : = x ∈ Σ ∣mi0 0 mi1∣mi0 0+mi1∣mi∗
Considere la siguiente traducción [[ ⋅ ]] : R e → C ( z) que toma una expresión regular y la traduce en una función racional de valores complejos:
[[ x ∈ Σ ]][[mi0 0 mi1]][[mi0 0+mi1]][[mi∗]]= z= [[mi0 0]] × [[mi1]]= [[mi0 0]] + [[mi1]]=11 - [[ e ]]
Podemos mostrar que esta traducción devuelve una expresión racional haciendo inducción estructural en miy observando que todas las operaciones utilizadas en el lado derecho conservan la racionalidad.
Supongamos que la expresión regular mi que ponemos es inequívoco, entonces encontraríamos que la función racional denotada por [[ e ]] ∈ C ( z) es en realidad la función generadora para la familia de palabras que son aceptadas por el lenguaje subyacente mi, clasificados por su longitud.
Por ejemplo, considere el idioma (una∗si)∗, que define el lenguaje de las ejecuciones de una delimitado por si. Ahora, esta expresión regular no es ambigua, por lo que podemos ejecutar nuestro truco de traducción:
[[ (una∗si)∗]]=11 - [[una∗b ]]=11 - ( [[una∗]] × [[ b ]] )=11 - (11 - [ [ a ] ]× z)=11 -z1 - z=12+12 - 4 z
Como resultado, dada la función generadora anterior, su coeficiente de extracción será
[znorte] [[ (una∗si)∗]] =2n - 1+δ( n )2
dónde
δ( n ) = {10 0si n = 0de otra manera
De hecho, desde nuestra traducción [[ ⋅ ]] genera funciones racionales, podemos usar una descomposición de fracción parcial para crear una fórmula de enumeración para cualquier expresión regular inequívoca.
Supongamos que tiene una función racional irreducible
r ( z) +p ( z)q( z)
dónde
r , p , q son polinomios, entonces puedes descomponer esto en
r ( z) +C0 0z-q∗0 0+ ⋯ +Cnortez-q∗norte
dónde
q∗k son las raíces de
q( z). Hay algunos casos técnicos de esquina (como multiplicidad de raíces, etc.), pero es relativamente fácil hacer la extracción de coeficientes en la expresión anterior:
[znorte]Cz-q∗= C×q∗- n
De hecho, la descomposición de fracción parcial se generaliza a funciones racionales multivariadas, por lo que en realidad puede construir fórmulas de conteo para consultas tales como "¿Cuántas palabras hay donde hay norte a
s y metro b
s? "
Desafortunadamente, la medida en que este método será útil termina cuando tiene una expresión ambigua.