Introduction à la Calculabilité Cours LFI2 (Master Académique) 2007/2008
Plan 1- Introduction 2- Intérêt d’étudier la calculabilité 3- Notion de Problème 4- Notion de Programme (procédure de calcul) 5- Notion de Décidabilité 6- Notion de Calculabilité 7- Notion de dénombrabilité 8- Notion de codage 9- Formalisation des problèmes 10- Formalisation du calcul
Introduction
Chaque science a ses limites théoriques& pratiques Introduction Chaque science a ses limites théoriques& pratiques Mathématiques Mécanique Physique …. Qu’en est-il pour l’Informatique? L’informatique, est-elle limitée ?
A la recherche des limites de l’informatique Introduction A la recherche des limites de l’informatique Deux Questions principales se posent: Limites théoriques ? Limites pratiques ?
Théorie de la calculabilité Introduction Limites théoriques ? • Est-ce qu’il y a des problèmes qu’on ne peut pas résoudre par ordinateur ? par ordinateur = par moyen algorithmique indépendamment des ressources disponibles limites absolues Théorie de la calculabilité
Théorie de la complexité Introduction Limites pratiques ? Est-ce qu’il y a des problèmes qu’on ne peut pas résoudre de façon efficace ? en présence de ressources (temps, espace) limites relatives Théorie de la complexité
Il existe des problèmes qui n’ont pas une solution algorithmique Introduction En effet: Il existe des problèmes qui n’ont pas une solution algorithmique Il existe des problèmes qui n’ont pas de solution satisfaisante en terme d’efficacité
Complexité Calculabilité Limites Limites théoriques ? Introduction Limites Limites théoriques ? Limites pratiques ? Complexité Calculabilité Dans ce cours on s’intéresse seulement à la théorie de la Calculabilité
Intérêt d’étudier la calculabilité
Intérêt d’étudier la calculabilité Quand un informaticien tente de résoudre un problème et qu’il n’arrive pas à avoir un algorithme. Que fait-il ? Il corrige quelques détails de l’algorithme, Il ajoute de nouveaux cas …..etc. Il se dit: « je vais y arriver , j’essaye encore» Il cherche une autre méthode de résolution Il se dit : « j’ai mal démarré, je recommence à zéro »
Après avoir suivi ce cours: Intérêt d’étudier la calculabilité Après avoir suivi ce cours: Il se rendra peut être compte que le problème qu’il est censé résoudre n’a pas de solution algorithmique. Il économise ses efforts dés le départ.
Comprendre les limites de l’informatique: Intérêt d’étudier la calculabilité L’intérêt d’étudier la théorie de calculabilité Comprendre les limites de l’informatique: Ne pas essayer de résoudre un problème qu’on ne peut pas résoudre Disposer des méthodes qui permettent de montrer que certains problèmes ne peuvent pas être résolus Obtenir des résultats indépendants de la technologie employée pour construire les ordinateurs.
– La notion de programme exécuté sur un ordinateur. Intérêt d’étudier la calculabilité Quels problèmes sont solubles par un programme exécuté sur un ordinateur ? Il faut préciser : – La notion de problème, – La notion de programme exécuté sur un ordinateur.
Notion de problème
Problème est une question générique. Notion de problème Définition Problème est une question générique. (i.e. un problème contient des paramètres ou variables libres. Lorsqu’on attribue des valeurs à ces variables on obtient une instance du problème) Un problème existe indépendamment de toute solution ou de notion de programme pour le résoudre. Un problème peut avoir plusieurs solutions: Plusieurs algorithmes différents peuvent résoudre le même problème.
Des Exemples de Problèmes… Notion de problème Des Exemples de Problèmes…
Problème: Trier un tableau de nombres Notion de problème Problème: Trier un tableau de nombres - Méthodes de tri basé sur la recherche du min (ou max) et des opérations de permutation C’est donc un problème « décidable »
Problème: Déterminer si un nombre est premier Notion de problème Problème: Déterminer si un nombre est premier Crible d’Eratosthène: Construire la liste des nombres premiers jusqu’à N: Écrire tous les entiers jusqu’à N, éliminer tous les multiples de 2, puis parmi les nombres qui restent, tous les multiples de 3 etc. C’est donc un problème « décidable »
Problème: Déterminer si pour tout entier n>2, Notion de problème Problème: Déterminer si pour tout entier n>2, il existe des entiers positifs a, b, c tels que: an + bn = cn La réponse négative à cette question constitue le désormais célèbre « dernier théorème de Fermat » La question est restée ouverte jusqu’en 1996 (Andrew Wiles)
Problème: Conjecture de Goldbach Notion de problème Problème: Conjecture de Goldbach Tout nombre pair supérieur à 0 peut s’écrire comme la somme de deux nombres premiers Exemple: 4 = 2+2, 6=3+3, 8=5+3, 10=5+5, 12=5+7 100=97+3 … etc. Non Décidable
Problème: Équations diophantiennes (10ème problème de Hilbert 1900) Notion de problème Problème: Équations diophantiennes (10ème problème de Hilbert 1900) Déterminer si une équation de la forme P=0, où P est un polynôme à coefficients entiers, possède des solutions entières Exemples : x2 + y2 – 1 = 0, x2 – 991y2 – 1 = 0 etc… Ce problème n’est pas « décidable » Démontré en 1970 par Yuri Matijasevic Il n’existe aucun algorithme qui indique, pour chaque équation diophantienne, si elle a ou non des solutions
Problème: Les mots correspondants (1) Notion de problème Problème: Les mots correspondants (1) Etant donnés deux suites de mots, est-il possible de former un nouveau mot en concaténant une série de la première suite de façon telle que l’on retrouve le même mot en concaténant la même série de mots de la deuxième suite Une instance du problème 1 2 3 4 5 abb a bab baba aba bbab aa ab Groupe-1 Groupe-2 Oui il y a la série: 2 1 1 4 1 5 a abb abb baba abb aba = aabbabbbabaabbaba aa bbab bbab aa bbab a = aabbabbbabaabbaba
Problème: Les mots correspondants (2) Notion de problème Problème: Les mots correspondants (2) Une autre instance du problème 1 2 3 4 5 bb a bab baba aba aa ab Groupe-1 Groupe-2 Pas de Solution En général le problème n’est pas soluble.
C’est un problème « indécidable » Notion de problème Problème: Déterminer si un programme P, pris au hasard, calcule une fonction donnée non nulle f(n) (n entier) C’est un problème « indécidable » Il n’existe pas d’algorithme général tel qu’étant donné un programme P et une fonction f de N dans N, il soit capable de dire si P calcule effectivement f
C’est un problème « indécidable » Notion de problème Problème: Déterminer si deux programmes calculent la même chose (sont équivalents) C’est un problème « indécidable » Il n’existe pas d’algorithme général permettant de dire, étant donnés deux programmes P et P’ qu’ils font la même chose.
C’est un problème « indécidable » Notion de problème Problème: Déterminer si un programme quelconque, sur une donnée représentée par un entier n, ne va pas boucler indéfiniment (Problème de terminaison) C’est un problème « indécidable » Il n’existe pas d’algorithme général qui, étant donné un programme P et un entier n, permette de dire que P ne va pas boucler indéfiniment sur l’entrée n
Notion de programme
Notion de programme Définition Un programme (ou encore algorithme) est une procédure effective pour résoudre un problème (toutes les instances du problème) Une caractéristique importante d’une procédure effective est qu’elle contient exactement la marche à suivre pour résoudre le problème, et qu’aucune décision supplémentaire ne doit être prise lors de l’exécution de la procédure. Une procédure effective doit se terminer pour toutes les instances du problème
Exemple de Procédure non effective (1) Notion de programme Exemple de Procédure non effective (1) Pour résoudre le problème de terminaison (l’arrêt) d’un programme Soit la procédure qui consiste à « déterminer si le programme n’a pas de boucles ou de séquences d’appels récursifs infinies.” Cette procédure n’est pas une procédure effective car on ne sait pas comment détecter les boucle infinie , ni les appels récursif infinis
Exemple de Procédure non effective (1) Notion de programme Exemple de Procédure non effective (1) Fonction Calcul (n: integer ):integer ; begin if n = 1 then 1 else if pair(n) then Calcul (n ÷ 2) else Calcul(3 × n+1); end. Calcul(1) =1, Calcul (2)=1, Calcul(3)=Calcul(10)=Calcul(5)=Calcul(16)=Calcul(8)=Calcul(4) = Calcul(2)=Calcul(1)=1 Calcul(7)=Calcul(22)=Calcul(11)=Calcul(34)=Calcul(17) = Calcul(3*17+1) ……
Notion de Décidabilité
Décidabilité Définition: Notion de Décidabilité Décidabilité Définition: Soit un prédicat P (une propriété), applicable à un entier n P est décidable si et seulement si il existe une méthode (un algorithme) permettant de dire au bout d’un temps fini (i.e.: un nombre fini de pas de calcul) si P(n) est vrai ou si P(n) est faux
Exemples: Propriété P1(n) = « L’entier n est pair » P1 est décidable Notion de Décidabilité Exemples: Propriété P1(n) = « L’entier n est pair » P1 est décidable Propriété P2(n) = « L’entier n a au moins un nombre premier qui lui est strictement supérieur » P2 non décidable
Notion de Calculabilité
Calculabilité Définition: Soit f une fonction de N dans N, Notion de Calculabilité Calculabilité Définition: Soit f une fonction de N dans N, f est calculable si et seulement si il existe une méthode de calcul (un algorithme) permettant pour tout entier n d’obtenir f(n) si nDom(f) et si nDom(f)
Notion de Calculabilité Exemples: Les opérations simples (addition, produit…) sont des fonctions « calculables »: parce que nous connaissons des algorithmes pour les effectuer, cela signifie que nous sommes capables de réduire ces tâches à des opérations encore plus simples, que nous combinons entre elles.
Exemple: addition entière Notion de Calculabilité Exemple: addition entière 5 6 9 8 + 3 9 6 4 ------------- 9 6 6 2 décomposé en : faire 8 + 4 (table d’addition) 2, retenue de 1 faire 9 + 6 + 1 (la retenue) etc.
1- De telles actions font appel à des opérations encore plus simples Notion de Calculabilité Remarques: 1- De telles actions font appel à des opérations encore plus simples 2- Noter aussi que nos algorithmes de calcul (addition, produit…) reposent sur certaines conventions (choix d’un mode de représentation des nombres, choix d’une base…) et sur une définition implicite des opérations
3- Tout ne se ramène pas à des calculs sur les entiers… Notion de Calculabilité Remarques: 3- Tout ne se ramène pas à des calculs sur les entiers… Par exemple: prendre deux mots d’inégale longueur et chercher à savoir si le plus petit figure à l’intérieur du plus grand (pattern-matching) Vérifier si une expression contenant des parenthèses est correctement parenthésée
- Les couples d’entiers Notion de Calculabilité Remarques: 4- Dans la définition de calculabilité et de décidabilité la fonction f et le prédicat P sont définis sur N , Qu’en est-il pour les autres types de données ? - Les couples d’entiers Les suites d’entiers Les entiers relatifs Les fractions Les nombres réels Les chaînes de caractères Les arbres ….
Notion de Calculabilité Les définitions s’étendent aux prédicats et fonctions qui s’appliquent à des ensembles dénombrables
Notion de dénombrabilité
Dénombrabilité Définition: Notion de Dénombrabilité Dénombrabilité Définition: Un ensemble dénombrable est un ensemble dont les éléments peuvent être énumérés, ou numérotés : on peut les arranger de telle sorte qu’il y ait un premier, un deuxième, un troisième, etc. L’ensemble est considéré comme étant un ensemble dénombrable
Exemples {0, 1, 2, 3, 4} est dénombrable Notion de Dénombrabilité Exemples {0, 1, 2, 3, 4} est dénombrable {Ali, Sara, Mohamed, Brahim} est dénombrable (il suffit de choisir un classement arbitraire, par exemple par ordre d’âge) {xN; x<100} est dénombrable {0,1, 2, 3}{0, 1, 2, 3} est dénombrable (classer les couples dans l’ordre lexicographique, avec 0<1<2<3) {0, 1, 2, 3}n est dénombrable pour tout n (même raison)
Notion de Dénombrabilité Exemples L’ensemble des mots utilisant les lettres de l’alphabet Français et de longueur inférieure ou égale à 26 est dénombrable N est dénombrable P = {xN, x est pair} est infini dénombrable: Il existe une bijection de P vers N (donc une numérotation possible des entiers pairs)
Z (l’ensemble des entiers relatifs) est infini dénombrable… Notion de Dénombrabilité Exemples Z (l’ensemble des entiers relatifs) est infini dénombrable… on peut classer les relatifs comme suit: 0; -1; +1; -2; +2; -3; +3; -4; +4; -5 etc. La fonction qui donne la numérotation est: f(0) = 1 f(-n) = 2n (n0) f(+n) = 2n+1
Q- est infini dénombrable, Notion de Dénombrabilité Exemples NN est infini dénombrable On peut classer les couples (m, n) comme suit: (0,0);(1,0);(0,1);(0,2);(1,1);(2,0);(3,0);(2,1); (1,2);(0,3);(0,4);(1,3);(2,2);(3,1);(4,0) etc. Q+ est infini dénombrable, Q- est infini dénombrable, Q aussi
Exemples R non dénombrable Notion de Dénombrabilité Exemples R non dénombrable Les réels contiennent les rationnels et les irrationnels, ces derniers se caractérisent par le fait qu’ils n’ont aucune représentation sous forme d’un objet fini, Donc… comment espérer avoir une réponse en un temps fini lorsqu’on part d’un objet qui n’a aucune représentation finie?
Tout ensemble fini est dénombrable. Notion de Dénombrabilité Remarques Tout ensemble fini est dénombrable. Un ensemble fini est dénombrable parce qu’il est toujours possible de définir une bijection de cet ensemble vers une partie finie de N (c’est-à-dire un ensemble de la forme {0,1,...n}) L’union de deux ensembles dénombrables est dénombrable. Le produit d’ensembles dénombrables est dénombrable. (ex: Nk pour tout entier k)
Notion de Codage
Soit E: un ensemble dénombrable N: l’ensemble des entiers naturels Notion de Codage Remarque Soit E: un ensemble dénombrable N: l’ensemble des entiers naturels f: une fonction de numérotation de EN Si f est bijective alors les éléments de E peuvent être codés par des entiers et vice versa N E codage
Des chaînes aux nombres entiers Notion de Codage Des chaînes aux nombres entiers Les chaînes de caractères (les mots sur un alphabet donné A) constituent un ensemble infini dénombrable: on peut donc associer à chaque chaîne un entier Cet entier peut être: - le numéro d’ordre dans un classement quelconque des chaînes - Le numéro calculé selon un code attribuant un chiffre à chaque caractère (cf. code ASCII),….
Des chaînes aux nombres entiers Notion de Codage Des chaînes aux nombres entiers Chaînes de caractères N codage Tout calcul sur les chaînes peut donc se ramener à un calcul sur des entiers
Des nombres entiers aux chaînes Notion de Codage Des nombres entiers aux chaînes Pour procéder à des calculs sur les nombres entiers, il faut leur donner une représentation sous forme de chaîne (ou mot). Une représentation possible est une représentation dans le système binaire : sous forme de suite de 0 et 1 Donc les calculs sur des entiers se ramènent à des calculs sur des chaînes.
Les instances d’un problème sont des symboles (des chaînes) Notion de Codage Remarque Finalement, tout algorithme et tout calcul se ramène à manipuler des suites de symboles ( donc des chaînes). Les instances d’un problème sont des symboles (des chaînes)
Si par exemple on a représenté les nombres entiers en binaire Notion de Codage Exemple-1 Si par exemple on a représenté les nombres entiers en binaire Le problème « est-ce que n est pair? » se ramène au problème « est-ce que la représentation de n appartient à l’ensemble des représentations des entiers pairs? »
« est-ce qu’il existe des solutions entières de l’équation xn+yn=zn? » Notion de Codage Exemple-2 Le problème « est-ce qu’il existe des solutions entières de l’équation xn+yn=zn? » se ramène au problème « savoir si un certain ensemble de chaînes est non vide. »
Formalisation des problèmes
Il est nécessaire de rappeler certaines définitions: Formalisation des problèmes Les instances d’un problème sont représentées par des chaînes de symboles (mots) Il est nécessaire de rappeler certaines définitions: alphabet, mot, langage,…etc.
Alphabet Définition: Un alphabet est un ensemble fini de symboles. Formalisation des problèmes Alphabet Définition: Un alphabet est un ensemble fini de symboles. Exemples • = {a, b, c} • = {,, } • = {0,1, 2, 3,4,5,6,7,8,9} • = {♠,♣,♥,●}
Formalisation des problèmes Mot Définition: Un Mot sur un alphabet est une séquence finie d’éléments de cet alphabet. Mot vide est désigné par ou Longueur du mot w est notée |w| Exemples • a, abs, zt, bbbssnbnzzyyyyddtrra, grosseguindaille sont des mots sur l’alphabet = {a, . . . , z}. • 4♠3●5 2 , 12765 ♠ sont des mots sur l’alphabet ={0, . . . , 8, ♠, ●, }.
Formalisation des problèmes Langages Définition: Un langage est ensemble (fini ou non) de mots définis sur le même alphabet. Exemples • {aab, aaaa, , a, b, abababababbbbbbbbbbbb}, { , aaa, a, bbb} et sont des langages sur l’alphabet {a, b}. •{0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100,101,111,…} est le langage contenant tous les mots de l’alphabet {0, 1}. • L’ensemble des mots représentant les programmes C qui s’arrêtent toujours. Remarque: {}
Opérations sur les langages Formalisation des problèmes Opérations sur les langages Soit deux langages L1 et L2. Union • L1 L2 = {w /w L1 ou w L2} Concaténation L1 · L2 = {w/ w = xy , x L1 et y L2} Complément L1 = {w * / w L1}= * \ L1 Fermeture itérative (fermeture de Kleene) • L1* = {w/ k 0 et w1, . . . ,wk L1 et w = w1w2 . . .wk}
Formalisation du Calcul
Tout ensemble de chaînes est défini comme un langage Formalisation du calcul Tout ensemble de chaînes est défini comme un langage Les problèmes se ramènent à des problèmes de reconnaissance de l’appartenance à un certain langage: Etant donné un langage L et un mot w Est-ce que wL ?
Problème P(n) : L’entier n est-il pair Formalisation du calcul Exemple Problème P(n) : L’entier n est-il pair Se ramène au problème wL Où w: est la chaîne de caractères qui représente l’entier n L: langage dont les éléments sont les chaînes représentant tous les entiers pairs
Comment procéder à la reconnaissance de mot d’un langage? Formalisation du calcul Comment procéder à la reconnaissance de mot d’un langage? Il faut donc déterminer le plus petit ensemble possible d’opérations élémentaires, suffisamment générales pour que le maximum de calculs (sur des entiers, des chaînes quelconques etc.) puissent se ramener à des combinaisons de ces opérations.
Plusieurs solutions Modèles de Calcul Formalisation du calcul Plusieurs solutions Modèles de Calcul Machines de Turing Automates Machines RAM fonctions récursives (Church) Lambda – calcul …
FIN