Pourquoi le problème de haltage est-il immobilié pour les langues goto limitées sur la plus haute valeur des constantes et des variables?

cs.stackexchange https://cs.stackexchange.com/questions/128510

Question

Ceci est pris d'un ancien examen de mon université que j'utilise pour me préparer à l'examen à venir:

donné est une langue $ \ text {goto} _ {17} ^ c \ substitute \ texte {goto} $ . Cette langue contient exactement ces $ \ text {goto} $ {goto} $ Programmes dans lesquels aucune constante n'est jamais supérieure $ 17 $ ni aucune variable jamais au-dessus de $ C $ .

$ goto $ décrit ici décrit l'ensemble de tous les programmes écrits dans la $ aller-goto $ langue composée des éléments suivants:

avec variables $ v_i \ in \ mathbb {n} $ $ et constantes $ c \ mathbb {n} $
Affectation: $ x_i:= c, x_i:= x_i \ pm $ C $

Saut conditionnel: si (comparaison) goto $ l_i $

HALTCOMMAND: HALT

Je me lance actuellement avec la formalisation d'une preuve, mais c'est ce que je suis venu jusqu'à présent, très condamné à la casse: Pour tout programme donné dans cet ensemble, nous savons qu'il est fini. Un programme fini contient une quantité finie de variables et une quantité finie d'états, ou de lignes à y être. En tant que tel, il existe une quantité finie de configurations dans lesquelles ce processus peut être. Si nous laissons ce programme exécuter, nous pouvons conserver une liste de toutes les configurations que nous avons vues. C'est-à-dire que la combinaison de toutes les valeurs variables utilisées et de l'état du programme. Si nous laissons le programme courir, il doit y avoir l'une des deux choses qui se produisent finalement: Le programme s'arrête. Dans ce cas, nous retournons oui et avons décidé qu'il s'arrête. Le programme atteint une configuration enregistrée auparavant. Comme la langue est déterministe, cela signifie que nous devons avoir une boucle totale qui se répète exactement.

Aucun autre cas ne peut exister car cela signifierait que nous continuons à courir pour toujours sur le code fini sans répéter une configuration. Cela signifie après chaque étape, parmi notre liste d'étapes infinies, il existe une nouvelle configuration. Cela signifierait qu'il y a des configurations infinies, ce qui est une contradiction.

est-ce correct? En outre, comment une preuve plus formelle serait-elle un aspect? Sinon, comment une preuve correcte serait-elle un aspect correct?

Était-ce utile?

La solution

Il existe un nombre fini d'états différents (l'ensemble des valeurs des variables et du compteur de programme).Vos "programmes à goto limité" ne sont qu'une façon (désordonnée) de décrire un automate fini déterministe.

ou juste raison que le programme indique que le programme est fini, il est certainement possible de cartographier tous les calculs possibles non en boucle (par quelque chose comme une première recherche d'une première recherche du graphique des États et des voisins).

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top