IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Machine de Turing


Sujet :

Python

Vue hybride

Anakin8526 Machine de Turing 09/12/2008, 21h59
dividee A part le fait que simuler... 09/12/2008, 23h46
Anakin8526 C'est la représentation tout... 10/12/2008, 09h20
dividee Ben prenons les transitions... 10/12/2008, 18h39
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Par défaut Machine de Turing
    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.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    A part le fait que simuler une bande infinie avec un ordinateur disposant d'une quantité de mémoire finie est impossible, cela ne me semble pas très difficile.

    Sais-tu ce qu'est un automate fini déterministe ? Si non, commence pas te renseigner là-dessus. Ce n'est pas les ressources qui manquent sur le Web sur ce sujet. Ou est-ce la représentation en Python qui te bloque ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 5
    Par défaut
    C'est la représentation tout cours qui me bloque que ça soit en python ou dans un autre langage , on ma expliquer ce qu'était un automate fini déterministe mais je vois toujours pas plus comment faire.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    Ben prenons les transitions par exemple; comment cela se passe-t-il ?
    En entrée on a:
    • le symbole lu sur la bande (un chaîne de caractères)
    • l'état actuel de l'automatique (un entier)

    En sortie:
    • le nouvel état de l'automate (un entier)
    • le symbole à écrire (chaîne de caractères)
    • le sens de déplacement de la tête (ou l'indication qu'il s'agit d'un état final) (disons G pour gauche, D pour droite, A pour arrêt)

    Il faut choisir une structure de données pour représenter ces transitions, par exemple un dictionnaire dont les clés seraient le couple (état actuel, symbole lu) et les valeurs un triple (nouvel état, symbole à écrire, déplacement). Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    transitions = { (1, '(') : (1,'(','D'),  (1,')') : (2,'X','G'), ... }
    Ce n'est qu'une proposition; j'espère que cela te donne des idées sur la façon de procéder...

Discussions similaires

  1. machine de turing
    Par gentelmand dans le forum Mathématiques
    Réponses: 0
    Dernier message: 08/10/2009, 15h53
  2. Machines de Turing, Complexité et "Drapeau Belge"
    Par Ourszor dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 03/03/2009, 12h10
  3. Réponses: 4
    Dernier message: 30/01/2009, 15h47
  4. Machine de Turing fonction 2n
    Par patrick974 dans le forum Mathématiques
    Réponses: 4
    Dernier message: 11/09/2008, 18h48
  5. Machine de Turing: déplacement
    Par acacia dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 24/04/2008, 19h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo