Vulgariser P vs NP

Tiens, j'étais sûr d'avoir déjà écrit ce billet. Mais je ne le trouve pas.

Il m'arrive de m'amuser à tenter de vulgariser le problème «Est ce que P = NP ?». Voici comment je m'y prend. En trichant:

-Déjà, il faut savoir deux choses: d'une part, il vaut un million de dollars[1]. Il a été déclaré comme un des 7 plus grands problèmes mathématiques du millénaire. Et en plus, il est relativement simple à comprendre, ce qui le rend d'autant plus énervant.

Je vais te donner un exemple: Tu sais ce que c'est que la division ? Par exemple, si je te demande quels nombres divisent 12, tu me réponds ?
-2, 3, 6... 4... Ah, et 12 et 1.
-C'était pas très compliqués. Maintenant, si je te donne un nombre qui fait un petit milliers de chiffres, tu fais comment pour trouver des diviseurs ?
-Je sais pas... je les testes un par un. Je teste que les impairs.
-Non, tester tous les nombres, ça prend trop de temps. Même sur les ordinateurs super rapide, c'est pas faisable, pas pour un nombre qui fait des milliers de chiffres. Faut que tu réalises que un millier de chiffres, ça fait un milliard de milliard de milliards... et ça 100 fois, de nombres à tester.

Eh bien en fait, on ne sait pas. Oh en vrai, on a bien quelques astuces pour aller un peu plus vite, mais personne ne sait le faire rapidement. Et ce qui est plus énervant encore, c'est qu'on ne sait pas si c'est mathématiquement impossible. Ou si c'est juste que pour l'instant, on est trop bête pour avoir trouvé la manière de le faire. Et bien, le problème du millénaire, c'est ça, en gros. Soit trouver un moyen de résoudre ce problème, mais on pense pas que ça soit faisable, soit prouver mathématiquement que c'est impossible. P, c'est ce que tu peux faire rapidement, pour une définition formelle de «rapide». Et NP c'est ce que tu peux vérifier rapidement. Parce que, si je te demande les diviseurs de 221, ça peut te prendre du temps, mais si je te dis que 13 le divise, tu peux le vérifier rapidement, 221 divisé par 13, ça fait 17. Et on se demande s'il y a des choses qu'on peut vérifier, mais qu'on peut montrer qu'on ne pourra pas trouver rapidement.
-Tu peux pas prouver qu'on peut pas faire quelque chose. Y a toujours des moyens de faire des trucs auxquels on a pas pensé. Sinon, il y a cent ans, on aurait pu prouver qu'on ne peut pas aller sur la lune.
-En fait si. C'est l'avantage des mathématiques, l'ordinateur, on sait exactement ce que c'est. Donc il y a des trucs qu'on a démontré qu'on ne pourra jamais faire. Par exemple répondre à tous les problèmes mathématiques, et là c'est pas une question de temps, il y en a qui n'ont juste pas de réponse[2], on ne sait même pas lesquels, et le pire, c'est que l'immense majorité des problèmes n'ont pas de réponses[3]. Mais là, avec la recherche des diviseurs, on est dans l'inconnu, on pense qu'on pourra jamais faire, mais on sait pas comment le prouver.
-«Ils ont réussis parce qu'ils ne savaient pas que c'est impossible.»
-Bien sûr, si tu veux être exacte, on peut juste dire «c'est impossible pour les ordinateurs actuels». Ou même les ordinateurs futurs qui se contentent juste d'aller plus vites. Parce là, pour un gros nombre, ton calcul qui va te prendre des milliards de milliards d'années, même si ton ordinateur va mille fois plus vite, t'auras toujours des millions de milliards d'années à attendre... Mais on ne peut pas prouver mathématiquement qu'un jour la Pythie de Delphes ne vas pas arriver et nous donner des réponses à nos questions compliqués. Le pire, c'est que je ne rigole pas, il y a des branches des mathématiques qui étudient ce qu'on pourrait faire si on avait des oracles. Mais plus sérieusement, y a d'autres sortes d'ordinateurs imaginés - les ordinateurs quantiques
-Comme le chat de Schrödinger.
-C'est pas faux. D'autant qu'on ne sait pas si on pourra en réaliser un jour en vrai, ça semble compliquer. En théorie, ils pourraient répondre super rapidement à ce genre de question. Ils pourront pas être utilisé pour word, juste pour des calculs théoriques compliqué, comme trouver des diviseurs. Le souci, c'est que pour l'instant, le plus grand nombre dont les diviseurs ont été trouvés, c'est 21... pas super efficace.
-De toute façon, ça sert à rien. Pourquoi vous y passé autant de temps ?
-En fait non. Le pire, c'est que ce problème là est super important. Si tu trouves comment avoir les diviseurs rapidement, en vrai, c'est largement plus d'un million que ça vaut. Parce que, pour des raisons trop complexe à expliquer, une énorme partie de la sécurité informatique repose sur l'idée qu'on ne sait pas trouver rapidement des diviseurs. Ou qu'on ne sait pas trouver certains trucs. Si tu sais le faire, alors, y a plus de communication secrètes, donc plus de payement en ligne, puisque tout le monde pourrait lire ton mot de passe sur internet, plus de carte bleue à puce... En tout cas, pas de manière aussi simple. L'avantage, c'est que il y a des problèmes qui ressemblent, qu'on sait «vérifier» comme j'avais expliqué, donc qui sont dans NP, qu'on saurait alors peut-être résoudre. Des problèmes de physique, de biologie, de mathématiques, etc... donc y a des optimistes qui espèrent P=NP, ça permettrait de faire d'immense progrès scientifiques, dans des tas de domaines différents en plus, vu que l'ordinateur est utilisé partout !
-Et donc toi, tu travailles sur ça ?
-Ah non. Ça, c'est un des 7 plus gros problèmes mathématiques du millénaire. J'ai aucune chance de résoudre ça. Je fais des trucs, on va dire, similaire de loin, mais avec des modèles BEAUCOUP plus simples. Sur lesquels je suis capable de montrer que des trucs sont impossibles. Ce qu'on se dit, en mathématiques, c'est qu'en empilant des tas et des tas de résultats, petits à petits, on comprendra mieux tout ça, et on finira par voir comment faire ces preuves. On est des nains juchés sur des épaules de géants. Bon, en fait, on fait une pyramide de nains sur des épaules de géants, et on suppose qu'à la longue, on sera assez haut pour avoir des réponses. Mais, souvent, en mathématiques, on ne sait pas qui va trouver le bon chemin, donc on explore le labyrinthe au hasard, et je mélange les métaphores. Mais en tout cas, je te jure, c'est passionnant de traîner là, tenter d'évoluer, de comprendre, et de découvrir des trucs neufs. Même si, je suis juste pas sûr d'avoir la réponse à P=NP de mon vivant, ce qui est dommage, car j'aimerai bien savoir.

Notes

[1] Ou 1,2 million si vous êtes Vinay Deolalikar.

[2] Le fameux théorème d'incomplétude de Godel

[3] Tout du moins, si j'ai bien compris The limits of mathematics, et les résultats de Chaitin, ce qui n'est pas certains du tout.

Commentaires

1. Le lundi 17 août 2015, 08:11 par Athreeren

" il y a des branches des mathématiques qui étudient ce qu'on pourrait faire si on avait des oracles."
Ça me rappelle ceci: http://hpmor.com/chapter/17 :

"He wouldn't have just shown that P=NP once you had a Time-Turner, this trick was more general than that."

2. Le lundi 17 août 2015, 21:43 par N

J'ai vraiment commencé à m'intéresser aux sciences tout petit avec les bouquins «histoires mystérieuses» de Asimov, qui faisaient de la vulgarisation, je crois que c'est une super façon de motiver les troupes.

3. Le mardi 18 août 2015, 01:19 par Subbak

Ton interlocuteur hypothétique mérite des baffes. La moindre des choses quand quelqu'un explique un truc que tu ne connais pas c'est d'éviter de le contredire avec des citations éculées.

4. Le mardi 18 août 2015, 15:52 par LCF, merci pour l'explication

"Est-ce que P=NP"
Gnn..
DEMONSTRATION!
TRIVIALE!
MARGE TROP PETITE!
HAAAAAAA!

"on ne peut pas prouver mathématiquement qu'un jour la Pythie de Delphes ne vas pas arriver "
On peut le démontrer culinairement. Il faut et il suffit de manger.
C'est dû au fait que la Pythie vient en mangeant.

5. Le mardi 18 août 2015, 16:04 par LCF

"Ça me rappelle ceci: http://hpmor.com/chapter/17"
"Harry reviewed in his mind the algorithm that he would follow. [...]"

Pour les gros mauvais en math, serait-ce possible d'expliquer le raisonnement derrière la manipulation temporelle, et en quoi ça lui permet de trouver les deux nombres de base en temps polynomial?

6. Le dimanche 30 août 2015, 12:11 par Athreeren

Soit un nombre N dont on veut démontrer qu'il est premier. Au début de l’expérience, on reçoit le dernier diviseur P(k) testé, avec l'autre diviseur si P(k) divise N.
1) : si P(k) > sqrt(N), N est premier : renvoyer dans le passé le nombre P(k).
2) : si P(k) < sqrt(N) et P(k) ne divise pas N, essayer de diviser N par le nombre premier suivant P(k+1). Si P(k+1) divise N, renvoyer les deux diviseurs, sinon, renvoyer P(k+1) uniquement.
3) Si on reçoit deux nombres, on peut les multiplier pour vérifier qu'on obtient N mais ce n'est pas nécessaire. Les renvoyer dans le passé.

Cet algorithme n'est pas une boucle du point de vue de l'expérimentateur : il ne verra que la situation (1), (2) ou (3). En fait il n'y a pas besoin de faire le moindre calcul, puisque la situation (2) n'est pas stable (aussi grand que soit le nombre, on finit toujours par converger vers (3) si le nombre est premier, ou (1) s'il ne l'est pas). À noter aussi que dans hpmor, le retourneur de temps à un nombre d'utilisations quotidiennes limité ; ce n'est pas un problème, puisque du point de vue du retourneur de temps comme de l'expérimentateur, on ne passe qu'une fois par une seule des étapes (1), (2) ou (3).

L'algorithme est similaire à celui pour construire une machine à remonter le temps (1: recevoir les plans, 2 : construire la machine, 3 : s'envoyer les plans dans le passé), sauf qu'il n'y a aucune impossibilité à amorcer la boucle, alors que pour construire la machine, il faut que dans une réalité, la machine ait été construite sans aide (mais après, on peut accélérer le procédé en réalisant l'étape 3). Donc cet algorithme marche, et si on a une machine à remonter le temps (et qu'elle ne nous renvoie pas constamment "DO NOT MESS WITH TIME", ce qui est théoriquement possible si l'univers nous déteste), ce genre de problème devient trivial. Ça ne marche pas pour les problèmes dont la solution ne peut être obtenue par une exploration systématique de toutes les possibilités par contre, puisque ces problèmes sont similaires à celui de la construction de la machine à remonter le temps : on peut s’épargner des siècles de recherches en envoyant à Pierre de Fermat des marges plus grosses (avec la démonstration), mais on aura quand même besoin d’avoir un Andrew Wiles dans une réalité quelconque pour résoudre le problème une première fois.

7. Le vendredi 11 septembre 2015, 00:48 par LCF, renseigné

Merci beaucoup!

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet