aboutsummaryrefslogtreecommitdiff
path: root/semestre 4/algo/0- Rentrée.typ
blob: 84c5d9de0faf9bf43629e3a63a45a5b99b3eedd2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#import "@local/template:1.0.0": *
#import "@local/callout:1.0.0": *

#show: doc.with(
  authors: (
    (name: "William Hergès", affiliation: "Sorbonne Université", email: "william@herges.fr"),
  ),
  page_title: "Introduction",
)

= Introduction

Un algorithme est un moyen de décomposer un problème en plein de petites tâches.
Une recette de cuisine est un algorithme.

On cherche à trouver un moyen pour analyser les algorithmes et pour choisir le meilleur.

Plan du semestre :
1. Théorie sur les algorithmes ;
2. Structure des données.

Contrôle continu en TD, partiel et examen.
Utilise la règle du max.

Les QCM sur Moodle ne sont pas notés.
Il y a souvent des QCM aux exams.

= Rappels mathématiques

Raisonnements valides :
1. calculatoire
2. raisonnements logiques
  - directe
  - absurde
  - contraposé
3. par récurrence

C'est du blabla pour nous rappeler comment on fait des maths.

Ne pas oublier que~:
$ sum^n_(i=1) i = (n(n-1))/2 $
et que~:
$ forall x in RR, quad sum^n_(i=0) x^i = (x^(n+1)-1)/(x-1) $

= Solution générale des suites

== Suites récurrente linéaire homogène d'ordre 2

#defn[
  Une _suite récurrente linéaire homogène d'ordre 2_ est une suite définie par une relation de récurrence
  $ u_n = a u_(n-1) + b u_(n-2) $
  avec des conditions initiales
  $ u_0 = a_0 quad u_1 = a_1 $
   $a$, $b$, $a_0$ et $a_1$ sont des nombres réels.
]

#defn[
  On définit le _polynôme caractéristique_ associé à la suite récurrente précédente le polynôme~:
  $ r^2 + a r - b $
]

Par exemple, le polynôme associé à la suite de Fibonacci est $ r^2-r-1 $

=== Méthode pour déterminer la solution

On calcule les racines du _polynôme caractéristique_.

*Si le polynôme possède deux racines* $r_1$, et $r_2$, alors la solution générale de la récurrence est de la forme~:
$ u_n = alpha r_1^n + beta r_2^n $
On détermine ensuite $alpha$ et $beta$ à l'aide des conditions initiales~:
$ alpha + beta = a_0 \
alpha r_1 + beta r_2 = a_1 $

*Si le polynôme possède une racine* $r$, alors la solution générale est de la forme~:
$ u_n = alpha r^n + beta n r^n $
$alpha$ et $beta$ sont déterminés comme dans le cas précédent.

== Autres cas

Voir le diapo, car le prof n'a pas détaillé et est allé très vite.

= Notations de Landau

#defn[
  Soient $f$ et $g$ deux fonctions de $NN$ dans $RR_+$.

  On écrit $f in O(g)$ si :
  $ exists D > 0, exists n_0 >= 0, quad forall n > n_0, quad f(n) <= D g(n) $

  On écrit $f in Omega (g)$ si :
  $ exists C > 0, exists n_0 >= 0, quad forall n > n_0, quad C g(n) <= f(n) $

  On écrit $f in Theta (g)$ si :
  $ exists D >, exists C > 0, exists n_0 >= 0, quad forall n > n_0, quad C g(n) <= f(n) <= D g(n) $
]
Autrement dit
- si $f in O(g)$, alors $f$ croit plus lentement que $g$~;
- si $f in Omega (g)$, alors $f$ croit plus vite que $g$, i.e. $g in O(f)$~;
- si $f in Theta (g)$, alors $f$ croit aussi vite que $g$, i.e. $f in O(g)$ et $f in Omega (g)$.

#props[
  Dans le cas  $(f(n))/(g(n))$ adment une limite dans $n$ tend vers $+inf$, si~:
  - $lim (f(n))/(g(n)) = 0$, alors $f in O(g)$~;
  - $lim (f(n))/(g(n)) = +inf$, alors $f in Omega (g)$~;
  - $lim (f(n))/(g(n)) = l$ (où $l in RR backslash {0}$), alors $f in Theta (g)$.
]