cours d’informatique théorique

43
Cours d’informatique théorique INF f5 Alain Lecomte novembre 2005

Upload: shika

Post on 21-Jan-2016

43 views

Category:

Documents


3 download

DESCRIPTION

Cours d’informatique théorique. INF f5 Alain Lecomte novembre 2005. who is this man?. Alan TURING (1912-1954) d’après son biographe: founder of computer science, mathematician, philosopher, codebreaker, strange visionary and a gay man before his time. et lui?. David HILBERT - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Cours d’informatique théorique

Cours d’informatique théorique

INF f5

Alain Lecomte

novembre 2005

Page 2: Cours d’informatique théorique

who is this man?

QuickTime™ and aTIFF (Uncompressed) decompressor

are needed to see this picture.

Page 3: Cours d’informatique théorique

Alan TURING

(1912-1954)

d’après son biographe:

founder of computer science, mathematician, philosopher, codebreaker, strange visionary and a gay man before his time

Page 4: Cours d’informatique théorique

et lui?

David HILBERT

(1862-1943)

le plus grand mathématicien de son siècle?

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Page 5: Cours d’informatique théorique

le 10ème problème de Hilbert

• Does there exist a universal algorithm for solving Diophantine equations?(A Diophantine equation is an equation in which only integer solutions are allowed).

Page 6: Cours d’informatique théorique

Équations diophantiennes

• 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 = 0etc…

Page 7: Cours d’informatique théorique

Ce problème n’est pas « décidable »

Démontré en 1970 par Yuri Matijasevic

Page 8: Cours d’informatique théorique

Qu’est-ce que cela signifie?

• Il n’existe aucun algorithme qui indique, pour chaque équation diophantienne, si elle a ou non des solutions

Page 9: Cours d’informatique théorique

Cas de l’informatique

• Déterminer si un programme P, pris au hasard, calcule une fonction donnée non nulle f(n) (n entier)

• Déterminer si deux programmes calculent la même chose (sont équivalents)

• Déterminer si un programme quelconque, sur une donnée représentée par un entier n, ne va pas boucler indéfiniment

Page 10: Cours d’informatique théorique

Ce sont des problèmes « indécidables »

Page 11: Cours d’informatique théorique

• 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

• 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,

• 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

Page 12: Cours d’informatique théorique

• 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 (ie: un nombre fini de pas de calcul) si P(n) est vrai ou si P(n) est faux

Page 13: Cours d’informatique théorique

• 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)

Page 14: Cours d’informatique théorique

Remarque 1

• Est-on limité aux prédicats sur N et aux fonctions de N dans N?– Ne peut-on pas aussi se poser des questions ou

faire des calculs sur des couples d’entiers? Des suites d’entiers? Des entiers relatifs? Des fractions? Des nombres réels?

– Ne peut-on pas aussi se poser des questions ou faire des calculs sur des chaînes de caractères? Des arbres? Des graphes?

Page 15: Cours d’informatique théorique

Réponse

• Oui, bien sûr… tant qu’on se pose des questions ou qu’on calcule sur des objets énumérables (ou numérotables) c’est-à-dire: qui sont éléments d’ensembles dénombrables

Page 16: Cours d’informatique théorique

Dénombrabilité

• 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.

• On rajoute aussi aux ensembles dénombrables… (par sympathie pour lui)

Page 17: Cours d’informatique théorique

Tout ensemble fini est dénombrable

• {0, 1, 2, 3, 4} est évidemment dénombrable

• {paul, marie, lucien, jean} est dénombrable (il suffit de choisir un classement arbitraire, par exemple par ordre d’âge)

• {« paul », « marie », « lucien », « jean »} est dénombrable (choisir par exemple l’ordre alphabétique)

Page 18: Cours d’informatique théorique

• {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)

• L’ensemble des mots utilisant les lettres de l’alphabet latin et de longueur inférieure ou égale à 26 est dénombrable

Page 19: Cours d’informatique théorique

• 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..n])

Page 20: Cours d’informatique théorique

Infini dénombrable

• N est infini 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)

• I = {xN, x est impair} est infini dénombrable

Page 21: Cours d’informatique théorique

Remarque 2

• Un ensemble infini dénombrable peut très bien être une partie stricte d’un autre ensemble infini dénombrable,– Ex: P N, I N

• C’est une caractérisation de l’infini : un ensemble infini, c’est un ensemble qui peut être mis en bijection avec une partie stricte de lui-même (c’est le cas de N, mais aussi de P, penser aux multiples de 4 etc.)

Page 22: Cours d’informatique théorique

• 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) = 1f(-n) = 2n (n0)f(+n) = 2n+1

Page 23: Cours d’informatique théorique

• NN est infini dénombrablevoir en exercices

Page 24: Cours d’informatique théorique

• Et aussi:– L’union d’une famille dénombrable

d’ensembles dénombrables est dénombrable,– Le produit d’un nombre fini d’ensembles

dénombrables est dénombrable

– (exercices)

Page 25: Cours d’informatique théorique

• Donc sont aussi infinis dénombrables;– Nk pour tout entier k– (l’ensemble de toutes les suites

finies d’entiers)U

Nk

kN∈

Page 26: Cours d’informatique théorique

Mais R n’est pas dénombrable!

• Raisonnons seulement sur une partie stricte de R : l’intervalle [0, 1[

• Les éléments de cet intervalle sont représentés par des suites infinies d’entiers entre 0 et 9 (dans le système décimal)– Certaines de ces suites sont nulles à partir d’un certain rang,

d’autres non

– On peut donc identifier [0, 1[ à l’ensemble de toutes les suites (finies ou infinies) d’entiers compris entre 0 et 9

Page 27: Cours d’informatique théorique

• Si cet ensemble était dénombrable, on pourrait les classer (avec une première, une deuxième etc.)

• Ainsi la suite x11x12x13x14…x1p…serait classée première et ainsi de suite….

x11 x12 x13 x14 … x1p …x21 x22 x23 x24 … x2p …

n°3 x31 x32 x33 x34 … x3p …x41 x42 x43 x44 … x4p …

n°5 x51 x52 x53 x54 … x5p …n°6 x61 x62 x63 x64 … x6p …

n°k xk1 xk2 xk3 xk4 … xkp …

n°1

n°2

n°4

Page 28: Cours d’informatique théorique

• On pourrait alors modifier cette matrice infinie de la manière suivante:

• A chaque élément de la diagonale, rajouter 1, selon la règle:0+1=1, 1+1=2, …8+1=9 et 9+1=0

x11

+1

x12 x13 x14 … x1p …

x21 x22

+1

x23 x24 … x2p …

n°3 x31 x32 x33

+1

x34 … x3p …

x41 x42 x43 x44

+1… x4p …

n°5 x51 x52 x53 x54 … x5p …n°6 x61 x62 x63 x64 … x6p …

n°k xk1 xk2 xk3 xk4 … xkp …

n°1

n°2

n°4

Page 29: Cours d’informatique théorique

• Alors considérons la suite infinie qui se trouve sur la diagonale:– Elle ne peut être égale à la première car elle s’en distingue au

moins par le premier élément– Elle ne peut être égale à la deuxième car elle s’en distingue au

moins par le deuxième élément– Elle ne peut être égale à la troisième car elle s’en distingue au

moins par le troisième élément– Et ainsi de suite…– Elle ne peut donc être égale à aucune des suites contenues dans ce

tableau

Page 30: Cours d’informatique théorique

• Donc, quel que soit le classement choisi des suites infinies de 0 … 9, il y en a toujours une qui échappe à ce classement!

• C’est donc qu’il est impossible de les numéroter…

• Tout simplement parce qu’elles ne forment pas un ensemble dénombrable

Page 31: Cours d’informatique théorique

Ceci est connu comme l’argument

diagonal de Cantor

Page 32: Cours d’informatique théorique

Puissance du continu

• L’infini de R est strictement plus grand que celui de N, on l’appelle « la puissance du continu »

Page 33: Cours d’informatique théorique

• On démontrera de même que (N) n’est pas dénombrable, autrement dit, là encore, l’infini de N est strictement inférieur à celui de l’ensemble de ses parties

• Card(N) < Card((N))

• (Théorème de Cantor)

Page 34: Cours d’informatique théorique

Des chaînes aux nombres entiers

• Les chaînes de caractères (qu’on appellera simplement les mots sur un alphabet donné A) constituent un ensemble infini dénombrable, on peut donc leur associer à chacune un entier: soit leur numéro d’ordre dans un classement quelconque, soit un numéro calculé selon un code attribuant un chiffre à chaque caractère (cf. code ASCII),

• Tout calcul sur les chaînes peut donc se ramener à un calcul sur des entiers

Page 35: Cours d’informatique théorique

Des nombres entiers aux chaînes

• Mais pour calculer sur des nombres entiers, il faut leur donner une représentation… sous forme de chaîne (ou de mot)! Par exemple, dans le système binaire, sous forme de suites de 0 et de 1

• Donc les calculs sur des entiers se ramènent à des calculs sur des chaînes!

Page 36: Cours d’informatique théorique

Problèmes de reconnaissance

• Finalement, toute approche algorithmique de problèmes ou de calculs se ramène à manipuler des suites de symboles, donc des chaînes,

• 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 d’entiers pairs? »

• Le problème « est-ce qu’il existe des solutions entières de l’équation xn+yn=zn? » se ramène au problème de savoir si un certain ensemble de chaînes est non vide.

Page 37: Cours d’informatique théorique

• Tout ensemble de chaînes étant défini comme un langage, ces problèmes se ramènent à des problèmes de reconnaissance de l’appartenance à un certain langage

• Ceci explique que la notion de langage va être centrale dans ce cours, et que le problème fondamental traité est finalement:– Étant donné un langage L et un mot w,

• Est-ce que wL ?

Page 38: Cours d’informatique théorique

Ensembles récursifs

• Un ensemble E est dit récursif si et seulement si le problème « est-ce que xE ?» est décidable,

• Noter que même si pour E donné, le problème «xE ?» est décidable, selon le choix de E, il pourra être plus ou moins facile à résoudre,– Problèmes de complexité algorithmique

Page 39: Cours d’informatique théorique

Définir une « méthode de calcul »

• Venons-en au deuxième objectif : définir précisément ce qu’on entend par méthode de calcul ou algorithme

Page 40: Cours d’informatique théorique

Décomposition en opérations élémentaires

• Intuitivement, lorsque nous qualifions des opérations simples (addition, produit…) de « calculables », c’est 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.

Page 41: Cours d’informatique théorique

• Le problème de la définition de ce que l’on entend par « méthode de calcul » est donc celui de la détermination du 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.

Page 42: Cours d’informatique théorique

Plusieurs solutions

• Machines de Turing (cours suivant)

• Théorie des fonctions récursives (Church)

• Lambda – calcul

• Machines RAM

• …

Page 43: Cours d’informatique théorique

Thèse de Church-Turing

• De façon étonnante, toutes les solutions proposées à ce problème se sont avérées équivalentes

• Autrement dit: une fonction calculable au sens des machines de Turing est récursive et réciproquement, ou bien peut se ramener à un calcul au sein du -calcul, ou bien peut être réalisée sur une machine RAM etc. et réciproquement une fonction implémentable sur une machine RAM peut être réalisée par une machine deTuring etc.

• Autrement dit, on formule la thèse selon laquelle ces définitions permettent de cerner la notion de fonction calculable