Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Information, Calcul, Communication
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne fait partie de son cours d’introduction à l’information, à la communication, et au calcul. Il s’inscrit dans le 1er module du cours qui offre une 1e approche des notions de calcul et d’information. Information, Calcul, Communication 1. Information & Calcul – Leçon 3: Théorie du Calcul Clip 4: Complexité P B. Moret, J-C. Chappelier, R. Boulic, commentaire: P. Janson
2
Plan de la leçon Formalisation de la notion de calcul: les machines de Turing Problème = question + données Théorie du calcul Dénombrement et calculabilité Calculabilité et décidabilité Théorie de la complexité Complexité des problèmes Problèmes de complexité P = calculables avec coût polynomial Problèmes de complexité NP = vérifiables avec coût polynomial Le précédent clip a tracé une ligne entre problèmes décidables et indécidables. Ce 4e clip de la leçon va porter l’attention sur la notion de la complexité des problèmes. Ce faisant il va définir une autre ligne entre des classes de problèmes plus ou moins faciles à calculer.
3
Complexité Certains programmes informatiques
Exécutent des millions d’opérations par seconde (p.ex. des transactions bancaires) Requièrent des milliards de milliards d’opérations (modèles climatiques) Traitent des données gigantesques (Google, génome humain) => La complexité d'un problème est celle du meilleur algorithme qui le résout NB: complexité ≠ difficulté – difficulté est une pure question de perception humaine => La complexité d’un problème est une fonction de sa « taille » exprimée par le temps et l'espace mémoire nécessaires à son calcul Exemple La complexité du problème du tri est O(n log(n)) – et il est prouvé qu'on ne peut pas faire mieux! Il existe aujourd’hui de par le monde 1 … des programmes qui doivent exécuter des millions d’instructions par secondes, p.ex. les softwares de transactions financières; 2 … des programmes dont la complexité requiert des milliards de milliards d’opérations, p.ex. les softwares de prévisions météorologiques; 3 … ou encore des programmes qui traitent des volumes considérables de données, p.ex. la recherche sur Google ou l’analyse du génome humain. 4 La complexité d’un tel problème est définie par celle du meilleur algorithme qui le résout. 5 Il est à noter que cette complexité n’a rien à voir avec l’apparente difficulté du problème, qui est elle uniquement une question subjective de perception humaine. 6 La complexité d’un problème est une fonction de sa taille où cette taille est mesurée par le temps et l’espace mémoire requis par le meilleur algorithme pour résoudre la plus compliquée des instances du problème. 7 Par exemple, comme dans un clip précédent, la complexité du problème du tri est O(n log(n)). Il est même par ailleurs prouvé qu'on ne peut pas trouver un algorithme qui fasse mieux!
4
Hiérarchie dans la complexité
La théorie du calcul partage les problèmes entre ceux qui sont calculables et ceux qui ne le sont pas La théorie de la complexité classe les problèmes calculables selon les besoins en temps et en espace de calcul de l’algorithme le plus efficace pour chaque problème Ce partage se fait en classes de complexité Chaque classe contient un ensemble infini de problèmes pour lesquels les algorithmes les plus efficaces requièrent des temps et espaces de calcul d’ordres comparables Le résultat est une hiérarchie de classes de complexité Quelles classes de complexité peut-on définir? Nous avons vu que la théorie du calcul divise tous les problèmes concevables entre ceux qui sont calculables et ceux qui ne le sont pas. 1 La théorie de la complexité – elle – classe les problèmes calculables selon les besoins en temps et en espace de calcul de l’algorithme le plus efficace pour chacun d’eux. 2 Cette classification est basée sur des classes de complexité telles que chaque classe renferme un nombre infini de problèmes pour lesquels les algorithmes les plus efficaces requièrent des temps et des espaces de calcul d’ordres comparables. 3 Le résultat est l’émergence d’une hiérarchie de classes de complexité 4 Le but de ce clip est de définir une première classe de complexité minimale. Nous en verrons une autre dans le clip suivant.
5
Algorithmes «pratiques» = utilisables
Des algorithmes tels que tri recherche plus court chemin, etc. requièrent des espaces et temps de calcul entre O(n) (linéaires) et O(n2) (quadratiques) Pour être pratiquement utile un algorithme ne peut dépasser une complexité de O(n3) NB: Pour traiter des volumes de données comme le font Google, le CERN, ou la NASA, une telle complexité cubique est exclue! => une complexité linéaire est indispensable On appelle de tels algorithmes polynomiaux Nous avons vu précédemment des algorithmes tels que le tri, la recherche, le calcul du plus court chemin, etc. qui requièrent des espaces et des temps de calcul variant entre linéaires en fonction de la taille n des données, ce que nous avons exprimé par une complexité de O(n) et quadratiques en fonction de la taille des données ce que nous avons exprimé par une complexité de O(n2). 1 En pratique pour être exécutable en un temps utile un algorithme ne peut dépasser une complexité de O(n3). 2 En effet si on considère les quelques exemples illustrés sur ce graphique On voit bien que des algorithmes de complexité logarithmique (ici en violet) voire linéaire (ici en bleu) requièrent un espace et un temps de calcul qui restent dans un ordre de grandeur acceptable. Un algorithme de complexité quadratique, voire cubique (ici en vert) serait aussi utilisable tant que la quantité de données à traiter (X sur ce graphique) n’est pas trop conséquente. Un algorithme de complexité exponentielle (ici en rouge) verrait par contre exploser ses besoins en ressources spatio-temporelles. 3 Ceci dit, comme nous le verrons dans l’exemple de la planche suivante, pour traiter des volumes de données comme le font Google, le CERN, ou la NASA, une complexité d’ordre cubique voire seulement quadratique est totalement exclue! Une complexité linéaire est indispensable si on veut arriver à traiter les données en un temps pratiquement utile. 4 On appelle tous ces algorithmes de complexité O(nk) des algorithmes polynomiaux.
6
Algorithmes «pratiques»: exemple
Un ordinateur moderne exécute de l’ordre de 10 milliards (1010) d’opérations par seconde Le CERN génère près d’un pétaoctet (N=1015) de données par semaine Un algorithme O(N2) (quadratique) demanderait donc au moins 1030 opérations sur ces données soit de l’ordre de 1030/1010 = 1020 secondes = 300 millions de siècles ! Même un algorithme O(N) (linéaire) demande au moins 1015 opérations soit de l’ordre de 1015/1010 = 105 secondes = environ 27 heures de calcul ! Comme suggéré sur la planche précédente, dans les problèmes brassant de gigantesque volumes d’informations, un algorithme pratique ne peut se permettre une complexité plus que linéaire O(N). 1 En effet un ordinateur moderne exécute de l’ordre de 1010 soit 10 milliards d’opérations par seconde. 2 Or le CERN, p.ex. génère chaque semaine près de 1015, soit un pétaoctet de données. 3 Devant un tel volume, même un algorithme quadratique (O(N2)) demanderait au moins 1030 opérations, soit de l’ordre de 1030 opérations / 1010 OPS, ce qui ferait 1020 secondes, 4 soit la bagatelle de 300 millions de siècles … ce qui serait évidemment tout à fait surréaliste ! 5 Même un algorithme linéaire (donc O(N)) demande au moins 1015 opérations, 6 soit de l’ordre de 1015 opérations / 1010 OPS = 105 secondes, ce qui fait quand même environ 27 heures de calcul !
7
Problèmes «P» = de complexité polynomiale
=> La classe de complexité hiérarchique la plus simple regroupe tous les problèmes dont toutes les instances peuvent être résolues par un algorithme de complexité polynomiale => Cette première classe de complexité est appelée P Rappel: les algorithmes de classe P «pratiques» sont de complexité ≤ O(n3) Personne n’a en effet conçu d’algorithme sérieux de complexité O(n17)! NB: chaque opération sur un ordinateur affecte un espace fixe en mémoire => un temps de calcul polynomial implique un espace de mémoire polynomial Après cette discussion de la complexité et des algorithmes pratiquement utilisables, revenons-en à la hiérarchie de classes de complexité. 1 On convient de classer tous les problèmes dont toutes les instances peuvent être résolues par un algorithme de complexité polynomiale dans la classe de complexité hiérarchique la plus simple … 2 … qu’on appelle évidemment la classe de complexité polynomiale P 3 Pour rappel: au sein de cette classe les algorithmes «pratiques» sont en fait limités à une complexité ≤ O(n3) 4 Personne n’a en effet jamais conçu d’algorithme sérieux d’une complexité d’ordre 17 ! 5 Notons en passant qu’en ce qui concerne le besoin d’espace d’un algorithme, chaque opération sur un ordinateur requiert un espace fixe en mémoire, de telle sorte qu’un temps de calcul polynomial implique un besoin d’espace en mémoire polynomial.
8
Exemples de problèmes «P»
Il existe un nombre considérable de problèmes dans la classe P: La recherche par dichotomie: O(log n) L’identification de tous les amis dans un réseau social: O(n) L’intersection de deux polygones convexes: O(n) Le tri: O(n log n) Le calcul d’un plus court chemin: O(n log n) L’alignement de deux séquences d’ADN: O(n2) L’affectation du personnel de bord aux vols de ligne: O(n2 log n) La multiplication de deux matrices carrées de taille n x n: O(n2.37) L’optimisation du débit entre deux points d’un réseau: O(n3) On peut légitimement se poser la question de combien de problèmes pratiques se trouvent dans la classe de complexité P. En fait il y en a un nombre considérable, par exemple … 1 Une recherche par dichotomie qui est de complexité O(log n). 2 L’identification de tous les amis dans un réseau social qui est de complexité O(n). 3 Le calcul de l’intersection de deux polygones convexes qui est de complexité O(n). 4 Les problèmes de tri qui sont de complexité O(n log n). 5 Les problèmes de calcul d’un plus court chemin qui sont de complexité O(n log n). 6 Le repérage de l’alignement de deux séquences d’ADN qui est de complexité O(n2). 7 L’affectation du personnel de bord aux vols de ligne qui est de complexité O(n2 log n). 8 La multiplication de deux matrices carrées de taille n x n qui est de complexité O(n2.37). 9 L’optimisation du débit entre deux points d’un réseau qui est de complexité O(n3).
9
Hiérarchie de complexité des problèmes (d’après G. Brookshear)
Complexité du problème Nombre fini d’instances Nombre infini d’instances Avec cette première classe P se dessinent déjà quelques niveaux dans la hiérarchie de complexité des problèmes. Une planche du clip précédent sur la calculabilité avait déjà parqué en bas de cette hiérarchie les problèmes triviaux pré-calculables. 1 A l’autre extrême de cette hiérarchie se trouvent les problèmes indécidables et donc incalculables, alors qu’entre deux on trouve les problèmes décidables et calculables. 2 Parmi ces problèmes calculables, le présent clip a mis l’accent sur une autre distinction, entre d’une part les problèmes non-polynomiaux certes calculables en théorie mais moins calculable en pratique tant leur complexité est élevée, et d’autre part les problèmes polynomiaux de la class P, beaucoup plus calculables en pratique si leur complexité reste en-dessous d’O(n3). 3 Dans cette hiérarchie de complexité des problèmes, le prochain clip va discuter de problèmes réputés non-déterministes polynomiaux. 4 Ils appartiennent à une classe de complexité appelée NP, dont la propriété est qu’on ne leur connait pas de solution polynomiale mais par contre on connait pour certaines de leurs instances des solutions dont on peut vérifier l’exactitude avec une complexité polynomiale. Une des grandes questions qui préoccupent toujours les théoriciens du calcul est de savoir si les classes P et NP sont en fait équivalentes, c.à.d. si la seule différence entre un problème NP et un problème P est qu’il existe peut-être une solution polynomiale au problème NP mais qu’on ne l’a tout simplement pas encore découverte. Nous développerons cela dans le prochain clip. Problèmes décidables Problèmes indécidables Problèmes polynomiaux Problèmes non-polynomiaux Précalculer et consulter une table P Problèmes Non-déterministes Polynomiaux ? NP Sujet du prochain clip
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.