Quels problèmes peut-on résoudre efficacementsperifel/divers/fete_science2010.pdf · Problème :...

Preview:

Citation preview

Quels problèmes peut-onrésoudre efficacement ?

Fête de la science

université Paris Diderot – Paris 7

Le 21 octobre 2010

Introduction

Classification des problèmes en fonction de leur « difficulté » :

I Facile : la résolution prend peu de temps(mais la méthode peut être très compliquée !)

→ Il existe un programme rapide (« efficace »)pour résoudre le problème.

I Difficile : pas de méthode rapide.→ Tous les programmes pour résoudre le problème

sont lents.

Introduction

Classification des problèmes en fonction de leur « difficulté » :I Facile : la résolution prend peu de temps

(mais la méthode peut être très compliquée !)

→ Il existe un programme rapide (« efficace »)pour résoudre le problème.

I Difficile : pas de méthode rapide.→ Tous les programmes pour résoudre le problème

sont lents.

Introduction

Classification des problèmes en fonction de leur « difficulté » :I Facile : la résolution prend peu de temps

(mais la méthode peut être très compliquée !)→ Il existe un programme rapide (« efficace »)

pour résoudre le problème.

I Difficile : pas de méthode rapide.→ Tous les programmes pour résoudre le problème

sont lents.

Introduction

Classification des problèmes en fonction de leur « difficulté » :I Facile : la résolution prend peu de temps

(mais la méthode peut être très compliquée !)→ Il existe un programme rapide (« efficace »)

pour résoudre le problème.I Difficile : pas de méthode rapide.

→ Tous les programmes pour résoudre le problèmesont lents.

Introduction

Classification des problèmes en fonction de leur « difficulté » :I Facile : la résolution prend peu de temps

(mais la méthode peut être très compliquée !)→ Il existe un programme rapide (« efficace »)

pour résoudre le problème.I Difficile : pas de méthode rapide.→ Tous les programmes pour résoudre le problème

sont lents.

IntroductionFacile Difficile

Parité SudokuAddition Voyageur de commerce

Trier une liste Hello worldChemin le plus court Échecs

Primalité

Problème :Décider si un nombre est pair

IntroductionFacile DifficileParité

SudokuAddition Voyageur de commerce

Trier une liste Hello worldChemin le plus court Échecs

Primalité

Problème :Ajouter deux entiers

IntroductionFacile DifficileParité

Sudoku

Addition

Voyageur de commerceTrier une liste Hello world

Chemin le plus court ÉchecsPrimalité

Problème :Trier une liste d’entiers par ordre croissant

IntroductionFacile DifficileParité

Sudoku

Addition

Voyageur de commerce

Trier une liste

Hello worldChemin le plus court Échecs

Primalité

Problème :Résoudre un sudoku ou un kakuro

Introduction

Problème :Résoudre un sudoku ou un kakuro

IntroductionFacile DifficileParité Sudoku

Addition

Voyageur de commerce

Trier une liste

Hello worldChemin le plus court Échecs

Primalité

Problème :Trouver le chemin le plus court entre deux villes

Introduction

Quel est le chemin leplus court pour aller deParis à Toulouse ?

Problème :Trouver le chemin le plus court entre deux villes

IntroductionFacile DifficileParité Sudoku

Addition

Voyageur de commerce

Trier une liste

Hello world

Chemin le plus court

ÉchecsPrimalité

Problème :Trouver le plus court chemin passant par une liste de villes

Introduction

Quel est le chemin leplus court passant parParis, Toulouse, Avi-gnon, Bordeaux, Lyon,Lille et Marseille ?

Problème :Trouver le plus court chemin passant par une liste de villes

IntroductionFacile DifficileParité Sudoku

Addition Voyageur de commerceTrier une liste

Hello world

Chemin le plus court

ÉchecsPrimalité

Problème :Décider si un programme affiche « Hello world ! »

IntroductionFacile DifficileParité Sudoku

Addition Voyageur de commerceTrier une liste Hello world

Chemin le plus court

ÉchecsPrimalité

Problème :Une position aux échecs est-elle gagnante ?

IntroductionFacile DifficileParité Sudoku

Addition Voyageur de commerceTrier une liste Hello world

Chemin le plus court Échecs

Primalité

Problème :Un entier est-il premier ?

IntroductionFacile DifficileParité Sudoku

Addition Voyageur de commerceTrier une liste Hello world

Chemin le plus court ÉchecsPrimalité

Problème :

Plan

1. Rappel historique :un ordinateur peut-il résoudre tous les problèmes ?

2. Qu’est-ce qu’un programme efficace (rapide) ?

3. Classer les problèmes en fonction de leur difficulté

Plan

1. Rappel historique :un ordinateur peut-il résoudre tous les problèmes ?

2. Qu’est-ce qu’un programme efficace (rapide) ?

3. Classer les problèmes en fonction de leur difficulté

Historique

Préhistoire des programmes :I Babyloniens (-2000)

I Euclide (-300)I Al Khuwarizmi (900)I Pascal/Leibniz (1650)

Hilbert, 1900 :I fondements des mathématiquesI peut-on tout résoudre par un programme ?

Turing, Church 1936 :I formalisation de la notion de programme

(machine de Turing)

Historique

Préhistoire des programmes :I Babyloniens (-2000)I Euclide (-300)

I Al Khuwarizmi (900)I Pascal/Leibniz (1650)

Hilbert, 1900 :I fondements des mathématiquesI peut-on tout résoudre par un programme ?

Turing, Church 1936 :I formalisation de la notion de programme

(machine de Turing)

Historique

Préhistoire des programmes :I Babyloniens (-2000)I Euclide (-300)I Al Khuwarizmi (900)

I Pascal/Leibniz (1650)

Hilbert, 1900 :I fondements des mathématiquesI peut-on tout résoudre par un programme ?

Turing, Church 1936 :I formalisation de la notion de programme

(machine de Turing)

Historique

Préhistoire des programmes :I Babyloniens (-2000)I Euclide (-300)I Al Khuwarizmi (900)I Pascal/Leibniz (1650)

Hilbert, 1900 :I fondements des mathématiquesI peut-on tout résoudre par un programme ?

Turing, Church 1936 :I formalisation de la notion de programme

(machine de Turing)

Historique

Préhistoire des programmes :I Babyloniens (-2000)I Euclide (-300)I Al Khuwarizmi (900)I Pascal/Leibniz (1650)

Hilbert, 1900 :I fondements des mathématiquesI peut-on tout résoudre par un programme ?

Turing, Church 1936 :I formalisation de la notion de programme

(machine de Turing)

Historique

Préhistoire des programmes :I Babyloniens (-2000)I Euclide (-300)I Al Khuwarizmi (900)I Pascal/Leibniz (1650)

Hilbert, 1900 :I fondements des mathématiquesI peut-on tout résoudre par un programme ?

Turing, Church 1936 :I formalisation de la notion de programme

(machine de Turing)

Qu’est-ce qu’un programme ?

I Question cruciale : notion intuitive jusqu’en 1936 !

I Programme sur ordinateur : capable de répéter un grandnombre de fois des instructions (boucle)

I Répond OUI ou NON ou ne s’arrête pas (boucle infinie)

Qu’est-ce qu’un programme ?

I Question cruciale : notion intuitive jusqu’en 1936 !I Programme sur ordinateur : capable de répéter un grand

nombre de fois des instructions (boucle)

I Répond OUI ou NON ou ne s’arrête pas (boucle infinie)

Qu’est-ce qu’un programme ?

I Question cruciale : notion intuitive jusqu’en 1936 !I Programme sur ordinateur : capable de répéter un grand

nombre de fois des instructions (boucle)I Répond OUI ou NON ou ne s’arrête pas (boucle infinie)

Qu’est-ce qu’un programme ?

I Question cruciale : notion intuitive jusqu’en 1936 !I Programme sur ordinateur : capable de répéter un grand

nombre de fois des instructions (boucle)I Répond OUI ou NON ou ne s’arrête pas (boucle infinie)

Exemples :

Pour i allant de 2 à n− 1 faireSi i divise n Alors répondre NON

Fin BoucleRépondre OUI

Qu’est-ce qu’un programme ?

I Question cruciale : notion intuitive jusqu’en 1936 !I Programme sur ordinateur : capable de répéter un grand

nombre de fois des instructions (boucle)I Répond OUI ou NON ou ne s’arrête pas (boucle infinie)

Exemples :

Tant que n 6= 0 faireAjouter 1 à n

Fin BoucleRépondre NON

Qu’est-ce qu’un programme ?

I Question cruciale : notion intuitive jusqu’en 1936 !I Programme sur ordinateur : capable de répéter un grand

nombre de fois des instructions (boucle)I Répond OUI ou NON ou ne s’arrête pas (boucle infinie)

Un problème = une question sur une entrée donnéeRéponse attendue : oui ou non

Exemples :

Qu’est-ce qu’un programme ?

I Question cruciale : notion intuitive jusqu’en 1936 !I Programme sur ordinateur : capable de répéter un grand

nombre de fois des instructions (boucle)I Répond OUI ou NON ou ne s’arrête pas (boucle infinie)

Un problème = une question sur une entrée donnéeRéponse attendue : oui ou non

Exemples :Entrée : nQuestion : le nombre n est-il premier ?

Qu’est-ce qu’un programme ?

I Question cruciale : notion intuitive jusqu’en 1936 !I Programme sur ordinateur : capable de répéter un grand

nombre de fois des instructions (boucle)I Répond OUI ou NON ou ne s’arrête pas (boucle infinie)

Un problème = une question sur une entrée donnéeRéponse attendue : oui ou non

Exemples :Entrée : une carte, une liste de villes, une longueur dQuestion : existe-t-il un chemin de longueur ≤ d passant partoutes les villes ?

Qu’est-ce qu’un programme ?

I Question cruciale : notion intuitive jusqu’en 1936 !I Programme sur ordinateur : capable de répéter un grand

nombre de fois des instructions (boucle)I Répond OUI ou NON ou ne s’arrête pas (boucle infinie)

Un problème = une question sur une entrée donnéeRéponse attendue : oui ou non

Exemples :Entrée : le code d’un programmeQuestion : le programme affiche-t-il « Hello world ! » ?

Peut-on tout résoudre ?

1900–1930 : tous les problèmes sont-ils résolubles parun programme ? (Hilbert : « oui »)

1936 : Turing, Church, Gödel. . . : non !

Peut-on tout résoudre ?

1900–1930 : tous les problèmes sont-ils résolubles parun programme ? (Hilbert : « oui »)

1936 : Turing, Church, Gödel. . . : non !

Paradoxe de Russell (autoréférence)

Russell, 1901Un barbier rase les personnes qui ne se rasent pas elles-mêmes.

→ Qui rase le barbier ?

I Si le barbier se rase lui-même, il ne se rase pas lui-même.I Si le barbier ne se rase pas lui-même, il se rase lui-même.

Si les programmes jouent le rôle du rasage : un programmedonné p0 peut-il décider si un autre programme q répond NON ?

Paradoxe de Russell (autoréférence)

Russell, 1901Un barbier rase les personnes qui ne se rasent pas elles-mêmes.

→ Qui rase le barbier ?

I Si le barbier se rase lui-même, il ne se rase pas lui-même.

I Si le barbier ne se rase pas lui-même, il se rase lui-même.

Si les programmes jouent le rôle du rasage : un programmedonné p0 peut-il décider si un autre programme q répond NON ?

Paradoxe de Russell (autoréférence)

Russell, 1901Un barbier rase les personnes qui ne se rasent pas elles-mêmes.

→ Qui rase le barbier ?

I Si le barbier se rase lui-même, il ne se rase pas lui-même.I Si le barbier ne se rase pas lui-même, il se rase lui-même.

Si les programmes jouent le rôle du rasage : un programmedonné p0 peut-il décider si un autre programme q répond NON ?

Paradoxe de Russell (autoréférence)

Russell, 1901Un barbier rase les personnes qui ne se rasent pas elles-mêmes.

→ Qui rase le barbier ?

I Si le barbier se rase lui-même, il ne se rase pas lui-même.I Si le barbier ne se rase pas lui-même, il se rase lui-même.

Si les programmes jouent le rôle du rasage : un programmedonné p0 peut-il décider si un autre programme q répond NON ?

Un problème non résoluble

Soit H le problème suivant :Entrée : le code d’un programme p

( p agit sur le code d’un programme)Question : p sur l’entrée code(p) répond-il NON ?

(c.-à-d. est-ce que p(code(p)) répond NON ?)

DémonstrationSupposons qu’un programme h résolve le problème H .Alors pour tout programme p,{

si h(code(h)) répond OUI alors h(code(h)) répond NONsi h(code(h)) répond NON alors h(code(h)) ne répond pas NON.

Contradiction.

Un problème non résoluble

Soit H le problème suivant :Entrée : le code d’un programme p

( p agit sur le code d’un programme)Question : p sur l’entrée code(p) répond-il NON ?

(c.-à-d. est-ce que p(code(p)) répond NON ?)

THÉORÈME

Aucun programme ne peut résoudre H .

DémonstrationSupposons qu’un programme h résolve le problème H .Alors pour tout programme p,{

si h(code(h)) répond OUI alors h(code(h)) répond NONsi h(code(h)) répond NON alors h(code(h)) ne répond pas NON.

Contradiction.

Un problème non résoluble

Soit H le problème suivant :Entrée : le code d’un programme p

( p agit sur le code d’un programme)Question : p sur l’entrée code(p) répond-il NON ?

(c.-à-d. est-ce que p(code(p)) répond NON ?)

DémonstrationSupposons qu’un programme h résolve le problème H .Alors pour tout programme p,{

si h(code(p)) répond OUI alors p(code(p)) répond NONsi h(code(p)) répond NON alors p(code(p)) ne répond pas NON.

Contradiction.

Un problème non résoluble

Soit H le problème suivant :Entrée : le code d’un programme p

( p agit sur le code d’un programme)Question : p sur l’entrée code(p) répond-il NON ?

(c.-à-d. est-ce que p(code(p)) répond NON ?)

DémonstrationSupposons qu’un programme h résolve le problème H .Alors pour tout programme p,{

si h(code(h)) répond OUI alors h(code(h)) répond NONsi h(code(h)) répond NON alors h(code(h)) ne répond pas NON.

Contradiction.

Dans la suite, on va s’intéresser uniquement à desproblèmes résolubles par ordinateur

(contrairement à H ).

Plan

1. Rappel historique :un ordinateur peut-il résoudre tous les problèmes ?

2. Qu’est-ce qu’un programme efficace (rapide) ?

3. Classer les problèmes en fonction de leur difficulté

Efficacité

I 1960–1970 : les ordinateurs se démocratisent mais ont descapacités limitées.

(Eniac, 1946) (Apple II, 1977)

I La question « que peut-on résoudre efficacement »voit le jour.

I On s’intéresse à des programmes rapides (« efficaces »).I Comment mesurer l’efficacité ?

Par le temps mis par le programme ?• Dépend de la vitesse de l’ordinateur• Dépend de l’entrée

→Mesurer le nombre d’instructions exécutéespar le programme commeune fonction f (n) de la taille de l’entrée

Efficacité

I 1960–1970 : les ordinateurs se démocratisent mais ont descapacités limitées.

I La question « que peut-on résoudre efficacement »voit le jour.

I On s’intéresse à des programmes rapides (« efficaces »).

I Comment mesurer l’efficacité ?Par le temps mis par le programme ?• Dépend de la vitesse de l’ordinateur• Dépend de l’entrée

→Mesurer le nombre d’instructions exécutéespar le programme commeune fonction f (n) de la taille de l’entrée

Efficacité

I 1960–1970 : les ordinateurs se démocratisent mais ont descapacités limitées.

I La question « que peut-on résoudre efficacement »voit le jour.

I On s’intéresse à des programmes rapides (« efficaces »).I Comment mesurer l’efficacité ?

Par le temps mis par le programme ?

• Dépend de la vitesse de l’ordinateur• Dépend de l’entrée

→Mesurer le nombre d’instructions exécutéespar le programme commeune fonction f (n) de la taille de l’entrée

Efficacité

I 1960–1970 : les ordinateurs se démocratisent mais ont descapacités limitées.

I La question « que peut-on résoudre efficacement »voit le jour.

I On s’intéresse à des programmes rapides (« efficaces »).I Comment mesurer l’efficacité ?

Par le temps mis par le programme ?• Dépend de la vitesse de l’ordinateur• Dépend de l’entrée : décider si une suite de 3 entiers est

triée par ordre croissant sera plus rapide que pour unesuite de 1 000 000 d’éléments.

→Mesurer le nombre d’instructions exécutéespar le programme commeune fonction f (n) de la taille de l’entrée

Efficacité

I 1960–1970 : les ordinateurs se démocratisent mais ont descapacités limitées.

I La question « que peut-on résoudre efficacement »voit le jour.

I On s’intéresse à des programmes rapides (« efficaces »).I Comment mesurer l’efficacité ?

Par le temps mis par le programme ?• Dépend de la vitesse de l’ordinateur• Dépend de l’entrée

→Mesurer le nombre d’instructions exécutéespar le programme commeune fonction f (n) de la taille de l’entrée

Exemples

Entrée : une suite x1, . . . , xn de n entiersQuestion : la suite est-elle triée par ordre croissant ?

Pour i allant de 1 à n− 1 faireSi xi > xi+1 Alors répondre NON

Fin BoucleRépondre OUI

Nombre d’opérations : f (n) ' n

Exemples

Entrée : une suite x1, . . . , xn de n entiersQuestion : y a-t-il deux éléments identiques dans la suite ?

Pour i allant de 1 à n− 1 fairePour j allant de i + 1 à n faire

Si xi = xj Alors répondre OUIFin Boucle

Fin BoucleRépondre NON

Nombre d’opérations : f (n) ' n2

Exemples

Entrée : un ensemble E d’entiersQuestion : existe-t-ilun sous-ensemble Sdont la somme des élémentsest nulle ?

P. ex.E = {−10,−4,−2, 3, 5, 9}S = {−10,−4, 5, 9}(−10) + (−4) + 5 + 9 = 0

Exemples

Entrée : un ensemble E d’entiersQuestion : existe-t-ilun sous-ensemble Sdont la somme des élémentsest nulle ?

P. ex.E = {−10,−4,−2, 3, 5, 9}S = {−10,−4, 5, 9}(−10) + (−4) + 5 + 9 = 0

Pour tout sous-ensemble S de E faires← somme des éléments de SSi s = 0 Alors répondre OUI

Fin BoucleRépondre NON

Nombre d’opérations : f (n) ' 2n

Temps d’exécution

(À la vitesse de 109 opérations par seconde)

Taille de l’entrée f (n) = n f (n) = n2 f (n) = 2n

10 10−8 s 10−7 s 10−6 s20 2.10−8 s 4.10−7 s 10−3 s30 3.10−8 s 9.10−7 s 1 s

40 4.10−8 s 1,6.10−6 s 17 min50 5.10−8 s 2,5.10−6 s 11 jours60 6.10−8 s 3,6.10−6 s 30 ans70 7.10−8 s 4,9.10−6 s 30 000 ans1 000 10−6 s 10−3 s . . .

106 10−3 s 17 min . . .

109 1 s 30 ans . . .

I Efficace = polynomial ( f (n) = nk )I Pas efficace = non polynomial ( p.ex. f (n) = 2n )

Temps d’exécution

(À la vitesse de 109 opérations par seconde)

Taille de l’entrée f (n) = n f (n) = n2 f (n) = 2n

10 10−8 s 10−7 s 10−6 s20 2.10−8 s 4.10−7 s 10−3 s30 3.10−8 s 9.10−7 s 1 s40 4.10−8 s 1,6.10−6 s 17 min

50 5.10−8 s 2,5.10−6 s 11 jours60 6.10−8 s 3,6.10−6 s 30 ans70 7.10−8 s 4,9.10−6 s 30 000 ans1 000 10−6 s 10−3 s . . .

106 10−3 s 17 min . . .

109 1 s 30 ans . . .

I Efficace = polynomial ( f (n) = nk )I Pas efficace = non polynomial ( p.ex. f (n) = 2n )

Temps d’exécution

(À la vitesse de 109 opérations par seconde)

Taille de l’entrée f (n) = n f (n) = n2 f (n) = 2n

10 10−8 s 10−7 s 10−6 s20 2.10−8 s 4.10−7 s 10−3 s30 3.10−8 s 9.10−7 s 1 s40 4.10−8 s 1,6.10−6 s 17 min50 5.10−8 s 2,5.10−6 s 11 jours

60 6.10−8 s 3,6.10−6 s 30 ans70 7.10−8 s 4,9.10−6 s 30 000 ans1 000 10−6 s 10−3 s . . .

106 10−3 s 17 min . . .

109 1 s 30 ans . . .

I Efficace = polynomial ( f (n) = nk )I Pas efficace = non polynomial ( p.ex. f (n) = 2n )

Temps d’exécution

(À la vitesse de 109 opérations par seconde)

Taille de l’entrée f (n) = n f (n) = n2 f (n) = 2n

10 10−8 s 10−7 s 10−6 s20 2.10−8 s 4.10−7 s 10−3 s30 3.10−8 s 9.10−7 s 1 s40 4.10−8 s 1,6.10−6 s 17 min50 5.10−8 s 2,5.10−6 s 11 jours60 6.10−8 s 3,6.10−6 s 30 ans

70 7.10−8 s 4,9.10−6 s 30 000 ans1 000 10−6 s 10−3 s . . .

106 10−3 s 17 min . . .

109 1 s 30 ans . . .

I Efficace = polynomial ( f (n) = nk )I Pas efficace = non polynomial ( p.ex. f (n) = 2n )

Temps d’exécution

(À la vitesse de 109 opérations par seconde)

Taille de l’entrée f (n) = n f (n) = n2 f (n) = 2n

10 10−8 s 10−7 s 10−6 s20 2.10−8 s 4.10−7 s 10−3 s30 3.10−8 s 9.10−7 s 1 s40 4.10−8 s 1,6.10−6 s 17 min50 5.10−8 s 2,5.10−6 s 11 jours60 6.10−8 s 3,6.10−6 s 30 ans70 7.10−8 s 4,9.10−6 s 30 000 ans

1 000 10−6 s 10−3 s . . .

106 10−3 s 17 min . . .

109 1 s 30 ans . . .

I Efficace = polynomial ( f (n) = nk )I Pas efficace = non polynomial ( p.ex. f (n) = 2n )

Temps d’exécution

(À la vitesse de 109 opérations par seconde)

Taille de l’entrée f (n) = n f (n) = n2 f (n) = 2n

10 10−8 s 10−7 s 10−6 s20 2.10−8 s 4.10−7 s 10−3 s30 3.10−8 s 9.10−7 s 1 s40 4.10−8 s 1,6.10−6 s 17 min50 5.10−8 s 2,5.10−6 s 11 jours60 6.10−8 s 3,6.10−6 s 30 ans70 7.10−8 s 4,9.10−6 s 30 000 ans1 000 10−6 s 10−3 s . . .

106 10−3 s 17 min . . .

109 1 s 30 ans . . .

I Efficace = polynomial ( f (n) = nk )I Pas efficace = non polynomial ( p.ex. f (n) = 2n )

Temps d’exécution

(À la vitesse de 109 opérations par seconde)

Taille de l’entrée f (n) = n f (n) = n2 f (n) = 2n

10 10−8 s 10−7 s 10−6 s20 2.10−8 s 4.10−7 s 10−3 s30 3.10−8 s 9.10−7 s 1 s40 4.10−8 s 1,6.10−6 s 17 min50 5.10−8 s 2,5.10−6 s 11 jours60 6.10−8 s 3,6.10−6 s 30 ans70 7.10−8 s 4,9.10−6 s 30 000 ans1 000 10−6 s 10−3 s . . .

106 10−3 s 17 min . . .

109 1 s 30 ans . . .

I Efficace = polynomial ( f (n) = nk )I Pas efficace = non polynomial ( p.ex. f (n) = 2n )

Temps d’exécution

(À la vitesse de 109 opérations par seconde)

Taille de l’entrée f (n) = n f (n) = n2 f (n) = 2n

10 10−8 s 10−7 s 10−6 s20 2.10−8 s 4.10−7 s 10−3 s30 3.10−8 s 9.10−7 s 1 s40 4.10−8 s 1,6.10−6 s 17 min50 5.10−8 s 2,5.10−6 s 11 jours60 6.10−8 s 3,6.10−6 s 30 ans70 7.10−8 s 4,9.10−6 s 30 000 ans1 000 10−6 s 10−3 s . . .

106 10−3 s 17 min . . .

109 1 s 30 ans . . .

I Efficace = polynomial ( f (n) = nk )I Pas efficace = non polynomial ( p.ex. f (n) = 2n )

Temps d’exécutionTaille de l’entrée f (n) = n f (n) = n2 f (n) = 2n

10 10−8 s 10−7 s 10−6 s20 2.10−8 s 4.10−7 s 10−3 s30 3.10−8 s 9.10−7 s 1 s40 4.10−8 s 1,6.10−6 s 17 min50 5.10−8 s 2,5.10−6 s 11 jours60 6.10−8 s 3,6.10−6 s 30 ans70 7.10−8 s 4,9.10−6 s 30 000 ans1 000 10−6 s 10−3 s . . .

106 10−3 s 17 min . . .

109 1 s 30 ans . . .

I Efficace = polynomial ( f (n) = nk )I Pas efficace = non polynomial ( p.ex. f (n) = 2n )

Plan

1. Rappel historique :un ordinateur peut-il résoudre tous les problèmes ?

2. Qu’est-ce qu’un programme efficace (rapide) ?

3. Classer les problèmes en fonction de leur difficulté

Comment classer les problèmes ?

Pour classer un problème, il faut savoir quel estle meilleur programme qui le résout.

I Pour montrer qu’un problème peut se résoudreen ≤ f (n) opérations, il suffit de donner un programmequi effectue au plus f (n) opérations.

I Pour montrer qu’un problème ne peut pas se résoudreen ≤ g(n) opérations, il faut démontrerqu’aucun programme p effectuant ≤ g(n) opérationsne le résout.

Comment classer les problèmes ?

Pour classer un problème, il faut savoir quel estle meilleur programme qui le résout.

I Pour montrer qu’un problème peut se résoudreen ≤ f (n) opérations, il suffit de donner un programmequi effectue au plus f (n) opérations.

I Pour montrer qu’un problème ne peut pas se résoudreen ≤ g(n) opérations, il faut démontrerqu’aucun programme p effectuant ≤ g(n) opérationsne le résout.

Comment classer les problèmes ?

Pour classer un problème, il faut savoir quel estle meilleur programme qui le résout.

I Pour montrer qu’un problème peut se résoudreen ≤ f (n) opérations, il suffit de donner un programmequi effectue au plus f (n) opérations.

I Pour montrer qu’un problème ne peut pas se résoudreen ≤ g(n) opérations, il faut démontrerqu’aucun programme p effectuant ≤ g(n) opérationsne le résout.

Comment classer les problèmes ?

I On ne connaît presqu’aucune méthode pour démontrerqu’aucun programme ne convient pour un problème(les programmes peuvent être très astucieux !)

I Pour la plupart des problèmes,on ne connaît pas de programme rapide qui le résolve,mais on ne sait pas montrer qu’il n’en existe pas !

I Tout l’art consiste à contourner cette complication. . .

Comment classer les problèmes ?

I On ne connaît presqu’aucune méthode pour démontrerqu’aucun programme ne convient pour un problème(les programmes peuvent être très astucieux !)

I Pour la plupart des problèmes,on ne connaît pas de programme rapide qui le résolve,mais on ne sait pas montrer qu’il n’en existe pas !

I Tout l’art consiste à contourner cette complication. . .

Comment classer les problèmes ?

I On ne connaît presqu’aucune méthode pour démontrerqu’aucun programme ne convient pour un problème(les programmes peuvent être très astucieux !)

I Pour la plupart des problèmes,on ne connaît pas de programme rapide qui le résolve,mais on ne sait pas montrer qu’il n’en existe pas !

I Tout l’art consiste à contourner cette complication. . .

Vérifier ou trouver une solution

Problème FACTORISATION :Entrée : un entier nQuestion : décomposer n en produit de facteurs premiers

Exemple : sur l’entrée 221, trouver 13 et 17(car 221 = 13× 17)

I Si on nous donne les diviseurs, on peut vérifierque c’est une solution (13× 17 = 221).

I Problème facile à vérifier.I Problème difficile (pas d’algorithme efficace à ce jour)

Vérifier ou trouver une solution

Problème VOYAGEUR DE COMMERCE :Entrée : une carte, des villes et une longueur dQuestion : existe-t-il un chemin de longueur ≤ d passant partoutes les villes ?

I Si on nous donne le chemin, on peut vérifier que c’estune solution (vérifier que la somme des distances est ≤ d).

I Problème facile à vérifier.I Problème difficile (pas d’algorithme efficace à ce jour)

Vérifier ou trouver une solution

Problème SUDOKU :Entrée : une grille de Sudoku de taille n× nQuestion : existe-t-il une solution à la grille ?

Vérifier ou trouver une solution

Problème SUDOKU :Entrée : une grille de Sudoku de taille n× nQuestion : existe-t-il une solution à la grille ?

Vérifier ou trouver une solution

Problème SUDOKU :Entrée : une grille de Sudoku de taille n× nQuestion : existe-t-il une solution à la grille ?

Vérifier ou trouver une solution

Problème SUDOKU :Entrée : une grille de Sudoku de taille n× nQuestion : existe-t-il une solution à la grille ?

Vérifier ou trouver une solution

Problème SUDOKU :Entrée : une grille de Sudoku de taille n× nQuestion : existe-t-il une solution à la grille ?

I Si on nous donne la grille remplie, on peut vérifier quec’est une solution (les nombres sont distincts).

I Problème facile à vérifier.I Problème difficile (pas d’algorithme efficace à ce jour)

Vérifier ou trouver une solution

I P : ensemble des problèmes résolubles en tempspolynomial ( f (n) = nk pour un certain k)

= problèmes résolubles « efficacement »(P= Polynomial time)

I NP : ensemble des problèmes qu’on peut vérifieren temps polynomial

= problèmes vérifiables « efficacement »(NP= Nondeterministic Polynomial time)

I P ⊆ NP

Vérifier ou trouver une solution

I P : ensemble des problèmes résolubles en tempspolynomial ( f (n) = nk pour un certain k)

= problèmes résolubles « efficacement »(P= Polynomial time)

I NP : ensemble des problèmes qu’on peut vérifieren temps polynomial

= problèmes vérifiables « efficacement »(NP= Nondeterministic Polynomial time)

I P ⊆ NP

Vérifier ou trouver une solution

I P : ensemble des problèmes résolubles en tempspolynomial ( f (n) = nk pour un certain k)

= problèmes résolubles « efficacement »(P= Polynomial time)

I NP : ensemble des problèmes qu’on peut vérifieren temps polynomial

= problèmes vérifiables « efficacement »(NP= Nondeterministic Polynomial time)

I P ⊆ NP

NP-complétude

Parmi les problèmes de NP,certains sont de difficulté maximale :il s’agit des problèmes NP-complets (Cook, Levin 1971)

NP-complets

NP

Très nombreux problèmes importants en pratique.

Exemples :sudoku, voyageur de commerce, ordonnancement, . . .

P vs NP

I Question fondamentale : est-ce que P = NP ?Les problèmes faciles à vérifier sont-ils faciles à résoudre ?

P = NP

ou

NP-complets

P

NP

I Question ouverte (depuis 1970). Réponse probable : non.

Meilleurs programmes connus pour lesproblèmes NP-complets : f (n) ' 2n.

I Beaucoup de problèmes importants sont NP-complets,des programmes efficaces ont été cherchés en vain.

Un programme efficace pour l’un d’entre eux donneraitdes programmes efficaces pour tous !

P vs NP

I Question fondamentale : est-ce que P = NP ?Les problèmes faciles à vérifier sont-ils faciles à résoudre ?

I Question ouverte (depuis 1970). Réponse probable : non.

Meilleurs programmes connus pour lesproblèmes NP-complets : f (n) ' 2n.

I Beaucoup de problèmes importants sont NP-complets,des programmes efficaces ont été cherchés en vain.

Un programme efficace pour l’un d’entre eux donneraitdes programmes efficaces pour tous !

P vs NP

I Question fondamentale : est-ce que P = NP ?Les problèmes faciles à vérifier sont-ils faciles à résoudre ?

I Question ouverte (depuis 1970). Réponse probable : non.

Meilleurs programmes connus pour lesproblèmes NP-complets : f (n) ' 2n.

I Beaucoup de problèmes importants sont NP-complets,des programmes efficaces ont été cherchés en vain.

Un programme efficace pour l’un d’entre eux donneraitdes programmes efficaces pour tous !

P vs NP

I Bien qu’on ne sache pas montrer que P 6= NP,le fait qu’un problème soit NP-complet est pris commeune « preuve » que ce problème est difficile :personne ne connaît d’algorithme efficace.

I Que faire face à un problème NP-complet ?• Simplifier le problème,• chercher une solution approchée• etc.

P vs NP

I Bien qu’on ne sache pas montrer que P 6= NP,le fait qu’un problème soit NP-complet est pris commeune « preuve » que ce problème est difficile :personne ne connaît d’algorithme efficace.

I Que faire face à un problème NP-complet ?• Simplifier le problème,• chercher une solution approchée• etc.

Conséquences

Si P = NP :I la cryptographie n’est pas sûre (sauf physique quantique)I tous les problèmes d’optimisation, d’ordonnancement

ont des programmes efficacesI les avions seraient à l’heureI un ordinateur peut trouver une preuve mathématique

efficacement, les mathématiciens peuvent être licenciés

La question « P = NP ? » figure dans la liste des sept« problèmes du millénaire » (Clay institute) :

un million de dollars de récompense

Conséquences

Si P 6= NP :I les avions continueront d’être en retardI pas de méthode efficace pour résoudre de nombreux

problèmes importantsI « créer », « inventer » est difficile→ les mathématiciens sont utiles

La question « P = NP ? » figure dans la liste des sept« problèmes du millénaire » (Clay institute) :

un million de dollars de récompense

Conséquences

Si P 6= NP :I les avions continueront d’être en retardI pas de méthode efficace pour résoudre de nombreux

problèmes importantsI « créer », « inventer » est difficile→ les mathématiciens sont utiles

La question « P = NP ? » figure dans la liste des sept« problèmes du millénaire » (Clay institute) :

un million de dollars de récompense

Conclusion

I Deux aspects de la recherche en informatique théorique :• Inventer des programmes performants pour un problème• Montrer qu’il n’existe pas de programme performant

pour un problème (ou une classe de problèmes)

I Classification des problèmes selon leur complexité :P, NP, etc.

I Les questions du type « P = NP ? » sont importantestant en théorie qu’en pratique(voire pour leurs aspects philosophiques)

I Questions très difficiles !

Conclusion

I Deux aspects de la recherche en informatique théorique :• Inventer des programmes performants pour un problème• Montrer qu’il n’existe pas de programme performant

pour un problème (ou une classe de problèmes)

I Classification des problèmes selon leur complexité :P, NP, etc.

I Les questions du type « P = NP ? » sont importantestant en théorie qu’en pratique(voire pour leurs aspects philosophiques)

I Questions très difficiles !

Conclusion

I Deux aspects de la recherche en informatique théorique :• Inventer des programmes performants pour un problème• Montrer qu’il n’existe pas de programme performant

pour un problème (ou une classe de problèmes)

I Classification des problèmes selon leur complexité :P, NP, etc.

I Les questions du type « P = NP ? » sont importantestant en théorie qu’en pratique(voire pour leurs aspects philosophiques)

I Questions très difficiles !

Recommended