ICC Semaine 4 Théorie du calcul -Est ce que si on a un problème bien posé, où la seule réponse est vraie ou faux, on peut faire un algorithme ? Non ! Il y a des enoncés indécidables ≫ aucun algorithme peut nous donner la réponse -Si on a un problème décidable, est ce qu’on peut le résoudre en un temps raisonnable ? Si on a un algo qui résout en un temps exponentiel > même si notre nombre est 10^100, il faut écrire plus de 100 chiffres er c’est long ! QUELS SONT LES PROBLEMES QUE L’ON PEUT RESOUDRE EN UN TEMPS RAISONABLE ? Remarque préliminaire : Un problème est en ensemble de questions (en général) Exemple : -Si on nous donne n, que vaut f(n) ? ≫c’est un ensemble infini de question -Soit X une classe de 1ere année à l’EPFL, quelle est la taille de X ? ≫ c’est un ensemble fini de question et donc de réponse. Dans un premier temps, on a besoin d’un algorithme, mais ensuite, pour répondre à cette question, on a pas besoin d’algorithme, on a juste besoin d’une table de correspondance ≫ GC = 119 / SIE = 85 ≫ ça ne bougera jamais, on peut faire une table. Alors que dans le premier cas avec f(n), on ne peut pas faire une table pcq c’est infini. 1. L’ensemble des algorithmes existants dans l’univers est dénombrable ≫ cela veut dire que l’on peut les compter. (même s’il y en a à l’infini, on pourrait les compter) 2. L’ensemble des problèmes existants dans l’univers est indénombrable > infini mais en plus, on peut pas les compter Conclusion : il y a « beaucoup plus » de problèmes que d’algorithmes. ICC Semaine 4 Théorie du calcul 1. L’ensemble des algorithmes existants dans l’univers est dénombrable ≫ cela veut dire que l’on peut les compter. Dénombrable : X est dénombrable s’il existe une bijection f :x IN Exemple d’ensembles dénombrables : ℕ, ℤ, ℚ .. (Pour dénombrer Q, on peut faire un tableau à double entrée avec les p d’un coté et les q de l’autre puis faire p/q, ou voir cours analyse) Contre exemple : ℝ - Un algorithme s’écrit, une fois implémenté, est un programme : une suite finie de caractères ≫ « pour i allant de à n » Tout caractère peut être identifié à une suite de 0 et de 1 (11010010 >> 8 bits) Tout programme peut donc être identifié à une suite très longue mais finie de 0 et de 1. Toute suite finie de 0 et de 1 encode un unique nombre entier n ∈ ℕ (un nb décimal peut être transcrit en binaire et une suite binaire peut être transcrit en un nb décimal). Donc tout programme peut être identifié à un nombre entier. (très très grand.) 2. L’ensemble des problèmes existants dans l’univers est indénombrable > infini mais en plus, on peut pas les compter Restreignons-nous aux problèmes de décision qui demandent une réponse vrai (1) ou faux (0) Exemples : - Est ce que n est pair ? ≫ ensemble infini de question qui répond par oui (1) ou non(2) n 012345678 f(n) 1 0 1 0 1 0 1 0 1 On identifie le problème de décision à une fonction boolean. ( f : x {0 ; 1}) - Est ce que n est premier ? n 0123456789 f(n) 0 0 1 1 0 1 0 1 0 0 On identifie le problème de décision à une fonction boolean. ( f : x {0 ; 1}) - Est ce que l’algo A est récursif ? On pourra nous répondre par oui ou non ≫ fonction boolean. Tout problème de décision peut être associé à une fonction boolean. ICC Semaine 4 Théorie du calcul EST CE QUE L’ENSEMBLE DES FONCTIONS BOOLEENNES EST DENOMBRABLE ? Non > démo par l’absurde : Supposons que l’ensemble des fonctions booléennes soient dénombrables. On peut donc établir une liste de celles-ci { f0, f1, f2, f3 … } ≫ Je les compte, je leur donne un nom. N 0123456789 F1 1001010100 F2 0110110001 F3 1010101010 ≫ Contradiction si on définie f*(n) = 1 – fN(n) n 012345 f*(n) 1101 Cette fonction n’est pas dans notre première liste, pourtant f* est une fonction booléenne, donc on pourra en rajouter à l’infini, donc elles ne sont pas dénombrables. Cette méthode s’appelle la méthode de diagonalisation de Kanthor. Exemple de problème non démontrable par algorithme : Problème de l’arrêt On aimerait trouver un algorithme A (P,n) qui permet de décider si - P(n) s’arrete alors A(P,n) = 1 - P(n) ne s’arrette pas alors A(P,n)=0 On peut montrer qu’un tel algorithme n’existe pas. ICC Semaine 4 Théorie du calcul III . Interprétation. problèmes décidables Problèmes indécidables P ∄ aux algorithmes NP EXP Complexité ---------> Pour parler de la complexité d’un problème, on se réfère généralement à un nombre entier n ∈ ℕ lié à la taille des données ( n = entier, n= taille de liste, n = taille d’un graphe, n= nb de chiffre de N …) On a vu plusieurs algorithmes dont la complexité est de O(log2n), O(n), O(nlog2n), O(n2). Exemple : multiplier 2 matrices de taille nxn complexité O(n3) Classes de problèmes : Problème « facile » : Problème Polynomial : P = { ensemble des problèmes qui peuvent être résolus par un algorithme dont le temps d’exécution est O(np) pour un p ≥ 1 donné. } Problème Exponentiel : EXP = { ensemble des problèmes qui peuvent être résolus par un algorithme dont le temps d’exécution est O(2(nP)) pour p≥1 P ∁ EXP Exemple du jeu d’echec avec nxn cases. Question : Qui gagne ? Noir ou blanc ? ou partie nulle ? Ce problème appartient à EXP mais pas à P Problème NP : { ensemble des problèmes tels que si ‘on’ me donne une proposition pour une solution du problème, je suis capable de vérifier en temps polynomial, si la solution est bonne ou pas. Remarque : P ⊂ NP Exemple : factorisation en nombres premiers Soient p et q deux nmbres premiers à n chiffres, N = pq Problème : étant donné N, que valent p et q ? Exemple : N=1457 ≫ n = 2 et on trouve p et q en un temps exponentiel en n Exemple : Calculer 31x47 ≫ = 1457 Ce problème est dans NP et aussi dans EXP QUESTION : EST CE QUE P=NP ??