Raisonner avec des arbres MPSI Option info 1 / 28

publicité
Raisonner avec des arbres
MPSI Option info
MPSI Option info
Raisonner avec des arbres
1 / 28
Recherche d’un minimum
On souhaite trouver le minimum d’un tableau de n 6= 0 entiers.
Quel est le plus petit nombre de comparaisons nécessaires?
MPSI Option info
Raisonner avec des arbres
2 / 28
Recherche d’un minimum
On souhaite trouver le minimum d’un tableau de n 6= 0 entiers.
Quel est le plus petit nombre de comparaisons nécessaires?
MPSI Option info
Raisonner avec des arbres
2 / 28
Recherche d’un minimum
On souhaite trouver le minimum d’un tableau de n 6= 0 entiers.
Quel est le plus petit nombre de comparaisons nécessaires?
minimum réalise n − 1 comparaisons. Est-ce optimal?
MPSI Option info
Raisonner avec des arbres
2 / 28
Erreur classique
« Si un algorithme mettait moins de n − 1 comparaisons pour trouver
le minimum d’un tableau de taille n, un élément ne serait jamais
comparé »
MPSI Option info
Raisonner avec des arbres
3 / 28
Erreur classique
« Si un algorithme mettait moins de n − 1 comparaisons pour trouver
le minimum d’un tableau de taille n, un élément ne serait jamais
comparé »
C’est faux: en comparant les éléments par paires, on effectue que b n2 c
comparaisons et chaque élément est comparé.
MPSI Option info
Raisonner avec des arbres
3 / 28
Recherche d’un minimum
Si un algorithme calcule le minimum m d’un tableau, alors chaque
élément e 6= m doit avoir été comparé supérieur à un autre au moins
une fois (sinon, on ne pourra pas savoir si e ou m est le minimum).
MPSI Option info
Raisonner avec des arbres
4 / 28
Recherche d’un minimum
Si un algorithme calcule le minimum m d’un tableau, alors chaque
élément e 6= m doit avoir été comparé supérieur à un autre au moins
une fois (sinon, on ne pourra pas savoir si e ou m est le minimum).
Donc le nombre minimum de comparaisons pour trouver un minimum
est bien n − 1.
MPSI Option info
Raisonner avec des arbres
4 / 28
Recherche d’un minimum
Si un algorithme calcule le minimum m d’un tableau, alors chaque
élément e 6= m doit avoir été comparé supérieur à un autre au moins
une fois (sinon, on ne pourra pas savoir si e ou m est le minimum).
Donc le nombre minimum de comparaisons pour trouver un minimum
est bien n − 1.
En général, pour prouver une borne inférieur sur la complexité d’un
algorithme, il est utile de considérer l’arbre d’exécution de cet
algorithme.
MPSI Option info
Raisonner avec des arbres
4 / 28
Recherche d’un minimum
Considérons un algo. quelconque calculant le minimum d’un tableau t.
Cet algo. effectue une première comparaison, disons entre les
éléments t.(i) et t.(j).
MPSI Option info
Raisonner avec des arbres
5 / 28
Recherche d’un minimum
Considérons un algo. quelconque calculant le minimum d’un tableau t.
Cet algo. effectue une première comparaison, disons entre les
éléments t.(i) et t.(j).
Cet algo. va ensuite effectuer une 2ème comparaison entre 2 éléments
t.(k) et t.(l). Le choix de k et l dépend à priori du résultat de la
comparaison de t.(i) et t.(j).
Ainsi de suite... jusqu’au moment où l’algo. s’arrête et renvoie le
minimum.
MPSI Option info
Raisonner avec des arbres
5 / 28
Arbre de décision
On peut dessiner l’arbre dont les noeuds sont les comparaisons, la
racine est la comparaison initiale et les feuilles correspondent aux
valeurs de retour de l’algorithme.
Le sous-arbre gauche (resp. droit) correspond au cas où la
comparaison est false (resp. true)
MPSI Option info
Raisonner avec des arbres
6 / 28
Arbre de décision
Arbre de décision de minimum sur un tableau de taille 4:
t.(0) > t.(1)
true
false
t.(0) > t.(2)
t.(1) > t.(2)
t.(0) > t.(3)
t.(2) > t.(3)
t.(1) > t.(3)
t.(2) > t.(3)
t.(0)
t.(2)
t.(1)
t.(2)
t.(3)
MPSI Option info
t.(3)
Raisonner avec des arbres
t.(3)
t.(3)
7 / 28
Arbre de décision
Exemple d’exécution sur t = [|5; 1; 3; 2|]:
t.(0) > t.(1)
t.(0) > t.(2)
t.(1) > t.(2)
t.(0) > t.(3)
t.(2) > t.(3)
t.(1) > t.(3)
t.(2) > t.(3)
t.(0)
t.(2)
t.(1)
t.(2)
t.(3)
MPSI Option info
t.(3)
Raisonner avec des arbres
t.(3)
t.(3)
8 / 28
Arbre de décision
Exemple d’exécution sur t = [|5; 1; 3; 2|]:
t.(0) > t.(1)
t.(0) > t.(2)
t.(1) > t.(2)
t.(0) > t.(3)
t.(2) > t.(3)
t.(1) > t.(3)
t.(2) > t.(3)
t.(0)
t.(2)
t.(1)
t.(2)
t.(3)
t.(3)
t.(3)
t.(3)
Complexité dans le pire des cas = hauteur de l’arbre de décision.
MPSI Option info
Raisonner avec des arbres
8 / 28
Arbre de décision
Exemple d’exécution sur t = [|5; 1; 3; 2|]:
t.(0) > t.(1)
t.(0) > t.(2)
t.(1) > t.(2)
t.(0) > t.(3)
t.(2) > t.(3)
t.(1) > t.(3)
t.(2) > t.(3)
t.(0)
t.(2)
t.(1)
t.(2)
t.(3)
t.(3)
t.(3)
t.(3)
Complexité dans le meilleur des cas = profondeur minimum d’une
feuille.
MPSI Option info
Raisonner avec des arbres
9 / 28
Arbre de décision
Exemple d’exécution sur t = [|5; 1; 3; 2|]:
t.(0) > t.(1)
t.(0) > t.(2)
t.(1) > t.(2)
t.(0) > t.(3)
t.(2) > t.(3)
t.(1) > t.(3)
t.(2) > t.(3)
t.(0)
t.(2)
t.(1)
t.(2)
t.(3)
t.(3)
t.(3)
t.(3)
Complexité en moyenne = profondeur moyenne des feuilles.
MPSI Option info
Raisonner avec des arbres
10 / 28
Arbre de décision
Nous avons montré qu’un arbre de décision d’un algo. qui calcule un
minimum dans un tableau de taille n a une hauteur ≥ n − 1.
Et même mieux: que toutes les feuilles sont de profondeur ≥ n − 1.
MPSI Option info
Raisonner avec des arbres
11 / 28
Minimum ET maximum
Quel est le nombre optimal de comparaisons effectuées par un algo.
calculant le minimum et maximum d’un tableau de taille n?
MPSI Option info
Raisonner avec des arbres
12 / 28
Minimum ET maximum
Quel est le nombre optimal de comparaisons effectuées par un algo.
calculant le minimum et maximum d’un tableau de taille n?
Naïf: on calcule minimum, puis maximum en 2(n − 1) comparaisons.
MPSI Option info
Raisonner avec des arbres
12 / 28
Minimum ET maximum
Quel est le nombre optimal de comparaisons effectuées par un algo.
calculant le minimum et maximum d’un tableau de taille n?
Naïf: on calcule minimum, puis maximum en 2(n − 1) comparaisons.
Mieux: on conserve le minimum mini et maximum maxi vu jusqu’à
présent, on regarde les éléments par paires (a, b), qu’on compare
(disons a < b), puis on compare a avec mini et b avec maxi.
MPSI Option info
Raisonner avec des arbres
12 / 28
Minimum ET maximum
Nombre de comparaisons:
MPSI Option info
Raisonner avec des arbres
13 / 28
Minimum ET maximum
Nombre de comparaisons: b 3n
2 c.
On peut montrer qu’on ne peut pas faire mieux: exercice de vacances.
MPSI Option info
Raisonner avec des arbres
13 / 28
Trouver le 2ème minimum
On veut maintenant trouver le 2ème plus petit élément d’un tableau
de taille n. Combien faut-il de comparaisons?
MPSI Option info
Raisonner avec des arbres
14 / 28
Trouver le 2ème minimum
On veut maintenant trouver le 2ème plus petit élément d’un tableau
de taille n. Combien faut-il de comparaisons?
(1ère idée) utiliser un tri en Θ(n log(n)), bof.
MPSI Option info
Raisonner avec des arbres
14 / 28
Trouver le 2ème minimum
On veut maintenant trouver le 2ème plus petit élément d’un tableau
de taille n. Combien faut-il de comparaisons?
(1ère idée) utiliser un tri en Θ(n log(n)), bof.
(2ème idée) parcourir le tableau en stockant le minimum et le
deuxième minimum vu jusqu’à présent, en 2(n − 1).
MPSI Option info
Raisonner avec des arbres
14 / 28
Trouver le 2ème minimum
On veut maintenant trouver le 2ème plus petit élément d’un tableau
de taille n. Combien faut-il de comparaisons?
(1ère idée) utiliser un tri en Θ(n log(n)), bof.
(2ème idée) parcourir le tableau en stockant le minimum et le
deuxième minimum vu jusqu’à présent, en 2(n − 1).
(3ème idée) d’abord calculer le minimum, de la façon suivante:
comparer les éléments par paire, puis comparer les d n2 e éléments
minimum par paire, ..., jusqu’à obtenir le minimum.
MPSI Option info
Raisonner avec des arbres
14 / 28
Trouver le 2ème minimum
1
3
1
4
5
3
4
8
1
3
7
2
1
9
2
t = [|5; 4; 8; 3; 7; 1; 9; 2|]
MPSI Option info
Raisonner avec des arbres
15 / 28
Trouver le 2ème minimum
1
3
1
4
5
3
4
8
1
3
7
2
1
9
2
t = [|5; 4; 8; 3; 7; 1; 9; 2|]
C’est un arbre binaire «presque» complet (il peut y avoir 2p − 1
sommets de profondeur p).
MPSI Option info
Raisonner avec des arbres
15 / 28
Trouver le 2ème minimum
1
3
1
4
5
3
4
8
1
3
7
2
1
9
2
t = [|5; 4; 8; 3; 7; 1; 9; 2|]
MPSI Option info
Raisonner avec des arbres
16 / 28
Trouver le 2ème minimum
1
3
1
4
5
3
4
8
1
3
7
2
1
9
2
t = [|5; 4; 8; 3; 7; 1; 9; 2|]
Le nombre de comparaisons effectuées est:
MPSI Option info
Raisonner avec des arbres
16 / 28
Trouver le 2ème minimum
1
3
1
4
5
3
4
8
1
3
7
2
1
9
2
t = [|5; 4; 8; 3; 7; 1; 9; 2|]
Le nombre de comparaisons effectuées est:
nb de noeuds = nb feuilles - 1 = n − 1.
MPSI Option info
Raisonner avec des arbres
16 / 28
Trouver le 2ème minimum
Le 2ème minimum a forcément
MPSI Option info
Raisonner avec des arbres
17 / 28
Trouver le 2ème minimum
Le 2ème minimum a forcément été comparé au minimum m.
Il suffit dont de trouver le minimum parmi les éléments ayant été
comparé à m.
MPSI Option info
Raisonner avec des arbres
17 / 28
Trouver le 2ème minimum
Le 2ème minimum a forcément été comparé au minimum m.
Il suffit dont de trouver le minimum parmi les éléments ayant été
comparé à m.
Le nombre d’éléments comparés à m est égal à
MPSI Option info
Raisonner avec des arbres
17 / 28
Trouver le 2ème minimum
Le 2ème minimum a forcément été comparé au minimum m.
Il suffit dont de trouver le minimum parmi les éléments ayant été
comparé à m.
Le nombre d’éléments comparés à m est égal à la hauteur de m dans
l’arbre précédent:
MPSI Option info
Raisonner avec des arbres
17 / 28
Trouver le 2ème minimum
Le 2ème minimum a forcément été comparé au minimum m.
Il suffit dont de trouver le minimum parmi les éléments ayant été
comparé à m.
Le nombre d’éléments comparés à m est égal à la hauteur de m dans
l’arbre précédent: dlog2 (n)e
MPSI Option info
Raisonner avec des arbres
17 / 28
Trouver le 2ème minimum
Le 2ème minimum a forcément été comparé au minimum m.
Il suffit dont de trouver le minimum parmi les éléments ayant été
comparé à m.
Le nombre d’éléments comparés à m est égal à la hauteur de m dans
l’arbre précédent: dlog2 (n)e
L’algorithme total effectue donc n + dlog2 (n)e − 2 comparaisons.
Exercice: le programmer.
MPSI Option info
Raisonner avec des arbres
17 / 28
Trouver le kème plus petit élément
Il existe un algorithme (compliqué) en Θ(n) comparaisons calculant le
kème plus petit élément dans un tableau de n éléments.
Il utiliser un partitionnement similaire au tri rapide (méthode diviser
pour régner).
MPSI Option info
Raisonner avec des arbres
18 / 28
Complexité des tris
1
Tri fusion:
MPSI Option info
Raisonner avec des arbres
19 / 28
Complexité des tris
1
Tri fusion: Θ(n log(n))
2
Tri à bulles:
MPSI Option info
Raisonner avec des arbres
19 / 28
Complexité des tris
1
Tri fusion: Θ(n log(n))
2
Tri à bulles: Θ(n2 )
3
Tri rapide:
MPSI Option info
Raisonner avec des arbres
19 / 28
Complexité des tris
1
Tri fusion: Θ(n log(n))
2
Tri à bulles: Θ(n2 )
3
Tri rapide: O(n2 ) dans le pire des cas mais Θ(n log(n)) en
moyenne.
Peut-on faire mieux que Θ(n log(n)), dans le pire des cas?
MPSI Option info
Raisonner avec des arbres
19 / 28
Complexité des tris
Considérons un algorithme triant un tableau de taille n en effectuant
des comparaisons et regardons son arbre de décision.
MPSI Option info
Raisonner avec des arbres
20 / 28
Complexité des tris
Considérons un algorithme triant un tableau de taille n en effectuant
des comparaisons et regardons son arbre de décision.
Une feuille correspond à
MPSI Option info
Raisonner avec des arbres
20 / 28
Complexité des tris
Considérons un algorithme triant un tableau de taille n en effectuant
des comparaisons et regardons son arbre de décision.
Une feuille correspond à un résultat de l’algorithme.
Combien a t-il de feuilles?
MPSI Option info
Raisonner avec des arbres
20 / 28
Complexité des tris
Considérons un algorithme triant un tableau de taille n en effectuant
des comparaisons et regardons son arbre de décision.
Une feuille correspond à un résultat de l’algorithme.
Combien a t-il de feuilles? au moins n! (nombre de permutations)
MPSI Option info
Raisonner avec des arbres
20 / 28
Complexité des tris
Considérons un algorithme triant un tableau de taille n en effectuant
des comparaisons et regardons son arbre de décision.
Une feuille correspond à un résultat de l’algorithme.
Combien a t-il de feuilles? au moins n! (nombre de permutations)
Donc h ≥ log2 (f ) ≥ log2 (n!)
MPSI Option info
Raisonner avec des arbres
20 / 28
Complexité des tris
Considérons un algorithme triant un tableau de taille n en effectuant
des comparaisons et regardons son arbre de décision.
Une feuille correspond à un résultat de l’algorithme.
Combien a t-il de feuilles? au moins n! (nombre de permutations)
Donc h ≥ log2 (f ) ≥ log2 (n!) ∼ n log2 (n) .
MPSI Option info
Raisonner avec des arbres
20 / 28
Complexité des tris
Considérons un algorithme triant un tableau de taille n en effectuant
des comparaisons et regardons son arbre de décision.
Une feuille correspond à un résultat de l’algorithme.
Combien a t-il de feuilles? au moins n! (nombre de permutations)
Donc h ≥ log2 (f ) ≥ log2 (n!) ∼ n log2 (n) .
Conclusion: il n’est pas possible de trier un tableau de taille n en
moins de n log2 (n) comparaisons, dans le pire des cas.
MPSI Option info
Raisonner avec des arbres
20 / 28
Complexité des tris
Et quelle est la profondeur minimum d’une feuille d’un arbre de
décision d’un algorithme de tri?
MPSI Option info
Raisonner avec des arbres
21 / 28
Complexité des tris
Et quelle est la profondeur minimum d’une feuille d’un arbre de
décision d’un algorithme de tri?
n − 1: trier un tableau permet de trouver un minimum, et on a vu
qu’on ne peut pas trouver un minimum en moins de n − 1
comparaisons.
MPSI Option info
Raisonner avec des arbres
21 / 28
Complexité des tris
Et quelle est la profondeur minimum d’une feuille d’un arbre de
décision d’un algorithme de tri?
n − 1: trier un tableau permet de trouver un minimum, et on a vu
qu’on ne peut pas trouver un minimum en moins de n − 1
comparaisons.
De plus si le tableau est déjà trié alors l’algorithme peut se contenter
de comparer les paires d’éléments consécutives pour s’assurer que le
tableau est bien trié et le renvoyer.
MPSI Option info
Raisonner avec des arbres
21 / 28
Tri par dénombrement
Si on dispose d’hypothèses supplémentaires sur le tableau t en entrée,
ou si l’algorithme effectue autre chose que des comparaisons pour
réaliser le tri, le minorant n log2 (n) ne s’applique plus.
MPSI Option info
Raisonner avec des arbres
22 / 28
Tri par dénombrement
Si on dispose d’hypothèses supplémentaires sur le tableau t en entrée,
ou si l’algorithme effectue autre chose que des comparaisons pour
réaliser le tri, le minorant n log2 (n) ne s’applique plus.
Ex: le tri par dénombrement trie un tableau dont les entrées sont des
entiers entre 0 et k en complexité Θ(n + k).
MPSI Option info
Raisonner avec des arbres
22 / 28
Complexité en moyenne des tris
Le minorant Θ(n log2 (n)) a été établi pour la complexité dans le pire
des cas.
Est-ce que l’on peut trier avec une meilleur complexité en moyenne?
MPSI Option info
Raisonner avec des arbres
23 / 28
Complexité en moyenne des tris
Le minorant Θ(n log2 (n)) a été établi pour la complexité dans le pire
des cas.
Est-ce que l’on peut trier avec une meilleur complexité en moyenne?
Définition
Soit E l’ensemble des entrées possibles pour un algorithme A. Si C (e)
est le nombre d’opérations réalisées par A sur e ∈ E , alors la
complexité en moyenne de A est:
P
C (e)
|E |
e∈E
MPSI Option info
Raisonner avec des arbres
23 / 28
Complexité en moyenne des tris
Il faudrait donc minorer la somme des profondeurs des feuilles d’un
arbre de décision pour un tri.
MPSI Option info
Raisonner avec des arbres
24 / 28
Complexité en moyenne des tris
Il faudrait donc minorer la somme des profondeurs des feuilles d’un
arbre de décision pour un tri.
Soit d(k) la valeur minimum de cette somme pour un arbre de
décision à k feuilles.
MPSI Option info
Raisonner avec des arbres
24 / 28
Complexité en moyenne des tris
Il faudrait donc minorer la somme des profondeurs des feuilles d’un
arbre de décision pour un tri.
Soit d(k) la valeur minimum de cette somme pour un arbre de
décision à k feuilles.
d(k) = min {d(i) + d(k − i) + k}
1≤i<k
MPSI Option info
Raisonner avec des arbres
24 / 28
Complexité en moyenne des tris
d(k) = min {d(i) + d(k − i) + k}
1≤i<k
Supposons, par récurrence, qu’il existe une constante A telle que:
d(i) ≥ Ai log2 (i), ∀i < k
MPSI Option info
Raisonner avec des arbres
25 / 28
Complexité en moyenne des tris
d(k) = min {d(i) + d(k − i) + k}
1≤i<k
Supposons, par récurrence, qu’il existe une constante A telle que:
d(i) ≥ Ai log2 (i), ∀i < k
Hérédité:
d(k) = min {d(i) + d(k − i) + k}
1≤i<k
d(k) ≥ min {Ai log2 (i) + A(k − i) log2 (k − i) + k}
1≤i<k
MPSI Option info
Raisonner avec des arbres
25 / 28
Complexité en moyenne des tris
d(k) = min {d(i) + d(k − i) + k}
1≤i<k
Supposons, par récurrence, qu’il existe une constante A telle que:
d(i) ≥ Ai log2 (i), ∀i < k
Hérédité:
d(k) = min {d(i) + d(k − i) + k}
1≤i<k
d(k) ≥ min {Ai log2 (i) + A(k − i) log2 (k − i) + k}
1≤i<k
k
k
k
k
d(k) ≥ A log2 ( ) + A(k − ) log2 (k − ) + k
2
2
2
2
MPSI Option info
Raisonner avec des arbres
25 / 28
Complexité en moyenne des tris
k
d(k) ≥ Ak log2 ( ) + k = Ak log2 (k) + k(1 − A)
2
MPSI Option info
Raisonner avec des arbres
26 / 28
Complexité en moyenne des tris
k
d(k) ≥ Ak log2 ( ) + k = Ak log2 (k) + k(1 − A)
2
Donc si A < 1, l’hérédité fonctionne. L’initialisation est évidente donc
on a bien:
d(k) ≥ Ak log2 (k), ∀k ∈ N∗
MPSI Option info
Raisonner avec des arbres
26 / 28
Complexité en moyenne des tris
Un arbre de décision pour un tri a n! feuilles, donc la profondeur
moyenne de ses feuilles est au moins:
MPSI Option info
Raisonner avec des arbres
27 / 28
Complexité en moyenne des tris
Un arbre de décision pour un tri a n! feuilles, donc la profondeur
moyenne de ses feuilles est au moins:
d(n!)
An! log2 (n!)
≥
∼ An log2 (n)
n!
n!
MPSI Option info
Raisonner avec des arbres
27 / 28
Complexité en moyenne des tris
Un arbre de décision pour un tri a n! feuilles, donc la profondeur
moyenne de ses feuilles est au moins:
d(n!)
An! log2 (n!)
≥
∼ An log2 (n)
n!
n!
Conclusion: il n’est pas possible de trier un tableau de taille n avec
moins de n log2 (n) comparaisons en moyenne.
MPSI Option info
Raisonner avec des arbres
27 / 28
Pour ne pas vous ennuyer pendant l’été...
Livres:
1
Algorithmique, de Cormen et al.
2
Les clés pour l’Info : ENS-Agrégation, de Mansuy, Vie, Belghiti.
3
Algorithmique, de Quercia (aussi sur le net).
Sites de cours:
1
http://info-llg.fr/
2
http://lorenzi.marc.pagesperso-orange.fr/optionInfo/optinfo.html
3
http://mathprepa.fr/caml-option-informatique-mpsi-mp/
4
http://pauillac.inria.fr/˜cheno/
Sites de problèmes:
1
http://www.france-ioi.org/algo/index.php
2
https://projecteuler.net/
MPSI Option info
Raisonner avec des arbres
28 / 28
Téléchargement