« Programmation algorithmique/Nombre d'opérations optimal » : différence entre les versions
Contenu supprimé Contenu ajouté
m Formatage, ajout de code |
m typo |
||
Ligne 58 :
== Machine séquentielle, machine parallèle, machine quantique ==
Toutes les complexités indiquées ici valent pour des machines séquentielles, c'est à dire une machine munie d'un seul processeur, ou bien une machine multi-processeurs sur laquelle on n'utiliserait qu'un seul cœur. D'ailleurs, le langage algorithmique que nous utilisons décrit uniquement des séquences
Notons que le facteur d'accélération amené par une machine parallèle, c'est-à-dire munie de plusieurs processeurs, est limité. Par exemple, pour une machine à 64 processeur, on peut espérer aller 64 fois plus vite au maximum. Pour un algorithme en <math>O(2^{n})</math> et <math>n</math> valant 100, le nombre d'opérations sur une machine séquentielle est de l'ordre de <math>2^{100}</math>, tandis que sur une machine à 64 processeurs on peut espérer un ordre de <math>(2^{100})/64</math> soit <math>(2^{100})/(2^{6})</math> ou <math>2^{94}</math> opérations. On voit bien ici que
Quant aux machines quantiques, qui sont loin d'être exploitables actuellement, leur utilisation remettrait à plat l'état de l'art en algorithmique et en complexité. Par exemple, pour des problèmes dont on ne connaît que des algorithmes de complexité en temps exponentielle, on connaît des algorithmes quantiques de complexité linéaire. Alors qu'il faut actuellement des dizaines d'années à des machines parallèles surpuissantes pour casser une clé de chiffrement, un ordinateur quantique mettrait quelques instants.
|