Bonjour à tous
Voila je suis à la fac et on me demande de faire une machine de Turing en python mais disons que c'est une chose que je ne verrais qu'en 3eme année et pour être franc je vois pas du tout mais vraiment pas comment faire cela en python.
Je vous donne l'intitulé:
On ajoute à un automate fini déterministe une mémoire non borné constituée d'une bande infinie (des deux cotés). Cette bande est reliée à l'automate par une tête de lecture et d'écriture. A chaque étape, la machine lit le symbole face à sa tête et exécute,selon son état, les instruction données par sa table. Chaque instruction se compose de 3 éléments: l'état suivant, le symbole à écrire sur la bande à la position de la tête et la direction de déplacement de la tête. L'exécution d'une instruction consiste en:
- un changement d'état de l'automate fini
- l'écriture sur la bande d'un symbole à la place de celui qui a été lu
- un déplacement de la tête d'une case à gauche ou à droite
Toutes ces actions ne dépendent que du symbole lu et de l'état courant.
A partir d'une configuration initiale (état initial de l'automate, position de la tête,suite finie de symbole sur la bande) la machine exécute une suite de pas pour s'arrêter quand elle arrive dans un état final de l'automate. Le contenu de la bande représente alors (selon un codage) le résultat du calcul.
La tâche est la réalisation d'une machine de Turing par une classe. Le constructeur prend en argument la description de l'automate fini. La classe possède une méthode qui montre pas à pas l'exécution de la machine.Cette méthode prend en argument l'état initial de la bande.
En utilisant cette classe on pourra construire une machine qui vérifie l'accouplement correct d'une suite de parenthèses (vérification de parenthèsage). La machine pourrai procéder ainsi : dans l'état q0 elle cherche une parenthèse) sur la bande en allant vers la droite. Elle fait alors une transition q1 et elle remplace la parenthèse trouvée par x. Elle cherche maintenant ( en allant vers la gauche etc.
Voila pour être honnête je ne vois pas du tout comment faire cela, n'ayant rien vu de tout ça en cours, sachant que ce cours est à l'origine un cours de math où l'on fait un peut tout et n'importe quoi en Tp. J'espère que quelqu'un pourra m'aider à comprendre et me donner des indications sur comment faire cela.
Partager