¿Los números cuadrados escritos en binario son un lenguaje regular?


8

Tengo problemas para tratar de determinar si todos los números cuadrados (1, 4, 9, 16, ...) escritos en forma binaria (1, 100, 1001, ...) son un lenguaje regular.

Después de algunos intentos de encontrar un patrón común de esos números, descubrí que para cualquier número cuadrado n2, n2mod4o es igual a 0 o 1, por lo que puedo dibujar un gráfico DFA con 4 estados para reconocer este lenguaje. Pero aparentemente, el DFA que dibujé en realidad reconoce un superconjunto del lenguaje de números cuadrados en cuestión. Estoy atorado aqui.

¿Alguien podría darme algunas pistas sobre este problema? Si no es un idioma normal, ¿cómo debo probarlo?

También estoy muy interesado en saber cómo abordar este tipo de preguntas de la mejor manera en el futuro. Sé que en muchos casos, si tenemos la intuición de que los autómatas tienen que hacer un seguimiento de lo que ya se ha visto (comoaibi), entonces se necesitan estados indeterminados para que los autómatas calculen, por lo que no es finito ni regular. Entonces podemos usar el lema de bombeo para demostrar que no es regular. Sin embargo, no puedo decir si este idioma es regular todavía, así que realmente no tengo idea de qué hacer a continuación.

¡Gracias!


Ciertamente, no es suficiente verificar si su entrada es congruente con 0 o 1 modificación 4, ya que, por ejemplo, pero no es un cuadrado. Supongo que el lenguaje no es regular, ya que parece que necesitas recordar toda la información para saber si es un cuadrado o no (esto es solo una intuición y nada como una prueba). 51mod45
David Richerby

1
La parte de "enfoques generales" de su pregunta está cubierta por nuestras preguntas de referencia .
David Richerby

@DavidRicherby Esos son muy generales. No creo que hayamos generalizado esta pregunta en particular a conjuntos definidos por aritmética antes .
Gilles 'SO- deja de ser malvado'

Respuestas:


9

Aquí hay una solución de alta tecnología. Denotar su idioma por . Szalay mostró que Desde aquí es bastante fácil demostrar que no es regular, reduciéndolo a .L

L10101={10n10n+21:n0}{110001,1000010001}.
L{anbn:n0}

"reducción de"?
Omar

Es un término informal, por reducción a la irregularidad conocida de . anbn
Yuval Filmus

2

Bueno, esta es la tercera vez que reescribo esta respuesta. El usuario Yuval Filmus señaló dos errores muy muy tontos que cometí en las dos versiones anteriores.

Bueno, finalmente encontré una solución simple al problema. Creo que funciona

Primero tenemos esas palabras de este tipo:

1(00)p1(00)p001

Son números cuadrados.

Prueba:

He buscado información sobre números cuadrados y luego he encontrado "números octogonales centrados", que son números formados por capas de múltiplos de ocho, pero no la primera capa. La primera capa es una, la segunda ocho, la tercera dieciséis y así sucesivamente.

Entonces cada capa tiene un "ocho" más que la anterior. El número de ochos en un número octogonal centrado se puede calcular usando la fórmula de Gauss:

n2+n2

Luego multiplicamos por ocho y agregamos uno, esto se debe a que la primera capa es solo un punto.

8(n2+n)2+1

Simplementefying:

4(n2+n)+1

Esa fórmula nos da los números cuadrados impares para cada n.

Voy a calcular la fórmula para el número cuatro y todas las potencias de cuatro.

Primero cuadramos el número, esto simplemente duplica los ceros del número. Luego agregamos el número al producto. Esto pone un "uno" en la posición comenzando desde la derecha. es la longitud de la palabra binaria.|n|/2|n|

En este momento tenemos palabras de esta forma:

1(00)p1(00)p0

Multiplicamos por cuatro, esto simplemente agrega dos ceros al final del número. Finalmente sumamos uno. Hemos terminado.

Bombeo

Puse .i=0

Primero el caso fácil

Si dejamos vacío, tomamos el número uno y uno o más ceros. Esto nos da palabras con el peso de hamming dos (el número de unos es dos). Solo hay un número desigual con el peso dos de Hamming, el número nueve (el único número cuadrado impar de la forma 2n + 1 es 9, lo vi en wikipedia: ver aquí ). Como todos los números que estamos bombeando son mayores que nueve, probamos este caso.x

Estuche duro

Dejamos el primer "uno" en su lugar y sacamos solo ceros. Podemos sacar hasta ceros.p1

La palabra se verá así:

10(00)m1(00)n001 .

Donde y son números enteros más grande o igual a uno ymnn>m

Primero creeré que el número obtenido es un cuadrado, luego mostraré que es falso:

Como sabemos que todos los números cuadrados impares podemos obtenerlos con esta fórmula:

4(n2+n)+1

Comenzamos a descomponer el número, restamos uno, este simple establece el último en cero y luego, dividimos entre cuatro, esto elimina dos ceros al final de la palabra binaria.

Entonces tendremos palabras como esta:

10(00)m1(00)n0, ny son números enteros más grande o igual a uno y . Estas palabras son un prefijo de la palabra completa.mn>m

Como creemos que esta cadena es parte de un número cuadrado, la palabra tuvo que formarse haciendo esta fórmula:

(n2+n)

n no puede ser par

Volveremos a ver esta fórmula:

n2+n

Dado que creemos que las palabras que hemos bombeado son números cuadrados. Llamamos a las palabras que hemos bombeado tenemos eso:m

m=n2+n

Además, tenemos que puede representarse como la suma de dos números binarios, y , cada uno de ellos es una potencia de dos. Y tenemos que ymm1m2m1<m2m1>m2

Lo primero que notamos es que tiene que ser menor que . Esto se debe a que es más grande que la raíz cuadrada de , si era igual a , entonces será más grande que .nm2m2m1nm2n2m

Ahora, cuando elevamos al cuadrado un número binario par, tenemos que el número al cuadrado tiene "más ceros" a la derecha del primer "uno" que el número original. Entonces "el más a la derecha" dentro de está a la izquierda del "más a la derecha" dentro de . Si agregamos a , tenemos que el "más a la derecha" dentro de es el "más a la derecha" en . Como es menor que . Tenemos que el "más a la derecha" dentro de está a la derecha del "más a la derecha" en . Por lo tanto, . Pero como dijimos eson2nnn2n2+nnnm2n2+nmmn2+nn2+n=m hemos llegado a una contradicción y por lo tanto n no puede ser parejo

n no puede ser desigual

De nuevo, tenemos eso m es un número hecho agregando n a n2, entonces m=n2+n

Entonces notamos que (n+1)2(n+1)=n2+n; Esto es porque:

(n+1)2(n+1)=n2+2n+1n1;

Y entonces:

(n+1)2(n+1)=n2+n.

Otra forma de ver esto, es imaginar n2 como un cuadrado con lados de longitud n. Este cuadrado está formado por cuadrados más pequeños de tamaño uno. Entonces, cuando agregamosn cuadrados de tamaño uno al cuadrado anterior, el cuadrado anterior ahora es un rectángulo cuyos lados son n y n+1. Ahora podemos imaginar(n+1)2 como otro cuadrado con lados de longitud n+1. Este cuadrado también está formado por cuadrados más pequeños de tamaño uno. Si quitamosn+1 cuadrados, tenemos un rectángulo de lados n y n+1.

Tenemos eso n+1 es un número par y la prueba sigue igual que antes para todos los números impares n menos que m21

Nuevamente, cuando elevamos al cuadrado un número binario par, tenemos que el número tiene "más ceros" a la derecha del primer "uno" que el número original. Entonces "el más correcto" dentro(n+1)2 está a la izquierda del "más a la derecha" dentro n+1. Si restamosn+1 a (n+1)2, tenemos que el "más a la derecha" dentro n2+n es el "más a la derecha" en n+1. Ya quen+1 es más pequeño que m2. Tenemos que el "más correcto" dentron2+n está a la derecha del "más a la derecha" en m.

Si n=m21.

De nuevo, tenemos eso n2+n=(n+1)2(n+1). Ya quem22 (m2al cuadrado) es un número que es una potencia de dos, tiene un solo "uno" inicial y luego ceros. Cuando restamosm2 a m22, estamos girando todos los ceros a la izquierda del dígito más a la izquierda de m2 dentro m22 en "unos" y el número resultante no es como las palabras que estamos bombeando, debería haber al menos un "cero de separación" entre los unos.

Por lo tanto mn2+n. Pero como dijimos eson2+n=m hemos llegado a una contradicción y por lo tanto n No puede ser desigual.

Como n no puede ser uniforme o desigual, tenemos que nno existe como un entero. Por lo tanto, las palabras que bombeamos no son el producto de la fórmula para números cuadrados impares. Como todas las palabras que estamos bombeando son impares, no pueden ser números cuadrados.


1
No puede aplicar el lema de bombeo a 1(00)p para demostrar que tu idioma no es regular, ya que 1(00)p puede ser bombeado Lo mismo se aplica a(00)p1en el lenguaje inverso.
Yuval Filmus

No puedes elegir yen el lema de bombeo. El lema de bombeo solo indica que algunos ytrabajos. Para mostrar que el idioma no es regular, debe mostrar que no ytrabajos.
Yuval Filmus

@yuvalFilmus Tienes razón
rotia

2
Usted declara que un número par permanece igual después de la división por 2, pero ese no es siempre el caso.
Yuval Filmus

2
Noté que ha realizado alrededor de 15 ediciones en los últimos 2 días. Es genial que quieras mejorar tu respuesta, y me encantaría verte seguir haciendo eso. Sin embargo, puede ser un poco injusto para otras preguntas seguir colocando esta en la parte superior de la página principal cada vez que edite aquí. ¿Crees que podrías agrupar tus ediciones (tal vez escribiéndolas sin conexión, por ejemplo con stackedit.com) para que solo hagas algunas ediciones por día? No quiero desanimarte de editar tu respuesta para mejorarla, pero me pregunto si podría haber algún medio feliz posible. ¡Gracias por su atención!
DW
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.