En su respuesta sobre cstheory.SE, Lev Reyzin me dirigió a la tesis de Robert Schapire que mejora el enlace a las consultas de membresía en la sección 5.4.5. El número de consultas de contraejemplo permanece sin cambios. El algoritmo que utiliza Schapire difiere en lo que hace después de una consulta de contraejemplo.O(n2+nlogm)
Bosquejo de la mejora.
En el nivel más alto, Schapire obliga del algoritmo de Angluin a tener la condición adicional de que para un cerrado ( S , E , T ) y cada s 1 , s 2 ∈ S si s 1 ≠ s 2 entonces r o w ( s 1 ) ≠ r o w ( s 2 ) . Esto garantiza que | S |(S,E,T)(S,E,T)s1,s2∈Ss1≠s2row(s1)≠row(s2) y también hace que laconsistenciacaracterística del algoritmo de Angluin trivial de satisfacer. Para garantizar esto, tiene que manejar los resultados de un contraejemplo de manera diferente.|S|≤n
Dado un contraejemplo , Angluin simplemente añadido z y todas sus prefijos a S . Schapire hace algo más sutil en lugar de añadir un solo elemento de correo a E . Esta nueva e hará que ( S , E , T ) no se cierre en el sentido de Angluin y la actualización para cerrar con introducir al menos una nueva cadena a S mientras se mantienen distintas las filas. La condición en e es:zzSeEe(S,E,T)Se
∃s,s′∈S,a∈Σs.trow(s)=row(s′a)ando(δ(q0,se))≠o(δ(q0,s′ae))
Donde es la función de salida, q 0 es el estado inicial y δ la regla de actualización del verdadero DFA 'desconocido'. En otras palabras, e debe servir como testigo para distinguir el futuro de s de s ′ a .oq0δess′a
Para calcular esta desde z , hacemos una búsqueda binaria para descubrir una subcadena r i tal que z = p i r i y 0 ≤ | p i | = i < | z | tal que el comportamiento de nuestra máquina conjeturada difiere en función de un carácter de entrada. Con más detalle, dejamos que s i ser la cadena que corresponde al estado alcanzado en nuestra máquina conjeturado siguiendo p i . Utilizamos la búsqueda binaria (aquí es donde el registro mezriz=piri0≤|pi|=i<|z|sipilogmko(δ(q0,skrk))≠o(δ(q0,sk+1rk+1)rk+1eE