Gödels (premier) théorème d'incomplétude et le problème de l'arrêt - Dans quelle mesure est-il limitatif?


8

Quand j'ai entendu parler de ces choses pour la première fois, j'étais très fasciné car je pensais que cela fixait vraiment une limite aux mathématiques et aux sciences en général. Mais dans quelle mesure ces choses sont-elles pertinentes dans la pratique?

Pour le problème de l'arrêt: y a-t-il plus que certains cas construits artificiellement, où l'on ne peut pas décider si l'algorithme se terminera ou non?

Pour le théorème d'incomplétude: y a-t-il plus que certains cas construits artificiellement, où l'on ne peut pas prouver / réfuter l'énoncé?

Je pose cette question parce qu'il semble que dans la plupart des domaines scientifiques, il n'y a pas vraiment d'importance à ces limites fondamentales. Sont-ils même là? J'aimerais savoir où cela fixe vraiment une limite et où c'est vraiment pertinent.


4
Le résultat du problème d'arrêt n'indique pas que vous ne pouvez pas décider si une MT donnée ne s'arrête pas. Il indique qu'il n'y a pas d'algorithme général qui puisse décider cela pour tous les TM.
babou

2
Eh bien oui, mais quelles en sont les implications pratiques? Est-ce vraiment pertinent ou n'a-t-il d'importance que dans des cas construits artificiellement?
Nocta

Peut-être que quelque chose à examiner est la programmation fonctionnelle totale, qui permet uniquement de terminer les programmes. Ensuite, vous pouvez voir à quelle fréquence les praticiens doivent se rabattre sur une programmation fonctionnelle faible (Turing complet) pour résoudre des problèmes. En ce qui concerne les langages de programmation à usage général, je n'ai entendu parler que d'Idris - les autres semblent être des prouveurs de théorèmes.
Guildenstern

1
Beaucoup de problèmes mathématiques intéressants et difficiles pourraient être résolus facilement si le problème d'arrêt pouvait être résolu. Par exemple, le dernier théorème de Fermat. Cela me prend 5 minutes pour écrire un programme qui s'arrêtera si et seulement s'il existe une solution à un ^ n + b ^ n = c ^ n avec a, b, c> 0 et n> = 3. Si vous prouvez ou réfutez qu'il s'arrête, c'est FLT prouvé. "Il existe une infinité de nombres premiers jumeaux" n'est que légèrement plus difficile à prouver si le problème d'arrêt est résolu.
gnasher729

2
Veuillez vous limiter à une question par message; les deux théorèmes auxquels vous faites référence ont peu à voir l'un avec l'autre. Votre formulation suggère également que vous n'avez pas vraiment compris ce qu'ils disent (voir le commentaire de babou); vous devez faire un peu plus de lecture! Ce sont des déclarations mathématiquement formelles qui ne peuvent pas être correctement appréhendées de façon pop-scientifique.
Raphael

Réponses:


9

Le problème d'arrêt indécidable a beaucoup de pertinence pratique, voici un exemple rapide:

Il est difficile d'écrire un logiciel antivirus: nous ne pouvons pas décider si un morceau de code donné est malveillant, car si nous le pouvions, nous pourrions décider du problème d'arrêt.

Pour voir cela, prenez un morceau de code qui prend en entrée une machine de Turing M et un mot d'entrée w et fait quelque chose de malveillant si et seulement si M s'arrête en entrée w. Si nous pouvions décider si un morceau de code donné était malveillant, nous pourrions décider si ce morceau de code était malveillant, mais nous pourrions alors décider du problème d'arrêt, ce que nous savons que nous ne pouvons pas faire.

Ce que cela veut dire, c'est qu'il n'y a pas de logiciel antivirus parfait, cela ne peut pas être fait. Cela ne signifie pas que nous ne devrions pas essayer d'écrire des logiciels antivirus, mais simplement que nous ne pourrons jamais en écrire un parfait. En fait, toute déclaration sur la décision de faire les programmes est indécidable (voir le théorème de Rice ).

En ce qui concerne le théorème de Godel, le théorème de Goodstein est un exemple d'une déclaration qui n'est pas démontrable en utilisant les axiomes de Peano.


5
Avec égards, je pense que cette réponse est un parfait exemple de ne pas faire la distinction que le PO demande: vous utilisez le problème de l'arrêt d'une manière qui n'a aucune pertinence pratique. Dans la pratique, il n'y a aucune raison pour qu'un morceau de code bénin contienne des instructions qui exécutent une action malveillante, donc peu importe que nous ne puissions pas déterminer si ces instructions seront exécutées ou non; s'ils sont là, le code peut être considéré comme malveillant.
Harry Johnston

(Je soupçonne que vous pouvez mieux tirer la même conclusion en considérant à la place des ensembles d'instructions dont l'effet combiné peut être bénin ou malveillant, selon la combinaison d'instructions à exécuter, puis en faisant valoir que dans les bonnes circonstances, vous ne pouvez pas comprendre quelles combinaisons sont possibles. Mais je ne sais pas trop comment assembler tout cela rigoureusement.)
Harry Johnston

@HarryJohnston Une possibilité consiste à masquer des instructions malveillantes dans les données. Pour certains programmes, il se peut que nous ne puissions pas décider si ces données sont jamais exécutées sous forme de code, ou s'il s'agit simplement d'une chaîne bénigne qui ressemble à des instructions malveillantes. Bien sûr, dans les systèmes d'exploitation traditionnels (et même les processeurs), il existe une séparation forcée entre la mémoire exécutable en lecture seule et la mémoire de données inscriptibles, mais il existe des scénarios où ce n'est pas le cas.
WaelJ

@HarryJohnston: Ce serait vrai si nous pouvions interroger le mauvais morceau de l'instruction, mais nous ne pouvons pas. Mon logiciel arbitraire lit un fichier de configuration dans ~ / Documents et prend en charge la suppression de sa propre configuration. Il y a un chemin d'exécution où le "fichier à supprimer" est défini sur ~ / Documents avant l'appel de "supprimer", ce qui est extrêmement malveillant, mais il n'y a aucun moyen de dire "hé, cette application a ces deux choses, elle doit être malveillante ! " sans regarder ce qu'il fait avec eux. Ce que vous ne pouvez pas faire dans le cas général, car arrêter le problème.
Phoshi

@ Phoshi: oui, c'est un exemple de l'argument que je décris dans mon deuxième commentaire. Je pense qu'il est possible de rendre cela rigoureux compte tenu de certaines hypothèses, bien qu'il ne soit pas évident pour moi du haut de ma tête de la meilleure façon de l'aborder. OTOH, il se peut que pour le rendre rigoureux, vous deviez permettre à l'application de s'auto-analyser (c'est-à-dire inspecter son propre code) et il devrait être prudent de ne pas autoriser cela.
Harry Johnston

6

Pour le problème de l'arrêt: y a-t-il plus que certains cas construits artificiellement, où l'on ne peut pas décider si l'algorithme se terminera ou non?

il y a pas mal de contextes "à peu près pratiques / appliqués" avec une recherche active où le problème d'arrêt joue un rôle:

  • démonstration automatisée du théorème . la démonstration des théorèmes par les ordinateurs se heurte aux mêmes limites d'indécidabilité du problème d'arrêt.

  • prouver la fin d'un programme pour des programmes réels est un domaine de recherche et apparaît par exemple dans la logique du compilateur et l'analyse de programme.

  • La complexité de Kolmogorov tente d'étudier les limites théoriques des algorithmes de compression de données. trouver une compression optimale (dans un certain sens, c'est-à-dire trouver la plus petite TM compressant une chaîne) est indécidable.

  • l'indécidabilité apparaît dans certains problèmes physiques. par exemple les systèmes dynamiques .

  • un problème de base étudié appelé « problème du castor occupé» . encore théorique mais moins abstrait que le problème de l'arrêt et étudié notamment pour sa connexion. les chercheurs ont tenté de résoudre ce problème pendant des décennies pour les «petites» MT avec peu d'états / symboles.

voici une citation connexe / intéressante d'un article récent étudiant le problème du castor occupé "problèmes dans la théorie des nombres de la concurrence du castor occupé" par Michel (p.3):

En fait, le problème d'arrêt des machines Turing lancées sur une bande vierge est m-complet, et cela implique que ce problème est aussi difficile que le problème de la prouvabilité d'une déclaration mathématique dans une théorie logique telle que ZFC (Zermelo Fraenkel set theory with axiome de choix). Ainsi, lorsque des machines de Turing avec de plus en plus d'états et de symboles sont étudiées, potentiellement tous les théorèmes des mathématiques seront rencontrés. Lorsque de plus en plus de machines de Turing sans arrêt sont étudiées pour être prouvées sans arrêt, il faut s'attendre à faire face à des problèmes ouverts et durs en mathématiques, c'est-à-dire des problèmes que les connaissances mathématiques actuelles ne peuvent pas résoudre.

en d'autres termes, le problème d'arrêt encode / encapsule le défi d'essayer de prouver de nouveaux théorèmes mathématiques en mathématiques / CS et peut donc être considéré comme extrêmement profond / pratique / appliqué dans ce sens. (Cependant, bien que certains considèrent cette observation évidente ou triviale, ce n'est généralement pas non plus une opinion communément exprimée.)


aussi, par exemple, Penrose soutient que l'indécidabilité est un facteur qui empêche l' intelligence
vzn

un autre grand contexte où l'indécidabilité apparaît est dans certaines questions mathématiques de base. le plus basique / célèbre est peut-être le 10ème problème de Hilberts , les équations diophantiennes dans les polynômes. aussi, l'indécidabilité apparaît dans certaines questions sur les fractales, par exemple l' ensemble de Mandelbrot, etc.
vzn

5

Je réponds à l'une de vos deux questions concernant le problème de l'arrêt.

Premièrement, l'indécidabilité du problème d'arrêt n'indique pas que vous ne pouvez pas décider si une MT donnée ne s'arrête pas. Il indique qu'il n'y a pas d'algorithme général qui puisse décider cela pour tous les TM.

Il s'agit d'une déclaration sur nos modèles de ce qui constitue le calcul. Mais, selon la thèse de Turing-Church, c'est tout ce que nous avons pour exprimer le calcul.

En ce qui concerne la pertinence, elle est basée sur des machines de Turing construites artificiellement. Mais alors, toutes les MT sont assez artificielles et construites uniquement pour affirmer certains faits sur le calcul. La question de savoir si certaines MT sont plus pertinentes que d'autres dans la pratique est à peu près aussi importante que le sexe des anges, ou le nombre d'entre eux qui peuvent se tenir sur une tête d'aiguille.

L'indécidabilité du problème de l'arrêt nous indique qu'il existe des questions générales qui ne peuvent être résolues par une technique générale applicable à tous les cas. Ce que je veux dire par question générale est une question qui dépend de certains paramètres, où la réponse doit être trouvée pour certaines valeurs des paramètres.

Rappelons que le but de la plupart de nos mathématiques est de trouver des techniques générales pour résoudre une famille de problèmes. Un exemple typique est la résolution des équations. L'indécidabilité du problème d'arrêt nous dit que ce n'est pas toujours possible.

Par exemple, il peut être utilisé pour montrer qu'il n'y a pas de technique générale pour décider si une grammaire sans contexte est ambiguë.

Cependant, votre question est valable. Il se peut qu'un problème soit indécidable car vous venez de le rendre un peu trop général. Peut-être, en le restreignant un peu, vous pouvez le rendre décidable pour une sous-famille utile et toujours assez grande.

Je n'ai pas d'exemple spectaculaire en tête, mais je suis sûr qu'il doit y en avoir.

Je me souviens d'un cas réel d'un problème d'analyse de programme qui s'est avéré NP-complet (à moins qu'il ne soit indécidable, je ne m'en souviens pas bien). Contre tout conseil, un doctorant a tout de même décidé de s'y attaquer. Il a en effet pu montrer que certaines restrictions du problème, peu importantes en pratique, en ont fait un problème très maniable, permettant ainsi l'utilisation de divers outils d'analyse et d'optimisation de programme.


4
Un exemple qui, je pense, s'intégrerait bien dans votre réponse est l'optimisation des compilateurs. L'indécidabilité du problème d'arrêt signifie que, par exemple, il n'y a pas d'algorithme capable de supprimer parfaitement le code mort ou de produire l'exécutable le plus rapide possible pour un fichier source particulier. Mais cela n'empêche pas les compilateurs de faire un très bon travail de ces choses, dans la plupart des cas, dans la pratique.
David Richerby
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.