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.
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.
Merci!
Réponses:
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
la source
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:
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:
On multiplie ensuite par huit et on en ajoute un, car la première couche n'est qu'un point.
Simplyfying:
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:
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 .p−1
Le mot ressemblera à ceci:
Où et sont des entiers supérieurs ou égaux à un etm n n>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:
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:
Puisque nous pensons que cette chaîne fait partie d'un nombre carré, le mot a dû être formé en faisant cette formule:
Nous reviendrons sur cette formule:
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
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 etm m1 m2 m1−−−√<m2 m1>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 .n m2 m2 m1 n m2 n2 m
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 .n2 n n n2 n2+n n n m2 n2+n m m≠n2+n n2+n=m nous avons atteint une contradiction et donc ne peut pas être égal.n
Encore une fois, nous avons que est un nombre fait en ajoutant à , doncm n n2 m=n2+n
On remarque alors que ; Ceci est dû au fait:(n+1)2−(n+1)=n2+n
Et alors:
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 .n2 n n n n+1 (n+1)2 n+1 n+1 n n+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+1 n m2−1
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)2 n+1 n+1 (n+1)2 n2+n n+1 n+1 m2 n2+n m
Si .n=m2−1
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) m22 m2 m2 m22 m2 m22
Donc . Mais puisque nous avons dit que nous avons atteint une contradiction et donc ne peut pas être inégal.m≠n2+n n2+n=m n
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.n n
la source