Les nombres carrés écrits en binaire sont-ils une langue régulière?

8

J'ai du mal à déterminer si tous les nombres carrés (1, 4, 9, 16, ...) écrits sous forme binaire (1, 100, 1001, ...) sont une langue régulière.

Après quelques tentatives pour trouver un modèle commun de ces nombres, j'ai découvert que pour tout nombre carré , est égal à 0 ou 1, et je suis donc en mesure de dessiner un graphique DFA avec 4 états pour reconnaître cette langue. Mais apparemment, le DFA que j'ai dessiné reconnaît en fait un surensemble de la langue des nombres carrés en question. Je suis coincé ici.n2n2mod4

N'importe qui pourrait me donner des indices sur ce problème? Si ce n'est pas une langue régulière, comment dois-je le prouver?

Je suis également très intéressé de savoir comment je dois aborder ce genre de question de la meilleure façon à l'avenir. Je sais que dans de nombreux cas, si nous avons l'intuition que les automates doivent garder une trace de ce qui a déjà été vu (comme ), alors il y a un état indéterminé nécessaire pour que les automates calculent, donc ce n'est pas fini ou régulier. Nous pouvons ensuite utiliser le lemme de pompage pour prouver qu'il n'est pas régulier. Cependant, je ne peux pas encore dire si cette langue est régulière, donc je n'ai pas vraiment d'idée quoi faire ensuite.aibi

Merci!

Alexandra
la source
Il ne suffit certainement pas de vérifier si votre entrée est conforme à ou mod , car, par exemple, mais n'est pas un carré. Je suppose que le langage n'est pas régulier, car il semble que vous ayez besoin de vous souvenir de toute l'entrée pour savoir si c'est un carré ou non (ce n'est qu'une intuition et rien de tel qu'une preuve). 01451mod45
David Richerby
1
La partie "approches générales" de votre question est couverte par nos questions de référence .
David Richerby
@DavidRicherby Celles-ci sont très générales. Je ne pense pas que nous ayons eu la généralisation de cette question particulière à des ensembles définis par l'arithmétique auparavant .
Gilles 'SO- arrête d'être méchant'

Réponses:

9

Voici une solution de haute technologie. Désignons votre langue en . Szalay a montré que De là, il est assez facile de montrer que n'est pas régulier, par réduction à .L

L10101={10n10n+21:n0}{110001,1000010001}.
L{anbn:n0}
Yuval Filmus
la source
"réduction de"?
Omar
C'est un terme informel - par réduction à l'irrégularité connue d' . anbn
Yuval Filmus
2

Eh bien, c'est la troisième fois que je réécris cette réponse. L'utilisateur Yuval Filmus a signalé deux erreurs très stupides que j'ai faites dans les deux versions précédentes.

Eh bien, j'ai finalement trouvé une solution simple au problème. Je pense que ça marche.

Nous avons d'abord ces mots de ce type:

1(00)p1(00)p001

Sont des nombres carrés.

Preuve:

J'ai regardé des informations sur les nombres carrés, puis j'ai trouvé des "nombres octogonaux centrés" qui sont des nombres qui sont formés par des couches de multiples de huit, mais pas la première couche. La première couche est une, la deuxième huit, la troisième seize et ainsi de suite.

Ainsi, chaque couche a un "huit" de plus que la précédente. Le nombre de huit dans un nombre octogonal centré peut être calculé en utilisant la formule de Gauss:

n2+n2

On multiplie ensuite par huit et on en ajoute un, car la première couche n'est qu'un point.

8(n2+n)2+1

Simplyfying:

4(n2+n)+1

Cette formule nous donne les nombres carrés impairs pour chaque n.

Je vais calculer la formule du nombre quatre et toutes les puissances de quatre.

D'abord, nous mettons le nombre au carré, cela double simplement les zéros du nombre. Ensuite, nous ajoutons le numéro au produit. Cela place un "un" à la position partant de la droite. est la longueur du mot binaire.|n|/2|n|

En ce moment, nous avons des mots de cette forme:

1(00)p1(00)p0

Nous multiplions par quatre, cela ajoute simplement deux zéros à la fin du nombre. Enfin, nous en résumons un. Nous avons fini.

Pompage

Je mets .i=0

D'abord le cas facile

Si nous laissons vide, nous prenons le numéro un et un ou plusieurs zéros. Cela nous donne des mots dont le poids est deux (le nombre de uns est deux). Il n'y a qu'un nombre impair avec un poids de deux, le nombre neuf (le seul nombre carré impair de la forme 2n + 1 est 9, je l'ai vu dans wikipedia: voir ici ). Comme tous les chiffres que nous pompons sont supérieurs à neuf, nous avons prouvé ce cas.x

Étui rigide

On laisse le premier "un" à sa place et on retire uniquement les zéros. Nous pouvons supprimer jusqu'à zéros .p1

Le mot ressemblera à ceci:

10(00)m1(00)n001 .

Où et sont des entiers supérieurs ou égaux à un etmnn>m

Je vais d'abord croire que le nombre obtenu est un carré, puis je montrerai que c'est faux:

Puisque nous savons que tous les nombres carrés impairs peuvent être obtenus avec cette formule:

4(n2+n)+1

On commence à décomposer le nombre, on en soustrait un, ce simple met le dernier à zéro puis, on divise par quatre, cela supprime deux zéros à la fin du mot binaire.

Ensuite, nous aurons des mots comme celui-ci:

10(00)m1(00)n0 , et sont des nombres entiers supérieurs ou égaux à un et . Ces mots sont un préfixe du mot complet.nmn>m

Puisque nous pensons que cette chaîne fait partie d'un nombre carré, le mot a dû être formé en faisant cette formule:

(n2+n)

n ne peux pas encore

Nous reviendrons sur cette formule:

n2+n

Puisque nous croyons que les mots que nous avons pompés sont des nombres carrés. Nous appelons les mots que nous avons pompés et nous avons cela:m

m=n2+n

De plus, nous avons que peut être représenté comme la somme de deux nombres binaires, et , chacun d'eux est une puissance de deux. Et nous avons cela etmm1m2m1<m2m1>m2

La première chose que nous remarquons est que doit être inférieur à . C'est parce que est plus grand que la racine carrée de , si était égal à , alors sera plus grand que .nm2m2m1nm2n2m

Maintenant, lorsque nous mettons au carré un nombre binaire pair, nous constatons que le nombre au carré a "plus de zéros" à droite du premier "un" que le nombre d'origine. Ainsi, "celui le plus à droite" à l'intérieur de est à gauche de "celui le plus à droite" à l'intérieur de . Si nous ajoutons à , nous avons que le "plus à droite" à l'intérieur de est le "à droite" dans . Puisque est plus petit que . Nous avons que le "plus à droite" à l'intérieur de est à droite du "à droite" en . Donc .n2nnn2n2+nnnm2n2+nmmn2+nn2+n=mnous avons atteint une contradiction et donc ne peut pas être égal.n

n ne peux pas être inégale

Encore une fois, nous avons que est un nombre fait en ajoutant à , doncmnn2m=n2+n

On remarque alors que ; Ceci est dû au fait:(n+1)2(n+1)=n2+n

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

Et alors:

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

Une autre façon de voir cela est d'imaginer comme un carré avec des côtés de longueur . Ce carré est formé de petits carrés de taille un. Ensuite, lorsque nous ajoutons carrés de taille un au carré précédent, le carré précédent est maintenant un rectangle dont les côtés sont et . Maintenant, nous pouvons imaginer comme un autre carré avec des côtés de longueur . Ce carré est également formé de petits carrés de taille un. Si nous y supprimons carrés, nous avons un rectangle de côtés et .n2nnnn+1(n+1)2n+1n+1nn+1

Nous avons que est un nombre pair et la preuve suit la même chose que précédemment pour tous les nombres impairs inférieurs àn+1nm21

Encore une fois, lorsque nous mettons au carré un nombre binaire pair, nous constatons que le nombre a "plus de zéros" à droite du premier "un" que le nombre d'origine. Donc, "le plus à droite" à l'intérieur est à gauche du "le plus à droite" à l'intérieur de . Si nous soustrayons à , nous avons que le "plus à droite" dans est le "à droite" dans . Puisque est inférieur à . Nous avons que le "plus à droite" à l'intérieur de est à droite du "à droite" en .(n+1)2n+1n+1(n+1)2n2+nn+1n+1m2n2+nm

Si .n=m21

Encore une fois, nous avons que . Puisque ( carré) est un nombre qui est une puissance de deux, il n'a qu'un seul "un" en tête, puis des zéros. Lorsque nous à , nous transformons tous les zéros à gauche du chiffre le plus à gauche de intérieur de en "uns" et le nombre résultant n'est pas comme les mots que nous pompons, il devrait y avoir au moins un "zéro de séparation" entre les uns.n2+n=(n+1)2(n+1)m22m2m2m22m2m22

Donc . Mais puisque nous avons dit que nous avons atteint une contradiction et donc ne peut pas être inégal.mn2+nn2+n=mn

Comme ne peut pas être pair ou impair, nous avons que n'existe pas comme un entier. Par conséquent, les mots que nous avons pompés ne sont pas le produit de la formule des nombres carrés impairs. Puisque tous les mots que nous pompons sont impairs, ils ne peuvent pas être des nombres carrés.nn

rotia
la source
1
Vous ne pouvez pas appliquer le lemme de pompage à pour montrer que votre langue n'est pas régulière, car peut être pompé. Il en va de même pour dans la langue inverse. 1(00)p1(00)p (00)p1
Yuval Filmus
Vous ne pouvez pas choisir dans le lemme de pompage. Le lemme de pompage indique seulement que certains fonctionnent. Pour montrer que la langue n'est pas régulière, vous devez montrer que non fonctionne. y y y
Yuval Filmus
@yuvalFilmus Vous avez raison
rotia
2
Vous dites qu'un nombre pair reste pair même après division par 2, mais ce n'est pas toujours le cas.
Yuval Filmus
2
Je remarque que vous avez effectué environ 15 modifications au cours des 2 derniers jours. C'est formidable que vous souhaitiez améliorer votre réponse, et j'aimerais que vous continuiez à le faire. Cependant, il peut être un peu injuste pour d'autres questions de continuer à placer celle-ci en haut de la page d'accueil chaque fois que vous éditez ici. Pensez-vous que vous pourriez être en mesure de regrouper vos modifications (peut-être en les écrivant hors ligne, par exemple avec stackedit.com) afin de ne faire que quelques modifications par jour? Je ne veux pas vous décourager de modifier votre réponse pour l'améliorer, mais je me demande s'il pourrait y avoir un juste milieu possible. Merci pour l'écoute!
DW