Lenguaje de los valores de una función afín.


10

Escriba para la expansión decimal de (sin encabezado ). Deje y ser enteros, con . Considere el lenguaje de las expansiones decimales de los múltiplos de más una constante:n¯n0aba>0a

M={ax+b¯xN}

¿ M es Mregular? sin contexto?

(Contraste con el lenguaje de la gráfica de una función afín )

Creo que esta sería una buena pregunta para la tarea, por lo que las respuestas que comienzan con una pista o dos y explican no solo cómo resolver la pregunta sino también cómo decidir qué técnicas usar serían apreciadas.


Justo ahora me doy cuenta de que he respondido un caso específico, siguiendo la idea de @vonbrand. DFA que acepta representaciones decimales de un número natural divisible por 43
Hendrik ene

Respuestas:


9

Muy simple: suponga que los números se escriben en decimal (otras bases se manejan mediante una modificación trivial). Construir un DFA, con estados 0, 1, ..., . El estado inicial es 0, y desde el estado en la entrada, el dígito va al estado . El estado de aceptación es (podría necesitar un ajuste si ).a - 1 q d ( 10 q + d ) mod a b mod a b > aaa1qd(10q+d)modabmodab>a


1
Muy bonito, ¡mucho mejor que el mío!
David Lewis el

8

Es regular. Primero trabajemos en binario, que se generalizará a cualquier base> 1. Sea el idioma en cuestión. Para a = 1, b = 0 obtenemosMa,b

M1,0={1,10,11,100,101,...}

que es todas las cadenas sobre sin ceros a la izquierda, lo cual es regular (construya una expresión regular para ello).{0,1}

Ahora para cualquier , con b todavía 0 obtenemos de multiplicando numéricamente por a, es decir, realizando la transformación en cada cadena de . Eso se puede hacer a nivel de bits mediante una secuencia de cambios y adiciones de que dependen de los bits de la cadena fija . Las dos transformaciones que necesitamos son:M a , 0 M 1 , 0 ˉ x¯ a x M a , 0 x ˉ aaMa,0M1,0x¯ax¯Ma,0xa¯

ˉ x ˉ x 0x¯2x¯ que esx¯x¯0

y

x¯2x+x¯

Concatenar un 0 a la derecha conserva claramente la regularidad. Por lo tanto, solo tenemos que demostrar que la segunda operación conserva la regularidad. La forma de hacerlo es con un transductor de estado finito trabajando en de derecha a izquierda. Ese es el paso más difícil. Sugiero hacerlo con un programa de pseudocódigo y un poco de memoria auxiliar finita (como algunas variables de bit) en lugar de usar estados. Siempre que la memoria tenga un tamaño fijo en todas las entradas y escanee estrictamente de derecha a izquierda, es una transducción de estado finito y conserva la regularidad.x¯

Finalmente, para obtener de necesitamos agregar numéricamente a cada cadena, pero eso se hace con un transductor similar que depende del número fijo b. M a , 0 b T bMa,bMa,0bTb

Para hacer lo mismo en cualquier base, muestre adicionalmente cómo realizar la multiplicación por un solo dígito en esa base, utilizando un transductor que depende de d. Con eso, podemos multiplicar por números de varios dígitos y aún permanecer en los idiomas regulares. O bien, podemos precisar esto diciendo que la multiplicación por es una suma repetida.S d ddSdd

Solo querías pistas. Cada uno de esos pasos depende de un teorema / técnica bastante complejo, por lo que probarlos para obtener una prueba completa será un trabajo adicional.


Su FA no obtiene como entrada, por lo que no veo cómo lo que escribe muestra que el idioma en cuestión es regular. Tenga en cuenta que no todos los programas que usan memoria finita corresponden a FA: es importante que pueda ir solo una vez y de izquierda a derecha sobre la entrada, considerando cada símbolo de entrada exactamente una vez. x¯
Raphael

@Raphael Puedes ir de derecha a izquierda si quieres, lo importante es ser consistente. No puedo encontrar una falla en el boceto de prueba de David; Invocar transductores es un poco menos elemental de lo que imaginé, pero parece válido.
Gilles 'SO- deja de ser malvado'

@Gilles: En primer lugar, no explica cómo intercalar la multiplicación por y la suma de al resultado en una sola pasada ; incluso reduce la multiplicación por a "una secuencia de cambios y adiciones de ". Cada turno y adición está bien, pero ¿cómo hacer la secuencia? En segundo lugar, y más importante, muestra cómo construir un transductor que calcule ; eso no inmediatamente darle una FA que acepta . Por ejemplo, multiplicar números es fácil pero factorizar no lo es (supuestamente). Por lo tanto, necesita al menos un argumento adicional. b a x ˉ x¯ a x + b Mabax x¯ax+b¯ M
Rafael

No estoy construyendo una FSA. Estoy comenzando con un conjunto que se muestra fácilmente como regular ( ) y luego transformando todas las cadenas en él con una serie finita de operaciones, cada una de las cuales conserva la regularidad. Esto requiere una serie de pases (transductores). Pero eso está bien, como la secuencia de los transductores y la estructura de cada uno se fija por adelantado basándose sólo en y . Cada pase (transductor) conserva la regularidad, por lo que no es necesario intercalarlos en un solo pase. Sí, no "elemental". Pero construir una FSA de una vez, con una sola pasada, sería terriblemente complejo. a bM1,0ab
David Lewis

1
@Raphael: sí, eso es muy poderoso. De hecho, muchas familias no regulares también están cerradas bajo transductores de estado finito. Y puede usar transductores como mecanismos de reducción, obteniendo una teoría completa de la complejidad "estructural" de los lenguajes no regulares.
David Lewis

8

Sugerencia n. ° 1 : primero resuelva el problema más popular "escriba un autómata que reconozca las representaciones decimales / binarias de los números divisibles por 3" cuando el bit menos significativo aparezca primero.

Pregunta intermedia: pruebe que es regular.{ax+b¯ax+b0xZ}

Sugerencia n. ° 2 : El gráfico de la función "módulo " es finito. Puede calcularlo para cada en que es tanto el conjunto de dígitos como el idioma de su autómata.a d { 0 , , 9 }(n10n+d)ad{0,,9}

Consejo # 3 : Ahora, reemplace con . ¿Qué cambia esto? Intente utilizar el hecho de que los lenguajes regulares son estables por intersección en lugar de construir un autómata ad-hoc . x NxZxN

Sugerencia n. ° 4 : ahora suponga que es un número primo (de modo que es un campo) y que todavía estamos en el caso dondeZ / a Z x ZaZ/aZxZ . Ahora usamos una representación donde el primer bit es el bit más significativo . ¿Puedes construir el autómata de la misma manera?

Pista # 5 : no siempre tienes que construir un autómata para probar que un idioma es regular. ¿Cómo puedes usar los resultados anteriores para demostrar que es regular? (con el bit más significativo primero)M


Siéntase libre de comentar si considera que esto no es apropiado.
jmad

La pista # 1 es un gran paso. En la pista # 4, es importante darse cuenta de que y un 10 son diferentes. Ir por Z se siente como un desvío, tienes que manejar el carácter del signo: ¿por qué no quedarte en N ? a{2,5}a10ZN
Gilles 'SO- deja de ser malvado'

@Gilles: Quería decir cuando a x + b 0 y x Z , porque 3 x + 1234 es tedioso de reconocer. ax+b¯ax+b0xZ3x+1234
jmad

@Gilles: Creo que la Pista # 1 es demasiado genial para ser mimada. Probablemente tengas razón sobre la Pista # 4.
jmad

5

Estoy siguiendo la idea de @vonbrand:

Pista 1:

Resuelve primero para . Puedes usar el Teorema de Myhill-Nerode .b=0

Definimos la siguiente relación . Obviamente, esta es una relación de equivalencia. Además, es congruente a la derecha, ya que si agregamos un dígito d obtenemos ˉ xˉ yx¯y¯:xymodad. Finalmente saturaL, ya queLes la clase de equivalencia[0]. Comotiene un número finito de clases, según el Teorema de Myhill-Nerode, es regular. La FSA asociado es mínimo y tieneunosestados.x¯y¯10x+d10y+dmodax¯dy¯dLL[0]a

Pista 2:

Resuelva el caso general, reutilice el autómata inducido por el caso .b=0

Sabemos que el lenguaje es regular para . Por lo tanto simplemente tomar el un estado FSA M para el b = 0 idioma. Ahora construimos un FSA para L . Suponga que b tiene k dígitos. Luego, la FSA se ramifica como un árbol de profundidad k de 10 arios y contiene todos los caminos a los números con k dígitos. Todos los estados a los que se puede llegar con un número que no está en la forma a x + b están rechazando o aceptando. Finalmente conectamos la parte del árbol de la FSA con el autómata Mb=0aMb=0Lbkkkax+bM, según el resto por la división por .a


Entiendo la técnica, pero no los detalles. No se Pista 1 también adressing la caso? Además, ¿para el mod 10 esperaría 10 estados (no a )? a=1a
Hendrik Jan

3

El lenguaje es regular.

Sugerencia: expulsar nueves


Idea de prueba

Para y b < 9 ,a=9b<9

construir un autómata con estados etiquetados de 0 a 8 . 0 es el estado inicial, y el último estado es b . Desde el estado s , en el dígito d , transición al estado ( s + d )9080bsd .(s+d)mod9

Para manejar otros valores de que son coprimos con 10 ,a10

agrupe los dígitos en paquetes para encontrar algo de modo que a divida 10 k - 1 (por ejemplo, tome k = 3 si a = 37 porque 999 = 27 × 37 ).ka10k1k=3a=37999=27×37

Para manejar valores de cuyos únicos factores primos son 2 y 5 ,a25

tenga en cuenta que se trata de un número finito de dígitos al final.

Para generalizar a todos los valores de y b ,ab

use el hecho de que la unión y la intersección de los lenguajes regulares son regulares, que los lenguajes finitos son regulares y que los múltiplos de son exactamente los múltiplos de ambos cuando un 1 y un 2 son coprimos.a1a2a1a2

Tenga en cuenta que utilizamos la técnica que sea conveniente; Las tres técnicas elementales principales (expresiones regulares, autómatas finitos, propiedades de teoría de conjuntos) están representadas en esta demostración.


Prueba detallada

Sea con un coprimo con 10 . Deje M = { ¯ a a=2p5qaa10 y M = { ¯ 2 p 5 qM={ax+b¯xZax+b0} . Por aritmética elemental, los números iguales a b módulo a son exactamente los números iguales a b módulo a y a b módulo 2 p 5 q , entonces M { ¯ xx b } = M M { ¯ xx b } . Dado que la intersección de los idiomas regulares es regular, yM={2p5qx+b¯xZ2p5qx+b0}babab2p5qM{x¯xb}=MM{x¯xb} es regular porque es el complemento de un lenguaje finito (por lo tanto, regular), si M y M también son regulares, entonces M { ¯ xx b } es regular; y M es, por lo tanto, regular ya que es la unión de ese lenguaje con un conjunto finito. Por lo tanto, para concluir la prueba, es suficiente demostrar que M ' y M son regulares.{x¯xb}MMM{x¯xb}MMM

Comencemos con , es decir, números módulo 2 p 5 q . Los enteros cuya decimal expansión está en M " se caracterizan por su último m un x ( p , q ) dígitos, ya que el cambio dígitos además medios que dejan la adición de un múltiplo de 10 m una x ( p , q ) que es un múltiplo de 2 p 5 q . Por lo tanto, 0 M = F dondeM2p5qMmax(p,q)10max(p,q)2p5q0M=F es el alfabeto de todos los dígitos y F es un conjunto finito de palabras de longitud m a x ( p , q ) , y M = ( F ) ( ( { 0 } ) ) es un idioma.Fmax(p,q)M=(F)(({0}))

Ahora pasamos a , es decir, los números del módulo a donde a es coprimo con 10 . Si a = 1, entonces M es el conjunto de expansiones decimales de todos los naturales, es decir, M = { 0 } ( ( { 0 } ) ) , que es un lenguaje normal. Imaginemos ahora un ' > 1 . Deje k = a -Maa10a=1MM={0}(({0}))a>1 . Según el pequeño teorema de Fermat, 10 a - 11k=a1 , lo que significa que a divide 10 k - 1 . Construimos un autómata finito determinista que reconocerá 0 M ′ de la siguiente manera:10a11modaa10k10M

  • Los estados son . La primera parte representa una posición de dígitos y la segunda parte representa un módulo de número 10 k - 1 .[0,k1]×[0,10k2]10k1
  • El estado inicial es .(0,0)
  • Hay una transición etiquetada de ( i , u ) a ( j , v ) iff v d 10 i + ud(i,u)(j,v) y j i + 1vd10i+umod10k1 .ji+1modk
  • Un estado es final si u b(i,u) (tenga en cuenta que a divide 10 k - 1 ).ubmodaa10k1

El estado alcanzado desde una palabra ¯ x satisface i | ¯ x |(i,u)x¯ y u xi|x¯|modk . Esto se puede probar por inducción sobre la palabra, siguiendo las transiciones en el autómata; las transiciones se calculan para esto, usando el hecho de que 10 k1uxmod10k1 . Así, el autómata reconoce las expansiones decimales (permitiendo ceros iniciales) de los números de la forma u + y 10 k con u b10k1mod10k1u+y10k ; desde 10 k1ubmoda , el autómata reconoce las expansiones decimales de los números iguales a b módulo a permitiendo ceros iniciales, que es 0 M . Este lenguaje se demuestra así regular. Finalmente, M = ( 0 M ) ( ( { 0 } ) ) es un lenguaje regular.10k1modaba0MM=(0M)(({0}))

Para generalizar a bases distintas de , reemplace 2 y 5 anteriores por todos los factores primos de la base.1025

Prueba formal

Dejado como ejercicio para el lector, en su probador de teoremas favorito.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.