¿Cuál fue el proceso de creación de esta expresión regular que verifica la divisibilidad entre 7?

Los números divisibles por 7 se corresponden con el autómata finito obvio con 7 estados [matemática] Q = \ {0, \ ldots, 6 \} [/ matemática], estado inicial y final [matemática] 0 [/ matemática] y transiciones [ math] i \ stackrel d \ mapsto (10i + d) \ bmod 7 [/ math]. Convertí este autómata finito en una expresión regular, usando la recursión en el conjunto de estados intermedios permitidos:

Dado [math] i, j \ en Q [/ math] y [math] S \ subseteq Q [/ math], deje que [math] f (i, S, j) [/ math] sea una expresión regular que coincida con todos rutas de autómatas desde [matemática] i [/ matemática] a [matemática] j [/ matemática] utilizando solo estados intermedios dentro de [matemática] S [/ matemática]. Luego,
[matemáticas] f (i, \ varnothing, j) = (j – 10i) \ bmod 7 [/ matemáticas],
[matemáticas] f (i, S \ cup \ {k \}, j) [/ matemáticas]
[matemáticas] = f (i, S, j) \ mid f (i, S, k) f (k, S, k) ^ * f (k, S, j) [/ matemáticas].

(Esta recurrencia ofrece un procedimiento mucho más simple para convertir los NFA en expresiones regulares que el procedimiento típicamente presentado que involucra “NFA generalizados”. Se me ocurrió durante la conferencia sobre el tema de Michael Sipser; cuando se lo mostré después de clase, dijo que no había no lo he visto antes. Sin embargo, aparentemente se sabe; ver comentarios).

Utilicé la programación dinámica para elegir [math] k [/ math] para minimizar la longitud de la expresión resultante.

Eche un vistazo al diagrama en la respuesta del usuario 9479463705020282020 a ¿Cómo se determina si un número es divisible por 7? Eso se puede convertir en una máquina de estado finito y luego en una expresión regular. Probablemente así fue como se hizo.

Editar: Tenía razón. Ver http://www.quora.com/Mathematics/How-does-one-determine-whether-a-number-is-evenly-divisible-by-7/answer/Anders-Kaseorg/comment/2188490?srid=0ZX&share = 1 .

Como dice el dicho:

Expresiones regulares: ahora tiene dos problemas (Expresiones regulares: ahora tiene dos problemas)

En serio, sin embargo, expresiones regulares interesantes 🙂