Paradoxe algorithmique, problème de l'arrêt
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

Paradoxe algorithmique, problème de l'arrêt



  1. #1
    vincent2303

    Arrow Paradoxe algorithmique, problème de l'arrêt


    ------

    Bonjour,

    Je rencontre un problème pour lequel j'ai deux raisonnements qui me semblent correctes mais qui aboutissent à des conclusions différentes. Après avoir longtemps réfléchis sur le sujet, je ne vois pas lequel de mes deux raisonnements est incorrecte.

    Voici le problème:

    Soit E l'ensemble des algorithmes se terminant pour tout entier en entré (si on exécute un algorithme de cette ensemble avec un entier, par exemple 3, l'algorithme se termine, il ne boucle pas à l'infini).
    Cet ensemble est dénombrable (par exemple, on ordonne les algorithmes par nombre de ligne). On peut donc écrire la liste de ces algorithmes.

    Soit A l'algorithme suivant:
    Entré: un nombre n
    Algorithme:
    exécuter le n ième algorithme de E avec comme entré n

    La question est : Est-ce que A appartient à E ?


    Les deux raisonnements que j'ai trouvés sont les suivants:

    Argument 1: A appartient à E

    Soit k un entier.
    L'exécution de A avec comme entré k est l'exécution du K ième algorithme de E avec comme entré k.
    Les algorithmes de E se terminent pour tout entier, donc en particulier le k ième algorithme de E avec comme entré k se termine.
    Donc A avec comme entré k se termine.
    Donc A se termine pour tout entier et appartient donc à E.

    Argument 2: A n'appartient pas à E

    Si A appartient à E, alors il existe k tel que "A est le k ième algorithme de E".
    Alors, l'exécution de A avec comme entré k donne:

    exécuter A(k):
    exécuter A(k):
    exécuter A(k):
    exécuter A(k):
    ...

    Cet algorithme ne termine jamais, donc A n'appartient pas à E.


    Voilà ou j'en suis. J'ai ces deux raisonnements qui aboutissent à des conclusions différentes mais les deux raisonnements me semblent totalement correctes. Il y a certainement un endroit où je me trompe mais je n'arrive pas à trouver ou... Si quelqu'un à une idée, je suis preneur.


    Quelques petites infos en plus:

    Ce "paradoxe" m'est apparu en regardant la vidéo de science4all: https://www.youtube.com/watch?v=mFCLGBZSHA8&t=7s
    Un élément de réponse que j'ai trouvé dans cette vidéo est que l'ensemble E est dénombrable mais non calculable. Donc la liste que j'utilise ne peut pas être obtenue de manière algorithmique. On pourrait dire que c'est un problème car je me pose une question sur un algorithme en lui fournissant quelque chose qui ne peut pas être calculé par un algorithme. Mais cet ensemble est dénombrable donc en soit il existe. Rejeter le problème sous prétexte qu'il fait intervenir un élément non calculable n'est pas acceptable. En effet, la plupart des théorèmes mathématiques font intervenir des éléments non calculables.

    Un autre élément auquel j'ai pensé est le problème de l'infini: E est de taille infinie. Cela peut poser quelques problèmes et j'ai réfléchis à une manière de conserver le paradoxe uniquement avec des ensembles finis:
    On considère N fixé (par exemple 10 000).
    On considère E, le même ensemble que plus haut mais avec comme condition supplémentaire: « les algorithmes de E ont moins de N lignes ».
    Alors E devient finis et A est composé de moins de N lignes (si on prend N suffisamment grand).


    Merci d'avance

    -----

  2. #2
    Médiat

    Re : Paradoxe algorithmique, problème de l'arrêt

    Bonjour,

    Avant de se demander si A est un algorithme qui se termine, il faudrait se demander si A est un algorithme ...
    Je suis Charlie.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse

  3. #3
    Tryss2

    Re : Paradoxe algorithmique, problème de l'arrêt

    Le "problème" vient du fait qu'il est impossible d'écrire algorithmiquement la liste des algorithmes qui se terminent.

  4. #4
    pm42

    Re : Paradoxe algorithmique, problème de l'arrêt

    Citation Envoyé par Tryss2 Voir le message
    Le "problème" vient du fait qu'il est impossible d'écrire algorithmiquement la liste des algorithmes qui se terminent.
    Oui, la description manipule des espaces infinis et non contructibles et donc le concept d'algorithme devient assez peu pertinent. Voir aussi la remarque de Mediat.

  5. A voir en vidéo sur Futura
  6. #5
    Superbenji

    Re : Paradoxe algorithmique, problème de l'arrêt

    Bonjour,
    Citation Envoyé par vincent2303 Voir le message
    Un élément de réponse que j'ai trouvé dans cette vidéo est que l'ensemble E est dénombrable mais non calculable. Donc la liste que j'utilise ne peut pas être obtenue de manière algorithmique. On pourrait dire que c'est un problème car je me pose une question sur un algorithme en lui fournissant quelque chose qui ne peut pas être calculé par un algorithme. Mais cet ensemble est dénombrable donc en soit il existe. Rejeter le problème sous prétexte qu'il fait intervenir un élément non calculable n'est pas acceptable. En effet, la plupart des théorèmes mathématiques font intervenir des éléments non calculables.
    Comme cela t'as été dit dans les réponses précédentes, tout le problème est que cet ensemble E est non calculable, supposer une machine de Turing capable de produire E conduit au paradoxe que tu as évoqué.
    Par contre, ce n'est pas pour autant un non sens d'envisager ce genre de problèmes. Ce à quoi tu pense peut être et sans le savoir, en tout cas de ce que j'interprète de ton paragraphe, est le concept de machine de Turing avec oracle.

    Ce sont des machines de Turing équipée d'un oracle, une fonction spéciale capable de répondre à un problème non calculable par machine de Turing classique, comme par exemple l'appartenance à ton ensemble E. De tels modèles de calcul sont capables de produire bien plus de choses que la machine de Turing classique en fonction de l'oracle donné, et ne sont donc bien évidemment pas simulables par celle-ci. Mais les machines de Turing avec oracle ont elles même leurs propres problèmes indécidables.

    Par exemple, considérons les machines de Turing ayant pour oracle l'ensemble E (ensemble des machines de Turing classique s'arrêtant quelque soit l'entrée). Considérons l'ensemble E2, ensemble des machine de Turing avec oracle E s'arrêtant quelque soit l'entrée. Cet ensemble E2 ne sera pas calculable pour les machines avec oracle E. De la même manière que E n'est pas calculable par les machines de Turing classique.

    Il existe encore d'autres manière d'étendre le concept classique de calcul, c'est tout un domaine qui a été étudié, par exemple par des machines capables de manipuler des espaces/temps de calcul infinis. Mais bon, il faut d'abord commencer par bien comprendre les modèles classique et leur limitations, pour ne pas mélanger des choses d'ordre différents.

    Cordialement.
    Dernière modification par Superbenji ; 28/11/2020 à 13h13.

  7. #6
    vincent2303

    Re : Paradoxe algorithmique, problème de l'arrêt

    Bonjour et merci pour vos réponses.

    Effectivement, la liste est non constructible et infinis. Mais, si l'on considère la liste des algorithmes composés d'au maximum 1000 lignes par exemple. Alors cette liste est finis. Elle n'est toujours pas constructible mais elle est finis et elle existe. Que se passe t'il si j'écris des caractères au hasard et que (par un coup de chance inconcevable) j'obtient cette liste ? Est ce que A appartient cette liste ?

    Pour la remarque "A n'est pas un algorithme", je ne suis pas certain de comprendre pourquoi A ne serait pas un algorithme. En cherchant la définition de ce qu'est un algorithme j'ai la définition suivante:
    "Un algorithme est une suite d'instructions ordonnées qui a pour but de trouver un résultats à partir de données connues".

    Avec cette définition, il me semble que A est bien un algorithme.

    Mais il y a certainement une subtilité que je ne vois pas...
    Dernière modification par vincent2303 ; 28/11/2020 à 13h20.

  8. #7
    pm42

    Re : Paradoxe algorithmique, problème de l'arrêt

    La subtilité est «*données connues*» et ton A utilise un ensemble infini non constructible donc des données inconnues.
    Ce n’est pas si subtil que ça

  9. #8
    vincent2303

    Re : Paradoxe algorithmique, problème de l'arrêt

    Non l'ensemble n'est pas infinis si l'on considère E l'ensemble des algorithmes s'écrivants en moins de 1000 lignes (et se terminant pour tout entré).

    Et connues ne signifie pas constructibles.
    Si j'écris des lignes de texte aléatoirement et que je donne ce texte en entré d'un algorithme, le texte est considéré comme connue.
    Or il est possible, en écrivants des lignes de texte aléatoirement, de tomber sur E.

  10. #9
    Superbenji

    Re : Paradoxe algorithmique, problème de l'arrêt

    Rebonjour,

    Il faudrait que tu précise comment tu vois ton algorithme exactement.
    Par exemple, imagine que dans le code de A, est écris quelque part au début:
    Code:
    L = [p0, p1, p2, ... , pn]
    Une liste L de n+1 programmes, les pn étant les chaines de caractères de leurs code respectifs.
    Est-ce que A, la chaine de caractères de son code, contenant donc cette liste L, peut être dans L ?
    Faut toujours faire gaffe à ce genre de détails.
    Dernière modification par Superbenji ; 28/11/2020 à 15h02.

  11. #10
    Tryss2

    Re : Paradoxe algorithmique, problème de l'arrêt

    La liste ne peut pas faire partie du programme (il est impossible pour un texte de longueur finie de contenir une copie de lui même)

    Du coup, ta liste est forcément une entrée du programme, mais dans ce cas, ta liste est composée de programmes qui s'arrêtent pour toute liste? ou bien?

  12. #11
    vincent2303

    Re : Paradoxe algorithmique, problème de l'arrêt

    Ha oui, effectivement je n'y avais pas pensé.

    Donc pour la variante ou l'on fixe le nombre de lignes au départ, peut dire que cette liste existe, que l'on peut l'obtenir (pas la calculer avec un algorithme) mais A ne fera pas partie de la liste car la taille de A sera nécessairement supérieur au nombre de ligne maximum que l'on fixe au départ. Donc avec la variante ou l'on fixe un nombre de ligne maximum, A ne fait pas partie de E.

    Merci, ça m'a bien éclairé et je pense avoir compris ou était mon erreur dans ce cas.

    Et dans le cas ou E n'est pas finis, je comprend maintenant que le problème se situe dans l'énoncé et pas dans les deux raisonnements. Le code de A devrait être de taille infinis... et du coup je suis pas certain que l'on puisse appeler ça un algorithme (en tous cas, je comprend que c'est bien moins évident que ce que je pensais au départ).

    Merci à tous pour vos réponses !

  13. #12
    Superbenji

    Re : Paradoxe algorithmique, problème de l'arrêt

    C'est ça.
    On peut essayer autrement: Au lieu de donner la liste L de façon "brute" dans le code, on peut initialiser une liste vide, et le programme la remplit en générant toutes les chaines de caractères inférieures ou égale à une longueur fixée, et correspondant à un programme syntaxiquement valide. C'est parfaitement faisable, et dans ce cas, A, sera bien dans sa propre liste si on fixe une longueur suffisante.

    Problème: Cette liste contiendra donc tout les programmes possibles jusqu'à la longueur maximale fixée, et inclura donc des programmes qui bouclent à l'infini, dès le début de la liste on aura par exemple un programme d'une seule instruction du genre "while(true){}". Il faudrait donc une fonction qui n'ajouterais dans la liste que les programmes qui s'arrêtent toujours parmi tout ceux générés. Or tu as bien compris qu'une telle fonction n'est pas calculable.
    Ça ne marche pas donc pas non plus.

Discussions similaires

  1. Questionnement sur la preuve de l'indécidabilité algorithmique du problème de l'arrêt !
    Par invite05799208 dans le forum Mathématiques du supérieur
    Réponses: 8
    Dernier message: 05/08/2010, 21h15
  2. Problème d'algorithmique
    Par invite61ab3646 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 13/05/2010, 12h16
  3. Problème d'algorithmique
    Par invite61ab3646 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 13/05/2010, 12h04
  4. problème d'algorithmique
    Par pimeas dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 24/11/2009, 11h07
  5. problème en algorithmique
    Par rasengan dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 28/10/2007, 10h01