Importance pratique des machines de Turing?

27

Je suis ingénieur électricien et je n'avais qu'un seul cours CS au collège il y a 26 ans. Cependant, je suis également un utilisateur dévoué de Mathematica.

J'ai le sentiment que les machines de Turing sont très importantes en informatique. L'importance n'est-elle que dans la théorie de l'informatique? S'il y a des implications / applications pratiques, quelles en sont certaines?

Ted Ersek
la source

Réponses:

21

L'importance des machines Turing est double. Premièrement, les machines de Turing ont été l'un des premiers (sinon le premier) modèles théoriques pour les ordinateurs, datant de 1936. Deuxièmement, beaucoup d'informatique théorique a été développée avec les machines de Turing à l'esprit, et donc beaucoup de résultats de base sont dans le langage des machines de Turing. Une des raisons à cela est que les machines de Turing sont simples et se prêtent donc à l'analyse.

Cela dit, les machines de Turing ne sont pas un modèle pratique pour l'informatique. En tant qu'ingénieur et utilisateur de Mathematica, ils ne devraient pas vous concerner du tout. Même dans la communauté informatique théorique, les machines RAM les plus réalistes sont utilisées dans les domaines des algorithmes et des structures de données.

En fait, du point de vue de la théorie de la complexité, les machines de Turing sont polynomialement équivalentes à de nombreux autres modèles de machines, et donc des classes de complexité comme P et NP peuvent être définies de manière équivalente en termes de ces modèles. (Les autres classes de complexité sont plus délicates.)

Yuval Filmus
la source
11

Les machines de Turing ont été l'un des premiers modèles de calcul, c'est-à-dire qu'elles ont été développées lorsque le calcul lui-même n'était pas très bien compris (vers 1940). Je veux me concentrer sur deux aspects qui (sans doute) ont conduit à ce qu'ils soient le modèle préféré à l'époque, ce qui a conduit à être le modèle le plus établi et donc finalement standard.

  1. Simplicité des preuves
    En tant que modèle théorique, les machines de Turing ont le charme d'être "simples" dans le sens où l'état actuel de la machine n'a qu'une taille constante. Toutes les informations dont vous avez besoin pour déterminer l'état suivant de la machine sont un symbole et un numéro d'état (de contrôle). La modification de l'état de la machine est également faible, ajoutant uniquement le mouvement de la tête de la machine. Cela simplifie considérablement les preuves (formelles), en particulier le nombre de cas à distinguer.

    Comparez cet aspect avec le modèle RAM (lorsqu'il n'est pas utilisé dans sa forme minimaliste): la prochaine opération peut être n'importe laquelle de plusieurs opérations, qui peuvent accéder à n'importe quel (deux) registres. Il existe également plusieurs structures de contrôle.

  2. Temps d'exécution et utilisation de l'espace
    Il y avait (seulement) deux modèles majeurs de calcul qui ont émergé presque simultanément avec Turing Machines, à savoir les fonctions -calculus de Church et recursive de Kleene . Ils ont répondu à la même question que Turing a posée - le Entscheidungsproblem de Hilbert - mais se prêtent beaucoup moins facilement (voire pas du tout) à la définition du temps d'exécution et de l'utilisation de l'espace. En un sens, ils sont trop abstraits pour être ainsi liés à des modèles de machines plus réalistes.λμ

    Pour les machines Turing, cependant, les deux notions sont facilement définies (et étaient dans le tout premier article de Turing sur son modèle, si je me souviens bien). Étant donné que les considérations d' efficacité étaient rapidement très importantes pour faire des choses, c'était un avantage certain des machines Turing.

Ainsi, les machines de Turing ont été établies comme le modèle de calcul, qui pourrait être considéré comme une combinaison d '«accident» historique et de certaines de ses propriétés clés. Néanmoins, de nombreux modèles ont été définis depuis et sont très utilisés, notamment pour pallier les défauts des machines Turing; par exemple, ils sont fastidieux à "programmer" (c'est-à-dire définir).

Je n'ai connaissance d'aucune application directe dans la pratique. En particulier, la pratique du calcul a évolué parallèlement (et, au début, principalement indépendamment) à la théorie du calcul. Les langages de programmation ont été développés sans modèles de machine formels. Cependant, il est clair (avec le recul) que de nombreuses avancées dans la pratique du calcul ont été permises par la théorie.

En outre, gardez à l'esprit que la valeur d'un concept théorique pour la pratique doit être mesurée en considérant tous les descendants, c'est-à-dire le travail de suivi, les résultats et les nouvelles idées rendues possibles par ce concept. Et à cet égard, je pense qu'il est juste de dire que le concept de machines Turing (entre autres) a révolutionné le monde.

Raphael
la source
4

La seule application raisonnablement pratique à laquelle je puisse penser (dans le sens où vous pourriez réellement implémenter une machine de Turing) est de prouver qu'un langage quelconque a une puissance suffisante.

Si vous concevez une sorte de langage de programmation (ou tout autre élément destiné à calculer des choses), vous pouvez vous assurer qu'il est complet de Turing (c'est-à-dire capable de calculer tout ce qui est calculable) en implémentant une machine Turing en elle.

Bien sûr, vous pouvez également implémenter tout autre élément complet de Turing (comme le C ou la logique combinatoire), mais parfois une machine de Turing est l'option la plus simple.

Peter
la source
-1

La machine de Turing est un modèle mathématique de calcul. Ses avantages sont: -

1. Vérifier la décidabilité Si la MT ne peut pas résoudre un problème en un temps dénombrable, aucun algorithme ne pourrait résoudre ce problème (c'est-à-dire que le problème est indécidable).

Pour un problème de décision si sa TM s'arrête en temps dénombrable pour toutes les entrées de longueur finie alors nous pouvons dire que le problème pourrait être résolu par un algorithme en temps dénombrable.

2. Classify Problem TM permet de classer les problèmes décidables en classes de hiérarchie polynomiale.

Supposons que nous ayons trouvé que le problème est décidable. Ensuite, notre objectif devient l'efficacité avec laquelle nous pouvons le résoudre. L'efficacité a été calculée en nombre d'étapes, espace supplémentaire utilisé, longueur du code / taille du FSM.

3. Concevoir et implémenter un algorithme pour des machines pratiques TM aide à propager l'idée d'algorithme dans d'autres machines pratiques. Après la vérification réussie de 1,2 critère, nous pouvons utiliser nos appareils / ordinateurs pratiques pour concevoir et mettre en œuvre un algorithme.

Subhankar Ghosal
la source
3
Les machines de Turing ne vous permettent pas de "vérifier la décidabilité"; ils donnent juste une définition de ce qu'est la décidabilité. La classification des problèmes est parfaitement possible en utilisant d'autres modèles de calcul, tels que les machines à accès aléatoire. Les algorithmes qui fonctionnent sur les machines Turing sont rarement adaptés à d'autres modèles de machines, car les algorithmes des machines Turing impliquent de grandes quantités de réarrangement de bande qui ne se produisent pas ailleurs.
David Richerby
TM donne la définition de la décidabilité. Droite. Pour vérifier la décidabilité, ne prenons-nous pas l'aide de la MT? "La classification des problèmes est parfaitement possible en utilisant d'autres modèles de calcul." Bien, mais nous pouvons aussi le faire en utilisant TM. Lors de l'implémentation d'un algorithme, vous devez être certain de la dureté de ce problème.
Subhankar Ghosal
-3

Les machines de Turing sont un bon exercice mental avec peu d'utilisation pratique. Il n'y a aucun mal à ne pas en avoir. Toutes les applications d'une machine de Turing sont soit intuitives soit une question de religion car elles ne peuvent être ni prouvées ni réfutées.

Valery Gavrilov
la source
2
"Toutes les applications d'une machine de Turing sont soit intuitives, soit une question de religion [...]". Ainsi, tous les domaines de la théorie de la calculabilité et de la théorie de la complexité ont été écartés en quatorze mots.
David Richerby
Celles-ci ne visaient pas à écarter ces théories. Tout ce que je disais, c'est que les applications d'une machine de Turing sont soit évidentes, peuvent être comprises intuitivement ou nécessitent une croyance sans preuves.
Valery Gavrilov du
"une question de religion parce qu’elles ne peuvent être ni prouvées ni réfutées." Euh, quoi? L'interprétation la plus généreuse de ce que je peux concocter est que vous faites référence à la thèse de Church-Turing, mais chaque application spécifique de cela peut en effet être prouvée (passez simplement par le travail fastidieux de conception de la machine de Turing appropriée; ou, juste écrire un algorithme approprié dans votre langage de programmation préféré et utiliser l'équivalence habituelle), et CT n'est pas une application, juste un moyen de simplifier l'exposition des preuves (et si l'on doute sérieusement d'une application de celui-ci, on peut toujours donner un formel preuve).
Noah Schweber
De plus, je ne comprends pas comment "peut être compris intuitivement" est un inconvénient. Toutes les mathématiques peuvent être comprises intuitivement; cela signifie-t-il que les mathématiques ne sont qu'un exercice mental avec peu d'utilisation pratique?
Noah Schweber