f(n) 1 0 1 0 1 0 1 0 1

publicité
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 ??
Téléchargement