Advertisement
Guest User

Untitled

a guest
May 31st, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.02 KB | None | 0 0
  1. Complexit´e des algorithmes
  2. Un mˆeme probl`eme peut ˆetre r´esolu par plusieurs algorithmes
  3. diff´erents.
  4. Mˆeme s’il est correct, un algorithme peut ˆetre inutile : trop lent, ou
  5. n´ecessite trop d’espace m´emoire.
  6. Exemple : Ensemble de n villes reli´ees par des routes.
  7. Probl`eme : Trouver le parcours le plus court qui traverse toutes les
  8. villes.
  9. Algorithme possible :
  10. – Lister tous les chemins possibles ;
  11. – Pour chaque chemin, v´erifier s’il contient un ´el´ement rouge.
  12. Impossible d’utiliser cet algorithme pour n trop grand.
  13. 1
  14. Complexit´e d’un algorithme : temps d’ex´ecution et espace m´emoire
  15. requis.
  16. Comment mesurer l’efficacit´e en temps d’un algorithme ? Temps
  17. d’ex´ecution pas une bonne mesure :
  18. – Environnement de programmation : mˆeme programme ex´ecut´e
  19. sur un Cray ou sur un PC ne prend pas du tout le mˆeme temps.
  20. – Langage de programmation : par exemple, programme compil´e
  21. prend moins de temps qu’un programme interpr´et´e.
  22. – Logique de programmation, d´etails de l’impl´ementation.
  23. Temps d’ex´ecution d´epend de plusieurs facteurs non reli´es `a
  24. l’algorithme.
  25. 2
  26. Complexit´e en temps `a priori, d´epend de :
  27. – Taille de l’entr´ee
  28. – Op´erations ´el´ementaires effectu´ees,
  29. Op´eration ´el´ementaire : op´eration dont le temps d’ex´ecution ne
  30. d´epend pas de la taille des op´erandes.
  31. Par exemple, addition de deux entiers. Addition de deux tableaux
  32. pas une op´eration ´el´ementaire.
  33. Calculer, en fonction de la taille n de l’entr´ee :
  34. – Complexit´e en temps dans le meilleur des cas
  35. – Complexit´e en temps dans le pire des cas
  36. – Complexit´e en temps en moyenne
  37. 3
  38. Exemple : Recherche du plus grand ´el´ement dans une liste (voir
  39. cours 1, Algorithmique).
  40. – Taille de l’entr´ee : Taille n de la liste
  41. – Op´erations ´el´ementaires : Comparaisons d’entiers deux `a deux,
  42. addition, assignation de valeurs.
  43. Pour une valeur n d’entr´ee, n − 1 passages dans la boucle Tant que
  44. Dans ce cas, meilleur des cas = cas moyen = pire des cas
  45. −→ proportionnel `a n − 1
  46. A chaque passage dans la boucle `
  47. Tant que, 2 comparaisons, 2
  48. assignation, 1 addition −→ 5 op´erations ´el´ementaires.
  49. =⇒ Temps d’ex´ecution : t(n) = 5.n + 2
  50. Tr`es d´ependant de l’impl´ementation. En g´en´eral, les constantes ne
  51. nous int´eressent pas.
  52. 4
  53. Complexit´e : Ordre de grandeur par rapport `a la taille de l’entr´ee
  54. t(n) = 60n
  55. 2
  56. + 5n + 1, pour n suffisemment grand, t(n) ∼ n
  57. 2
  58. D´efinition : f et g deux fonctions sur N.
  59. – f(n) = O(g(n)) (f(n) est de l’ordre de g(n) au plus) ssi il existe
  60. une constante C1 > 0 telle que : |f(n)| ≤ C1|g(n)|, sauf pour un
  61. nombre fini de valeurs de n.
  62. – f(n) = Ω(g(n)) (f(n) est de l’ordre de g(n) au moins) ssi il existe
  63. une constante C2 > 0 telle que : |f(n)| ≥ C2|g(n)|, sauf pour un
  64. nombe fini de valeurs de n.
  65. – f(n) = Θ(g(n)) (f(n) est de l’ordre de g(n)) ssi f(n) = O(g(n))
  66. et f(n) = Ω(g(n)).
  67. 5
  68. Si f(n) = O(g(n)), g croˆıt au moins aussi vite que f.
  69. Exemple : Si f(n) = n et g(n) = 2n
  70. , f(n) = O(g(n)). Mais g croˆıt
  71. beaucoup plus vite que f.
  72. Ici, f(n) 6= Θ(g(n)).
  73. Si f(n) = Θ(g(n)), on peut conclure que f et g croˆıent `a la mˆeme
  74. vitesse, `a par pour un ensemble fini de valeurs de n.
  75. 6
  76. Th´eor`eme 1 :
  77. Soit f(n) le polynˆome de degr´e k :
  78. f(n) = ak
  79. n
  80. k
  81. + ak−1
  82. n
  83. k−1
  84. + · · · + a1
  85. n + a0
  86. avec ak, ak−1, · · · , a1, a0
  87. des valeurs ≥ 0.
  88. Alors, f(n) = Θ(n
  89. k
  90. )
  91. On montre aussi que :
  92. 1. f(n) = ak
  93. n
  94. k
  95. + ak−1
  96. n
  97. k−1
  98. + · · · + a1
  99. n + b. log2
  100. (n) = Θ(n
  101. k
  102. )
  103. 2. f(n) = 1 + 2 + · · · + n = Θ(n
  104. 2
  105. )
  106. 3. f(n) = 1k
  107. + 2k
  108. + · · · + n
  109. k
  110. = Θ(n
  111. k+1)
  112. 4. log2
  113. (n!) = Θ(n log2
  114. n)
  115. 5. Pour tout entiers a, b > 1 (logb
  116. (a) > 0), logb
  117. (n) = Θ(loga
  118. (n))
  119. 7
  120. M´ethode g´en´erale pour trouver la notation Θ
  121. Algorithme de temps d’ex´ecution t(n) :
  122. 1. Remplacer toutes les constantes par 1.
  123. 2. Garder le plus grand terme dans la fonction, et supprimer les
  124. autres. Les termes sont ordonn´es du plus petit au plus grand
  125. comme suit :
  126. log n n n log n n2
  127. n
  128. 3
  129. n
  130. k
  131. 2
  132. n
  133. n!
  134. Par exemple, si t(n) = cn n+1
  135. 2
  136. , alors t(n) = O(n
  137. 2
  138. ). On parle de
  139. complexit´e quadratique.
  140. 8
  141. Calcul de complexit´e : boucles lin´eaires
  142. 1 Pour i = 1 `a n Faire
  143. 2 code ;
  144. 3 Fin Pour
  145. Nombre d’it´erations directement proportionnel au facteur de
  146. boucle, et donc t(n) = C.n = Θ(n).
  147. 1 i = 1 ;
  148. 2 Tant que 1 ≤ n Faire
  149. 3 code ;
  150. 4 i = i + 2 ;
  151. 5 Fin Tant que
  152. Nombre d’it´erations : n/2. Donc T(n) = C. n
  153. 2
  154. = Θ(n).
  155. 9
  156. Boucles logarithmiques
  157. 1 i = 1 ;
  158. 2 Tant que i ≤ n Faire
  159. 3 code ;
  160. 4 i = i × 2 ;
  161. 5 Fin Tant que
  162. It´eration Valeur de i It´eration Valeur de i
  163. 1 1 6 32
  164. 2 2 7 64
  165. 3 4 8 128
  166. 4 8 9 256
  167. 5 16 10 512
  168. (sortie) 1024
  169. 10
  170. Boucle s’arrˆete d´es que i − 1 ≥ log2
  171. n ⇒ i ≥ log2
  172. n + 1
  173. t(n) = cdlog2
  174. ne = Θ(log2
  175. (n))
  176. Pour les mˆemes raisons, l’algorithme suivant a un temps
  177. logarithmique.
  178. 1. i = 1000 ;
  179. 2. Tant que i ≥ 1 Faire
  180. 3. code ;
  181. 4. i = i/2 ;
  182. 5. Fin Tant que
  183. 11
  184. Boucles imbriqu´ees
  185. 1 Pour i = 1 `a n Faire
  186. 2 j = 1 ;
  187. 3 Tant que j ≤ n Faire
  188. 4 j = j × 2 ;
  189. 5 Fin Tant que
  190. 6 Fin Pour
  191. Boucle interne → dlog2
  192. ne it´erations,
  193. Boucle externe → n it´erations
  194. ⇒ t(n) = cndlog2
  195. ne = Θ(n. log2
  196. n)
  197. 12
  198. 1 Pour i = 1 `a n Faire
  199. 2 Pour j = 1 `a i Faire
  200. 3 j = j + 1 ;
  201. 4 Fin Pour
  202. 5 Fin Pour
  203. Nombre de fois que la boucle interne est ex´ecut´ee d´epend de
  204. l’indice de la boucle externe.
  205. Boucle interne effectu´ee 1 + 2 + 3 + · · · + (n − 1) + n =
  206. n(n+1)
  207. 2
  208. fois.
  209. ⇒ t(n) = Θ(n
  210. 2
  211. )
  212. 13
  213. 1 j = n ;
  214. 2 Tant que j ≥ 1 Faire
  215. 3 Pour i = 1 `a j Faire ;
  216. 4 x = x+1 ;
  217. 5 Fin Pour
  218. 6 j = bj/2c ;
  219. 7 Fin Tant que
  220. Si k est le nombre de fois que la boucle Tant que est ex´ecut´ee,
  221. l’instruction 4 est ex´ecut´ee au plus :
  222. n +
  223. n
  224. 2
  225. +
  226. n
  227. 4
  228. + · · · +
  229. n
  230. 2
  231. k−1
  232. Somme g´eom´etrique : a + a.r + a.r2
  233. + · · · + arn
  234. =
  235. a(r
  236. n+1
  237. −1)
  238. r−1
  239. −→
  240. n(1− 1
  241. 2
  242. k
  243. )
  244. 1− 1
  245. 2
  246. ≤ 2n pour n ≥ 1
  247. ⇒ t(n) = O(n) = Θ(n)
  248. 14
  249. Recherche d’un ´el´ement dans une liste
  250. Entr´ee : s1, s2, · · · sn, n, et elt;
  251. Sortie : L’indice de elt s’il est trouv´e, et 0 sinon
  252. Proc´edure recherche-element (s, n, elt)
  253. i = 1 ;
  254. Tant que (i ≤ n) et (elt 6= si
  255. ) Faire
  256. i = i + 1 ;
  257. Fin Tant que
  258. Si i = n + 1
  259. Retourne (0)
  260. Retourne (i)
  261. Fin recherche-element
  262. Meilleur des cas : s1 = elt ⇒ Θ(1)
  263. Pire des cas : elt n’est pas dans la liste ⇒ Θ(n)
  264. En moyenne : La boucle est parcourue n/2 fois ⇒ Θ(n)
  265. 15
  266. Mesures standard d’efficacit´e
  267. n = 10000. Estimation du temps effectu´ee en supposant qu’il y a 10
  268. instructions dans une boucle, et que chaque instruction est ex´ecut´ee
  269. en une microseconde.
  270. Efficacit´e Notation Θ It´erations Temps estim´e
  271. Logarithmique Θ(log2
  272. n) 14 Microsecondes
  273. Lin´eaire Θ(n) 10 000 0.1 secondes
  274. Θ(nlog2n) 140 000 2 secondes
  275. Quadratique Θ(n
  276. 2
  277. ) 10 0002
  278. 15 − 20 minutes
  279. Polynˆomiale Θ(n
  280. k) 10 000k
  281. Heures
  282. Exponentielle Θ(2n) 2
  283. 10000 Insoluble
  284. Factorielle Θ(n!) 10 000! Insoluble
  285. 16
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement