Aquí hay un enfoque que espero que le brinde una aproximación de factor multiplicativo, con tiempo de ejecución polinomial.
Dejar L ser un lenguaje regular que es un subconjunto de { 0 , 1}norte, p.ej, L = L ( M) ∩ { 0 , 1}norte. Intentaremos calcular el tamaño aproximado deL.
En un nivel alto, nuestro enfoque para aproximarnos El | L | se verá algo así:
Elige una fracción pags, dónde 0 < p < 1.
Elige un idioma normal R tal que, más o menos, R es un subconjunto aleatorio de { 0 , 1}norte de tamaño aproximadamente pags2norte (es decir, El | R | ≈p2norte)
Comprueba si L ∩ RNo está vacío. Tenga en cuenta que esta verificación se puede hacer en tiempo polinómico.
Realice repetidamente los pasos 1-3 para varios valores de pags. Esto le brinda información que le permitirá aproximarseEl | L |.
En particular, si El | L | =mentonces esperaríamos
Pr [ L ∩ R = ∅ ] = ( 1 - p)metro≈mi- p m.
Entonces, si eliges p = 1 / my repita los pasos 1-3 varias veces, debería esperar ver una intersección vacía aproximadamente el 37% del tiempo. Si ve una intersección vacía significativamente más a menudo que eso, entonces aumentepagse intenta de nuevo. Si ve una intersección vacía significativamente menos frecuente que eso, podría disminuirpags e intenta de nuevo.
De esta forma, utilizando algo como la búsqueda binaria, debería poder aproximar El | L | dentro de un factor de aproximación multiplicativo.
Aún tendrá que elegir alguna forma de elegir Rpara que sea regular pero también se comporte como un subconjunto aleatorio. Hay muchas posibilidades, pero una buena manera podría ser elegir un hash aleatorio 2-universalh : { 0 , 1}metro→ { 0 , 1 , 2 , … , k - 1 }recoger y∈ { 0 , 1 , ... , k - 1 } al azar, y dejar R = { x ∈ { 0 , 1}norte: h ( x ) = y}. Elegirk = ⌈ 1 / p ⌉ te da un conjunto aleatorio R de aproximadamente el tamaño correcto, y porque h es 2-universal, todas las matemáticas anteriores deberían funcionar correctamente.
Esto debería resolver su problema para el caso donde todas las cadenas en la NFA tienen la misma longitud, digamos norte. Si tienen diferentes longitudes, puede manejar cada longitud posible por separado. Ya queMETRO es acíclico, la longitud máxima de cualquier cadena en L (M) es como máximo el número de estados en METRO, por lo que esto no aumenta demasiado el tiempo de ejecución.
(Esta construcción podría recordarle el teorema Vazirani-Vazirani sobre el SAT inequívoco).