Tuesday, 17 October 2017

Dfa Divisible By $ 5 Binary Options


Estoy auto-estudiando las expresiones regulares y encontré un interesante problema de práctica en línea que implica escribir una expresión regular para reconocer todos los números binarios divisibles por 3 (y sólo esos números). Para ser honesto, el problema se le pidió para construir un DFA para tal escenario, pero me di cuenta de que debería ser equivalente posible utilizando expresiones regulares. Sé que hay una pequeña regla en lugar de averiguar si un número binario es divisible por 3: tomar el número de unos en lugares pares en el dígito y restar por el número de unos en lugares impares en el dígito - si esto es igual a cero , El número es divisible por 3 (ejemplo: 110 - 1 en la ranura pareja 2 y 1 en la ranura impar 1). Sin embargo, tengo algunos problemas para adaptar esto a una expresión regular. El más cercano Ive venir es darse cuenta de que el número puede ser 0, por lo que sería el primer estado. También vi que todos los números binarios divisibles por 3 comienzan con 1, por lo que sería el segundo estado, pero Im pegado desde allí. ¿Podría alguien ayudar a preguntó Mar 11 13 a las 1:50 Siguiendo lo que Oli Charlesworth dice, puede construir DFA para la divisibilidad de la base b número por un cierto divisor d. Donde los estados en el DFA representan el resto de la división. Para su caso (base 2 - número binario, divisor d 3 10): Tenga en cuenta que el DFA anterior acepta cadena vacía como un número divisible por 3. Esto se puede fijar fácilmente agregando un estado más intermedio al frente: Conversión a la expresión regular teórica Se puede hacer con el proceso normal. La conversión a la regex práctica en los sabores que apoya regex recursiva se puede hacer fácilmente, cuando se tiene el DFA. Esto se muestra para el caso de (base b 10, d 7 10) en esta pregunta de CodeGolf. SE. Rompiéndolo, se puede ver cómo se construye. El agrupamiento atómico (o grupo que no retrocede, o un grupo que se comporta de forma posesiva) se utiliza para asegurarse de que sólo la alternativa de cadena vacía es igualada. Este es un truco para emular (DEFINE) en Perl. Entonces los grupos de A a G corresponden a resto de 0 a 6 cuando el número se divide por 7. Responder Mar 11 13 at 6:44 Tengo otra forma de este problema y creo que esto es más fácil de entender. Cuando dividimos un número por 3, podemos tener tres restos: 0,1,2. Podemos describir un número que es divisible por 3 usando la expresión 3t (t es un número natural). Cuando añadimos 0 después de un número binario cuyo resto es 0, el número decimal real se duplicará. Porque cada dígito se está moviendo a una posición más alta. 3t 2 6t, esto también es divisible por 3. Cuando añadimos un 1 después de un número binario cuyo resto es 0, el número decimal real se doblará más 1. Debido a que cada dígito se mueve a una posición más alta seguida de un 1 3t 2 1. el resto es 1. Cuando añadimos un 1 después de un número binario cuyo resto es 1. El número decimal real se duplica más uno, y el resto es 0 (3t 1) 2 1 6t 3 esto es divisible por 3. Cuando añadimos un 0 después de un número binario cuyo resto es 1. El número decimal real se doblará. Y el resto será 2 (3t 1) 2 6t 2. Cuando añadimos un 0 después de un número binario cuyo El resto es 2. El resto será 1. (3t 2) 2 3t 4 3 (2t 1) 1 Cuando añadimos un 1 después de un número binario cuyo resto es 2. Entonces el resto será 2. (3t 2) 2 1 t 5 3 (2t 1) 2. No importa cuántas 1 agregue a un número binario cuyo resto sea 2, el resto será 2 para siempre. (3 (t 1) 2) 2 1 3 (t 2) 5 3 (t 3) 2 respondió 6 de noviembre 15 a las 20: 45 Estoy trabajando en un problema establecido para una clase, y pensé en una pregunta relacionada con lo que estaba trabajando en. ¿Existe un número mínimo de estados que debe tener un autómata finito para aceptar cadenas binarias que representan números divisibles por un entero? En un conjunto de problemas anterior, pude construir un DFA que aceptó cadenas binarias divisibles por 3 con 3 estados . ¿Es esto una coincidencia, o hay algo inherente al problema general de detectar cadenas divisibles por n que sugiere un número mínimo de estados que prometo que esto no responderá a una pregunta de tarea para mí. ) Preguntó Jan 29 12 en 0:35 HuckBennett Estoy de acuerdo con Kaveh que esta pregunta debe ser cerrada en cstheory, sobre todo para ser coherente. Sin embargo, también estoy de acuerdo con usted: esta es una pregunta divertida y cuando usted ve por primera vez DFAs es definitivamente uno que debe estar preguntando. Creo que el OP debe tratar de divertirse haciendo la respuesta por sí mismo, y luego consultar math. SE para más información. Ndash Artem Kaznatcheev 9830 Jan 29 12 at 6:10 Esta tarea isn39t (aunque se inspiró en una pregunta de tarea), it39s una pregunta interesante, don39t creo que es un resultado bien conocido y la respuesta a la pregunta apareció en un diario de investigación. No veo por qué debe estar cerrado. El límite superior era tarea, y es de hecho fácil, pero la pregunta era acerca del límite inferior. Ndash Peter Shor Jan 29 12 at 13: 43Esta máquina de estados finitos (FSM) acepta números binarios que son divisibles por tres. En teoría, los estados deben ser iguales al valor n mod 3, pero ¿cómo funciona esto para los números binarios Lo que no consigo es cómo las transiciones se reúnen porque una nueva entrada 0 o 1 no significa que un número fijo se agrega simplemente a la general norte. ¿Puede usted por favor ayudarme a entender que gracias de antemano los estados A, B y C corresponden a entradas congruentes a 0,1 y 2 mod 3, respectivamente. Supongamos que la entrada hasta ahora representa un múltiplo de 3, de modo que estás en el estado A. A 0 multiplica el número actual por 2, por lo que sigue siendo un múltiplo de 3, y estás todavía en el estado A. A 1 multiplica por 2 y Añade 1, haciéndolo congruente a 1 mod 3 y poniéndolo en estado B. Si el número actual es congruente a 1 mod 3, está en estado B. Una entrada de 0 dobla el número, haciéndolo congruente a 2 mod 3 y tomando Una entrada de 1, por otra parte, dobla el número, haciéndolo congruente a 2 mod 3, y luego añade 1, lo que lo convierte en un múltiplo de 3 y enviarlo al estado A. De la misma manera que usted Puede analizar lo que sucede cuando el número actual es congruente a 2 mod 3 y estás en estado C: duplicar el número lo hace congruente a 4 y por lo tanto a 1 mod 3 y te mueve al estado B, y doblarlo y añadir uno te deja en Estado C. Así, los tres estados realmente están conectados correctamente. Todo esto se reduce a lo que veo Ted ha dado en su respuesta: cuando lees un poco b, estás cambiando el número actual un lugar a la izquierda, que se multiplica por 2, y luego está agregando b FSM imita el efecto De esa operación sobre el residuo del número mod 3. respondió 3 de mayo 12 a las 7:14 He aquí otra aproximación más pedante: Sea el número n suma dk 2k. Defina rk 2k bmod 3 y observe que rk2 cuando k es impar y rk 1 cuando k es par. Así n bmod 3 suma dk rk bmod 3. Esta es la clave para crear un diagrama de estado, con los dígitos binarios d0. D como entradas. Para calcular la suma, se necesita rastrear la suma existente (módulo 3, por supuesto) y si el índice es impar o incluso (para conocer el valor de rk). Así que el espacio estatal es el tiempo. Es fácil crear el diagrama de estados con estados de aceptación (0, impar) y (0, incluso). (0, impar) amperio (0, impar) amperio (0, impar) amperio (0, impar) amperio (0, impar) (1, par) amplificador (2, par) amplificador (2, par) amplificador (2, par) Amp (2, odd) amp (1, odd) end La captura es que hay 6 estados, no 3 como en el diagrama anterior. Sin embargo, si aplicamos el FSM Table Filling Algorithm (por ejemplo, ver Hopcroft, Motwani, Ullman, Introducción a la Teoría de Autómatas, Lenguajes y Computación) para encontrar estados indistinguibles, encontramos que los siguientes pares son indistinguibles:. El FSM resultante es idéntico al FSM anterior, con la identificación de estado A sim, B sim y C sim. Respondió May 3 12 at 20:06 Isn39t este el rk1 opuesto cuando k es par. Ykk2 cuando k es impar. (Por ejemplo, k1: rk (21 mod 3) 2 mientras que k2: rk (22 mod 3) 1) ndash Dor Sep 25 15 at 17:32 Dor: Gracias por la captura que ndash copper. hat Sep 25 15 at 17:50 Your Answer 2016 Stack Exchange, Inc

No comments:

Post a Comment